C++:我想写个贪吃蛇,控制移动时怎么判断按键改变方向移动和未按键按之前方向的移动。

2025-05-13 18:32:57
推荐回答(1个)
回答(1):

Sleep只是用来控制蛇身移动的速度, 也就是难度级别, 越难, Sleep间隔时间越短

用一个标志变量来控制移动方向, 如: int flag;  如果flag=1, 则表示向上运动, flag=2表示向下, flag=3表示向左, flag=4表示向右. 在while中不断地等等用户输入, 来改变flag的值, 从而改变运动方向

我想你的困惑是在:等待用户输入时,代码会暂停在getch处,要用到非阻塞式监听键盘输入

conio.h头文件中的kbhit函数可以实现非阻塞式键盘监听

void move() //蛇身移动
{
    .....
}
int main()
{
    while(1)
    {
        if(kbhit()) //如果有键盘输入,则判断用户按下的是什么按键,并给flag赋值,从而改变移动方向,没有输入,则继续move()
        {
           ch = getch();
           if(ch == XXX)
           {
               flag=?? //向上?下?左?右?
           }
       }
       move();
    }
}