您当前的位置:首页 > 指南 > 正文

有趣的推箱子游戏,C语言零基础项目:推箱子游戏

关于【有趣的推箱子游戏】,今天犇犇小编给您分享一下,如果对您有所帮助别忘了关注本站哦。

内容导航:1、有趣的推箱子游戏:C语言零基础项目:推箱子游戏!详细思路+源码分享2、有趣的推箱子游戏,风靡全球的经典推箱子游戏

1、有趣的推箱子游戏:C语言零基础项目:推箱子游戏!详细思路+源码分享

每天一个C语言小项目,提升你的编程能力!

推箱子是一个来自日本的古老游戏,目的是在训练你的逻辑思考能力。在一个狭小的仓库中,要求把木箱放到指定的位置,稍不小心就会出现箱子无法移动或者通道被堵住的情况,所以需要巧妙的利用有限的空间和通道,合理安排移动的次序和位置,才能顺利的完成任务。

效果展示:

有趣的推箱子游戏,C语言零基础项目:推箱子游戏

1、游戏同时支持鼠标和键盘操作,鼠标操作时,可点击任意你想去的地方。

2、提供回复上一步的功能,可以回到任何一步走过的路径,可以给用户足够的思考空间,使用户的智力在游戏的乐趣中得到充分的锻炼。也可以一退到底。

3、屏幕上方显示当前的关数,您可以方便地选关进行游戏。

4、在目标文件夹里,可以用记事本打开文件,自行设计游戏关卡,加载界面及元素,添加后再次打开程序才能更新。

游戏中使用了图片

有趣的推箱子游戏,C语言零基础项目:推箱子游戏

本项目编译环境:Visual Studio 2019/2022,EasyX插件

代码展示:

