我想写一个推箱子的程序,但现在程序出bug 了,它报的错我实在是不知道怎么修改
虽然我其他部分可能也会错,但现在跑不了,实在不行,请帮帮忙
#include <iostream>
#include<conio.h>
#include<stdlib.h>
using namespace std;
class Tuixiangzi
{
private:
char (*map)[10];
//*是人,0是箱子,!是目的地
public:
Tuixiangzi (char (*map_)[10]);
void keyevent();
void show_map();
int judgement();
};
Tuixiangzi ::Tuixiangzi(char (*map_)[10])
{
int i=0,j=0;
for (;i<10;i++)
for (;j<10;j++)
map[i][j]=map_[i][j];
}
void Tuixiangzi::show_map()
{
cout<<map[10][10]<<endl;
}
void Tuixiangzi::keyevent()
{
//先判断向上走是否可行,如果前面是空地可走,如果前面是箱子,判断箱子前面是否为空地,如果是可走;
int i=0,k=0;
for(int i;i<10;i++)
for (int k;k<10;k++)
if (map[i][k]=='*')
break;
//找到了人的位置;
char ch=_getch();//输入按键
//向上走
switch (ch)
{
case 'w':
//前面只是空地
if (map[i-1][k]==' ')
{map[i-1][k]='*';
map[i][k]=' ';}
//前面有箱子,箱子前面是空地
else if (map[i-1][k]=='0'&&map[i-2][k]==' ')
{map[i-2][k]='0';
map[i-1][k]='*';
map[i][k]=' ';}
//前面有箱子,箱子前面是目的地
else if (map[i-1][k]=='0'&&map[i-2][k]=='!')
{map[i-1][k]='*';
map[i-2][k]='+';}
break;
case 's':
//下面只是空地
if (map[i+1][k]==' ')
{map[i+1][k]='*';
map[i][k]=' ';}
//下面有箱子,箱子下面是空地
else if (map[i+1][k]=='0'&&map[i+2][k]==' ')
{map[i+2][k]='0';
map[i+1][k]='*';
map[i][k]=' ';}
//下面有箱子,箱子下面是目的地
else if(map[i+1][k]=='0'&&map[i+2][k]=='!')
{
map[i+1][k]='*';
map[i+2][k]='+';
}
break;
case 'a':
//左面只是空地
if (map[i][k-1]==' ')
{map[i][k-1]='*';
map[i][k]=' ';}
//左面有箱子,箱子左面是空地
else if (map[i][k-1]=='0'&&map[i][k-2]==' ')
{map[i][k-2]='0';
map[i][k-1]='*';
map[i][k]=' ';}
//左面有箱子,箱子左面是目的地
else if(map[i][k-1]=='0'&&map[i][k-2]=='!')
{
map[i][k-1]='*';
map[i][k-2]='+';
}
break;
case 'd':
//右面只是空地
if (map[i][k+1]==' ')
{map[i][k+1]='*';
map[i][k]=' ';}
//右面有箱子,箱子右面是空地
else if (map[i][k+1]=='0'&&map[i][k+2]==' ')
{map[i][k+2]='0';
map[i][k+1]='*';
map[i][k]=' ';}
//右面有箱子,箱子右面是目的地
else if(map[i][k+1]=='0'&&map[i][k+2]=='!')
{
map[i][k+1]='*';
map[i][k+2]='+';
}
break;
}
int Tuixiangzi::judgement()
{
for (int i=0;i<10;i++)
for (int j=0;j<10;j++)
if (map[i][j]=='+')
{cout <<"you win!"<<endl;
break;}
return 1;
}
int main()
{
char map_11[10][10]={"#########",
"### #####",
"#### *###",
"#### ####",
"### 0##",
"#### # ##",
"# ## ##",
"##! ####",
"#########",
"#########"};
Tuixiangzi map_1( map_11);
while(1)
{
map_1.keyevent();
map_1.show_map();
system("cls");
if (map_1.judgement())
break;
}
return 0;
}
break;
}
} //这里缺少一个后花括号
int Tuixiangzi::judgement()
{