#include<stdio.h>
#include<stdlib.h>
int main(void)
{
char sr;//存储用户输入的指令
//绘制地图
char a[11][20]={
"###################",
"###################",
"### $ $ ###",
"### ##### ###",
"### ###",
"#### #### ### ####",
"### # @ # ###",
"### # @ # ###",
"### ^ ###",
"###################",
"###################"};
// 定义箱子,小人和目的的坐标
int i=1,e=8,f=9,m=7,n=9,x=6,y=9;
while(i)
{
//清屏,给人一种真实游戏的感觉,这是在MAC环境上的,WIN的清屏语句是system("cls")
//这个程序所用到的类型和语法除了清屏这句还有清除缓存区都是可以在WIN系统下,VC++6.0里完美运行的
system("clear");
printf("欢迎使用推箱子\n^就代表你,而你的工作就是把@推到$的位置,好好努力吧!\n");
printf("对了w代表上,s代表下,a代表左,d代表右,q表示退出,开始吧!\n");
//判断是否推到目的地
if(m== 2 && n==8)
{
if(x==2 && y==10)
{
printf("恭喜你挑战成功!\n");
break;
}
}
if(m==2 && n==10)
{
if(x==2 && y==8)
{
printf("恭喜你挑战成功!\n");
break;
}
}
//打印地图
for(int b=0;b<11;b++)
{
for(int c=0;c<20;c++)
{
printf("%c",a[b][c]);
}
printf("\n");
}
//清除缓存区
fpurge(stdin);
scanf("%c",&sr);
//判断方向
switch(sr)
{
case 'w':
case 'W':
if(a[e-1][f]==' ')
{
a[e-1][f]='^';
a[e][f]=' ';
e-=1;
}
else if(a[e-1][f]=='@' && a[e-2][f]!='#' && a[e-2][f]!='@')
{
if(e-m==1 && f==n)
{
m-=1;
a[m][n]='@';
a[e-1][f]='^';
a[e][f]=' ';
e-=1;
}
else if(e-x==1 && f==y)
{
x-=1;
a[x][y]='@';
a[e-1][f]='^';
a[e][f]=' ';
e-=1;
}
}
break;
case 's':
case 'S':
if(a[e+1][f]==' ')
{
a[e+1][f]='^';
a[e][f]=' ';
e+=1;
}
else if(a[e+1][f]=='@' && a[e+2][f]!='#' && a[e+2][f]!='@')
{
if(m-e==1 && f==n)
{
m+=1;
a[m][n]='@';
a[e+1][f]='^';
a[e][f]=' ';
e+=1;
}
else if(x-e==1 && y==f)
{
x+=1;
a[x][y]='@';
a[e+1][f]='^';
a[e][f]=' ';
e+=1;
} }
break; case 'a':
case 'A':
if(a[e][f-1]==' ')
{
a[e][f-1]='^';
if((e==2 && f==8)||(e==2 && f==10))
a[e][f]='$';
else
a[e][f]=' ';
f-=1;
}
else if(a[e][f-1]=='$')
{
a[e][f-1]='^';
if((e==2 && f==8)||(e==2 && f==10))
a[e][f]='$';
else
a[e][f]=' ';
f-=1;
}
else if(a[e][f-1]=='@' && a[e][f-2]!='#' && a[e][f-2]!='@')
{
if(e==m && f-n==1)
{
n-=1;
a[m][n]='@';
a[e][f-1]='^';
if((e==2 && f==8)||(e==2 && f==10))
a[e][f]='$';
else
a[e][f]=' ';
f-=1;
}
else if(e==x && f-y==1)
{
y-=1;
a[x][y]='@';
a[e][f-1]='^';
if((e==2 && f==8)||(e==2 && f==10))
a[e][f]='$';
else
a[e][f]=' ';
f-=1;
}
}
break;
case 'd':
case 'D':
if(a[e][f+1]==' ')
{
a[e][f+1]='^';
if((e==2 && f==8)||(e==2 && f==10))
a[e][f]='$';
else
a[e][f]=' ';
f+=1;
}
else if(a[e][f+1]=='$')
{
a[e][f+1]='^';
if((e==2 && f==8)||(e==2 && f==10))
a[e][f]='$';
else
a[e][f]=' ';
f+=1;
}
else if(a[e][f+1]=='@' && a[e][f+2]!='#' && a[e][f+2]!='@')
{
if(e==m && n-f==1)
{
n+=1;
a[m][n]='@';
a[e][f+1]='^';
if((e==2 && f==8)||(e==2 && f==10))
a[e][f]='$';
else
a[e][f]=' ';
f+=1;
}
else if(e==x && y-f==1)
{
y+=1;
a[x][y]='@';
a[e][f+1]='^';
if((e==2 && f==8)||(e==2 && f==10))
a[e][f]='$';
else
a[e][f]=' ';
f+=1;
}
}
break;
case 'q':
case 'Q':i=0;break;
}
}
return 0;
}

  

