- 1、本文档共9页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
推箱子源代码
#include cstring
#include cstdlib
#include ctime
#include iostream
#include conio.h
using std::cout;
using std::endl;
#ifndef SOKOBAN_H_ //防止文件重复包含
#define SOKOBAN_H_
#include queue
using std::queue;
//每一步的数据类型
struct node
{
int bx, by; //箱子的坐标
int px, py; //人的坐标
};
//推箱子类
class Sokoban
{
private:
enum {L = 15, H = 7};
char GameMap[H][L]; //地图
int Pex, Pey; //人的位置
int Boxx, Boxy; //箱子的位置
int Succeed, Prove; //是否成功到目的地, 是否可玩性
int dx[4], dy[4]; //方向数组
protected:
char Empty;
char People;
char Box;
char Block;
char Target;
int dir; //记录按键方向
node s, e;
public:
Sokoban(); //构建函数
~Sokoban() {} //析构函数,即为inline
//地图初始化函数
void Initial();
//箱子路劲验证函数,参数为箱子坐标(bx,by),人坐标(px,py)
void Box_Bfs(int bx, int by, int px, int py);
//人路劲验证函数,人所到的目的地(ex,ey)
bool People_Bfs(int ex, int ey);
//地图刷新函数
void Show();
//按键判断函数
void Button();
//箱子人移动函数
void Move();
//验证越界函数
bool Check(int x, int y);
};
#endif/prepre class=cpp name=code
Sokoban::Sokoban() //构建函数即对变量初始化
{
dir = -1;
Succeed = Prove = 0;
memset(GameMap, ., sizeof(GameMap));
Empty = .;
People = P;
Box = #;
Block = *;
Target = T;
//方向依次为上右下左
dx[0] = -1; dx[1] = 0; dx[2] = 1; dx[3] = 0;
dy[0] = 0; dy[1] = 1; dy[2] = 0; dy[3] = -1;
//随机种子,使程序每次运行时所产生的随机数不同
srand(time(0));
}
//地图初始化函数
void Sokoban::Initial()
{
int count = 0, x, y;
//对地图中随机产生25个阻碍物
while(count != 25)
{
x = rand()%H;
y = rand()%L;
if(GameMap[x][y] == Empty)
{
GameMap[x][y] = Block;
count++;
}
}
while(true) //随机产生人开始的位置
{
x = rand()%H;
y = rand()%L;
if(GameMap[x][y] == Empty)
{
GameMap[x][y] = People;
Pex = x;
Pey = y;
break;
}
}
while(true) //随机产生箱子开始的位置
{
x = rand()%H;
y = rand()%L;
//不让箱子在地图的边界处
if(GameMap[x][y] == Empty x != 0 y !=
您可能关注的文档
- 德国空间规划体系概述及其对我国国土规划的借鉴.doc
- 德国理想主义.doc
- 德国红茶文化探求.doc
- 德国职业安全和健康考察报告.doc
- 德国建筑简介.doc
- 德国道岔验收准则2.doc
- 德国鲜活细胞抗衰老项目.doc
- 德尔格呼吸机.doc
- 德性思维文档.doc
- 德宏州地区作物种植制度的现状.doc
- 2024年江西省寻乌县九上数学开学复习检测模拟试题【含答案】.doc
- 2024年江西省省宜春市袁州区数学九上开学学业水平测试模拟试题【含答案】.doc
- 《GB/T 44275.2-2024工业自动化系统与集成 开放技术字典及其在主数据中的应用 第2部分:术语》.pdf
- 中国国家标准 GB/T 44275.2-2024工业自动化系统与集成 开放技术字典及其在主数据中的应用 第2部分:术语.pdf
- GB/T 44285.1-2024卡及身份识别安全设备 通过移动设备进行身份管理的构件 第1部分:移动电子身份系统的通用系统架构.pdf
- 《GB/T 44285.1-2024卡及身份识别安全设备 通过移动设备进行身份管理的构件 第1部分:移动电子身份系统的通用系统架构》.pdf
- 中国国家标准 GB/T 44285.1-2024卡及身份识别安全设备 通过移动设备进行身份管理的构件 第1部分:移动电子身份系统的通用系统架构.pdf
- GB/T 44275.11-2024工业自动化系统与集成 开放技术字典及其在主数据中的应用 第11部分:术语制定指南.pdf
- 中国国家标准 GB/T 44275.11-2024工业自动化系统与集成 开放技术字典及其在主数据中的应用 第11部分:术语制定指南.pdf
- 《GB/T 44275.11-2024工业自动化系统与集成 开放技术字典及其在主数据中的应用 第11部分:术语制定指南》.pdf
文档评论(0)