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

📄 cppconst.h

📁 一个C编写的足球机器人比赛程序
💻 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 + -