OC推箱子的更多相关文章

  1. c语言游戏推箱子

    前两天做了推箱子小游戏,看似简单的一个小游戏背后却 有巨大的秘密,这秘密就是一大堆逻辑. 自从学习了函数过后,的确是解决了很多问题,而且调用很方便,尽管我现在都不是很会调用. 写完一个函数,准备测试一 ...

  2. JavaScript写一个小乌龟推箱子游戏

    推箱子游戏是老游戏了, 网上有各种各样的版本, 说下推箱子游戏的简单实现,以及我找到的一些参考视频和实例: 推箱子游戏的在线DEMO : 打开 如下是效果图: 这个拖箱子游戏做了移动端的适配, 我使用 ...

  3. 用C#制作推箱子小游戏

    思路分析: 一.制作一个地图 二.地图中放置墙.箱子.人.目标等 三.让小人动起来完成推箱子动作 游戏制作: 1.按照上述地图制作一个地图  (12行×13列) 地图可以看做是行和列组成的,即可以看做 ...

  4. hdu.1254.推箱子(bfs + 优先队列)

    推箱子 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submis ...

  5. [游戏模版17] Win32 推箱子 迷宫

    >_<:Here introduce a simple game: >_<:resource >_<:only can push a box and finally ...

  6. [转]Flash ActionScript2.0面向对象游戏开发-推箱子

    本文转自:http://www.alixixi.com/Dev/W3C/Flash/2007/2007070868666.html 概述: Flash ActionScript2.0是一种面向对向的编 ...

  7. c#部分---网吧充值系统;简易的闹钟;出租车计费;简单计算器;对战游戏;等额本金法计算贷款还款利息等;随机生成10个不重复的50以内的整数;推箱子;

    网吧充值系统namespace ConsoleApplication1 { class Program { struct huiyuan { public string name; public st ...

  8. c++、c实现推箱子小游戏

    经过四次的修改和优化,终于将推箱子这个游戏完整的写出来了,今天就像大家分享一下这个游戏的编写. 这个游戏界面的编写总的来说不困难,主要是推动箱子的算法. (1)利用数组和windows api 即可写 ...

  9. [HDU 1254] 推箱子

    推箱子 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submis ...

随机推荐

  1. strncpy函数使用

    strncpy()函数原型:extern char *strncpy(char *dest, char *src, int n);    用法:#include <string.h>    ...

  2. mysql的优化

    1.选取最适用的字段属性 MySQL可以很好的支持大数据量的存取,但是一般说来,数据库中的表越小,在它上面执行的查询也就会越快.因此,在创建表的时候,为了获得更好的性能,我们可以将表中字段的宽度设得尽 ...

  3. hibernate学习三(使用Annotation,注解)

    一.新建一个工程hibernate_02_HelloWorld_Annotation(复制01工程并重命名); 二.新建一个实体类teacher.java,数据库中新建teacher表; import ...

  4. RabbitMQ学习

    参考链接:http://www.cnblogs.com/leocook/p/mq_rabbitmq_0.html

  5. 关于.dll' could not be found 的问题以及解决方案

    最近做项目遇到这个问题,搞了半天,也没有解决. 后台看看了生成的详细信息,提示引用的版本不统一,最后移除,再添加一个相同版本的Mysql.Data.Mysql.Data.Entity.EF6 就解决了 ...

  6. Apache流处理框架对比

    分布式流处理,类似于MapReduce这样的通用计算模型,但是却要求它能够在毫秒级别或者秒级别完成响应.这些系统可以用DAG表示流处理的拓扑. Points of Interest 在比较不同系统是, ...

  7. Yii2 ActiveRecord save失败

    当给AR写beforeSave方法时,注意返回true还是false.如果没有返回值,或者返回false,那么就不会存入数据库.如下 晚上写代码的时候beforeSave忘了返回true,导致无法存入 ...

  8. 收藏的Android学习资源

    1. Android中混合开发系列 Android中Java与JavaScript的交互,可用来实现网页与本地APP的交互,信息的传递等: 谈谈App的混合开发,可以让一部分功能由html5开发,这部 ...

  9. (转)winform(C#)里几种弹出对话框

    //消息框中需要显示哪些按钮,此处显示“确定”和“取消” MessageBoxButtons messButton = MessageBoxButtons.OKCancel; //"确定要退 ...

  10. git知识点整理