⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wumpus.h

📁 一个基于MFC的人工智能的巫魔问题求解
💻 H
字号:
#ifndef _WUMPUS_H_
#define _WUMPUS_H_


enum thing//定义格子里放的东西
{
	blank,//空格子
	gold,//金子
	wumpus,//巫魔
	pit,//陷阱
	deadwumpus,//被杀死的巫魔
	unknown,//尚不清楚里面放的是什么,待估计之后填入
	him//英雄自己
};

class grid//定义格子的状态
{
public:
	thing sthin;//格子里放了什么东西
	bool breeze;//是否有风声
	bool stench;//是否有臭味
	bool glitter;//是否有闪光
	grid()
	{
		sthin=blank;
		breeze=false;
		stench=false;
		glitter=false;
	}
};

enum direction
{
	N=0,//往北走
	W=1,//往南走
	S=2,//往西走
	E=3 //往东走
};

class position//定义在迷宫中的位置
{
public:
	int x;
	int y;
};

class guide//定义英雄根据经验猜测出来的格子的情况
{
public:
	int wumpus;//猜测该格子里有巫魔的次数
	int pit;//猜测该格子里有陷阱的次数
	thing in;//格子里有什么东西
	int visittime;//英雄到过该格子多少次
	guide()
	{
		wumpus=0;
		pit=0;
		visittime=0;
		in=unknown;
	}
};

class Map
{
public:
	grid maze[4][4];//迷宫定义
	position wumpos;//巫魔的位置
	position pitpos1;//第一个陷阱的位置
	position pitpos2;//第二个陷阱的位置
	position pitpos3;//第三个陷阱的位置
	position goldpos;//金子的位置
	void locatewumpus();//安排巫魔的信置
	void locatepit1();//安排第一个陷阱的位置
	void locatepit2();//安排第二个陷阱的位置
	void locatepit3();//安排第三个陷阱的位置
	void locategold();//安排金子的位置
	grid gridstate(int x,int y);//用于提供给英雄他进入的格子的相关信息

	Map();
	~Map();
};

class Hero
{
public:
	bool firstgetgold;
	bool firstshootwumpus;
	bool arrow;//英雄是否还有箭
	bool wumpusalive;//巫魔是否还活着
	bool alive;//自己是否还活着
	bool gotgold;//是否已经拿到金子
	bool knownwupos;//英雄觉得自己知道了巫魔的位置,是放箭的前提
	bool success;//拿到金子并爬出洞口为真
	bool noway;//是否已经无路可走
	bool stepforward();//英雄向前走一步

	position wumpos;//英雄眼中的巫魔位置
	 
	direction currentdirection;
	
	int stepcount;//已经走过的步数
	int score;//根据规则英雄得到的分数
	guide handbook[4][4];	//英雄根据自己的经验判断出相关格子的情况,并根据这一张表
							//进行相关的操作
	void feel();
	int x,y;//英雄当前的位置

	bool grab();//英雄捡起格子里的金子,如果格子里有金子的话
	bool shoot();//英雄根据自己的book决定放箭,如果射中,则巫魔大叫
	bool climb();//英雄从洞口爬出
    void choosedirA();//扩张地图,在找到金子之前尽可能地试探
	void choosedirB();//找到金子之后,要尽可能地回到洞口
	void makedecision();
	void turnback();
	void Init();
	Hero();
	~Hero();
	Map map;
};

class wumpusproblem
{
	
public:	
	Hero hero;
	void game();
};

void print(Map map);
void print(guide handbook[4][4]);
void printb(Map map);
void prints(Map map);
void printu(guide handbook[4][4]);
void wait();
#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -