推箱子代码

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

推箱子代码
#include<iostream>
#include<string>
#include<iomanip>
using namespace std;
/*
r 目的地
O 箱子
I 人
X 墙
路(空格)
W 上
A 左
D 右
S 下
*/
void menu();
int level1();
int level2();
void swap();
int opera();
void dituprint();
void menu()
{
cout<<" 推箱子"<<endl;
cout<<" 1.新游戏 2.选关"<<endl;
cout<<" 0.退出"<<endl;
}
void xuanguan()
{
int choice_level;
while(1)
{
cout<<"请选择关卡:"<<endl;
cin>>choice_level;
switch(choice_level)
{
case 1:
level1();
break;
case 2:
level2();
break;
default:
cout<<"输入有误请重新选择关卡!";
}
}
}
void swap(char *a,char *b)
{
system("cls");
char ch;
ch=*a;
*a=*b;
*b=ch;
}
void dituprint(char *p)
{
//system("cls");
for(int i=0;i<9;i++)
{
for(int j=0;j<9;j++)
cout<<setw(2)<<p[i*9+j];
cout<<endl;
}
}
int opera(char *p,int *ren,int xzs) //xzs 箱子数ren 存有人与箱子目标的位置{
dituprint(p);
while(1)
{
while(1)
{
for(int i=1,panduan=0;i<=xzs;i++)
{
if(p[ren[i]]=='O')
{
panduan+=1;
cout<<"panduan="<<panduan<<endl;
} //判断当前有几个已经推到目的地了
if(panduan==xzs)
{
cout<<"恭喜你过关啦!";
getchar();
return 0;
}
}
char ch;
cout<<"你的按键为:";
cin>>ch;
switch(ch)
{
case 'w':
{
if(p[ren[0]]=='r') //当前人所在的位置为箱子最终要到的目的地的话
{
if(p[ren[0]-9]=='r') //要移到的位置是箱子最终目的地
{
ren[0]-=9;
p[ren[0]]='I';
p[ren[0]+9]='r';
break;
}
if(p[ren[0]-9]=='X') //碰到墙了
{
cout<<"人碰到墙了换其他按键1哇>>>>>"; break;
}
if(p[ren[0]-9]==' ') //可以通过
{
ren[0]-=9;
p[ren[0]]='I';
p[ren[0]-9]='r';
break;
}
if(p[ren[0]-9]=='O') //碰到箱子
{
if(p[ren[0]-18]=='X'||'O')
cout<<"箱子碰到墙了换其他按键1哇>>>>>";break;
if(p[ren[0]-18]=='r')
p[ren[0]-18]='O';
p[ren[0]-9]='I';
p[ren[0]]='r';
ren[0]-=9;
break;
}
if(p[ren[0]-18]=='O')
cout<<"推不动哎换其他按键1哇>>>>>";break; if(p[ren[0]-18]==' ')
{
swap(p[ren[0]-9],p[ren[0]-18]);
swap(p[ren[0]],p[ren[0]-9]);
p[ren[0]]='r';
ren[0]-=9;
break;
}
}
}
else
{
if(p[ren[0]-9]=='X')
{
cout<<"人碰到墙了换其他按键哇2>>>>>";
break;
}
if(p[ren[0]-9]==' ')
{
swap(p[ren[0]],p[ren[0]-9]);
ren[0]-=9;
break;
}
if(p[ren[0]-9]=='O')
{
//遇到箱子代码
if(p[ren[0]-18]=='O'||p[ren[0]-18]=='X')
{
cout<<"走不动了换按其他键哇......."<<endl;
break;
if(p[ren[0]-18]=='r')
{
p[ren[0]-18]='O';
p[ren[0]-9]='I';
p[ren[0]]=' ';
ren[0]-=9;
break;
}
if(p[ren[0]-18]==' ')
{
p[ren[0]-18]='O';
p[ren[0]-9]='I';
p[ren[0]]=' ';
ren[0]-=9;
break;
}
}
}
}
break;
case 'a':
{
if(p[ren[0]]=='r') //当前人所在的位置为箱子最终要到的目的地的话
{
if(p[ren[0]-1]=='r') //要移到的位置是箱子最终目的地
{
ren[0]-
=1;
p[ren[0]]='I';
p[ren[0]+1]='r';
break;
}
if(p[ren[0]-1]=='X') //碰到墙了
{
cout<<"人碰到墙了换其他按键1哇>>>>>"; break;
}
if(p[ren[0]-1]==' ') //可以通过
{
p[ren[0]]='I';
p[ren[0]+9]='r';
break;
}
if(p[ren[0]-1]=='O') //碰到箱子
{
if(p[ren[0]-2]=='X'||'O')
cout<<"箱子碰到墙了换其他按键1哇>>>>>";break;
if(p[ren[0]-2]=='r')
{
p[ren[0]-2]='O';
p[ren[0]-1]='I';
p[ren[0]]='r';
ren[0]-=1;
break;
}
if(p[ren[0]-2]=='O')
cout<<"推不动哎换其他按键1哇>>>>>";break; if(p[ren[0]-2]==' ')
{
swap(p[ren[0]-1],p[ren[0]-2]);
swap(p[ren[0]],p[ren[0]-1]);
p[ren[0]]='r';
ren[0]-=1;
break;
}
}
}
else
{
if(p[ren[0]-1]=='X')
{
cout<<"人碰到墙了换其他按键哇2>>>>>"; break;
}
if(p[ren[0]-1]==' ')
{
swap(p[ren[0]],p[ren[0]-1]);
break;
}
if(p[ren[0]-1]=='O')
{
//遇到箱子代码
if(p[ren[0]-2]=='O'||p[ren[0]-2]=='X')
{
cout<<"走不动了换按其他键哇......."<<endl;
break;
}
if(p[ren[0]-2]=='r')
{
p[ren[0]-2]='O';
p[ren[0]-1]='I';
p[ren[0]]=' ';
ren[0]-=1;
break;
}
if(p[ren[0]-2]==' ')
{
p[ren[0]-2]='O';
p[ren[0]-1]='I';
p[ren[0]]=' ';
ren[0]-=1;
break;
}
}
}
}
break;
case 's':
{
if(p[ren[0]]=='r') //当前人所在的位置为箱子最终要到的目的地的话
{
i
f(p[ren[0]+9]=='r') //要移到的位置是箱子最终目的地
{
ren[0]+=9;
p[ren[0]]='I';
p[ren[0]-9]='r';
break;
}
if(p[ren[0]+9]=='X') //碰到墙了
{
cout<<"人碰到墙了换其他按键1哇>>>>>"; break;
}
if(p[ren[0]+9]==' ') //可以通过
{
ren[0]+=9;
p[ren[0]]='I';
p[ren[0]+9]='r';
break;
}
if(p[ren[0]+9]=='O') //碰到箱子
{
if(p[ren[0]+18]=='X'||'O')
cout<<"箱子碰到墙了换其他按键1哇>>>>>";break;
if(p[ren[0]+18]=='r')
{
p[ren[0]+18]='O';
p[ren[0]+9]='I';
p[ren[0]]='r';
ren[0]+=9;
break;
}
if(p[ren[0]+18]=='O')
cout<<"推不动哎换其他按键1哇>>>>>";break; if(p[ren[0]+18]==' ')
{
swap(p[ren[0]+9],p[ren[0]+18]);
swap(p[ren[0]],p[ren[0]-9]);
p[ren[0]]='r';
ren[0]+=9;
break;
}
}
else
{
if(p[ren[0]+9]=='X')
{
cout<<"人碰到墙了换其他按键哇2>>>>>"; break;
}
if(p[ren[0]+9]==' ')
{
swap(p[ren[0]],p[ren[0]+9]);
ren[0]+=9;
break;
}
if(p[ren[0]+9]=='O')
{
//遇到箱子代码
if(p[ren[0]+18]=='O'||p[ren[0]+18]=='X')
{
cout<<"走不动了换按其他键哇......."<<endl; break;
}
if(p[ren[0]+18]=='r')
{
p[ren[0]+18]='O';
p[ren[0]+9]='I';
p[ren[0]]=' ';
ren[0]+=9;
break;
}
if(p[ren[0]+18]==' ')
{
p[ren[0]+18]='O';
p[ren[0]+9]='I';
p[ren[0]]=' ';
ren[0]+=9;
break;
}
}
}
}
break;
case 'd':
{
if(p[ren[0]]=='r') //当前人所在的位置为箱子最终要到的目的地的话
{
if(p[ren[0]+1]=='r') //要移到的位置是箱子最终目的地
{
ren[0]+=1;
p[ren[0]]='I';
p[ren[0]-1]='r';
break;
}
if(p[ren[0]+1]=='X') //碰到墙了
{
cout<<"人碰到墙了换其他按键1哇>>>>>"; break;
}
if(p[ren[0]+1]==' ') //可以通过
{
ren[0]+=1;
p[ren[0]]='I';
p[ren[0]+1]='r';
break;
}
if(p[ren[0]+1]=='O') //碰到箱子
{
if(p[ren[0]+2]=='X'||'O')
cout<<"箱子碰到墙了换其他按键1哇>>>>>";break;
if(p[ren[0]+2]=='r')
{
p[ren[0]+2]='O';
p[ren[0]+1]='I';
p[ren[0]]='r';
ren[0]+=1;
break;
}
if(p[ren[0]+2]=='O')
cout<<"推不动哎换其他按键1哇>>>>>";break; if(p[ren[0]+2]==' ')
{
swap(p[ren[0]+1],p[ren[0]+2]);
swap(p[ren[0]],p[ren[0]-1]);
p[ren[0]]='r';
ren[0]+=1;
break;
}
}
}
else
{
if(p[ren[0]+1]=='X')
{
cout<<"人碰到墙了换其他按键哇2>>>>>"; break;
}
if(p[ren[0]+1]==' ')
{
swap(p[ren[0]],p[ren[0]+1]);
ren[0]+=1;
break;
}
if(p[ren[0]+1]=='O')
{
//遇到箱子代码
if(p[ren[0]+2]=='O'||p[ren[0]+2]=='X')
{
cout<<"走不动了换按其他键哇......."<<endl; break;
}
if(p[ren[0]+2]=='r')
{
p[ren[0]+2]='O';
p[ren[0]+1]='I';
p[ren[0]]=' ';
ren[0]+=1;
break;
}
if(p[ren[0]+2]==' ')
{
p[ren[0]+2]='O';
p[ren[0]+1]='I';
p[ren[0]]=' ';
ren[0]+=1;
break;
}
}
}
}
break;
default:cout<<"操作错误!请确认后再重新操作......."<<endl; }
dituprint(p);
}
/*int panduan=0;
for(int i=1;i<xzs;i++)
{
if(p[ren[i]]=='O')panduan++;
}
if(panduan=(xzs-1)){getchar();break;}*/
}
return 0;
}
int level1()
{
cout<<"第一关"<<endl;
char ditu1[9*9]={
'0','1','2','3','4','5', '6','7','8',
'1',' ',' ','X','X','X',' ',' ',' ',
'2',' ',' ','X','r','X',' ',' ',' ',
'3',' ',' ','X',' ','X','X','X','X',
'4','X','X','X','O','
','O','r','X',
'5','X','r','
','O','I','X','X','X',
'6','X','X','X','X','O',
'X',' ',' ',
'7',' ',' ',' ','X','r','X',' ',' ',
'8',' ',' ',' ','X','X','X',' ',' '};
int ren1[5]={50,22,47,43,68};
opera(ditu1,ren1,4);
level2();
return 0;
}
int level2()
{
cout<<" 欢迎来到第二关"<<endl;
char ditu1[9*9]={
'0','1','2','3','4','5', '6','7','8',
'1',' ',' ','X','X','X',' ',' ',' ',
'2',' ',' ','X','r','X',' ',' ',' ',
'3',' ',' ','X',' ','X','X','X','X',
'4','X','X','X','O','
','O','r','X',
'5','X','r','
','O','I','X','X','X',
'6','X','X','X','X','O', 'X',' ',' ',
'7',' ',' ',' ','X','r','X',' ',' ',
'8',' ',' ',' ','X','X','X',' ',' '};
int ren1[5]={50,22,47,43,68};
opera(ditu1,ren1,4);
level1();
return 0;
}
int main()
{
int choice;
menu();
while(1)
{
cin>>choice;
switch(choice)
{
case 0:
exit(0);
case 1:
{
level1();
break;
}
case 2:
{
xuanguan();
break;
}
default:
{
cout<<"操作错误!请确认正确后操作......."<<endl; }
}
}
getchar();
return 0;
}。

相关文档
最新文档