点我下载代码
(7)咬到自己的贪吃蛇
在响应移动的按键后,除了判断贪吃蛇是否撞到墙、是否吃到食物之外,还要判断是否咬到自己。通过自定义函数IsBiteSnake()实现。判断贪吃蛇是否要到自己,就是要判断蛇的头部是否与身体的某个节点重合,如果重合,则说明要到了自己,否则说明没有要到自己。
bool IsBiteSnake()
{
snake *tempsnake;
tempsnake = head->next;
while (tempsnake != NULL)
{
if (tempsnake->x == head->x && tempsnake->y == head->y)
{
return true;
}
tempsnake = tempsnake->next;
}
return false;
}
在以上代码中,通过while()语句遍历了贪吃蛇的身体,如果咬了自己,则返回true;否则返回false。
在自定义MoveSnake()函数中,响应了移动按键之后,接下来通过调用IsBiteSnake()判断贪吃蛇是否要到自己。
if (IsBiteSnake())
{
endgame_status = 2;
EndGame();
}
如果要到自己,把结束游戏的原因endgame_status的值设置为2,并且结束游戏。endgame_status和EndGame()在本小节的“(2)结束游戏”中已经介绍。