Set_location(64, 15);
cout << "不能穿墙,不能咬到自己" << endl;
Set_location(64, 16);
cout << "用↑.↓.←.→分别控制蛇的移动" << endl;
Set_location(64, 17);
cout << "贪吃蛇可以穿越隧道,障碍物不能碰撞!" << endl;
Set_location(64, 18);
cout << "space:暂停游戏" << endl;
while (1)
{
if (GetAsyncKeyState(VK_UP) && condition != DOWN)//这里用到一个判断按键状态的函数
condition = DOWN;
else if (GetAsyncKeyState(VK_DOWN) && condition != UP)
condition = UP;
else if (GetAsyncKeyState(VK_LEFT) && condition != RIGHT)
condition = LEFT;
else if (GetAsyncKeyState(VK_RIGHT) && condition != LEFT)
condition = RIGHT;
else if (GetAsyncKeyState(VK_SPACE))
{
pause();
}
Sleep(200);
head->Move();//在这里调用move函数
}
}
Move();函数中有没有用到condition?,,我猜应该用了,不知道,是不是用错了。
还有个问题,,你这里在while循环中顺次判断键盘状态,
就是从键盘输入一个按键时,可能没被判断到,,你是循环顺次判断的,很容易判断不到。
这样容易出问题,建议使用“事件机制”
可以去看看c++监听键盘输入事件的东西,
boo bStatus = FALSE;
while(1)
{
if (GetAsyncKeyState(VK_UP) && condition != DOWN)//这里用到一个判断按键状态的函数
{
condition = DOWN;
bStatus = TRUE;
}
else if(GetAsyncKeyState(VK_DOWN) && condition != UP)
{
condition = UP;
bStatus = TRUE;
}
if (bStatus)
{
bStatus = FALSE;
head->Move();
}
}