项目: 推箱子图形化游戏 【C++ / C】
生活随笔
收集整理的这篇文章主要介绍了
项目: 推箱子图形化游戏 【C++ / C】
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
码文不易,望点赞、收藏、留言、打赏随意
目录
- 最终的游戏效果
- 代码
- 资源地址
最终的游戏效果
代码
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<graphics.h> #include<Windows.h> #include<conio.h> #include<MMSystem.h> #pragma comment(lib,"Winmm.lib") //定义图形变量 //加载图片 //显示图片 #define n 6 //关卡数 #define m 10 //地图大小 int index=0; //当前关卡 IMAGE img[6];定义图形变量 int imgIndex[6]={0,1,3,4,5,7}; int map[n][m][m]={{1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,0,0,0,0,1,1,0,1,3,0,0,1,3,1,1,1,0,0,0,0,4,0,0,0,1,1,1,0,1,5,0,1,0,0,1,1,0,0,0,0,1,0,0,0,1,1,1,4,1,0,0,1,0,0,1,1,0,0,1,4,0,0,0,3,1,1,0,0,0,0,0,0,1,0,1,1,1,1,1,1,1,1,1,1,1,},{1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,0,0,0,0,1,1,0,1,0,0,0,1,0,1,1,1,0,0,0,1,0,4,4,0,1,1,3,3,1,0,0,1,0,1,1,1,3,3,0,0,4,0,4,0,1,1,1,0,1,0,0,0,0,0,1,1,0,0,1,0,1,1,5,1,1,1,0,0,0,0,1,0,1,0,1,1,1,1,1,1,1,1,1,1,1,},{1,1,1,1,1,1,1,1,1,1,1,3,0,1,0,0,0,0,3,1,1,0,1,0,0,0,1,0,0,1,1,0,0,0,1,4,0,4,0,1,1,0,0,1,0,0,1,0,0,1,1,0,0,0,3,4,0,4,0,1,1,1,0,1,0,0,0,1,0,1,1,0,0,1,4,0,1,5,1,1,1,3,0,0,0,0,0,0,3,1,1,1,1,1,1,1,1,1,1,1,}, {1,1,1,1,1,1,1,1,1,1,1,0,1,3,0,1,1,0,3,1,1,0,3,1,0,0,1,0,0,1,1,0,0,0,0,0,0,0,0,1,1,0,4,0,3,0,4,3,1,1,1,0,1,1,0,0,0,1,0,1,1,0,4,0,0,4,3,0,0,1,1,1,0,0,4,0,1,5,0,1,1,0,0,3,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,},{1,1,1,1,1,1,1,1,1,1,1,3,0,0,3,0,3,0,0,1,1,0,0,0,1,4,1,1,0,1,1,0,0,3,0,0,0,3,0,1,1,0,4,1,3,0,0,1,0,1,1,0,4,0,0,1,4,0,0,1,1,0,0,1,0,0,0,1,1,1,1,1,0,4,0,1,4,0,1,1,1,5,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,},{1,1,1,1,1,1,1,1,1,1,1,5,1,0,3,0,0,3,0,1,1,7,0,4,0,0,1,0,0,1,1,0,0,0,0,1,0,0,0,1,1,0,1,0,4,0,4,0,0,1,1,0,0,1,0,0,0,1,1,1,1,1,0,0,4,0,1,1,0,1,1,1,0,1,0,0,0,0,0,1,1,0,3,1,0,0,0,3,0,1,1,1,1,1,1,1,1,1,1,1,} }; void loadResoure() //函数作用:加载图片 {int i=0;for(i=0;i<6;i++){char filename[20]="";sprintf(filename,"%d.bmp",imgIndex[i]);loadimage(img+i,filename);//加载图片//如果错误,就将项目的属性里的-》常规-》字符串设置为多字符} } void printf_map(int map[][m][m]) //函数作用:初始化地图 {int i,j;int x,y;for(i=0;i<m;i++){for(j=0;j<m;j++){x=j*64;//y=i*64;//switch(map[index][i][j]){case 0://代表路putimage(x,y,img+0);break;case 1://代表墙putimage(x,y,img+1);break;case 3://目的地putimage(x,y,img+2);break;case 4://箱子putimage(x,y,img+3);break;case 5:case 8://人putimage(x,y,img+4);break;case 7://箱子推进了目的地putimage(x,y,img+5);break;}}printf("\n");} } //按键交互 void keydown() {int i,j;//找到人的位置for(i=0;i<m;i++){for(j=0;j<m;j++){if(map[index][i][j]==5||map[index][i][j]==8){break;}}if(map[index][i][j]==5||map[index][i][j]==8){break;}}char userkey=_getch();switch(userkey){case'w':case'W':case 72://小键盘的键值//只是人走if(map[index][i-1][j]==0||map[index][i-1][j]==3){map[index][i-1][j]+=5;//移动到的位置加5map[index][i][j]-=5;//原来位置减5}//人推箱子走if(map[index][i-1][j]==4||map[index][i-1][j]==7){//箱子移动的条件if(map[index][i-2][j]==0||map[index][i-2][j]==3){map[index][i-2][j]+=4;//箱子来了map[index][i-1][j]+=1;//箱子走了,人来了map[index][i][j]-=5;//人走了}}break;case's':case'S':case 80://只是人走if(map[index][i+1][j]==0||map[index][i+1][j]==3){map[index][i+1][j]+=5;//移动到的位置加5map[index][i][j]-=5;//原来位置减5}//人推箱子走if(map[index][i+1][j]==4||map[index][i+1][j]==7){//箱子移动的条件if(map[index][i+2][j]==0||map[index][i+2][j]==3){map[index][i+2][j]+=4;//箱子来了map[index][i+1][j]+=1;//箱子走了,人来了map[index][i][j]-=5;//人走了}}break;case'a':case'A':case 75://只是人走if(map[index][i][j-1]==0||map[index][i][j-1]==3){map[index][i][j-1]+=5;//移动到的位置加5map[index][i][j]-=5;//原来位置减5}//人推箱子走if(map[index][i][j-1]==4||map[index][i][j-1]==7){//箱子移动的条件if(map[index][i][j-2]==0||map[index][i][j-2]==3){map[index][i][j-2]+=4;//箱子来了map[index][i][j-1]+=1;//箱子走了,人来了map[index][i][j]-=5;//人走了}}break;case'd':case'D':case 77://只是人走if(map[index][i][j+1]==0||map[index][i][j+1]==3){map[index][i][j+1]+=5;//移动到的位置加5map[index][i][j]-=5;//原来位置减5}//人推箱子走if(map[index][i][j+1]==4||map[index][i][j+1]==7){//箱子移动的条件if(map[index][i][j+2]==0||map[index][i][j+2]==3){map[index][i][j+2]+=4;//箱子来了map[index][i][j+1]+=1;//箱子走了,人来了map[index][i][j]-=5;//人走了}}break;} } int check() {int cnt=0;for(int j=0;j<m;j++)for(int z=0;z<m;z++)if(map[index][j][z]==4) cnt++;if(cnt) return 0;else return 1; } int main(void) {loadResoure();//加载图片initgraph(64*m,64*m);//设置图形窗口的大小PlaySound(TEXT("sounds\\1.wav"),NULL,SND_FILENAME | SND_ASYNC| SND_LOOP);while(1){if(check()){system("cls");printf_map(map);//初始化地图index++;if(index==6){settextstyle(80,0,"consolas");//字体大小 outtextxy(220,260,"通关了");while(1);}else{settextstyle(80,0,"consolas");//字体大小 outtextxy(220,260,"过关了");settextstyle(50,0,"consolas");//字体大小 outtextxy(160,350,"正在进入下一关");Sleep(1200);}}printf_map(map);//初始化地图keydown();//键盘交换system("cls");}_getch();closegraph();return 0; }资源地址
链接:https://pan.baidu.com/s/1S_sbJDhzrWCh0kBxzHVcPg 提取码:1234总结
以上是生活随笔为你收集整理的项目: 推箱子图形化游戏 【C++ / C】的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 项目: 写一个开头的界面 【c++ /
- 下一篇: 项目: 图书管理系统 【C++ / C】