参考:https://github.com/silence1772/GreedySnake
个人github:https://github.com/okJiang/GreedySnake
更新
Point
的清除功能Clear()
Snake.cpp
InitSnake()
:初始化打印snakemove()
:根据方向移动ChangeDirection()
:通过键盘的上下左右改变蛇的移动方向
踩坑
- derection前后拼写错误看了几十分钟。。。
- 不知道●是两个字符,写成了‘●‘,改成“●”就好了
queue
不能用auto访问:忘记了queue封装好了不能访问内部参数的,改成deque
总结
-
kbhit()
:判断键盘是否有输入的函数,有输入返回1,否则返回0 -
getch()
:与getchar()
功能一样,但是不在控制台上显示输入的字符 -
键盘↑↓←→的输入,是两个字符,所以需要先判断第一个字符是不是-32。
c = getch();
switch(c){
case -32:{
//键盘上的上下左右输入进来有两个字节,第一个字节的十进制表示为-32
c = getch();
switch(c){
case 72:
if(direction != Direction::DOWN)
direction = Direction::UP;
break;
case 80:
if(direction != Direction::UP)
direction = Direction::DOWN;
break;
case 75:
if(direction != Direction::RIGHT)
direction = Direction::LEFT;
break;
case 77:
if(direction != Direction::LEFT)
direction = Direction::RIGHT;
break;
default:
break;
}
return true;
}
case 27: //ESC的键值
return false;
default:
return true;
- 成果: