推箱子 思路及详细程序
推箱子
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;
}
}
}
方法两种 第一种较难理解第二种理解较为容易但是代码量较大
推箱子 思路及详细程序相关推荐
- 用C语言实现推箱子小游戏基础程序plus
目录 设计一个简单的推箱子游戏 功能设计要求: 代码实现 数据定义头文件data_def.h 窗口设置头文件WindowsSet.h WindowsSet.cpp 上移函数 矩阵旋转函数 游戏帧 菜单 ...
- C语言 推箱子游戏 简单 详细 (控制台)
使用C语言实现超简单的推箱子游戏! 感谢您打开了这篇文章,下面我将讲述一下推箱子是如何实现的. 如果您喜欢我的文章可以点赞支持一下. 如果您对我的程序有什么意见和建议欢迎在评论区发表评论. 另外附赠适 ...
- 推箱子完整c语言程序,C语言实现推箱子游戏
每天学习一点点,每天容易一点点.一个简单的C语言程序,用来复习c语言,代码通俗易懂.有什么问题望各位不吝赐教. 本文用最简单的C语言语句写个推箱子的程序,分享给大家: /*************** ...
- Leetcode 1263:推箱子(超详细的解法!!!)
「推箱子」是一款风靡全球的益智小游戏,玩家需要将箱子推到仓库中的目标位置. 游戏地图用大小为 n * m 的网格 grid 表示,其中每个元素可以是墙.地板或者是箱子. 现在你将作为玩家参与游戏,按规 ...
- c语言推箱子源代码及注释,求大神 解析推箱子源代码 要详细
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include"stdio.h" #include"bios.h" #define LEFT 75 #defin ...
- 【java毕业设计】基于java+swing+Eclipse的推箱子游戏设计与实现(毕业论文+程序源码)——推箱子游戏
基于java+swing+Eclipse的推箱子游戏设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于java+swing+Eclipse的推箱子游戏设计与实现,文章末尾附有本毕业设计的论文 ...
- 初学者一学就会的小程序开发——推箱子
最经典的推箱子游戏,类似的游戏你一定早就玩过.要控制搬运工上下左右移动,来将箱子推到指定地点. 经典的推箱子是一个来自日本的古老游戏,目的是在训练你的逻辑思考能力.在一个狭小的仓库中,要求把木箱放到指 ...
- 基于java的推箱子游戏系统设计与实现(项目报告+答辩PPT+源代码+部署视频)
项目报告 基于Java的推箱子游戏设计与实现 社会在进步,人们生活质量也在日益提高.高强度的压力也接踵而来.社会中急需出现新的有效方式来缓解人们的压力.此次设计符合了社会需求,Java推箱子游戏可以让 ...
- 推箱子游戏的自动求解
导读: 推箱子游戏的自动求解 简介 推箱子,又称搬运工,是一个十分流行的单人智力游戏.玩家的任务是在一个仓库中操纵一个搬运工人,将N个相同的箱子推到N个相同的目的地.推箱子游戏出现在计算机中最早起源于 ...
最新文章
- PyCharm vs VSCode,是时候改变你的 IDE 了!
- iOS 几种初始化的分析比较
- python的数据类型和变量的定义及使用
- Windows下C/C++获取当前系统时间
- 4 关卡流 进阶_全息武器全解析,记住4个点全区第一就是你!
- ACM模式数组构建二叉树
- PHP 读取 QQ ip纯真数据库 详解
- linux中info功能是什么意思,Linux中的info指令
- poj3463 最短路和次短路 计数
- 【Android笔记】WebView的使用
- opengl 教程(15) 摄像机控制(2)
- abaqus土木结构视频教程
- 无锁(Lock-Free)编程简介及漫谈
- 投票男神女神公众号投票系统_男神女神投票 v5.5.21版本
- html 隐藏广告代码,js漂浮广告原理 js或者CSS带关闭的漂浮广告代码
- 爬虫+可视化——链家杭州二手房房源信息
- abp zero mysql_2、ABPZero系列教程之拼多多卖家工具 更改数据库为Mysql
- 学完高性能计算后的发展怎么样?
- VAE with a VampPrior
- Win10多版本CUDA和CUDNN安装