if(moveDirection == 1)//向上移动 { newHead_x = OldHead_x; newHead_y = OldHead_y-1; if (canvas[newHead_x][newHead_y] > 0 || canvas[newHead_x][newHead_y] == -1) { cout<<"游戏失败!\n"; Sleep(2000); exit(0); } else canvas[newHead_x][newHead_y] = 1; } if (moveDirection == 2)//向下移动 { newHead_x = OldHead_x + 1; newHead_y = OldHead_y; if (canvas[newHead_x][newHead_y] > 0 || canvas[newHead_x][newHead_y] == -1) { cout << "游戏失败!\n"; Sleep(2000); exit(0); } else canvas[newHead_x][newHead_y] = 1; } if (moveDirection == 3)//向左移动 { newHead_x = OldHead_x ; newHead_y = OldHead_y - 1; if (canvas[newHead_x][newHead_y] > 0 || canvas[newHead_x][newHead_y] == -1) { cout << "游戏失败!\n"; Sleep(2000); exit(0); } else canvas[newHead_x][newHead_y] = 1; } if (moveDirection == 4)//向右移动 canvas[OldHead_x][OldHead_y + 1] = 1; 帮我更改这段代码,这是用二为数组写贪吃蛇游戏,并告知下x,y为什么这样变
时间: 2023-11-25 22:04:53 浏览: 64
cpp代码-链表的反转
根据代码,我发现在向右移动的情况下,代码只是简单地将蛇头所在位置的右边一个格子标记为蛇头,而没有对新的蛇头位置进行判断,因此需要做出如下改动:
```
if (moveDirection == 4)//向右移动
{
newHead_x = OldHead_x;
newHead_y = OldHead_y + 1;
if (canvas[newHead_x][newHead_y] > 0 || canvas[newHead_x][newHead_y] == -1)
{
cout << "游戏失败!\n";
Sleep(2000);
exit(0);
}
else
canvas[newHead_x][newHead_y] = 1;
}
```
在这个改动中,我们通过新的变量 `newHead_x` 和 `newHead_y` 记录了蛇头新的位置。同时,我们在移动之前对新的位置进行了判断,如果新的位置已经有了蛇身或者是障碍物,则判定游戏失败。最后,我们将新的位置标记为蛇头。
至于 `x` 和 `y` 变成什么值,这要看具体的游戏画面是如何设计的,需要根据实际情况来确定。
阅读全文