Skip to content

Latest commit

 

History

History
33 lines (22 loc) · 1.23 KB

README.md

File metadata and controls

33 lines (22 loc) · 1.23 KB

GreedySnake

大体实现思路

通过创建一个二维数组,同时存储蛇,食物,墙的数据,然后使用清屏再打印的方式实现

替代getch函数的实现思路

通过创建一个线程专门用于等待用户输入,不影响主线程的运行

一条if语句判断方向是否冲突

将 9 和 6 作为冲突组,将 10 和 5 作为冲突组。

9 的二进制 1001
6 的二进制 0110
10 的二进制 1010
5 的二进制 0101

冲突组的两个互相做&等于0,而与另一组做&不等于0,这样只需要直接和原方向做&即可。

蛇移动的构思

因为我用二维数组储存了每一个蛇体的位置,所以我不需要额外去存储每一个蛇体。 在蛇移动的时候并不需要把全部位置进行移动,在蛇前进的时候,只需要擦掉尾巴然后再打印蛇头,然后让倒数第二个部位成为新的尾巴,就可以实现蛇的移动,如果蛇吃到了食物,就不擦掉尾巴直接打印头部

那么如何知道蛇新的尾巴在那?

我的想法是,在二维数组赋值的时候,赋的值是指向上一个蛇体的方向,这样就知道每一个部位的位置