嗨,我需要帮助我的程序。部分代码似乎没有按预期工作:
void up(int pole[4][4])
{
int i,j;
for (i = 3; i >= 1; i--)
{
for (j = 3; j >= 0; i--)
{
if (pole[i][j] == pole[i-1][j])
{
pole[i-1][j] += pole[i][j];
pole[i][j] = 0;
}
}
}
system("cls");
for (i = 0; i < 4; i++)
{
for(j = 0; j < 4; j++)
{
printf("%d ", pole[i][j]);
}
printf("\n");
}
}
当我在这样的开关中调用该函数时:
switch(keynumber)
{
case 119: //w
up(base);
break;
我最终导致程序崩溃。 我这样做的原因是我想在控制台中制作2048游戏,所以首先我创建了一个数组,其中数组的2个随机元素将是数字2,然后根据你将推送的键来比较这些元素。
答案 0 :(得分:2)
for (i = 3; i >= 1; i--)
{
for (j = 3; j >= 0; i--) // Why here is i-- ?? instead if j--
{
if (pole[i][j] == pole[i-1][j])
{
pole[i-1][j] += pole[i][j];
pole[i][j] = 0;
}
}
}
当第二个循环中断时?
答案 1 :(得分:0)
参考第8行, 而不是
for (j = 3; j >= 0; i--)
应该是
for (j = 3; j >= 0; j--)
当j的值没有递减时,它是一个无限循环。