简述网站建设基本流程图,wordpress文章内乱码,陕西建设厅执业资格注册中心网站,链接网址怎么做今天我来分享一道对于初学C语言的同学非常有启发作用的编程例题#xff0c;是用C语言实现单张地图推箱子的小游戏。这个游戏是基于Linux环境下编程的#xff0c;所用工具为ubuntu、和gcc编译器。首先推箱子的地图#xff0c;我们根据经典游戏推箱子中的其中一幅地图来自做是用C语言实现单张地图推箱子的小游戏。这个游戏是基于Linux环境下编程的所用工具为ubuntu、和gcc编译器。首先推箱子的地图我们根据经典游戏推箱子中的其中一幅地图来自做图片如下。用图片形式实现这张图片对于初学编程的同学来说难以实现所以我们选择用字符代替的形式来实现这张地图。我们采用2为数组的方式来存储这张地图具体的数字与字符含义转换如下0 printf( ); 路2 printf(); 人3 printf(#); 墙4 printf($); 箱子5 printf(O); 目标点7 printf(); 人9 printf($); 箱子代码如下#include #include #include #include int mx 0;int my 0;int step 0;char map[8][8] {{0,0,3,3,3,3,0,0},{0,0,3,5,5,3,0,0},{0,3,3,0,5,3,3,0},{0,3,0,0,4,5,3,0},{3,3,0,4,0,0,3,3},{3,0,0,3,4,4,0,3},{3,0,0,2,0,0,0,3},{3,3,3,3,3,3,3,3}};void show_map(void){for(int i0;i8;i){for(int j0;j8;j){if(0 map[i][j]){printf( );}else if(2 map[i][j]){printf( );}else if(3 map[i][j]){printf(# );}else if(4 map[i][j]){printf($ );}else if(5 map[i][j]){printf(O );}else if(7 map[i][j]){printf( );}else if(9 map[i][j]){printf($ );}}printf(\n);}}void up(void){for(int i0; i8;i){for(int j0; j8;j){if(2 map[i][j] || 7 map[i][j]){mx i;my j;}}}if(3 map[mx-1][my]){return;}else if(0 map[mx-1][my] || 5 map[mx-1][my]){map[mx-1][my] 2;map[mx][my] - 2;step;}else if(4 map[mx-1][my] || 9 map[mx-1][my]){if(0 map[mx-2][my]){map[mx-2][my] 4;map[mx-1][my] - 2;map[mx][my] - 2;step;}else if(5 map[mx-2][my]){map[mx-2][my] 4;map[mx-1][my] - 2;map[mx][my] - 2;step;}else{return;}}}void down(void){for(int i0; i8;i){for(int j0; j8;j){if(2 map[i][j] || 7 map[i][j]){mx i;my j;}}}if(3 map[mx1][my]){return;}else if(0 map[mx1][my] || 5 map[mx1][my]){map[mx1][my] 2;map[mx][my] - 2;step;}else if(4 map[mx1][my] || 9 map[mx1][my]){if(0 map[mx2][my]){map[mx2][my] 4;map[mx1][my] - 2;map[mx][my] - 2;step;}else if(5 map[mx2][my]){map[mx2][my] 4;map[mx1][my] - 2;map[mx][my] - 2;step;}else{return;}}}void left(void){for(int i0; i8;i){for(int j0; j8;j){if(2 map[i][j] || 7 map[i][j]){mx i;my j;}}}if(3 map[mx][my-1]){return;}else if(0 map[mx][my-1] || 5 map[mx][my-1]){map[mx][my-1] 2;map[mx][my] - 2;step;}else if(4 map[mx][my-1] || 9 map[mx][my-1]){if(0 map[mx][my-2]){map[mx][my-2] 4;map[mx][my-1] - 2;map[mx][my] - 2;step;}else if(5 map[mx][my-2]){map[mx][my-2] 4;map[mx][my-1] - 2;map[mx][my] - 2;step;}else{return;}}}void right(void){for(int i0; i8;i){for(int j0; j8;j){if(2 map[i][j] || 7 map[i][j]){mx i;my j;}}}if(3 map[mx][my1]){return;}else if(0 map[mx][my1] || 5 map[mx][my1]){map[mx][my1] 2;map[mx][my] - 2;step;}else if(4 map[mx][my1] || 9 map[mx][my1]){if(0 map[mx][my2]){map[mx][my2] 4;map[mx][my1] - 2;map[mx][my] - 2;step;}else if(5 map[mx][my2]){map[mx][my2] 4;map[mx][my1] - 2;map[mx][my] - 2;step;}else{return;}}}void start_soko(void){FILE* frp fopen(soko.bin,r);if(NULL frp){printf(数据加载错误!\n);return;}fread(map,1,64,frp);fclose(frp);}void exit_soko(void){FILE* fwp fopen(soko.bin,w);printf(____);if(NULL fwp){printf(数据保存错误!\n);}fwrite(map,1,64,fwp);fclose(fwp);}int main(){start_soko();while(true){system(clear);//显示地图show_map();//判定是否游戏结束int cnt 0;for(int i0; i8; i){for(int j0; j8;j){if(9 map[i][j]){cnt;}}}if(4 cnt){printf(游戏结束,共使用%d步!\n,step);return 0;}printf(%d\n,cnt);//获取方向键switch(getch()){case w:up();break;case s:down();break;case a:left();break;case d:right();break;case q:exit_soko();return 0;default:puts(输入指令有误!);}}exit_soko();}本文地址https://blog.csdn.net/weixin_48994377/article/details/107324818