自己写的一个推箱子代码,方法可能不太好,很好的方式肯定是有的,分享一下吧!

嘻嘻额吉 2019-11-02 04:41:56
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
int main(){
char a[50][50]={" ### ",
" #*# ",
" # # ",
"####o######",
"#* os o *#",
"#####o#####",
" # # ",
" #*# ",
" ### ",
};
int i,x,y;
char ch;
x=4;y=5;
for(i=0;i<=8;i++)
puts(a[i]);
while(1){
ch=getchar();
if(ch=='s'){
if(a[x+1][y]!='#'&&a[x+1][y]=='o'&&a[x+2][y]!='#'&&a[x+2][y]!='o'){
a[x][y]=' ';
a[x+2][y]='o';
x++;
a[x][y]='s';
}else{
if(a[x+1][y]!='#'&&a[x+1][y]!='o'){
a[x][y]=' ';
x++;
a[x][y]='s';
}
}
}
if(ch=='w'){
if(a[x-1][y]!='#'&&a[x-1][y]=='o'&&a[x-2][y]!='#'&&a[x-2][y]!='o'){
a[x][y]=' ';
a[x-2][y]='o';
x--;
a[x][y]='s';
}else{
if(a[x-1][y]!='#'&&a[x-1][y]!='o'){
a[x][y]=' ';
x--;
a[x][y]='s';
}
}
}
if(ch=='a'){
if(a[x][y-1]!='#'&&a[x][y-1]=='o'&&a[x][y-2]!='#'&&a[x][y-2]!='o'){
a[x][y]=' ';
a[x][y-2]='o';
y--;
a[x][y]='s';
}else{
if(a[x][y-1]!='#'&&a[x][y-1]!='o'){
a[x][y]=' ';
y--;
a[x][y]='s';
}
}
}
if(ch=='d'){
if(a[x][y+1]!='#'&&a[x][y+1]=='o'&&a[x][y+2]!='#'&&a[x][y+2]!='o'){
a[x][y]=' ';
a[x][y+2]='o';
y++;
a[x][y]='s';
}else{
if(a[x][y+1]!='#'&&a[x][y+1]!='o'){
a[x][y]=' ';
y++;
a[x][y]='s';
}
}
}
if(a[4][1]!='o'&&a[4][1]!='s')
a[4][1]='*';
if(a[1][4]!='o'&&a[1][4]!='s')
a[1][4]='*';
if(a[4][9]!='o'&&a[4][9]!='s')
a[4][9]='*';
if(a[7][5]!='o'&&a[7][5]!='s')
a[7][5]='*';
system("cls");
for(i=0;i<=8;i++)
puts(a[i]);
if(a[4][1]=='o'&&a[1][4]=='o'&&a[4][9]=='o'&&a[7][5]=='o')
break;
}
system("cls");
printf("You win!");
Sleep(5000);
return 0;
}
...全文
54 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
嘻嘻额吉 2019-11-09
  • 打赏
  • 举报
回复
引用 11 楼 qq_45837591的回复:
我是菜鸟,怎么玩啊
wasd要按回车,你可以试试把getchar改为gatch
羊⁢⁡⁢⁡驼 2019-11-04
  • 打赏
  • 举报
回复
我是菜鸟,怎么玩啊
嘻嘻额吉 2019-11-02
  • 打赏
  • 举报
回复
引用 9 楼 wowpH的回复:
可以搜搜getch和getche
我知道这个,不用按回车,
wowpH 2019-11-02
  • 打赏
  • 举报
回复
可以搜搜getch和getche
嘻嘻额吉 2019-11-02
  • 打赏
  • 举报
回复
按wasd的,这个没有给任何提示,尴尬了。
wowpH 2019-11-02
  • 打赏
  • 举报
回复
对了,没有玩法提示。我还以为按上下左右。。。结果不动
嘻嘻额吉 2019-11-02
  • 打赏
  • 举报
回复
那我就根据你的建议去了解然后改进吧!
嘻嘻额吉 2019-11-02
  • 打赏
  • 举报
回复
引用 2 楼 wowpH的回复:
可以考虑模块化。你的代码全部挤在一个main函数里面非常混乱。不易修改。
嗯嗯目前还没有学到那个境界,😂
wowpH 2019-11-02
  • 打赏
  • 举报
回复
引用 3 楼 骆和涛 的回复:
[quote=引用 1 楼 wowpH的回复:]可以考虑弄个文件操作。从文件中读取地图。你这一关不过瘾。 CSDN论坛新手指南
谢谢你的指点,收藏你的帖子了,有时间看[/quote]那我期待你的改进版。
嘻嘻额吉 2019-11-02
  • 打赏
  • 举报
回复
引用 1 楼 wowpH的回复:
可以考虑弄个文件操作。从文件中读取地图。你这一关不过瘾。 CSDN论坛新手指南
谢谢你的指点,收藏你的帖子了,有时间看
wowpH 2019-11-02
  • 打赏
  • 举报
回复
可以考虑模块化。你的代码全部挤在一个main函数里面非常混乱。不易修改。
wowpH 2019-11-02
  • 打赏
  • 举报
回复
可以考虑弄个文件操作。从文件中读取地图。你这一关不过瘾。 CSDN论坛新手指南

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