C语言编写的推箱子游戏.docx
《C语言编写的推箱子游戏.docx》由会员分享,可在线阅读,更多相关《C语言编写的推箱子游戏.docx(19页珍藏版)》请在咨信网上搜索。
1、/* 一个C语言编写的推箱子游戏源代码7/*本游戏是字符模式的,请不要在中文dos下运行。本游戏在TURBO C下调试通过*/include include include include include include /*定义二维数组ghouse来记录屏幕上各点的状态,其中:。表示什么都没有,b表示箱子,w、表示墙壁,m,表示目的地,T表示箱子 在目的地。*/char ghouse2020;/*以下函数为直接写屏函数,很酷的函数哦!是我朋友告诉我的。*/char far *screen=(char far* )0xb8000000;void putchxy(int y,int x,char
2、 ch.char fc,char be)screen(x*160)+(y1 )+0=ch;screen(x*160)+(y1 )+1 =(bc*16)+fc;)/*定义判断是否胜利的数据结构7typedef struct winer int x.y;struct winer *p;Jwiner;/*箱子位置的数据结构*/typedef struct boxs int x,y;struct boxs *next;boxs;/*在特定的坐标上画墙壁并用数组记录状态的函数7default: break;)/*判断特定的坐标上的状态*/int judge(int x,int y)(inti;switc
3、h(ghousexy)(case 0: i=1;break;case w: i=0;break;case b: i=2;break;case T: i=4;break;casem: i=3;break;default: break;)return i;)/*处理按下键盘后,人物移动的主函数*/move(int x.int y,char a)(switch(a)(case u:if(!judge(x-1 ,y) gotoxy(y,x);break; else ifQudge(x-1 ,y)=1|judge(x-1 ,y)=3) if(judge(x,y)=3)printwhither(x,y);
4、printman(x-1 ,y);break;elseprintf( );printman(x-1 ,y);break;)else ifQudge(x-1,y)=2)if(judge(x-2,y)=1)movebox(xsy;u);ifQudge(x,y)=3) printwhither(x,y); gotoxy(y,x-1);)else if(judge(x-2,y)=3) moveboxin(x,y;u,);ifQudge(x,y)=3) printwhither(x,y); gotoxy(y,x-1);)else gotoxy(y,x);break;)else if(judge(x-1,
5、y)=4)if(judge(x-2,y)=1)moveinbox(x,y,u);if(judge(x,y)=3) printwhither(x,y);gotoxy(y,x-1);)else if(judge(x-2,y)=3) moveinboxinfx.y/u*);if(judge(x,y)=3) printwhither(x,y);gotoxy(y,x-1);)else gotoxy(y,x);break;)case d:if(!judge(x+1 ,y) gotoxy(y,x);break;else if(judge(x+1 ,y)=1 |judge(x+1 ,y)=3)if(judge
6、(x,y)=3)printwhither(xsy);printman(x+1 ,y);break; elseprintf(H M);printman(x+1 ,y);break;)else if(judge(x+1,y)=2) if(judge(x+2,y)=1)movebox(x,y;d);ifQudge(x,y)=3) printwhither(x,y);gotoxy(y,x+1);)else if(judge(x+2,y)=3)moveboxin(x,y,d);ifQudge(x,y)=3) printwhither(x,y);gotoxy(y,x+1);)else gotoxy(y,x
7、);break;)else if(judge(x+1,y)=4)if(judge(x+2,y)=1)moveinbox(x,y;d);if(judge(x,y)=3) printwhither(x,y);gotoxy(y,x+1);)else if(judge(x+2,y)=3)moveinboxin(x,y;d);ifQudge(x,y)=3) printwhither(x,y);gotoxy(y,x+1);)else gotoxy(y,x);break;)case T:if(!judge(x,y-1) gotoxy(y,x);break;else ifQudge(x,y-1)=1 |jud
8、ge(x,y-1)=3)if(judge(x,y)=3)printwhither(x,y);printman(x,y-1);break; elseprintf( );printman(x,y-1 );break;)else if(judge(x,y-1)=2)if(judge(x,y-2)=1)movebox(x,y,T);if(judge(x,y)=3) printwhither(x,y); gotoxy(y-1,x);)else if(judge(x,y-2)=3)moveboxin(x,y,T);if(judge(x,y)=3) printwhither(x,y); gotoxy(y-1
9、 ,x);)else gotoxy(y,x);break;)else if(judge(x,y-1)=4)if(judge(x,y-2)=1)moveinbox(x,y,T);if(judge(x,y)=3) printwhither(x,y); gotoxy(y-1,x);)else if(judge(x,y-2)=3)moveinboxin(x,y,T);if(judge(x,y)=3) printwhither(x,y); gotoxy(y-1 ,x);)else gotoxy(y,x);break;)case r:if(!judge(x,y+1) gotoxy(y,x);break;e
10、lse ifQudge(x,y+1 )=1 |judge(x,y+1)=3)if(judge(x,y)=3)printwhither(x,y);printman(x,y+1);break; elseprintf( );printman(x,y+1 );break;)else if(judge(x,y+1)=2)if(judge(x,y+2)=1)movebox(x,y;r);if(judge(x,y)=3) printwhither(x,y); gotoxy(y+1,x);)else if(judge(x,y+2)=3)moveboxin(x,y,r);ifQudge(x,y)=3) prin
11、twhither(x,y); gotoxy(y+1 ,x);)else gotoxy(y,x);break;)else if(judge(x,y+1)=4)if(judge(x,y+2)=1)moveinbox(x5y,r,);ifQudge(x,y)=3) printwhither(x,y); gotoxy(y+1,x);)else if(judge(x,y+2)=3)moveinboxin(x,y,r);if(judge(x,y)=3) printwhither(x,y); gotoxy(y+1 ,x);)else gotoxy(y,x); break;) default: break;)
12、r按下空格键后因到本关开头的函数*/ void reset(int i)(switch(i)(case 0: init();inithouse1();break;case 1: init();inithouse2();break;init();inithouse3();break;case 2: init();inithouse4();break;default:break;)/*主函数main*/void main()(int key,x,y,s,i=0;winer *win,*pw;_AL=3;_AH=0;geninterrupt(OxW);init();win=inithouse1();
13、doAH=3;geninterrupt(OxlO);x=_DH+1 ;y=_DL+1;while(bioskey(1)=0);key=bioskey(0);switch(key)(case 0x4800:move(x,y;u);break; /* 按下向上键后 7case 0x5000:move(x,y;d);break; /* 按下向下健后 7case 0x4b00:move(x,y,T);break; /* 按下向左键后 7case 0x4d00:move(x,y,r);break; /* 按下向右键后 7case 0x3920:reset(i);break; /* 按下空格键后 */ d
14、efault:break;)s=0;pw=win;while(pw)(if(ghousepw-xpw-y=m) s+;pw=pw-p;)if(s=O)(free(win);gotoxy(25,2);printf(congratulate! you did a good job!);getch();i+; switch(i) (case 1: init();win=inithouse2();break;case 2: init();win=inithouse3();break;case 3: init();win=inithouse4();break;case 4: gotoxy(15,21);
15、printf(My dear Friend, How smart you are! Welcome to play again!); key=0x011b;getch();break;default: break;)while(key!=OxO11b);AL=3;_AH=O;geninterrupt(OxlO);)附录资料:不需要的可以自行删除Abstract: Based on the comprehensive analysis on the plastic parts structure service requirement, mounding quality and mould me
16、nu factoring cost. A corresponding injection mould of internal side core pulling was designed. By adopting the multi-direction and multi-combination core-pulling. A corresponding injection mould of internal side core pulling was designed, the working process of the mould was introducedC语言详解一枚举类型注:以下
17、全部代码的执行环境为VC+ 6.0在程序中,可能需要为某些整数定义个别名,我们可以利用预处理指令#dcfine来完成这 项工作,您的代码可能是:#define MON 1#defineTUE 2#define WED 3#defineTHU 4# define FRI 5dcfine SAT 6# define SUN 7在此,我们定义一种新的数据类型,希望它能完成同样的工作。这种新的数据类型叫枚举型。1 .定义一种新的数据类型-枚举型以下代码定义了这种新的数据类型-枚举型enum DAYMON=1,TUE, WED, THU, FRI, SAT, SUN(i)枚举型是一个集合,集合中的元素(
18、枚举成员)是一些命名的整型常量,元素之间用逗号, 隔开。(2) DAY是一个标识符,可以看成这个集合的名字,是一个可选项,即是可有可无的项。(3)第一个枚举成员的默认值为整型的0,后续枚举成员的值在前一个成员上加1。(4)可以人为设定枚举成员的值,从而自定义某个范围内的整数。(5)枚举型是预处理指令#dMne的替代。(6)类型定义以分号;结束。2 .使用枚举类型对变吊进行声明新的数据类型定义完成后,它就可以使用了。我们已经见过最基本的数据类型,如:整型int, 单精度浮点型float,双精度浮点型double,字符型char,短整型short等等。用这些基本数据 类型声明变量通常是这样:cha
19、ra; 变量a的类型均为字符型charcharletter;int x,y,z; 变量x,y和z的类型均为整型intint number;double m, n;double result; 变量result的类型为双精度浮点型double既然枚举也是一种数据类型,那么它和基本数据类型一样也可以对变量进行声明。方法一:枚举类型的定义和变量的声明分开enuni DAY|MON=1,TUE, WED. THU, FRI, SAT, SUN;enum DAY yesterday;enum DAY today;enum DAY tomorrow; 变量 tomorrow 的类型为枚举型 enum DA
20、Yenum DAY good_day, bad_day; /变量 good_day 和 bad_day 的类型均为枚举型 enuni DAY方法二:类型定义与变量声明同时进行:enum/跟第一个定义不同的是,此处的标号DAY省略,这是允许的。Saturday,sunday = 0, monday, tuesday, Wednesday, thursday, friday workday; /变量workday的类型为枚举型cnum DAYenum week Mon=l, Tue, Wed, Thu, Fri Sal, Sun days; 变量 days 的类型为枚举型 enum weekenu
21、m BOOLEAN false, (rue end_flag, maich_flag; 定义枚举类型并声明了两个枚举型变 量方法三:用typedef关键字将枚举类型定义成别名,并利用该别名进行变量声明:typedcf enum workday Saturday, sunday = 0, monday, tuesday, Wednesday, thursday, friday workday; 此处的workday为枚举型enum workday的别名workday loday, tomorrow; 变量 uxlay 和 tomorrow 的类型为枚举型 workday,也即 enum work
22、dayenum workday 中的 workday 可以省略:typedef enum (Saturday, sunday = 0, monday, tuesday, Wednesday, thursday, friday workday; /此处的workday为枚举型enum workday的别名workday today, tomorrow; 变量 today 和 tomorrow 的类型为枚举型 workday,也即 enum workday也可以用这种方式:(ypedef enum workdaySaturday, sunday = 0, monday, tuesday, Wedn
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 编写 箱子 游戏
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【二***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【二***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。