资源描述:
《纯C编写“推箱子”小游戏.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、此小游戏使用C语言编写,简单易懂……^^适合初学!!(VS2008下编的)#include#include#includeinti,j;voiddraw_map(intmap[10][12]);//声明画图函数intmain(){charinput;intcount=0;//定义记分变量/*下面定义一个二维数组,其中的元素是不同图像的ID号,在后面的函数中将讲解不同数字分别代表的图像元素*/intmap[10][12]={{2,2,2,2,2,1,1,1,1,1,2,2},{1,1,1,1,2,1,0,0,0,1,1,2}
2、,{1,0,0,1,1,1,0,1,0,0,1,2},{1,0,4,3,3,3,3,3,1,0,1,1},{1,0,0,1,1,3,3,3,4,0,0,1},{1,0,0,0,0,4,1,1,4,1,0,1},{1,0,4,1,4,0,0,0,4,0,0,1},{1,1,0,6,0,1,1,1,4,1,0,1},{2,1,1,1,1,1,2,1,0,0,0,1},{2,2,2,2,2,2,2,1,1,1,1,1}};while(1)//死循环,等待用户命令{system("CLS");draw_map(map);printf("当前得分:%d",count);//找初始位置
3、for(i=0;i<10;i++){for(j=0;j<12;j++){if(map[i][j]==6
4、
5、map[i][j]==9)break;}if(map[i][j]==6
6、
7、map[i][j]==9)break;}printf("您的当前坐标(%d,%d)",i,j);input=getch();//用getch()函数无需回车确认地获取用户输入,用于控制行走方向。switch(input){case'w'://如果人前面是空地。if(map[i-1][j]==0){map[i-1][j]=6+0;//人往前走一步,ID为人的ID()加上空地的ID()。if(map[i]
8、[j]==9)//如果当前人站的位置为目的地,则ID为(即人的ID()加上目的地ID())。map[i][j]=3;//将人往前走一步后原地的ID修改为空地ID()。elsemap[i][j]=0;//否则原地ID修改为空地ID。}//如果人前面是目的地。elseif((map[i-1][j]==3)
9、
10、(map[i-1][j]==9)){map[i-1][j]=6+3;//人往前走一步,ID为人ID+目的地ID=9。if(map[i][j]==9)//如果原地也是目的地(ID为)。map[i][j]=3;//人走后把原地ID修改回目的地ID。elsemap[i][j]=0;/
11、/否则原地ID修改为为空地ID}//如果人前面是箱子。elseif(map[i-1][j]==4){//如果人前面是箱子,而箱子前面是空地。if(map[i-2][j]==0){map[i-2][j]=4;//人推箱子往前走一步,把空地ID修改为箱子ID()//下面是对箱子原地进行判断if(map[i-1][j]==7)//如果箱子原地为目的地。map[i-1][j]=9;//人站在箱子的原地(目的地)时该地ID应该为人的ID+目的地ID=9。elsemap[i-1][j]=6;//否则,人站在了原来的空地上,ID应该为+0=6。//下面是对人原地进行判断if(map[i][j
12、]==9)//如果之前是目的地。map[i][j]=3;//人走了之后修改回目的地ID。elsemap[i][j]=0;//否则就是空地。}//如果人的前面是箱子,而箱子前面是目的地。elseif(map[i-2][j]==3){map[i-2][j]=7;//ID为(目的地ID()+箱子ID()=7),表示已经把箱子推入了目的地。count++;//下面是对箱子原先位置的判断,同上。if(map[i-1][j]==7)map[i-1][j]=9;elsemap[i-1][j]=6;//下面是对人原先位置进行判断,同上。if(map[i][j]==9)map[i][j]=3;e
13、lsemap[i][j]=0;}}//如果人前面是已经进入某目的地的箱子(ID=7)。elseif(map[i-1][j]==7){//如果人前面是已经进入某目的地的箱子,而箱子前面是空地。if(map[i-2][j]==0){count--;map[i-2][j]=4;//把箱子重新推到空地上,ID=箱子ID+空地ID=4。map[i-1][j]=9;//人自然而然的就站在了原先的目的地上了。//下面是对人原先地进行判断,方法同上。if(map[i][j]==9)map[i][j]=3;e