贪吃蛇游戏不起作用
Snake game doesn't work
这是代码未编译的部分。它将开始,然后在到达此处时停止。我有一张 [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++书都比我更详细地解释了这一点。
相关文章:
- 我的神经网络不起作用 [XOR 问题]
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- C++映射:具有自定义类的运算符[]不起作用(总是返回0)
- C++为什么尽管我调用了void函数,它却不起作用
- 为什么在保护模式下继承升级不起作用
- 循环在计数器中不起作用
- 在其他文件中创建类时在 c++ 项目中不起作用
- Visual studio代码重构似乎不起作用(例如,重命名符号-f2)
- 为什么二进制搜索在我的测试中不起作用
- 为什么我的石头剪刀布游戏不起作用?
- C++ SRAND(time(0)) 在猜谜游戏中不起作用
- 自动点击器在游戏中 - 为什么不起作用?
- 我简单的 c++ 文本游戏不起作用。我正在使用随机数生成,我很困惑
- 贪吃蛇游戏不起作用
- 井字游戏不起作用
- 第 4 个射击语句在 SFML 游戏中不起作用
- 运动不起作用的诅咒游戏
- 游戏循环不起作用
- 我的井字游戏的吸气机和二传手功能不起作用
- C++中的游戏编程,这条老行是什么,为什么它不起作用?