📄 cppconst.h
字号:
#ifndef CPPCONST_H
#define CPPCONST_H
#include "Geometry.h"
const double PI = 3.14159265359;
// --------------Game--------------------------
const int CROBOTNUM = 5; // 每个队的机器人数
const int CMATCHTIME = 3000; // 仿真周期
const int CDEATHTIME = 1000; // 加时赛仿真周期
const int CJSTIME = 5000; // 决赛仿真周期
const int CCYCLETIME = 100; // 默认每周期100毫秒
// ---------------------------------------------
// --------------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;//8.0; // 大禁区的长度
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;
// -----------------------------------------------
const double dPlayerWhenToTurnAngle = 7.0; // angle when to turn when moving
// 球的状态
enum BallStateT{BS_Normal,BS_LEFT_Goal,BS_RIGHT_Goal};
// 命令种类
enum CommandTypeT{Com_Stay, Com_Turn, Com_Kick, Com_Dash, Com_Catch};
// 命令执行结果
enum CommandResultT{CR_Error,CR_Catch,CR_Normal};
// 比赛状态
enum GameStateT{GS_Normal,GS_Goal_Left,GS_Goal_Right,GS_Catch_Left,GS_Catch_Right,GS_Game_End};
enum ObjectTypeT{OT_Ball,OT_Robot};
enum ObjectT{O_Ball,O_Own_1,O_Own_2,O_Own_3,O_Own_4,O_Own_5,O_Ops_1,O_Ops_2,O_Ops_3,O_Ops_4,O_Ops_5,O_Unknow};
enum ObjectSetT
{
OBJECT_SET_TEAMMATES, /*!< teammates */
OBJECT_SET_OPPONENTS, /*!< opponents */
OBJECT_SET_PLAYERS, /*!< players */
OBJECT_SET_TEAMMATES_NO_GOALIE, /*!< teammates without the goalie */
};
// 命令
struct TCommand
{
CommandTypeT CommandType; //命令种类:Stay,Turn,Kick,Dash,Catch
double ComParam0; //命令参数0
double ComParam1; //命令参数1
};
/*
Stay : 无参数
Turn : ComParam0 : angTurn
Kick : ComParam0 : angKick
ComParam1 : power
Dash : ComParam0 : power
Catch: 无参数
*/
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;
int iTeam2Score;
int iTimeTipCnt;
int iTimeNow;
int iTimeFromGoal;
int iHMPETB;
} MatchState; // 24 Bytes
const unsigned int SIZE_ROBOSTATES = sizeof(RobotState)*CROBOTNUM;
// ---------------------------------------------------------------------
typedef struct{
int team; // 0 -- 1
int num; // 0 -- 4
bool availabe;
}setInfT;
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -