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

📄 xl_global.h

📁 仿真机器人足球比赛
💻 H
字号:
#ifndef _XL_GLOBAL_H
#define _XL_GLOBAL_H

#define  ENABLE_LOG     //如果不想生成log文件,注释掉此行即可
//#define  OFFLINE_CLIENT //离线客户端

typedef unsigned int uint;

// --------------Game--------------------------
const int    CROBOTNUM    = 5;       // 每个队的机器人数
const int    CMATCHTIME   = 3000;    // 仿真周期
const int    CDEATHTIME   = 1000;    // 加时赛仿真周期
const int    CJSTIME      = 5000;    // 决赛仿真周期
// ---------------------------------------------

// --------------Robot--------------------------
const double CMAXROBOTV        = 1.2;     // 球员最大速度
const double CMAXROBOTACC      = 1.0;     // 球员最大加速度
const double CMAXROBOTDECAY    = 0.4;     // 球员速度衰减系数
const double CROBOTSIZE        = 0.3;     // 机器人的半径
const double CKICKABLEMARGIN   = 0.7;     // 机器人控球范围
const double CROBOTPTSIZE      = CROBOTSIZE + CKICKABLEMARGIN;
const double CKICKPOWERRATE    = 0.027;	  // 踢球参数
const double CCATCHABLEMARGIN  = 1.5;     // 守门员的扑球范围
const double CCATCHMAXMOMENT   = 90;      // 守门员扑球的最大夹角
const double CCATCHMINMOMENT   = -90;	  // 守门员扑球的最小夹角
const double CCATCHPROBABILITY = 1.0;     // 守门员扑球成功率
const int    CCATCHBANCYCLE    = 5;       // 两次扑球间隔时间
const int    CMAXCATCHTIME     = 2;       // 最多连续扑球次数
const double CMAXPOWER         = 100.0;   // 命令最大力量
const double CMINPOWER         = -100.0;  // 命令最小力量
const double CMAXMOMENT        = 180.0;   // 命令最大转身角度
const double CMINMOMENT        = -180.0;  // 命令最小转身角度
const double CINERTIAMOMENT    = 5.0;	  // 转身惯性参数
const double CSTAMINAMAX       = 4000.0;  // 球员最大体力值
const double CSTAMINAINCMAX    = 45.0;    // 球员最大体力恢复值
const double CDASHPOWERRATE    = 0.006;   // 球员加速系数
const double CEFFORTMIN        = 0.6;     // 球员最小体力效用值
const double CEFFORTMAX        = 1.0;     // 球员最大体力效用值
const double CEFFORTDECTHR     = 0.3;     // 球员体力效用系数
const double CEFFORTDEC        = 0.005;   // 球员体力效用系数
const double CEFFORTINCTHR     = 0.6;     // 球员体力效用系数
const double CEFFORTINC        = 0.01;    // 球员体力效用系数
const double CRECOVERDECTHR    = 0.3;     // 球员体力恢复系数??
const double CRECOVERDEC       = 0.002;   // 球员体力恢复系数????????
const double CRECOVERMAX       = 1.0;	  // 球员体力恢复系数
const double CRECOVERMIN       = 0.5;     // 球员体力恢复系数
const double CROBOTRAND        = 0.1;     // 球员运动误差系数
const double CROBOTSEERANDPOS  = 5.0;     // 球员感知坐标最大噪声的2倍
const double CROBOTSEERANDVEL  = 0.5;     // 球员感知速度最大噪声的2倍
// ---------------------------------------------

// --------------Field--------------------------
const double CDOORWIDTH   = 4.0;        // 球门一侧是4.0,实际长度是2 * 4.0
const double CPNZWIDTH    = 20.0;       // 大禁区的宽度
const double CHALFPNZWIDTH= 10.0;       // 大禁区的半宽度
const double CPNZLEN      = 10.25;      // 大禁区的长度
const double CSPNZWIDTH   = 12.24;      // 小禁区的宽度
const double CHALFSPNZWIDTH = 6.12;     // 小禁区的半宽度
const double CSPNZLEN     = 5.2;        // 小禁区的长度
const double CFLDWIDTH    = 34.0;       // 场地宽度
const double CHALFFLDWIDTH= 17.0;       // 一半场地宽度
const double CFLDLEN      = 52.0;       // 场地长度
const double CHALFFLDLEN  = 26.0;       // 一半场地长度
const double CDOORY1	  = CHALFFLDWIDTH - CDOORWIDTH; // 上门柱
const double CDOORY2	  = CHALFFLDWIDTH + CDOORWIDTH; // 下门柱
// ----------------------------------------------

// --------------Ball-----------------------------
const double CMAXBALLV    = 2.7;     // 球最大速度
const double CMAXBALLACC  = 2.7;     // 球最大加速度
const double CBALLDECAY   = 0.94;    // 球速衰减系数
const double CBALLSIZE    = 0.085;   // 球的半径
const double CBALLRAND    = 0.05;    // 球的运动噪声系数
// -----------------------------------------------

const double CKICKABLEDIST  = CKICKABLEMARGIN + CROBOTSIZE + CBALLSIZE;
const double CCATCHABLEDIST = CCATCHABLEMARGIN + CROBOTSIZE + CBALLSIZE;


//左右球队
 enum TeamSide
 {
	 TS_LEFT  = 1,
	 TS_RIGHT = 2 
 };


// 命令种类
enum CommandTypeT
{
	Com_Stay = 0, 
	Com_Turn, //转身
	Com_Kick, //踢球
	Com_Dash, 
	Com_Catch //扑球
};


/*
当CommandType分别为:
	1) Stay : Server 忽略 Param1,Param2 
	2) Turn : Param1为转身角度(单位:度),Server 忽略Param2 
	3) Kick : Param1为踢球角度(单位:度),Param2 为踢球力量
	4) Dash : Param1为dash power,Server忽略Param2 
	5) Catch: Server 忽略 Param1,Param2 
 */
struct TCommand
{
    CommandTypeT Type;    //命令种类:Stay,Turn,Kick,Dash,Catch
    double       Param1;  //命令参数1
    double       Param2;  //命令参数2
};


//二维的点
typedef struct
{
   double x;
   double y;
} Vector; 

//我方球员信息
typedef struct 
{
	Vector pos; //位置
	Vector vel; //速度
	double dir; //方向
	double sta; //体力
	double eff; //体力使用效率
	double rec; //体力恢复值
	bool   bComError; //发送命令是否错误
	bool   bCarsh; //是否发生碰撞
	bool   bCatch; //是否在扑球
} RobotState;

//球的信息
typedef struct 
{
	Vector pos; //位置
	Vector vel; //速度
	bool   bCarsh; //是否碰撞
} BallState;

//对手信息
typedef struct
{
	Vector pos; //位置
	Vector vel; //速度
	double dir; //方向
} OpsState;

typedef struct
{
    int iTeam1Score; //1对分数
    int iTeam2Score; //2队分数
    int iTimeTipCnt; //?,可以忽略此信息
    int iTimeNow; //当前周期
    int iTimeFromGoal; //当前周期和最近一次进球的间隔
    int iHMPETB; //?可以忽略此信息
} MatchState; // 24 Bytes

const unsigned int SIZE_ROBOSTATES = sizeof(RobotState)*CROBOTNUM;

#endif 
    





















⌨️ 快捷键说明

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