前段时间,有个小朋友问可不可以用C++做小游戏呢,于是就有了下面的C++版推箱子。一起来欣赏一下孩子们的推箱子吧!
//Boxgame 2020.10.12 By ZYX DevCPP 5.9.2 Compile. #include<iostream> #include<windows.h> #include<stdlib.h> #include<conio.h> //0:空地; 1:墙壁 3:箱子的目的地;4:箱子 6:人; 7:箱子和目的地重合; 9:人站在目的地 //map:此处地图代码已隐藏,可在公众号”智阅荟"回复222下载完整源代码含地图,二维码见本页底部。 int g_map[10][12]= { {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, }; //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(" "); } } 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 即可下载源代码↑