推箱子

1、确定数字与字符的对应关系

路    0

墙壁  1

人    2

箱子   3

目标点 4

人  6

箱子 7

2、定义二维数组地图

3、定义人的坐标

4、进入死循环

1、清理屏幕并显示地图

2、检查是否完成任务

是:一共走了几步,结束程序

3、获取方向键

#include <stdio.h>

#include <getch.h>

#include <stdlib.h>

int main(int arg,const char* argv[])

{

char map[8][8]={            //定义迷宫地图

{0,0,1,1,1,1,0,0},

{0,0,1,4,4,1,0,0},

{0,1,1,0,4,1,1,0},

{0,1,0,0,3,4,1,0},

{1,1,0,3,0,0,1,1},

{1,0,0,1,3,3,0,1},

{1,0,0,2,0,0,0,1},

{1,1,1,1,1,1,1,1}

};

char m_x=6,m_y=3;

int step =0;

for(;;)

{

int cnt=0;

system("clear");

for (int i=0;i<8;i++)

{

for(int j=0;j<8;j++)

{

switch(map[i][j])

{

case 0:printf("   ");break;

case 1:printf(" # ");break;

case 2:printf(" @ ");break;

case 3:printf(" $ ");break;

case 4:printf(" 0 ");break;

case 6:printf(" @ ");break;

case 7:printf(" $ ");

cnt++;

break;

}

}

printf("\n");

}

if(cnt==4)

{

printf("游戏结束,共走了%d步\n",step);

return 0;

}

int ox=0,oy=0;

switch(getch())

{

case 183: ox--;break;

case 184: ox++;break;

case 185: oy++;break;

case 186:oy--;break;

}

if(0==map[m_x+ox][m_y+oy]||

4==map[m_x+ox][m_y+oy])

{

map[m_x+ox][m_y+oy]+=2;

map[m_x][m_y] -=2;

m_x += ox;

m_y += oy;

step++;

}

else if(3==map[m_x+ox][m_y+oy]||

7==map[m_x+ox][m_y+oy])

{

if(0==map[m_x+ox*2][m_y+oy*2]||

4==map[m_x+ox*2][m_y+oy*2])

{

map[m_x+ox*2][m_y+oy*2]+=3;

man[m_x+ox][m_y+oy]-=1;

map[m_x][m_y]-=2;

m_x+=ox;

m_y+=oy;

step++;

}

}

}

}

#include <stdio.h>

#include <getch.h>

#include <stdlib.h>

int main(int argc,const char* argv[])

{

char map[8][8] = {

{0,0,1,1,1,1,0,0},

{0,0,1,4,4,1,0,0},

{0,1,1,0,4,1,1,0},

{0,1,0,0,3,4,1,0},

{1,1,0,3,0,0,1,1},

{1,0,0,1,3,3,0,1},

{1,0,0,2,0,0,0,1},

{1,1,1,1,1,1,1,1}

};

char m_x = 6, m_y = 3;

int step = 0;

for(;;)

{

int cnt = 0;

system("clear");

for(int i=0; i<8; i++)

{

for(int j=0; j<8; j++)

{

switch(map[i][j])

{

case 0: printf("  ");break;

case 1: printf("# ");break;

case 2: printf("@ ");break;

case 3: printf("$ ");break;

case 4: printf("O ");break;

case 6: printf("@ ");break;

case 7: printf("$ ");

cnt++;

break;

}

}

printf("\n");

}

if(4 == cnt)

{

printf("游戏结束,共走了%d步\n",step);

return 0;

}

switch(getch())

{

case 183:

if(0 == map[m_x-1][m_y] ||

4 == map[m_x-1][m_y])

{

map[m_x-1][m_y] += 2;

map[m_x][m_y] -= 2;

m_x--;

step++;

}

else if(3 == map[m_x-1][m_y] ||

7 == map[m_x-1][m_y])

{

if(0 == map[m_x-2][m_y] ||

4 == map[m_x-2][m_y])

{

map[m_x-2][m_y] += 3;

map[m_x-1][m_y] -= 1;

map[m_x][m_y] -= 2;

m_x--;

step++;

}

}

break;

case 184:

if(0 == map[m_x+1][m_y] ||

4 == map[m_x+1][m_y])

{

map[m_x+1][m_y] += 2;

map[m_x][m_y] -= 2;

m_x++;

step++;

}

else if(3 == map[m_x+1][m_y] ||

7 == map[m_x+1][m_y])

{

if(0 == map[m_x+2][m_y] ||

4 == map[m_x+2][m_y])

{

map[m_x+2][m_y] += 3;

map[m_x+1][m_y] -= 1;

map[m_x][m_y] -= 2;

m_x++;

step++;

}

}

break;

case 185:                       //右

if(0 == map[m_x][m_y+1] ||

4 == map[m_x][m_y+1])

{

map[m_x][m_y+1] += 2;

map[m_x][m_y] -= 2;

m_y++;

step++;

}

else if(3 == map[m_x][m_y+1] ||

7 == map[m_x][m_y+1])

{

if(0 == map[m_x][m_y+2] ||

4 == map[m_x][m_y+2])

{

map[m_x][m_y+2] += 3;

map[m_x][m_y+1] -= 1;

map[m_x][m_y] -= 2;

m_y++;

step++;

}

}

break;

case 186:

if(0 == map[m_x][m_y-1] ||

4 == map[m_x][m_y-1])

{

map[m_x][m_y-1] += 2;

map[m_x][m_y] -= 2;

m_y--;

step++;

}

else if(3 == map[m_x][m_y-1] ||

7 == map[m_x][m_y-1])

{

if(0 == map[m_x][m_y-2] ||

4 == map[m_x][m_y-2])

{

map[m_x][m_y-2] += 3;

map[m_x][m_y-1] -= 1;

map[m_x][m_y] -= 2;

m_y--;

step++;

}

}

break;

}

}

}

方法两种 第一种较难理解第二种理解较为容易但是代码量较大

推箱子 思路及详细程序相关推荐

  1. 用C语言实现推箱子小游戏基础程序plus

    目录 设计一个简单的推箱子游戏 功能设计要求: 代码实现 数据定义头文件data_def.h 窗口设置头文件WindowsSet.h WindowsSet.cpp 上移函数 矩阵旋转函数 游戏帧 菜单 ...

  2. C语言 推箱子游戏 简单 详细 (控制台)

    使用C语言实现超简单的推箱子游戏! 感谢您打开了这篇文章,下面我将讲述一下推箱子是如何实现的. 如果您喜欢我的文章可以点赞支持一下. 如果您对我的程序有什么意见和建议欢迎在评论区发表评论. 另外附赠适 ...

  3. 推箱子完整c语言程序,C语言实现推箱子游戏

    每天学习一点点,每天容易一点点.一个简单的C语言程序,用来复习c语言,代码通俗易懂.有什么问题望各位不吝赐教. 本文用最简单的C语言语句写个推箱子的程序,分享给大家: /*************** ...

  4. Leetcode 1263:推箱子(超详细的解法!!!)

    「推箱子」是一款风靡全球的益智小游戏,玩家需要将箱子推到仓库中的目标位置. 游戏地图用大小为 n * m 的网格 grid 表示,其中每个元素可以是墙.地板或者是箱子. 现在你将作为玩家参与游戏,按规 ...

  5. c语言推箱子源代码及注释,求大神 解析推箱子源代码 要详细

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include"stdio.h" #include"bios.h" #define LEFT 75 #defin ...

  6. 【java毕业设计】基于java+swing+Eclipse的推箱子游戏设计与实现(毕业论文+程序源码)——推箱子游戏

    基于java+swing+Eclipse的推箱子游戏设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于java+swing+Eclipse的推箱子游戏设计与实现,文章末尾附有本毕业设计的论文 ...

  7. 初学者一学就会的小程序开发——推箱子

    最经典的推箱子游戏,类似的游戏你一定早就玩过.要控制搬运工上下左右移动,来将箱子推到指定地点. 经典的推箱子是一个来自日本的古老游戏,目的是在训练你的逻辑思考能力.在一个狭小的仓库中,要求把木箱放到指 ...

  8. 基于java的推箱子游戏系统设计与实现(项目报告+答辩PPT+源代码+部署视频)

    项目报告 基于Java的推箱子游戏设计与实现 社会在进步,人们生活质量也在日益提高.高强度的压力也接踵而来.社会中急需出现新的有效方式来缓解人们的压力.此次设计符合了社会需求,Java推箱子游戏可以让 ...

  9. 推箱子游戏的自动求解

    导读: 推箱子游戏的自动求解 简介 推箱子,又称搬运工,是一个十分流行的单人智力游戏.玩家的任务是在一个仓库中操纵一个搬运工人,将N个相同的箱子推到N个相同的目的地.推箱子游戏出现在计算机中最早起源于 ...

最新文章

  1. 组合查询——怎样使用窗口的继承达到事半功倍?
  2. ASP.NET MVC学习资料 新增几个开源项目
  3. 精确覆盖DLX算法模板
  4. 中国海洋大学第四届朗讯杯高级组 A 2718 Rocky(模拟)
  5. TCP: SYN ACK FIN RST PSH URG
  6. 一组优秀的 for .NET Winform UI控件——DotNetMagic最新版本2.3,推荐使用
  7. 双向lstm-crf源码的问题和细微修改
  8. Linux操作系统选择(免费)
  9. 遗传算法求解tsp问题 C语言,遗传算法解决TSP问题(C++)
  10. MySQL查询数据详细
  11. SQL Server 数据库安装教程SQL Server 2017
  12. 分析图片相似度的软件,图片相似度比对算法
  13. 用java编写圆锥,java编写圆锥形体积
  14. 一文读懂阿里云直播技术是如何实现的
  15. 理解Room数据库的迁移(Migration)
  16. 计算机硬件大型作业报告,计算机硬件技术大作业报告 .doc
  17. 微信地图wgs84坐标,gcj02坐标,bd09坐标转换
  18. 辛巴学院-Unity-剑英陪你零基础学c#系列(二)顺序
  19. 刚体的相对运动与机器人连杆的运动
  20. erlang调试方法

热门文章

  1. 智能家居的云海,三翼鸟能飞多高?
  2. 黑马程序员-Java教程-10缓冲流、转换流、序列化流
  3. 游戏直播哪家强?虎牙、斗鱼、熊猫三强App大PK
  4. 计算机显卡性价比推荐,电脑显卡性价比排行2019 玩游戏显卡什么牌子好
  5. 黄金多头全面上攻 趁胜追击冲击千九关口
  6. 关于公转与自转的相关代码
  7. 嵌入式裸机开发-DDR3
  8. 打印机复印机零件的中英文对照表
  9. asp毕业设计—— 基于asp+access的期刊稿件处理系统设计与实现(毕业论文+程序源码)——期刊稿件处理系统
  10. Java的特点及与其他语言的区别