前段时间,有个小朋友问可不可以用C++做小游戏呢,于是就有了下面的C++版推箱子。一起来欣赏一下孩子们的推箱子吧!

//Boxgame 2020.10.12 By ZYX
#include<iostream>
#include<windows.h>
#include<stdlib.h>
#include<conio.h>

//0:空地; 1:墙壁 3:箱子的目的地;4:箱子 6:人; 7:箱子和目的地重合; 9:人站在目的地
//map
int g_map[10][12]= { {1,1,1,1,1,0,0,0,0,0,0,0}, {1,0,0,0,1,0,1,1,1,0,0,0}, {1,0,4,0,1,0,1,1,1,1,1,1}, {1,0,4,0,1,0,1,0,0,0,3,1}, {1,1,1,0,1,1,0,0,0,0,3,1}, {0,1,6,0,0,0,0,0,0,0,3,1}, {0,1,0,4,0,0,1,0,0,0,0,1}, {0,1,0,0,0,0,1,0,0,0,0,1}, {0,1,1,1,1,0,0,0,0,0,0,1}, {0,0,0,0,0,0,1,1,1,1,1,1}, };
//Draw a map void Drapmap() { for(int i=0; i<10; i++) { for(int j=0; j<12; j++) { switch(g_map[i][j]) { case 0: printf(" "); break; case 1: printf("■"); break; case 3: printf("☆"); break; case 4: printf("※"); break; case 6: printf("♀"); break; case 7: printf("◎"); break; case 9: printf("♂"); break; } } printf("\n"); } } POINT GetGamerPosition() { POINT pos= {-1,-1}; for(int i=0; i<10; i++) { for(int j=0; j<12; j++) { if(g_map[i][j]==6 || g_map[i][j]==9) { pos.x=i; pos.y=j; return pos; } } } return pos; } //0:空地; 1:墙壁 3:箱子的目的地;4:箱子 6:人; 7:箱子和目的地重合; 9:人站在目的地
//keyup void up() { POINT pos=GetGamerPosition(); if(g_map[pos.x-1][pos.y]==0) { g_map[pos.x-1][pos.y]=6; if(g_map[pos.x][pos.y]==9) g_map[pos.x][pos.y]=3; else g_map[pos.x][pos.y]=0; } if(g_map[pos.x-1][pos.y]==3) { g_map[pos.x-1][pos.y]=9; if (g_map[pos.x][pos.y]==9) g_map[pos.x][pos.y]=3; else g_map[pos.x][pos.y]=0; } if(g_map[pos.x-1][pos.y]==4) { if(g_map[pos.x-2][pos.y]==0) { g_map[pos.x-2][pos.y]=4; g_map[pos.x-1][pos.y]=6; if(g_map[pos.x][pos.y]==9) g_map[pos.x][pos.y]=3; else g_map[pos.x][pos.y]=0; } else { if(g_map[pos.x-2][pos.y]==3) { g_map[pos.x-2][pos.y]=7; g_map[pos.x-1][pos.y]=6; if(g_map[pos.x][pos.y]==9) g_map[pos.x][pos.y]=3; else g_map[pos.x][pos.y]=0; } } } if(g_map[pos.x-1][pos.y]==7) { if(g_map[pos.x-2][pos.y]==0) { g_map[pos.x-2][pos.y]=4; g_map[pos.x-1][pos.y]=9; if(g_map[pos.x][pos.y]==9) g_map[pos.x][pos.y]=3; else g_map[pos.x][pos.y]=0; } else { if(g_map[pos.x-2][pos.y]==3) { g_map[pos.x-2][pos.y]=7; g_map[pos.x-1][pos.y]=9; if(g_map[pos.x][pos.y]==9) g_map[pos.x][pos.y]=3; else g_map[pos.x][pos.y]=0; } } } } //0:空地; 1:墙壁 3:箱子的目的地;4:箱子 6:人; 7:箱子和目的地重合; 9:人站在目的地 //keydown void down() { POINT pos=GetGamerPosition(); if(g_map[pos.x+1][pos.y]==0) { g_map[pos.x+1][pos.y]=6; if(g_map[pos.x][pos.y]==9) g_map[pos.x][pos.y]=3; else g_map[pos.x][pos.y]=0; } if(g_map[pos.x+1][pos.y]==3) { g_map[pos.x+1][pos.y]=9; if (g_map[pos.x][pos.y]==9) g_map[pos.x][pos.y]=3; else g_map[pos.x][pos.y]=0; } if(g_map[pos.x+1][pos.y]==4) { if(g_map[pos.x+2][pos.y]==0) { g_map[pos.x+2][pos.y]=4; g_map[pos.x+1][pos.y]=6; if(g_map[pos.x][pos.y]==9) g_map[pos.x][pos.y]=3; else g_map[pos.x][pos.y]=0; } else { if(g_map[pos.x+2][pos.y]==3) { g_map[pos.x+2][pos.y]=7; g_map[pos.x+1][pos.y]=6; if(g_map[pos.x][pos.y]==9) g_map[pos.x][pos.y]=3; else g_map[pos.x][pos.y]=0; } } } if(g_map[pos.x+1][pos.y]==7) { if(g_map[pos.x+2][pos.y]==0) { g_map[pos.x+2][pos.y]=4; g_map[pos.x+1][pos.y]=9; if(g_map[pos.x][pos.y]==9) g_map[pos.x][pos.y]=3; else g_map[pos.x][pos.y]=0; } else { if(g_map[pos.x+2][pos.y]==3) { g_map[pos.x+2][pos.y]=7; g_map[pos.x+1][pos.y]=9; if(g_map[pos.x][pos.y]==9) g_map[pos.x][pos.y]=3; else g_map[pos.x][pos.y]=0; } } } }
//keyleft void left() { POINT pos=GetGamerPosition(); if(g_map[pos.x][pos.y-1]==0) { g_map[pos.x][pos.y-1]=6; if(g_map[pos.x][pos.y]==9) g_map[pos.x][pos.y]=3; else g_map[pos.x][pos.y]=0; } if(g_map[pos.x][pos.y-1]==3) { g_map[pos.x][pos.y-1]=9; if (g_map[pos.x][pos.y]==9) g_map[pos.x][pos.y]=3; else g_map[pos.x][pos.y]=0; } if(g_map[pos.x][pos.y-1]==4) { if(g_map[pos.x][pos.y-2]==0) { g_map[pos.x][pos.y-2]=4; g_map[pos.x][pos.y-1]=6; if(g_map[pos.x][pos.y]==9) g_map[pos.x][pos.y]=3; else g_map[pos.x][pos.y]=0; } else { if(g_map[pos.x][pos.y-2]==3) { g_map[pos.x][pos.y-2]=7; g_map[pos.x][pos.y-1]=6; if(g_map[pos.x][pos.y]==9) g_map[pos.x][pos.y]=3; else g_map[pos.x][pos.y]=0; } } } if(g_map[pos.x][pos.y-1]==7) { if(g_map[pos.x][pos.y-2]==0) { g_map[pos.x][pos.y-2]=4; g_map[pos.x][pos.y-1]=9; if(g_map[pos.x][pos.y]==9) g_map[pos.x][pos.y]=3; else g_map[pos.x][pos.y]=0; } else { if(g_map[pos.x][pos.y-2]==3) { g_map[pos.x][pos.y-2]=7; g_map[pos.x][pos.y-1]=9; if(g_map[pos.x][pos.y]==9) g_map[pos.x][pos.y]=3; else g_map[pos.x][pos.y]=0; } } } }
//keyright void right() { POINT pos=GetGamerPosition(); if(g_map[pos.x][pos.y+1]==0) { g_map[pos.x][pos.y+1]=6; if(g_map[pos.x][pos.y]==9) g_map[pos.x][pos.y]=3; else g_map[pos.x][pos.y]=0; } if(g_map[pos.x][pos.y+1]==3) { g_map[pos.x][pos.y+1]=9; if (g_map[pos.x][pos.y]==9) g_map[pos.x][pos.y]=3; else g_map[pos.x][pos.y]=0; } if(g_map[pos.x][pos.y+1]==4) { if(g_map[pos.x][pos.y+2]==0) { g_map[pos.x][pos.y+2]=4; g_map[pos.x][pos.y+1]=6; if(g_map[pos.x][pos.y]==9) g_map[pos.x][pos.y]=3; else g_map[pos.x][pos.y]=0; } else { if(g_map[pos.x][pos.y+2]==3) { g_map[pos.x][pos.y+2]=7; g_map[pos.x][pos.y+1]=6; if(g_map[pos.x][pos.y]==9) g_map[pos.x][pos.y]=3; else g_map[pos.x][pos.y]=0; } } } if(g_map[pos.x][pos.y-1]==7) { if(g_map[pos.x][pos.y+2]==0) { g_map[pos.x][pos.y+2]=4; g_map[pos.x][pos.y+1]=9; if(g_map[pos.x][pos.y]==9) g_map[pos.x][pos.y]=3; else g_map[pos.x][pos.y]=0; } else { if(g_map[pos.x][pos.y+2]==3) { g_map[pos.x][pos.y+2]=7; g_map[pos.x][pos.y+1]=9; if(g_map[pos.x][pos.y]==9) g_map[pos.x][pos.y]=3; else g_map[pos.x][pos.y]=0; } } } }
//GetRestBox int GetRestBox() { int CountBox=0; for(int i=0;i<10;i++) { for(int j=0;j<12;j++) { if (g_map[i][j]==4) CountBox++; } } return CountBox; }
//main int main() { SetConsoleTitle("智阅荟推箱子"); system("mode con cols=26 lines=12"); while(1) { if(GetRestBox()==0) { //MessageBox(NULL,"你成功了!","祝贺你:",MB_OK); //NextLevel++; //开启下一关 未完成,大家可以继续写下一关 } system("cls"); Drapmap(); char ch=getch(); switch(ch) { case 'w' : case 'W' : case 72 : up(); break; case 's' : case 'S' : case 80 : down(); break; case 'a' : case 'A' : case 75 : left(); break; case 'd' : case 'D' : case 77 : right(); break; } } return 0; }

本文的C++源文件可以在微信号”智阅荟“回复222下载:

最通俗的解读,最深刻的干货,最简洁的教程,众多你不知道的小技巧等你来发现!

欢迎关注公众号:「智阅荟」,懂技术,更懂你!

↑关注上方公众号回复 222 即可下载源代码↑

  

版权声明:本文为hbqjzx原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/hbqjzx/p/13802382.html