//////////////////////////////////////////////////////////////游戏中用0表示空地,1表示人物,2表示箱子,3表示目的地,6表示围墙////画素材的x1和y1都是反的,因为x表示行,但是画出来x表示列,y同////////////////////////////////////////////////////////////#include <graphics.h>#include <conio.h>#include <stdlib.h>int x, y;//人物坐标int loop;//控制是否重新开始IMAGE img[8]; //定义IMAGE对象数组来保存图片/*******************函数声明*******************/void blank(int x1, int y1); //画空地void man (int x1, int y1); //画皮卡丘void box (int x1, int y1); //画箱子void dest (int x1, int y1);//画目的地void man1 (int x1, int y1); //画在目的地上的皮卡丘void box1 (int x1, int y1);//画在目的地上的箱子void wall (int x1, int y1); //画围墙void man1 (int x1, int y1);//画在胜利的皮卡丘void print(int a[15][15]); //把数组里的全画出来void move (int a[15][15], int x1, int y1);//移动void find (int a[15][15]); //找人物坐标int win (int a[15][15]);//判断游戏是否结束int play (int a[15][15]); //游戏过程void play1 (void); //游戏关卡/*******************函数定义*******************///画空地void blank(int x1, int y1){putimage(y1, x1, &img[0]); // 在坐标 (y1, x1) 位置显示 IMAGE 对象}//画皮卡丘void man(int x1, int y1){putimage(y1, x1, &img[1]); // 在坐标 (y1, x1) 位置显示 IMAGE 对象}//画箱子void box(int x1, int y1){putimage(y1, x1, &img[2]); // 在坐标 (y1, x1) 位置显示 IMAGE 对象}//画目的地void dest(int x1, int y1){putimage(y1, x1, &img[3]); // 在坐标 (y1, x1) 位置显示 IMAGE 对象}//画在目的地上的皮卡丘void man1(int x1, int y1){putimage(y1, x1, &img[4]); // 在坐标 (y1, x1) 位置显示 IMAGE 对象}//画在目的地上的箱子void box1(int x1, int y1){putimage(y1, x1, &img[5]); // 在坐标 (y1, x1) 位置显示 IMAGE 对象}//画围墙void wall(int x1, int y1){putimage(y1, x1, &img[6]); // 在坐标 (y1, x1) 位置显示 IMAGE 对象}//画胜利的皮卡丘void man2(int x1, int y1){putimage(y1, x1, &img[7]); // 在坐标 (y1, x1) 位置显示 IMAGE 对象}//把数组里的全画出来void print(int a[][10]){for(int x1 = 0; x1 < 10; x1++)for(int y1 = 0; y1 < 10; y1++)putimage(60 * y1, 60 * x1, &img[a[x1][y1]]); }//移动void move(int a[][10], int x1, int y1){if(a[x + x1][y + y1] == 0 || a[x + x1][y + y1] == 3){a[x][y]--;a[x + x1][y + y1]++;for(int i = 0; i < 60; i++){blank(60 * x + i * x1, 60 * y + i * y1);//擦掉man(60 * x + (i + 1) * x1, 60 * y + (i + 1) * y1);Sleep(1);//为了降低CPU且保存流畅}if(a[x][y] == 3)dest(60 * x, 60 * y);x += x1;y += y1;if(a[x][y] == 4)man1(60 * x, 60 * y);}else if((a[x + x1][y + y1] == 2 || a[x + x1][y + y1] == 5) && (a[x + 2 * x1][y + 2 * y1] == 0 || a[x + 2 * x1][y + 2 * y1] == 3)){a[x][y]--;a[x + x1][y + y1]--;a[x + 2 * x1][y + 2 * y1] += 2;for(int i = 0; i < 60; i++){blank(60 * (x + x1) + i * x1, 60 * (y + y1) + i * y1); //擦掉box(60 * (x + x1) + (i + 1) * x1, 60 * (y + y1) + (i + 1) * y1);blank(60 * x + i * x1, 60 * y + i * y1);//擦掉man(60 * x + (i + 1) * x1, 60 * y + (i + 1) * y1);Sleep(1);//为了降低CPU且保存流畅}if(a[x][y] == 3)dest(60 * x, 60 * y);x += x1;y += y1;if(a[x][y] == 4)man1(60 * x, 60 * y);if(a[x+x1][y+y1] == 5)box1(60 * (x + x1), 60 * (y + y1));}}//找人物坐标想x,y void find(int a[][10]){for(x = 0; x < 10; x++)for(y = 0; y < 10; y++)if(a[x][y] == 1) return;}//判断游戏是否结束int win(int a[][10]){for(int x1 = 0; x1 < 10; x1++)for(int y1 = 0; y1 < 10; y1++)if(a[x1][y1] == 2) return 0;//如果还有箱子返回假return 1;//如果没有箱子返回真}/************************游戏过程**********************///游戏过程int play(int a[][10]){loop = 0;print(a);find(a);//通过find函数寻找人物的x, y坐标do{switch(getch())//获取键盘{case 'w':case 'W':move(a, -1, 0);break;//上移 case 'a':case 'A':move(a, 0, -1);break;//左移 case 'd':case 'D':move(a, 0, 1);break;//右移 case 's':case 'S':move(a, 1, 0);break;//下移 case 'r':case 'R':case ' ':loop = 1;return 0;//重新开始当前关 case 27:exit(0);break;//结束游戏 case 0:case 0xE0://如果是方向键 switch(getch())//再次获取键盘 {case 72:move(a, -1, 0);break;case 75:move(a, 0, -1);break;case 77:move(a, 0, 1); break;case 80:move(a, 1 , 0);}}}while(!win(a));//通过win函数判断是否通过man2(60 * x, 60 * y);//画一个开心的皮卡丘getch();return 0;}//游戏关卡void play1(void){int a[5][10][10]={//定义三维地图数组{{0},{0, 0, 6, 6, 6},{0, 0, 6, 3, 6},{0, 0, 6, 0, 6, 6, 6, 6},{6, 6, 6, 2, 0, 2, 3, 6},{6, 3, 0, 2, 1, 6, 6, 6},{6, 6, 6, 6, 2, 6},{0, 0, 0, 6, 3, 6},{0, 0, 0, 6, 6, 6} },{{6, 6, 6, 6, 6},{6, 1, 0, 0, 6},{6, 0, 2, 2, 6, 0, 6, 6, 6},{6, 0, 2, 0, 6, 0, 6, 3, 6},{6, 6, 6, 0, 6, 6, 6, 3, 6},{0, 6, 6, 0, 0, 0, 0, 3, 6},{0, 6, 0, 0, 0, 6, 0, 0, 6},{0, 6, 0, 0, 0, 6, 6, 6, 6},{0, 6, 6, 6, 6, 6} },{{0, 6, 6, 6, 6},{0, 6, 1, 0, 6, 6, 6},{0, 6, 0, 2, 0, 0, 6},{6, 6, 6, 0, 6, 0, 6, 6},{6, 3, 6, 0, 6, 0, 0, 6},{6, 3, 2, 0, 0, 6, 0, 6},{6, 3, 0, 0, 0, 2, 0, 6},{6, 6, 6, 6, 6, 6, 6, 6} },{{0, 6, 6, 6, 6, 6, 6, 6},{0, 6, 0, 1, 3, 3, 3, 6},{0, 6, 0, 0, 0, 6, 6, 6, 6},{6, 6, 6, 2, 0, 0, 0, 0, 6},{6, 0, 0, 0, 6, 2, 6, 0, 6},{6, 0, 2, 0, 6, 0, 0, 0, 6},{6, 0, 0, 0, 6, 6, 6, 6, 6},{6, 6, 6, 6, 6} },{{0, 6, 6, 6, 6, 6},{0, 6, 0, 1, 0, 6, 6, 6},{6, 6, 0, 6, 2, 0, 0, 6},{6, 0, 5 ,3, 0, 3, 0, 6},{6, 0, 0, 2, 2, 0, 6, 6},{6, 6, 6, 0, 6, 3, 6},{0, 0, 6, 0, 0, 0, 6},{0, 0, 6, 6, 6, 6, 6} } };int b[10][10];//设置当前地图数组 for(int i = 0; i < 5; i++){do {loop=0;//loop置为0 for(int x1 = 0; x1 < 10; x1++) for(int y1 = 0; y1 < 10; y1++) b[x1][y1] = a[i][x1][y1];//对当前地图数组分别赋值 play(b);}while(loop);//如果loop被置为1则重新开始}}/************************主函数***********************/int main(void){initgraph(600, 600);setbkcolor(WHITE);cleardevice();loadimage(&img[0], "图片\\0.jpg");loadimage(&img[1], "图片\\1.jpg");loadimage(&img[2], "图片\\2.jpg");loadimage(&img[3], "图片\\3.jpg");loadimage(&img[4], "图片\\4.jpg");loadimage(&img[5], "图片\\5.jpg");loadimage(&img[6], "图片\\6.jpg");loadimage(&img[7], "图片\\7.jpg");play1();closegraph();return 0;}

