原理:
把蛇身体的每一块看成一个对象(对象存储该块的坐标和相关信息),作为节点存储在线性链表中,再设置一个变量标志蛇的方向(通过按键可以改变)。一般人都是让每一个节点等于他指向的下一个节点,并让头节点改变位置来实现转弯和移动,这个算法复杂度太高(O(n)),实际上只要做两步操作,插入一个头节点,删除一个尾节点就可以了,新插入的头节点位置根据蛇当前的方向决定 用一个数组将蛇头的行径记录下来,然后第二段的下一个方格设置为蛇头走过的方格,这样子蛇走过的路径都是前一段走过的,最后将跟着蛇头走了,比如
蛇身的路径
for(int i=snakeLength-1;i>0;i--){
rows[i]=rows[i-1];//依次将蛇前面一段走过行的路段赋值给蛇的下一段
cols[i]=cols[i-1];//依次将蛇前面一段走过列的路段赋值给蛇的下一段
}
for(int i=1;i
}
蛇头走过的行和列(rows[0],cols[i])要根据不同的方向加减1来将面板设置成不同的颜色
如gamePanel[rows[i]-1][cols[i]+1].setBackground(Color.red)