蛇游戏不起作用

时间:2015-05-08 01:22:05

标签: c++ c++11 visual-c++

这是代码中没有编译的部分。它会在它到达时开始然后停止。我有[11] [22]的Char Map,这是我的董事会。我要做的是让'*'随机生成,并作为我的蛇的食物。

srand(time(NULL));
int pellet=rand()%21;

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

1 个答案:

答案 0 :(得分:5)

如果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 ++书籍都会比我更详细地解释这一点。