大家赶紧去动手试试吧!

此外,我也给大家分享我收集的其他资源,从最零基础开始的教程到C语言C++项目案例,帮助大家在学习C语言的道路上披荆斩棘!

编程学习书籍分享:

有趣的推箱子游戏,C语言零基础项目:推箱子游戏

编程学习视频分享:

有趣的推箱子游戏,C语言零基础项目:推箱子游戏

整理分享(多年学习的源码、项目实战视频、项目笔记,基础入门教程)最重要的是你可以在群里面交流提问编程问题哦!

2、有趣的推箱子游戏,风靡全球的经典推箱子游戏

《我推箱子贼溜》是一款经典的闯关游戏,目的是在训练你的逻辑思考能力在一个狭小的仓库中,要求把木箱放到指定的位置,稍不小心就会出现箱子无法移动或者通道被堵住的情况,所以需要巧妙的利用有限的空间和通道,合理安排移动的次序和位置,才能顺利的完成任务,现在小编就来说说关于有趣的推箱子游戏?下面内容希望能帮助到你,我们来一起看看吧!

有趣的推箱子游戏,C语言零基础项目:推箱子游戏

有趣的推箱子游戏

《我推箱子贼溜》是一款经典的闯关游戏,目的是在训练你的逻辑思考能力。在一个狭小的仓库中,要求把木箱放到指定的位置,稍不小心就会出现箱子无法移动或者通道被堵住的情况,所以需要巧妙的利用有限的空间和通道,合理安排移动的次序和位置,才能顺利的完成任务。

《我推箱子贼溜》画面精致,可以随意选关,操作简单,只需要用上下左右按键控制搬运工移动,来将箱子推到指定地点,箱子只可以推, 不可以拉, 而且一次只能推动一个,胜利条件就是把所有的箱子都推到目的地。

《我推箱子贼溜》是一种老少皆宜的益智游戏,既可以开发青少年学生的智力,又可以防止老年痴呆症,全家一起攻关还可以促进家庭和睦,何乐而不为?

游戏特色:

1.经典的推箱子游戏再创造!

2.独特的游戏逻辑障碍;

3.精致细腻的画面表现以及激萌可爱的音效。

4.超多益智关卡,充分锻炼自己的脑力吧!

5.简单易上手的操作,老少皆宜。

完美重现经典推箱子游戏 100 关卡,体验经典传奇。

游戏页顶部包含返回按钮、当前关卡数、本局已经使用了多少步数等信息展示。

游戏页底部 包含一键跳过按钮, 当有困难关卡时,玩家可以选择一键跳过本关,进行下一关游戏。

游戏页底部 包含重置按钮, 可以将当前关卡重置到初始状态。

快来重温经典游戏,一起挑战吧!

本文关键词:有趣的推箱子游戏教案,有趣的推箱子游戏怎么玩,推箱子益智游戏,趣味推箱子,推箱子的小游戏。这就是关于《有趣的推箱子游戏,C语言零基础项目:推箱子游戏》的所有内容,希望对您能有所帮助!


声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,谢谢。

上一篇: 寒潮天气 什么是寒潮天气

下一篇: 泰坦尼克号海洋之心,泰坦尼克号海洋之心原来是谁的(原来《泰坦尼克号》里的那颗“海洋之心”不是钻石)



推荐阅读