📄 _gamer.h
字号:
//此文件声明了游戏者类,以及由它派生的human和robot类
#ifndef Gamer_h
#define Gamer_h
#include "structs.h"
class _Gamer // 由游戏者类的定义
{
protected:
int MyChessman[10]; // 存放游戏者所拥有的10个棋子的序号
_Nodes *Nodes; // 指向棋盘的指针
public:
int gamerID; // 游戏者的序号
int Sellect; // 选择的棋子序号
int Aimplace; // 目的结点序号
int GamerType; // 游戏者类型,1为人控制,0为电脑控制
virtual _Message Input()=0; // 虚函数,人类玩家和电脑玩家不同
void Init(int *,_Nodes *); // 为每个游戏者初始化,参数分别为指向含有游戏者序号和
// 所拥有的棋子的数组指针,指向棋盘的指针
struct _EvalueData // 存储评估走棋效果数据的结构体
{
int Score; // 走棋评估值
int start; // 起点
int end; // 终点
};
struct _GamerQuen //记录游戏者顺序的链表
{
int GamerId; //游戏者序号
int EnemyId; //对手的序号
_GamerQuen *Next; //指向下一个链表的元素
};
struct _Path //记录某棋子可走位置的结构体
{
int start; // 起点棋子位置
int count; // 可走位置总数
int path[40]; // 记录目的位置的数组
};
};
class _Human:public _Gamer //从_Gamer继承的_Human子类
{
public:
_Message Input(); //human的输入
};
class _Robot:public _Gamer //从_Gamer继承的_Robot子类
{
private:
_GamerQuen *GamerQuen; // 游戏者顺序信息链表
int SearchDepth; // 搜索的深度
int NearWin,FarWin; // 用于对采取不同的搜索方式进行判断
void Think(); // 机器人的思考
void DFS2(int start,_Nodes *tNodes); // 深度优先搜索函数,用于搜索可以走的路径
void GetAllMyPath(_Path *AllPath,_Nodes *tNodes,int type);
// 取得指定游戏者ID(参数三)棋子的可走路径
// 存入_Path中,_Nodes*为指向棋盘的指针
_EvalueData Evalue(_Nodes *,int,int); // 评估棋盘(_Nodes*所指)上指定游戏者ID棋子局势
// 得分放在_EvalueData结构体中的Score中返回
_EvalueData Search(_Nodes *,int); // 指定深度递归搜索,返回最佳走法可得到的局势
_EvalueData aBSearch(_Nodes *,int depth,int score);
// 剪枝法搜索,深度depth,上一级分数score
// 同样返回最佳走法可得到的局势
public:
void GetCondition(int **,int ); // 取得此局游戏者顺序和信息
_Message Input(); //Robot的输入
_Robot(); //构造函数,对Robot进行初始化
~_Robot(); //析构函数
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -