贪吃蛇游戏不起作用

Snake game doesn't work

本文关键字:不起作用 游戏      更新时间:2023-10-16

这是代码未编译的部分。它将开始,然后在到达此处时停止。我有一张 [11][22] 的夏亚地图,这是我的板子。我想做的是让"*"随机生成,并充当我的蛇的食物。

srand(time(NULL));
int pellet=rand()%21;
while (GameRunning == true)
{
for (int pellet = rand(); pellet % Map[11][22]; pellet++)
{
cout << '*';
}
system("cls");

如果Map是 char 的二维数组:

char Map[11][22];

问题是这一行:

pellet % Map[11][22]

您正在将模量应用于地图中的越界条目。

可以从第一维的0 to 10和第二维的0 to 21对地图进行索引。 例如,Map[0][0]是有效的条目,Map[4][7]也是如此,但Map[11][22]不是有效的条目。

在这个越界条目中,那里的值恰好是 0,导致除以零错误(计算n mod 0会导致此错误)。


为了尽可能简单地解释,请将二维数组视为网格。 在您的情况下,网格有 11 行和 22 列。

所以现在你想到达那个网格上的某个点,比如第三行,第五列。 为此,您会说Mat[2][4]. 它不Mat[3][5]的原因是,在C++中,数组索引从 0 开始,而不是 1。 现在给定了这一点,您正在访问Mat[11][22],这是一行和一列的界限。

是的,您将数组声明为具有 11 行和 22 列的大小,但这仅在告诉C++数组有多大时才相关(当您声明数组时)。 当您需要访问数组中的各种元素时,您必须使用基于 0 的索引来访问您感兴趣的条目。

追问:任何一本好的C++书都比我更详细地解释了这一点。