这段代码是一个推箱子游戏的实现。游戏中有一个地图,地图上有墙壁、人、箱子和目标位置。玩家通过键盘输入WASD或方向键来控制人物的移动,目标是将所有的箱子推到相应的目标位置上。
代码中的dt数组表示地图,每个位置上的字符表示对应的元素,如#表示墙壁,r表示人,O表示箱子,*表示目标位置。函数shuoming用来输出游戏说明,xianshi用来输出地图,find用来找到人物的位置,yidong用来处理人物移动的逻辑。
在主函数中,通过一个循环不断接受玩家的输入并更新地图。每次更新后,清空屏幕并输出游戏说明和地图。这样就实现了一个简单的推箱子游戏。
#include<bits/stdc++.h>
#include<conio.h>
using namespace std;
int x,y;
char dt[20][20]={
"##### ",
"#r # ",
"# OO# ### ",
"# O # #*# ",
"### ###*# ",
"# *# ",
"# ## # ",
"# #### ",
"######"
};
void shuoming(){
cout<<"---------推箱子游戏欢迎你---------"<<endl;
cout<<"| 通过WASD或方向键移动 |"<<endl;
cout<<"| r:人的位置 |"<<endl;
cout<<"| O:箱子的位置 |"<<endl;
cout<<"| *:箱子的目标位置 |"<<endl;
cout<<"----------------------------------"<<endl;
}
void xianshi(){
int i,j;
for(i=0;i<9;i++){
for(j=0;j<9;j++){
cout<<dt[i][j];
}
cout<<endl;
}
}
void find(){
for(x=0;x<9;x++){
for(y=0;y<9;y++){
if(dt[x][y]=='r'||dt[x][y]=='R'){
return;
}
}
}
}
void yidong(int x1, int y1, int x2, int y2) {
if (dt[x][y] == 'r') {
if (dt[x1][y1] == 'O') {
if (dt[x2][y2] == ' ') {
dt[x][y] = ' ';
dt[x1][y1] = 'r';
dt[x2][y2] = 'O';
}
if (dt[x2][y2] == '*') {
dt[x][y] = ' ';
dt[x1][y1] = 'r';
dt[x2][y2] = '@';
}
}
if (dt[x1][y1] == '@') {
if (dt[x2][y2] == ' ') {
dt[x][y] = ' ';
dt[x1][y1] = 'R';
dt[x2][y2] = 'O';
}
if (dt[x2][y2] == '*') {
dt[x][y] = ' ';
dt[x1][y1] = 'R';
dt[x2][y2] = '@';
}
}
if (dt[x1][y1] == ' ') {
dt[x][y] = ' ';
dt[x1][y1] = 'r';
}
if (dt[x1][y1] == '*') {
dt[x][y] = ' ';
dt[x1][y1] = 'R';
}
}
if (dt[x][y] == 'R') {
if (dt[x1][y1] == 'O') {
if (dt[x2][y2] == ' ') {
dt[x][y] = '*';
dt[x1][y1] = 'r';
dt[x2][y2] = 'O';
}
if (dt[x2][y2] == '*') {
dt[x][y] = '*';
dt[x1][y1] = 'r';
dt[x2][y2] = '@';
}
}
if (dt[x1][y1] == '@') {
if (dt[x2][y2] == ' ') {
dt[x][y] = '*';
dt[x1][y1] = 'R';
dt[x2][y2] = 'O';
}
if (dt[x2][y2] == '*') {
dt[x][y] = '*';
dt[x1][y1] = 'R';
dt[x2][y2] = '@';
}
}
if (dt[x1][y1] == ' ') {
dt[x][y] = '*';
dt[x1][y1] = 'r';
}
if (dt[x1][y1] == '*') {
dt[x][y] = '*';
dt[x1][y1] = 'R';
}
}
}
int main(){
char fangxiang;
shuoming();
xianshi();
while(1){
find();
fangxiang=getch();
switch(fangxiang){
case 72:
case 'W':
case 'w':
yidong(x-1,y,x-2,y);
break;
case 80:
case 'S':
case 's':
yidong(x+1,y,x+2,y);
break;
case 75:
case 'A':
case 'a':
yidong(x,y-1,x,y-2);
break;
case 77:
case 'D':
case 'd':
yidong(x,y+1,x,y+2);
break;
}
system("cls");
shuoming();
xianshi();
}
return 0;
}
这段代码是一个推箱子游戏的实现。游戏中有一个地图,地图上有墙壁、人、箱子和目标位置。玩家通过键盘输入WASD或方向键来控制人物的移动,目标是将所有的箱子推到相应的目标位置上。
代码中的dt数组表示地图,每个位置上的字符表示对应的元素,如#表示墙壁,r表示人,O表示箱子,*表示目标位置。函数shuoming用来输出游戏说明,xianshi用来输出地图,find用来找到人物的位置,yidong用来处理人物移动的逻辑。
在主函数中,通过一个循环不断接受玩家的输入并更新地图。每次更新后,清空屏幕并输出游戏说明和地图。这样就实现了一个简单的推箱子游戏。