栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言推箱子

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言推箱子

C语言实现简单推箱子

##关卡要求:

##思路:
#数据分析:
1、使用数字画地图,确定数值与字符的对应关系
0 ’ ’ 空地
1 ‘@’ 人物
2 ‘#’ 墙壁
3 '$ ’ 箱子
4 ‘o’ 目标点
5 ‘@’ 人物位于目标点
7 '$ ’ 箱子位于目标点
2、定义88整数地图并初始化
3、定义记录角色位置的变量 x y
4、定义记录步数的变量
逻辑分析:
进入死循环
1、清理屏幕、显示地图
如:if(0 == map[i][j]) printf(" ");
2、判断是否游戏胜利
3、获取方向键并处理
1、前方是路/目标点
前方 +1
原位置 -1
更新坐标
2、前方是箱子
箱子的前方是路目标点
人前方的前方 +3
人前方 -3+1
人原位置 -1
更新坐标
代码:
#include
#include
#include
#include
int main(int argc,const char
argv[])
{
time_t t=time(NULL);
int map[8][8]={
{0,0,2,2,2,2,0,0},
{0,0,2,4,4,2,0,0},
{0,2,2,0,4,2,2,0},
{0,2,0,0,3,4,2,0},
{2,2,0,3,0,0,2,2},
{2,0,0,2,3,3,0,2},
{2,0,0,1,0,0,0,2},
{2,2,2,2,2,2,2,2},
};
int count=0,x=6,y=3;
for( ; ; )
{
system(“clear”);
for(int i=0;i<8;i++)
{
for(int j=0;j<8;j++)
{
if(map[i][j]==0)printf(" “);
if(map[i][j]==1 || map[i][j]==5)printf(”@ “);
if(map[i][j]==2)printf(”# “);
if(map[i][j]==3 || map[i][j]==7)printf(”$ ");
if(map[i][j]==4)printf(“o “);
}
printf(”n”);
}
if(map[1][3]==7&&map[1][4]==7&&map[2][4]==7&&map[3][5]==7)
{
printf(“通关!用时%ld秒,走了%d步n”,time(NULL)-t,count);
return 0;
}
switch(getch())
{
case 183:
if(map[x-1][y]==0||map[x-1][y]==4)
{
map[x][y]-=1;
map[x-1][y]+=1;
x-=1;
count++;
}
else if(map[x-1][y]==3&&(map[x-2][y]==0||map[x-2][y]==4))
{
map[x][y]-=1;
map[x-1][y]-=2;
map[x-2][y]+=3;
x-=1;
count++;
}
else if(map[x-1][y]==7&&map[x-2][y]==4)
{
map[x][y]-=1;
map[x-1][y]-=2;
map[x-2][y]+=3;
x-=1;
count++;
}
break;
case 184:
if(map[x+1][y]==0||map[x+1][y]==4)
{
map[x][y]-=1;
map[x+1][y]+=1;
x+=1;
count++;
}
else if(map[x+1][y]==3&&(map[x+2][y]==0||map[x+2][y]==4))
{
map[x][y]-=1;
map[x+1][y]-=2;
map[x+2][y]+=3;
x+=1;
count++;
}
break;
case 186:
if(map[x][y-1]==0||map[x][y-1]==4)
{
map[x][y]-=1;
map[x][y-1]+=1;
y-=1;
count++;
}
else if(map[x][y-1]==3&&(map[x][y-2]==0||map[x][y-2]==4))
{
map[x][y]-=1;
map[x][y-1]-=2;
map[x][y-2]+=3;
y-=1;
count++;
}
break;
case 185:
if(map[x][y+1]==0||map[x][y+1]==4)
{
map[x][y]-=1;
map[x][y+1]+=1;
y+=1;
count++;
}
else if(map[x][y+1]==3&&(map[x][y+2]==0||map[x][y+2]==4))
{
map[x][y]-=1;
map[x][y+1]-=2;
map[x][y+2]+=3;
y+=1;
count++;
}
break;

	}
}

}

有一说一,csdn的编辑器太难用了!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1018019.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号