java贪吃蛇原理

楼主没有看到蛇移动的本质,蛇虽然是分成很多块,但他们还是一个整体,每一块的移动都和上一块有关,所以不需要对每一块都进行判断。原理:把蛇身体的每一块看成一个对象(对象存储该块的坐标和相关信息),作为节点存储在线性链表中,再设置一个变量标志蛇的方向(通过按键可以改变)。一般人都是让每一个节点等于他指向的下一个节点,并让头节点改变位置来实现转弯和移动,这个算法复杂度太高(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<snakeLength;i++){ gamePanel[rows[i]][cols[i]].setBackground(Color.red);//将整个面板上蛇身走过的行和列设置为不同的颜色,当然可以用图片来设置 }蛇头走过的行和列(rows[0],cols[i])要根据不同的方向加减1来将面板设置成不同的颜色如gamePanel[rows[i]-1][cols[i]+1].setBackground(Color.red)
文章标签:

本文链接:https://www.u1e.cn/baike/a/bd3a7375591f55909ec74869 [复制]

猜你喜欢

歇后语大全

还没有人回应过