參考: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;
- 成果: