结对作业--推箱子

一.负责内容 测试代码 并做心得

二选择程序对友选择推箱子小游戏

三代码

#include <dos.h> #include <stdio.h> #include <stdlib.h>#include <ctype.h> #include <conio.h> #include <bios.h> #include <alloc.h> /* 定义二维数组ghouse来记录屏幕上各点的状态, 其中:0表示什么都没有,‘b‘表示箱子,‘w‘表示墙壁,‘m‘表示目的地,‘i‘表示箱子在目的地。 */ char ghouse[20][20]; 

/* 以下函数为直接写屏函数,很酷的函数哦!是我朋友告诉我的。 */ char far *screen=(char far* )0xb8000000; void putchxy(int y,int x,char ch,char fc,char bc) { screen[(x*160)+(y<<1)+0]=ch; screen[(x*160)+(y<<1)+1]=(bc*16)+fc; } 

/* 定义判断是否胜利的数据结构 */ typedef struct winer { int x,y; struct winer *p; }winer; 

/* 箱子位置的数据结构 */ typedef struct boxs { int x,y; struct boxs *next; }boxs; 

/* 在特定的坐标上画墙壁并用数组记录状态的函数 */ void printwall(int x,int y) { putchxy(y-1,x-1,219,MAGENTA,BLACK); ghouse[x][y]=‘w‘; } 

/* 在特定的坐标上画箱子并用数组记录状态的函数 */ void printbox(int x,int y) { putchxy(y-1,x-1,10,WHITE,BLACK); ghouse[x][y]=‘b‘; } 

/* 在特定的坐标上画目的地并用数组记录状态的函数 */ void printwhither1(int x,int y,winer **win,winer **pw) { winer *qw; putchxy(y-1,x-1,‘*‘,YELLOW,BLACK); ghouse[x][y]=‘m‘; if(*win==NULL) { *win=*pw=qw=(winer* )malloc(sizeof(winer)); (*pw)->x=x;(*pw)->y=y;(*pw)->p=NULL; } else { qw=(winer* )malloc(sizeof(winer)); qw->x=x;qw->y=y;(*pw)->p=qw;(*pw)=qw;qw->p=NULL; } } 

/* 在特定的坐标上画目的地并用数组记录状态的函数 */ void printwhither(int x,int y) { putchxy(y-1,x-1,‘*‘,YELLOW,BLACK); ghouse[x][y]=‘m‘; } /* 在特定的坐标上画人的函数 */ void printman(int x,int y) { gotoxy(y,x); _AL=02;_CX=01;_AH=0xa; geninterrupt(0x10); } 

/* 在特定的坐标上画箱子在目的地上并用数组记录状态的函数 */ void printboxin(int x,int y) { putchxy(y-1,x-1,10,YELLOW,BLACK); ghouse[x][y]=‘i‘; } 

/* 初始化函数,初始化数组和屏幕 */ void init() { int i,j; system("cls"); for(i=0;i<20;i++) for(j=0;j<20;j++) ghouse[i][j]=0; _AL=3; _AH=0; geninterrupt(0x10); gotoxy(40,4); printf("Welcome to push box world!"); gotoxy(40,6); printf("Press up,down,left,right to play."); gotoxy(40,8); printf("Press Esc to quit it."); gotoxy(40,10); printf("Press space to reset the game."); gotoxy(40,12); printf("April 30th 2004."); } 

/* 第一关的图象初始化 */ winer *inithouse1() {int x,y; winer *win=NULL,*pw; gotoxy(8,2); printf("Level No.1"); for(x=1,y=5;y<=9;y++) printwall(x+4,y+10); for(y=5,x=2;x<=5;x++) printwall(x+4,y+10); for(y=9,x=2;x<=5;x++) printwall(x+4,y+10); for(y=1,x=3;x<=8;x++) printwall(x+4,y+10); for(x=3,y=3;x<=5;x++) printwall(x+4,y+10); for(x=5,y=8;x<=9;x++) printwall(x+4,y+10); for(x=7,y=4;x<=9;x++) printwall(x+4,y+10); for(x=9,y=5;y<=7;y++) printwall(x+4,y+10); for(x=8,y=2;y<=3;y++) printwall(x+4,y+10); printwall(5+4,4+10); printwall(5+4,7+10); printwall(3+4,2+10); printbox(3+4,6+10); printbox(3+4,7+10); printbox(4+4,7+10); printwhither1(4+4,2+10,&win,&pw); printwhither1(5+4,2+10,&win,&pw); printwhither1(6+4,2+10,&win,&pw); printman(2+4,8+10); return win; } 

/* 第三关的图象初始化 */ winer *inithouse3() {int x,y; winer *win=NULL,*pw; gotoxy(8,3); printf("Level No.3"); for(x=1,y=2;y<=8;y++) printwall(x+4,y+10); for(x=2,y=2;x<=4;x++) printwall(x+4,y+10); for(x=4,y=1;y<=3;y++) printwall(x+4,y+10); for(x=5,y=1;x<=8;x++) printwall(x+4,y+10); for(x=8,y=2;y<=5;y++) printwall(x+4,y+10); for(x=5,y=5;x<=7;x++) printwall(x+4,y+10); for(x=7,y=6;y<=9;y++) printwall(x+4,y+10); for(x=3,y=9;x<=6;x++) printwall(x+4,y+10); for(x=3,y=6;y<=8;y++) printwall(x+4,y+10); printwall(2+4,8+10); printwall(5+4,7+10); printbox(6+4,3+10); printbox(4+4,4+10); printbox(5+4,6+10); printwhither1(2+4,5+10,&win,&pw); printwhither1(2+4,6+10,&win,&pw); printwhither1(2+4,7+10,&win,&pw); printman(2+4,4+10); return win; } 

/* 第二关的图象初始化 */ winer *inithouse2() {int x,y; winer *win=NULL,*pw; gotoxy(8,2); printf("Level No.2"); for(x=1,y=4;y<=7;y++) printwall(x+4,y+10); for(x=2,y=2;y<=4;y++) printwall(x+4,y+10); for(x=2,y=7;x<=4;x++) printwall(x+4,y+10); for(x=4,y=1;x<=8;x++) printwall(x+4,y+10); for(x=8,y=2;y<=8;y++) printwall(x+4,y+10); for(x=4,y=8;x<=8;x++) printwall(x+4,y+10); for(x=4,y=6;x<=5;x++) printwall(x+4,y+10); for(x=3,y=2;x<=4;x++) printwall(x+4,y+10); for(x=4,y=4;x<=5;x++) printwall(x+4,y+10); printwall(6+4,3+10); printbox(3+4,5+10); printbox(6+4,6+10); printbox(7+4,3+10); printwhither1(5+4,7+10,&win,&pw); printwhither1(6+4,7+10,&win,&pw); printwhither1(7+4,7+10,&win,&pw); printman(2+4,6+10); return win; } 

/* 第四关的图象初始化 */ winer *inithouse4() {int x,y; winer *win=NULL,*pw; gotoxy(8,2); printf("Level No.4"); for(x=1,y=1;y<=6;y++) printwall(x+4,y+10); for(x=2,y=7;y<=8;y++) printwall(x+4,y+10); for(x=2,y=1;x<=7;x++) printwall(x+4,y+10); for(x=7,y=2;y<=4;y++) printwall(x+4,y+10); for(x=6,y=4;y<=9;y++) printwall(x+4,y+10); for(x=3,y=9;x<=5;x++) printwall(x+4,y+10); for(x=3,y=3;y<=4;y++) printwall(x+4,y+10); printwall(3+4,8+10); printbox(3+4,5+10); printbox(4+4,4+10); printbox(4+4,6+10); printbox(5+4,5+10); printbox(5+4,3+10); printwhither1(3+4,7+10,&win,&pw); printwhither1(4+4,7+10,&win,&pw); printwhither1(5+4,7+10,&win,&pw); printwhither1(4+4,8+10,&win,&pw); printwhither1(5+4,8+10,&win,&pw); printman(2+4,2+10); return win; } 

/* 移动在空地上的箱子到空地上 */ movebox(int x,int y,char a) {switch(a) { case ‘u‘:ghouse[x-1][y]=0;printf(" "); printbox(x-2,y);printman(x-1,y); ghouse[x-2][y]=‘b‘;break; case ‘d‘:ghouse[x+1][y]=0;printf(" "); printbox(x+2,y);printman(x+1,y); ghouse[x+2][y]=‘b‘;break; case ‘l‘:ghouse[x][y-1]=0;printf(" "); printbox(x,y-2);printman(x,y-1); ghouse[x][y-2]=‘b‘;break; case ‘r‘:ghouse[x][y+1]=0;printf(" "); printbox(x,y+2);printman(x,y+1); ghouse[x][y+2]=‘b‘;break; default: break; } } 

/* 移动在目的地上的箱子到空地上 */ moveinbox(int x,int y,char a) {switch(a) { case ‘u‘:ghouse[x-1][y]=‘m‘;printf(" "); printbox(x-2,y);printman(x-1,y); ghouse[x-2][y]=‘b‘;break; case ‘d‘:ghouse[x+1][y]=‘m‘;printf(" "); printbox(x+2,y);printman(x+1,y); ghouse[x+2][y]=‘b‘;break; case ‘l‘:ghouse[x][y-1]=‘m‘;printf(" "); printbox(x,y-2);printman(x,y-1); ghouse[x][y-2]=‘b‘;break; case ‘r‘:ghouse[x][y+1]=‘m‘;printf(" "); printbox(x,y+2);printman(x,y+1); ghouse[x][y+2]=‘b‘;break; default: break; } } 

/* 移动在空地上的箱子到目的地上 */ moveboxin(int x,int y,char a) {switch(a) { case ‘u‘:ghouse[x-1][y]=0;printf(" "); printboxin(x-2,y);printman(x-1,y); ghouse[x-2][y]=‘i‘;break; case ‘d‘:ghouse[x+1][y]=0;printf(" "); printboxin(x+2,y);printman(x+1,y); ghouse[x+2][y]=‘i‘;break; case ‘l‘:ghouse[x][y-1]=0;printf(" "); printboxin(x,y-2);printman(x,y-1); ghouse[x][y-2]=‘i‘;break; case ‘r‘:ghouse[x][y+1]=0;printf(" "); printboxin(x,y+2);printman(x,y+1); ghouse[x][y+2]=‘i‘;break; default: break; } } 

/* 移动在目的地上的箱子到目的地 */ moveinboxin(int x,int y,char a) {switch(a) { case ‘u‘:ghouse[x-1][y]=‘m‘;printf(" "); printboxin(x-2,y);printman(x-1,y); ghouse[x-2][y]=‘i‘;break; case ‘d‘:ghouse[x+1][y]=‘m‘;printf(" "); printboxin(x+2,y);printman(x+1,y); ghouse[x+2][y]=‘i‘;break; case ‘l‘:ghouse[x][y-1]=‘m‘;printf(" "); printboxin(x,y-2);printman(x,y-1); ghouse[x][y-2]=‘i‘;break; case ‘r‘:ghouse[x][y+1]=‘m‘;printf(" "); printboxin(x,y+2);printman(x,y+1); ghouse[x][y+2]=‘i‘;break; default: break; } } 

/* 判断特定的坐标上的状态 */ int judge(int x,int y) {int i; switch(ghouse[x][y]) { case 0: i=1;break; case ‘w‘: i=0;break; case ‘b‘: i=2;break; case ‘i‘: i=4;break; case ‘m‘: 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 if(judge(x-1,y)==1||judge(x-1,y)==3) {if(judge(x,y)==3) { printwhither(x,y);printman(x-1,y);break;} else {printf(" ");printman(x-1,y);break;} } else if(judge(x-1,y)==2) { if(judge(x-2,y)==1) {movebox(x,y,‘u‘); if(judge(x,y)==3) printwhither(x,y); gotoxy(y,x-1); } else if(judge(x-2,y)==3) { moveboxin(x,y,‘u‘); if(judge(x,y)==3) printwhither(x,y); gotoxy(y,x-1); } else gotoxy(y,x); break; } else if(judge(x-1,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) { moveinboxin(x,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(x,y)==3) { printwhither(x,y);printman(x+1,y);break;} else {printf(" ");printman(x+1,y);break;} } else if(judge(x+1,y)==2) { if(judge(x+2,y)==1) {movebox(x,y,‘d‘); if(judge(x,y)==3) printwhither(x,y);gotoxy(y,x+1); } else if(judge(x+2,y)==3) {moveboxin(x,y,‘d‘); if(judge(x,y)==3) printwhither(x,y);gotoxy(y,x+1); } else gotoxy(y,x); 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‘); if(judge(x,y)==3) printwhither(x,y);gotoxy(y,x+1); } else gotoxy(y,x); break; } 

case ‘l‘:if(!judge(x,y-1)) {gotoxy(y,x);break;} else if(judge(x,y-1)==1||judge(x,y-1)==3) {if(judge(x,y)==3) { printwhither(x,y);printman(x,y-1);break;} else {printf(" ");printman(x,y-1);break;} } else if(judge(x,y-1)==2) { if(judge(x,y-2)==1) {movebox(x,y,‘l‘); if(judge(x,y)==3) printwhither(x,y); gotoxy(y-1,x); } else if(judge(x,y-2)==3) {moveboxin(x,y,‘l‘); if(judge(x,y)==3) printwhither(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(x,y,‘l‘); if(judge(x,y)==3) printwhither(x,y); gotoxy(y-1,x); } else if(judge(x,y-2)==3) {moveinboxin(x,y,‘l‘); 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;} else if(judge(x,y+1)==1||judge(x,y+1)==3) {if(judge(x,y)==3) {printwhither(x,y);printman(x,y+1);break;} else {printf(" ");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‘); if(judge(x,y)==3) printwhither(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(x,y,‘r‘); if(judge(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; } } 

/* 按下空格键后,回到本关开头的函数 */ void reset(int i) {switch(i) { case 0: init(); inithouse1();break; case 1: init(); inithouse2();break; case 2: init(); inithouse3();break; case 3: init(); inithouse4();break; default:break; } } 

/* 主函数main */ main() {int key,x,y,s,i=0; winer *win,*pw; _AL=3;_AH=0; geninterrupt(0x10); init(); win=inithouse1();do{ _AH=3; geninterrupt(0x10); x=_DH+1;y=_DL+1; while(bioskey(1)==0); key=bioskey(0); switch(key) { case 0x4800:move(x,y,‘u‘);break; /* 按下向上键后 */ case 0x5000:move(x,y,‘d‘);break; /* 按下向下键后 */ case 0x4b00:move(x,y,‘l‘);break; /* 按下向左键后 */ case 0x4d00:move(x,y,‘r‘);break; /* 按下向右键后 */ case 0x3920:reset(i);break; /* 按下空格键后 */ default:break; } s=0; pw=win; while(pw) { if(ghouse[pw->x][pw->y]==‘m‘) s++; pw=pw->p; } if(s==0) { free(win); gotoxy(25,2); printf("Congratulate! You have passed Level %d!",i+1); 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(8,14); printf("Great! You have passed all the levels! Press any key to quit!"); key=0x011b;getch();break; default: break; } }}while(key!=0x011b); _AL=3; _AH=0; geninterrupt(0x10); }

(2)程序启动后,其菜单和主界面如图4.1所示

图4.1

4.2键盘的操作和功能测试

键盘操作功能测试,测试步骤如下(这里对其中的方向键“下”进行测试演示)

(1)游戏开始后的主角位置如图4.2所示。

(2)单击键盘上的“下”方向按键。

(3)查看主角是否向下移动,如图4.3所示

图4.2

图4.3

判断结果:键盘操作测试成功

4.3箱子放置到指定位置时变色显示功能的测试演示

具体测试步骤如下

(1)推箱子游戏已经开始如图4.2所示

(2)推动箱子到指定位置后,显示如图4.4所示

图4.4

当箱子推到指定位置时通过变色就可以确定箱子是否到达指定位置。

4.4游戏是否通关判断功能的测试演示

(1)游戏开始后,玩家将要推的箱子全部推倒指定位置,只剩最后一个箱子,如图4.5所示

图4.5  推动只剩余一个箱子到指定位置测试图

(2)将最后一个箱子推倒指定位置显示效果如图4.6所示

图4.6

点击确定按钮就可以进行下一关,点击取消则回到当前游戏界面

4.5隐藏炸弹和移动炸弹的功能测试演示

(1)按"B"键显示或隐藏炸弹,如图4.7所示

(2)在炸弹显示的情况下,按移动键可以来回移动炸弹,再按"回车"键引爆炸弹( 注:只能将墙壁引爆 ),如图4.8所示

图4.7   显示隐藏炸弹测试图

图4.8  移动炸弹以及引爆炸弹测试图

五 软件使用说明书

5.1操作说明:

1. 上、下、左、右键移动角色

2. "B"键显示或隐藏炸弹

3. 在炸弹显示的情况下,按"回车"键引爆炸弹( 注:只能将墙壁引爆 )

4. 按"退格"键可以返回上一步移动,只能回退20步

5.2特殊说明

1) 对菜单、工具栏、状态栏、位图进行了定义

2) 写了窗口刷新部分的代码, 提高了运行效率

3) 写了检测是否通关的功能模块,并对地图数据作了修改,运行效率有所提高

4)加入作弊功能:炸弹和回退功能

5)加入定时器功能

六 设计总结

这次的课程设计,从总体上来讲,我们组中3人都发挥出了各自的专长,所以,程序的实现方面比较成功,当然,在设计和编码的过程中,我们也遇到了不同的问题。

因为要求的使用的编程语言是8086汇编语言,由于对它的学习时间不长,所以,好多的指令理解不是很深刻。在一开始的设计的过程中,总体思想是很模糊的,准确地说,有些不知道从哪里下手,于是就参考了一些文献,加上老师地耐心指导,所以,开始打开了思路,知道使用矩阵这种模型将地图大块化小,从而实现所有动作的控制。我们选择的是图形显示模式,里面涉及到像素点儿的描绘。接下来,我们遇到的问题就是如何能够画出比较美观的图像。在老师的提示下,我们去学习了BMP文件格式,通过photoshop软件将别人做得比较好的图像转化成我们要求的格式。但是,在不断的实践中,我们发现那样提取出来的数据和自己想要的不太一样,而且差距比较大。所以,在没有弄清楚到底是什么原因的情况下,我们组的成员提议自己来配色,设计每一个元素的像素点儿。在她们的努力下,我们得图像才得以如此美观。

把所有的准备材料都准备好了的时候,我们的代码也写得差不多了,所有的模块功能都已经基本上完成。因为,这个程序的过程相对还是有些复杂的,所以,我们一个模块一个模块的代码往上增加,测试。当我们想把整个初始的地图显示出来的时候,就遇到了问题,刚开始的时候,是只能显示一个模块。找了很长时间的原因,才发现自己对偏移地址的理解是错误的,修正了这个问题后。接下来显示出来的仍然不是我们想要的初始的地图。又经过在代码中人为加上一些代码来进行测试,发现了,原来是指向没有统一。修正了这个错误后,我们的地图就显示出来了。接着在不断得加功能块的时候,出现了很多的跟预期差别很大的问题,比如说控制位不能定位到人身上,接收键盘值的时候,图像就会变化很大,还有后来的算法上的问题,人可以穿墙,人可以从箱子上走过去等一系列问题。在我们组员的不断努力下,我们把一个个的问题解决掉了。当我们把这个程序很完整得做出来的时候,我们从内心底中油然而生的是一种成就感。从这个设计,编码,调试的过程中,我体会最深的就是,一个问题,分析起来的时候,可能不是太难。但是,当你把很多的情况抽象统一的时候,就会出现很多你预料不到的问题,这个时候,你就需要别人来协助你,也就是说,我们要有很强的团队合作意识。同时,在遇到了自己以前没有遇到过的问题的时候,要有信心去克服它,如果有问题自己很以难以解决,就要学会借助外界的资源来帮助自己。比喻说,网络,参考书,老师。总之,从这次分组课程设计中我学到了很多有用的东西,在编码和调试的实践过程中提升了自己各个方面的能力。

时间: 2024-10-10 22:57:26

结对作业--推箱子的相关文章

第6次结对作业--郑锦伟&amp;古维城

第6次结对作业 在线英语学习平台客户端原型 1.结对成员 郑锦伟 2015034643034 古维城 2015034643033 2.原型设计工具实现-Photoshop 3.需求分析 使用NABCD模型进行需求分析 3.1 N(Need, 需求) 3.1.1具体功能和数据需求 3.1.1.1 登录注册管理 (1) 注册 用户填写基本信息进行注册,要填写的信息有(账号,密码,确认密码,邮箱,密保问题,密保问题可以设置多个,最多三个) (2) 登录 用户根据账号或者邮箱号进行登录 (3) 忘记密码

hihoCoder_推箱子

一.题目 题目1 : 推箱子 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 推箱子是一款经典游戏.如图所示,灰色格子代表不能通过区域,蓝色方格是箱子,黑色圆形代表玩家,含有圆点的格子代表目标点. 规定以下规则: 1.一局游戏中只会有一个箱子,一个玩家和一个目标点. 2.通过方向键控制玩家移动. 3.图中的灰色格子代表墙壁,玩家与箱子都不能通过. 4.推到墙壁的箱子,就无法再将箱子推离墙壁,因为玩家无法到达箱子靠墙壁的一侧去推箱子.也就是说箱子只能以"被推"

致佳音: 推箱子游戏自动求解算法设计(一)

本来酷爱音乐, 老衲也想谱一曲<献给爱丽丝>之类, 通俗又有境界的曲子, 奈何没有那个水平, 也不是一个程序员做的勾当,于是就有了本文. 希望莲花妹妹跟着思路走,能遗忘那些太多的忧伤-- 本文分以下四个小节: 一.平面寻路算法(Alpha Star) 二.闭合图形填充算法(扫描线种子填充) 三.推箱子求解 四.执行效率的优化 日本人有个程序叫Sokuban Automatic Solver,文件名是sokoban722.exe我附带在资源里面 不过日本人的东西没有开源,我们也不知道它里面的花花

致佳音: 推箱子游戏自动求解算法设计(二)

这一个小节我们说一说传说中的A×算法,其实之前也上传过类似的小件件,这里我们就去剖析一下它 毕竟在游戏程序,我们要从一点移动到另一点,并得到最短路程的轨迹,类似这种算法还有好几种,执行效率都差不多,不过大多不能得到轨迹 首先,从一点移动到另一点,最快就是直接走过去了,就像小男生爱上小女生,最好的办法就是直接走到她面前说:我爱你 不过理想状态,几乎是没有的,弯路那是必然的经过,有曲线,其实更美-- 那么弯路该怎么走呢,是不是先去背景看下毛主席,再去三亚晒个太阳,再回来告诉她外面的世界好美,不,不,

12月28日 二维数组的应用:第一个小游戏(推箱子)

小游戏:******推箱子******** static void Main(string[] args) { int i, j; int[,] a = new int[10, 10]                  //二维数组的定义           类型[,] 数组名 = new  类型 [行数, 列数] {赋值}:   或单个赋值 a[i,j]=1; { {1,1,1,1,1,1,1,1,1,1}, {1,0,0,0,0,0,0,0,0,1}, {1,0,2,0,0,8,0,0,0,

搜索 [HDU 1254] 推箱子

推箱子 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 5343    Accepted Submission(s): 1503 Problem Description 推箱子是一个很经典的游戏.今天我们来玩一个简单版本.在一个M*N的房间里有一个箱子和一个搬运工,搬运工的工作就是把箱子推到指定的位置,注意,搬运工只能推箱子而不能拉箱子

C语言版推箱子

推箱子源代码初步: 1 #include<stdio.h> 2 #include<conio.h> 3 #include<stdlib.h> 4 #define boolean int 5 #define true 1 6 #define false 0 7 8 #define ROWS 10 9 //之所以定义为11,是因为字符串的尾部的\0 10 #define COLUMNS 11 11 12 //根据程序定义或者文件读入来构建地图,然后把他绘制到屏幕上 13 v

java版 推箱子,俄罗斯方块,诗歌默写,坦克!由瑶哥特改造哦!

其实我发现自己用java还真的写了好多小游戏了,一起刚刚开始学java的时候听学长说,写个俄罗斯方块要看一本搬砖厚的书, 刚开始还不信,不过现在信了,javaSe学完是要有本搬砖候的书了! 这个好像也是大一写的吧,具体时间都记不得了. 这个游戏还是改良了一下咯,我添加了个魔鬼的角色在里面, 魔鬼可以退箱子,而且魔鬼不能碰到你,碰到你,你就over了 .比以前的推箱子好玩些.我自己也经常玩玩. 懒得把自己写的一些java写游戏一个一个发文章了一次性吧,总之如果要代码找我QQ就好了935090232

推箱子(嵌套搜索,bfs中有dfs)

推箱子 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 6416    Accepted Submission(s): 1834 Problem Description 推箱子是一个很经典的游戏.今天我们来玩一个简单版本.在一个M*N的房间里有一个箱子和一个搬运工,搬运工的工作就是把箱子推到指定的位置,注意,搬运工只能推箱子而不能拉箱子,