思路

我们需要打印出地图和各种元素,对其中元素人进行位置操作,各元素做出相应改变。

利用死循环,打印地图>>操作人>>元素做出相应改变>>将操作前的地图删除>>打印出操作后的地图.

直到所有箱子到达目的地,循环结束。

实现

主要看主函数里面的步骤及算法。

#include<stdio.h>
#include<stdlib.h>
//头文件#include<conio.h>包含函数getch(),getch函数是输入函数,为什么要用到getch函数呢,getch函数与其他输入函数不同的是,你输入值不需要按回车键,程序会立刻进行下一步,便于游戏操作
#include<conio.h>
//利用整型数组来建立地图(用整型数组是因为后面便于算法实现)
//各数字所代表的元素,0:空地,1:墙壁,2:目的地,3:箱子,4:人,5:箱子到达目的地,6:人到达目的地。
int map[20][20] = {{0,0,1,1,1,1,1,0,0,0},{0,0,1,0,4,0,1,1,1,0},{0,1,0,0,1,3,0,0,1,0},{0,1,0,5,2,0,2,0,1,0},{0,1,0,0,3,3,2,1,1,0},{0,1,1,1,0,1,0,1,0,0},{0,0,0,1,0,0,0,1,0,0},{0,0,0,1,1,1,1,1,0,0},{0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0}
};
//写具有打印地图功能的函数,我们需要打印出地图,由于用数字表现地图不易于观察和操作,所以我们可以在打印的过程中将打印的数字转化为特殊字符如下
void printfmap()
{//0:空地,1:墙壁,2:目的地,3:箱子,4:人,5:箱子到达目的地,6:人到达目的地。for (int i = 0; i < 10; i++){for (int j = 0; j < 10; j++)//利用switch函数来将各数字转化为所对应的元素switch (map[i][j]){case 0:printf("  "); break;case 1:printf("※"); break;case 2:printf("☆"); break;case 3:printf("□"); break;case 4:printf("♀"); break;case 5:printf("★"); break;case 6:printf("♀"); break;}printf("\n");}}
//定义全局变量:x,y。map[x][y]代表人所在的位置,因为推箱子需要确定人的位置从而对其位置进行操作。
int x = 1, y = 1;
//定义确定人位置的函数,将坐标传给x,y。
void getpeople()
{for (int i = 0; i < 10; i++)for (int j = 0; j < 10; j++)if (map[i][j] == 4 || map[i][j] == 6){x = i;y = j;break;}
}//代码实现!!!
//步骤:打印地图》》输入操作(wasd),人物移动》》人物坐标xy改变,各元素根据算法做出相应改变》》删除操作前的地图》》打印操作后的地图
//按照此步骤一直循环,直到所有箱子都到达目的地
int main()
{//system函数有许多用法,这里是用来改变背景颜色system("color B5");char z;//死循环,直到所有箱子都到达目的地while (1){//打印地图printfmap();//获取x,y值(获取人位置)getpeople();//利用函数getch输入操作字符zz = _getch();//最重要的算法实现!!!!!!!!!!!!!!!!!!!switch (z) {//判断输入字符z的值,从而利用算法做出相应改变case 'w'://人前面是空地if (map[x - 1][y] == 0){map[x - 1][y] = 4;if (map[x][y] == 4)map[x][y] = 0;elsemap[x][y] = 2;}//人前面是目的地if (map[x - 1][y] == 2){map[x - 1][y] = 6;if (map[x][y] == 4)map[x][y] = 0;elsemap[x][y] = 2;}//人前面是箱子if (map[x - 1][y] == 3){//箱子前面是空地if (map[x - 2][y] == 0){map[x - 1][y] = 4;map[x - 2][y] = 3;if (map[x][y] == 4)map[x][y] = 0;elsemap[x][y] = 2;}//箱子前面是目的地if (map[x - 2][y] == 2){map[x - 1][y] = 4;map[x - 2][y] = 5;if (map[x][y] == 4)map[x][y] = 0;elsemap[x][y] = 2;}}//人前面是箱子和目的地重合if (map[x - 1][y] == 5){//箱子前面是空地if (map[x - 2][y] == 0){map[x - 1][y] = 6;map[x - 2][y] = 3;if (map[x][y] == 4)map[x][y] = 0;elsemap[x][y] = 2;}//箱子前面是目的地if (map[x - 2][y] == 2){map[x - 1][y] = 6;map[x - 2][y] = 5;if (map[x][y] == 4)map[x][y] = 0;elsemap[x][y] = 2;}}break;case 's'://人前面是空地if (map[x + 1][y] == 0){map[x + 1][y] = 4;if (map[x][y] == 4)map[x][y] = 0;elsemap[x][y] = 2;}//人前面是目的地if (map[x + 1][y] == 2){map[x + 1][y] = 6;if (map[x][y] == 4)map[x][y] = 0;elsemap[x][y] = 2;}//人前面是箱子if (map[x + 1][y] == 3){//箱子前面是空地if (map[x + 2][y] == 0){map[x + 1][y] = 4;map[x + 2][y] = 3;if (map[x][y] == 4)map[x][y] = 0;elsemap[x][y] = 2;}//箱子前面是目的地if (map[x + 2][y] == 2){map[x + 1][y] = 4;map[x + 2][y] = 5;if (map[x][y] == 4)map[x][y] = 0;elsemap[x][y] = 2;}}//人前面是箱子和目的地重合if (map[x + 1][y] == 5){//箱子前面是空地if (map[x + 2][y] == 0){map[x + 1][y] = 6;map[x + 2][y] = 3;if (map[x][y] == 4)map[x][y] = 0;elsemap[x][y] = 2;}//箱子前面是目的地if (map[x + 2][y] == 2){map[x + 1][y] = 6;map[x + 2][y] = 5;if (map[x][y] == 4)map[x][y] = 0;elsemap[x][y] = 2;}}break;case 'a'://人前面是空地if (map[x ][y-1] == 0){map[x ][y-1] = 4;if (map[x][y] == 4)map[x][y] = 0;elsemap[x][y] = 2;}//人前面是目的地if (map[x ][y-1] == 2){map[x ][y-1] = 6;if (map[x][y] == 4)map[x][y] = 0;elsemap[x][y] = 2;}//人前面是箱子if (map[x ][y-1] == 3){//箱子前面是空地if (map[x ][y-2] == 0){map[x ][y-1] = 4;map[x ][y-2] = 3;if (map[x][y] == 4)map[x][y] = 0;elsemap[x][y] = 2;}//箱子前面是目的地if (map[x ][y-2] == 2){map[x ][y-1] = 4;map[x ][y-2] = 5;if (map[x][y] == 4)map[x][y] = 0;elsemap[x][y] = 2;}}//人前面是箱子和目的地重合if (map[x ][y-1] == 5){//箱子前面是空地if (map[x ][y-2] == 0){map[x ][y-1] = 6;map[x ][y-2] = 3;if (map[x][y] == 4)map[x][y] = 0;elsemap[x][y] = 2;}//箱子前面是目的地if (map[x ][y-2] == 2){map[x ][y-1] = 6;map[x ][y-2] = 5;if (map[x][y] == 4)map[x][y] = 0;elsemap[x][y] = 2;}}break;case 'd'://人前面是空地if (map[x][y + 1] == 0){map[x][y + 1] = 4;if (map[x][y] == 4)map[x][y] = 0;elsemap[x][y] = 2;}//人前面是目的地if (map[x][y + 1] == 2){map[x][y + 1] = 6;if (map[x][y] == 4)map[x][y] = 0;elsemap[x][y] = 2;}//人前面是箱子if (map[x][y + 1] == 3){//箱子前面是空地if (map[x][y + 2] == 0){map[x][y + 1] = 4;map[x][y + 2] = 3;if (map[x][y] == 4)map[x][y] = 0;elsemap[x][y] = 2;}//箱子前面是目的地if (map[x][y + 2] == 2){map[x][y + 1] = 4;map[x][y + 2] = 5;if (map[x][y] == 4)map[x][y] = 0;elsemap[x][y] = 2;}}//人前面是箱子和目的地重合if (map[x][y + 1] == 5){//箱子前面是空地if (map[x][y + 2] == 0){map[x][y + 1] = 6;map[x][y + 2] = 3;if (map[x][y] == 4)map[x][y] = 0;elsemap[x][y] = 2;}//箱子前面是目的地if (map[x][y + 2] == 2){map[x][y + 1] = 6;map[x][y + 2] = 5;if (map[x][y] == 4)map[x][y] = 0;elsemap[x][y] = 2;}}break;}//函数system这里是用来清屏system("cls");//循环挑出判断条件,当所有箱子都到达目的地后,跳出循环,游戏结束!if (map[3][3] == 5 && map[3][4] == 5 && map[3][6] == 5 && map[4][6] == 5)break;}for(int i=0;i<10;i++)printf("MD真滴c\n");
}

推箱子游戏c/c++实现相关推荐

  1. EasyX实现推箱子游戏

    文章目录 1 项目需求 2 模块划分 3 项目实现 3.1 地图初始化 3.2 热键控制 3.3 推箱子控制 3.4 游戏结束 1 项目需求 实现一款推箱子游戏,效果如下图所示,具体规则: 箱子只能推 ...

  2. 项目: 推箱子游戏【c/c++】

    很早之前写的一个推箱子的游戏 目录 最终效果 代码 最终效果 代码 #include<stdio.h> #include<stdlib.h> #include<graph ...

  3. c语言多关卡推箱子程序,多关卡地图推箱子游戏

    多关卡地图推箱子游戏 # include # include # include //调出地图 void file(int map[14][16],int n,int flag) //n表示关卡数 , ...

  4. 推箱子java下载_Java实现简单推箱子游戏

    本文实例为大家分享了Java实现简单推箱子游戏的具体代码,供大家参考,具体内容如下 *编写一个简易的推箱子游戏,使用10*8的二维字符数据表示游戏画面,H表示墙壁; &表示玩家角色: o表示箱 ...

  5. 一文教你使用java开发一款推箱子游戏

    导读:社会在进步,人们生活质量也在日益提高.高强度的压力也接踵而来.社会中急需出现新的有效方式来缓解人们的压力.此次设计符合了社会需求,Java推箱子游戏可以让人们在闲暇之余,体验游戏的乐趣.具有操作 ...

  6. greenfoot推箱子游戏_推箱子小游戏V2.0更新

    小游戏实践 推箱子V2.0 大家好,我是努力学习争取成为优秀的Game Producer的路人猿,我们上期一起学习制作推箱子的简易V1.0版本,学习了如何响应用户的输入以及面对箱子的各种情况,今天我们 ...

  7. c语言语音控制游戏文献,C语言课程设计-基于C语言推箱子游戏设计-毕业论文文献.doc...

    gd工程职业技术学院毕业论文 基于C语言的推箱子游戏设计 Design of the push box Based on Combined Language 作者姓名: 学科专业: 应用电子技术 学院 ...

  8. c语言基于easyX樱花特效,C++基于easyx图形库实现推箱子游戏

    本文实例为大家分享了C++实现推箱子游戏的具体代码,供大家参考,具体内容如下 头文件: #include #include //#include #include #include #include ...

  9. 推箱子游戏的java设计思路_用JAVA实现一个推箱子游戏

    技术应用 TECHNOLOGY AND MARKET Vol. 26,No. 2,2019 用 JAVA 实现一个推箱子游戏 马寅璞1,孔阳坤2 ( 1. 南京信息工程大学计算机软件学院物联网工程 1 ...

  10. 【猿码】java swing实现喜羊羊与灰太狼推箱子游戏附带视频开发教程可做为Java毕设大作业

    大家好,今天给大家演示一下由Java swing实现的推箱子小游戏的一款项目,其图标用的是喜羊羊与灰太狼,所以又称喜羊羊与灰太狼版的推箱子游戏,该项目运行环境为普通的Java环境,jdk版本不限,下面 ...

最新文章

  1. windowsnbsp;下搭建apachenbsp;phpnbsp;mysqlnbsp;p…
  2. 「高并发秒杀」java课程设计报告模板
  3. 佛山将设立总规模100亿元的“通济基金” 缓解上市公司困境
  4. centos7 keepalived安装记录
  5. JVM插桩之三:javaagent介绍及javassist介绍
  6. linux安装程序过程,linux 应用程序安装过程
  7. LeetCode 337. 打家劫舍 III(记忆化+递归)
  8. 学习linux中踩的坑,踩踩Linux命令中的那些坑
  9. 一些有趣的404错误设计
  10. Android Studio4.0解决Gradle下载超时问题
  11. 苹果4s怎么越狱教程_苹果手机:使用Rollectra工具清除iOS11.3~11.4beta3越狱教程
  12. sendip linux发包工具
  13. 读书有感gt; 职场小说
  14. JavaScript(JS) date.getMonth()
  15. C#调用Excel Vba宏
  16. 触发器实例精讲-志在必得
  17. 【.Net实用方法总结】 整理并总结System.IO中FileInfo类及其方法介绍
  18. crmeb多商户公测版发布
  19. 深圳市工业和信息化局关于征集创新产品的通知
  20. 论文投稿指南——SCI选刊

热门文章

  1. ofo戴威旗下公司两联合创始人退出
  2. SCA: A Sine Cosine Algorithm for solving optimization problems
  3. python利用tkinter制作查询热映电影软件
  4. html5当中支持的视频格式
  5. 书城第二阶段 ——用户注册和登陆
  6. 17.3: 图的深度优先遍历
  7. 深度解析猎豹浏览器BIPS技术
  8. Win10利用DiskGenius重建分区表
  9. 【Electron-Vue】使用 el-table 死活不显示的问题
  10. 对抗攻击Adversarial Attack