项目: 推箱子图形化游戏 【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】