📄 strategy.h
字号:
//宏定义是动态连接库
#define STRATEGY_API __declspec(dllexport)
#include <string.h>
#include <stdio.h>
#include <math.h>
#include <windows.h>
const long PLAYERS_PER_SIDE = 5;
//数据的精确度只有 0.1
// gameState
const long FREE_BALL = 1;
const long PLACE_KICK = 2;
const long PENALTY_KICK = 3;
const long FREE_KICK = 4;
const long GOAL_KICK = 5;
// whosBall
const long ANYONES_BALL = 0;
const long BLUE_BALL = 1;
const long YELLOW_BALL = 2;
// global variables -- Useful field positions ... maybe???
const double FTOP = 77.2392; //球场
const double FBOT = 6.3730;
const double FRIGHT = 93.4259;
const double FLEFT = 6.8118;
const double FRIGHTX = 93.4259;
const double FLEFTX = 6.8118;
const double CORRECTX = 0;//-2.942073; //修正 坐标转换时的 偏差
const double CORRECTY = 0;//-6.283795;
//const double GTOP = 51.148312;
const double GTOP = 49.6801;
const double GBOT = 33.9320;
const double GTOPY = 49.6801;
const double GBOTY = 33.9320;
const double GRIGHT = 85.3632;
const double GLEFT = 15.8748;
const double GBRIGHT = 97.3632; //右边球网
const double GBLEFT = 2.8748;
const double GBTOP = 49.652424;
const double GBBOT = 33.517822;
const double RIGHTG = 79.339401; //禁区
const double LEFTG = 21.299461;
const double BOTG = 25.875967;
const double TOPG = 57.212448;
const double FREELEFT = 29.262907; //自由球
const double FREERIGHT = 71.798508;
const double FREETOP = 64.454193;
const double FREEBOT = 18.184305;
const double PENALTYRIGHT = 78.329132; //点球
const double PENALTYLEFT = 22.216028;
const long CAR = 3; //小车边长 2.95
///角落为 边长 为5 的等腰三角形
//球能到达的边长范围
//黄队测试
const double RLEFT = 8.44 ;
const double RRIGHT = 91.78 ;
const double RTOP = 75.59 ;
const double RBOT = 8.04 ;
const double RRIGHTGRIT = 95.75 ;
const double RRIGHTGLFT = 85.88 ;
const double RLEFTGLFT = 4.52 ;
const double RLEFTGRIT = 15.27 ;
const double RGTOP = 53.05 ;
const double RGBOT = 30.44 ;
const double RJINQUTOP = 58.67 ;
const double RLEFTJINQURIT = 22.89 ;
const double RRIGHTJINQULFT = 77.92 ;
const double RJINQUBOT = 24.33 ;
const double CORNERLEFT = 13.13 ;
const double CORNERRIT = 87.76 ;
const double CORNERTOP = 71.24 ;
const double CORNERBOT = 12.85 ;
const double ROBOTWITH = 3.14 ;
const double BALLWITH = 1.5 ;
//球能到大的范围
const double BLEFT = 7.77 ;
const double BRIGHT = 92.46 ;
const double BTOP = 76.29 ;
const double BBOT = 7.35 ;
//
//////////////////////MANY CONST NUMBERS
const double SPEED_TANGENT = 0.81;
const double SPEED_NORMAL = 0.27;
const double SPEED_A=0.060;
const double SPEED_B=0.015222305;
const double ANGLE_A=0.273575;
const double ANGLE_B=0.534262;
const double ANGLE_K=0.000294678;
////////////////////////MANY CONST NUMBERS
///以下参数 用在分区上
const double X1= 7;
const double X2= 21;
const double X3= 51.0;
const double X4= 80.0;
const double X5= 97.0;
const double X6= 0.0;
const double Y1= 6;
const double Y2= 25.0;
const double Y3= 40.0;
const double Y4= 55.0;
const double Y5= 77.0;
const double Y6= 0.0;
///分区参数
typedef struct
{
double x, y, z;
} Vector3D;
typedef struct
{
long left, right, top, bottom;
} Bounds;
typedef struct
{
Vector3D pos;
double rotation;
double velocityLeft, velocityRight;
} Robot;
typedef struct
{
Vector3D pos;
double rotation;
} OpponentRobot;
typedef struct
{
Vector3D pos;
} Ball;
typedef struct
{
Robot home[PLAYERS_PER_SIDE];
OpponentRobot opponent[PLAYERS_PER_SIDE];
Ball currentBall, lastBall, predictedBall;
Bounds fieldBounds, goalBounds;
long gameState; //0,1,2,3,4,5
long whoseBall; //0,1,2
void *userData;
} Environment;
typedef struct
{
Vector3D myoldpos[PLAYERS_PER_SIDE]; //记录 我方 队员的旧坐标,方向
Vector3D myspeed[PLAYERS_PER_SIDE]; //纪录 我方 队员的速度,跑位的方向
Vector3D myoldvelocity[PLAYERS_PER_SIDE]; //纪录 我方 队员上次驱动力
Vector3D opoldpos[PLAYERS_PER_SIDE]; //记录 对方 队员的旧坐标,方向
Vector3D opspeed[PLAYERS_PER_SIDE]; //纪录 对方 队员的速度,跑位的方向
Robot robot[PLAYERS_PER_SIDE]; // 我方 球员
OpponentRobot opp[PLAYERS_PER_SIDE]; // 对方 球员
Vector3D oldball; //纪录球 过去 的坐标
Vector3D curball; //纪录球 现在 的坐标
Vector3D preball; //纪录球 预测 的坐标
Vector3D ballspeed; //纪录球 预测 的坐标
long time[2]; // time[1]取样周期 & time[0]取样次数
bool mygrand; //是不是 黄队 ,不是则 ??
bool locked; //是否已经 判断了 场地
int ballArea; //分区 专用函数int checkball();
int bgoalball; //球门球
int nfreeball; //自由球
int nplaceball;
int npenaltyball; //点对方
int chooserobot; //还没有选择了点球队员吗??
int mainrobot; //主发 //发对方点球时的几个队员
int cutrobot; //包抄
int slowrobot; //轻踢
int defentrobot;
int goalie;
long gameState; //0,1,2,3,4,5
long whoseBall; //0,1,2
long n;
bool B_N; //these two veriaty is for the test funtion!
// Bounds field, goal;
bool debug; //是 调试 吗??
FILE * debugfile;
}Mydata;
extern "C" STRATEGY_API void Create ( Environment *env );
extern "C" STRATEGY_API void Strategy ( Environment *env );
extern "C" STRATEGY_API void Destroy ( Environment *env );
//以下
const double InlitializeMyPosition_X[5]={
10.6663,
19.9199,
19.7433,
39.4618,
39.8876
};
const double InlitializeMyPosition_Y[5]={
42.3077,
60.3647,
22.9943,
60.3031,
23.1065
};
const double InlitializeMyPosition_Z[5]={
90,
0,
0,
0,
0
};
const double InlitializeOppPosition_X[5]={
90.4616,
82.0921,
81.2890,
61.8525,
61.4469
};
const double InlitializeOppPosition_Y[5]={
42.2002,
22.9046,
60.4876,
23.1527,
60.3599
};
const double InlitializeOppPosition_Z[5]={
-90,
180,
180,
180,
180
};
const double PI = 3.1415926;
const Vector3D CONSTGATE={FRIGHT,(FTOP+FBOT)/2,0}; ///zhuyi gate
const Vector3D TOPGATE={93,72,0};
const Vector3D BOTGATE={93,9,0};
void NormalGame ( Environment *env );
void FreeBallGame(Environment *env);
void PlaceBallGame(Environment *env);
void PenaltyBallGame(Environment *env);
void FreeKickGame(Environment *env);
void GoalKickGame(Environment *env);
void FreeGoalie( Environment* env);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -