推箱子

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. PyCharm vs VSCode,是时候改变你的 IDE 了!
  2. iOS 几种初始化的分析比较
  3. python的数据类型和变量的定义及使用
  4. Windows下C/C++获取当前系统时间
  5. 4 关卡流 进阶_全息武器全解析,记住4个点全区第一就是你!
  6. ACM模式数组构建二叉树
  7. PHP 读取 QQ ip纯真数据库 详解
  8. linux中info功能是什么意思,Linux中的info指令
  9. poj3463 最短路和次短路 计数
  10. 【Android笔记】WebView的使用
  11. opengl 教程(15) 摄像机控制(2)
  12. abaqus土木结构视频教程
  13. 无锁(Lock-Free)编程简介及漫谈
  14. 投票男神女神公众号投票系统_男神女神投票 v5.5.21版本
  15. html 隐藏广告代码,js漂浮广告原理 js或者CSS带关闭的漂浮广告代码
  16. 爬虫+可视化——链家杭州二手房房源信息
  17. abp zero mysql_2、ABPZero系列教程之拼多多卖家工具 更改数据库为Mysql
  18. 学完高性能计算后的发展怎么样?
  19. VAE with a VampPrior
  20. Win10多版本CUDA和CUDNN安装

热门文章

  1. 作业一:淘宝的创新点
  2. ngnix配置启动vue项目
  3. Git下载部署及常用命令
  4. 奈雪、喜茶“不屑”的下沉市场:蜜雪冰城“甜蜜蜜”
  5. 页面FLV视频播放问题
  6. git push origin master上传资源总是报密码错误,但是密码确实是正确的应该怎么办?
  7. 为什么“ Hello World”是您将编写的最重要的程序
  8. 全球与中国手术手套市场深度研究分析报告
  9. idea 控制台乱码问题解决
  10. 工作经验背景调查包含的内容和注意事项?