📄 general.h
字号:
/**************************************************************************** 文件名称:General.h
* 摘 要:该文件声明一些常量、球以及机器人场地的类型。
*
* 当前版本:2.0
* 作 者:Moon, Dr Jun Jo, 李迅
* 完成日期:2005年10月24日
***************************************************************************/
#ifndef __GENERAL_H__
#define __GENERAL_H__
// -------------------------------全局参数----------------------------------------
const long PLAYERS_PER_SIDE = 5; // 每队球员个数
const double CM = 2.54; // 英寸——厘米转换参数(1英寸 = 2.54厘米)
const double PI = 3.14159265;
// 比赛状态常量
const long NORMAL = 0; // 一般踢球动作
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; // 球门球
// 发球方
const long ANYONES_BALL = 0; // 没有发球方
const long BLUE_BALL = 1; // 蓝队发球
const long YELLOW_BALL = 2; // 黄对罚球
// 球队
const long BLUE_TEAM = 0;
const long YELLOW_TEAM = 1;
// 场地信息
const double FLEFTX = 6.8118 * CM; // 场地左边界
const double FTOP = 77.2392 * CM; // 场地上边界
const double FRIGHTX = 93.4259 * CM; // 场地右边界
const double FBOT = 6.3730 * CM; // 场地下边界
const double GLEFT = 2.8748 * CM; // 球门左边界
const double GTOPY = 49.6801 * CM; // 球门上边界
const double GRIGHT = 97.3632 * CM; // 球门右边界
const double GBOTY = 33.9320 * CM; // 球门下边界
// -------------------------------基本类型----------------------------------------
// 球类型
class Ball
{
public:
double x;
double y;
};
// 己方机器人类型
class HRobot
{
public:
double x;
double y;
double angle;
double pwm1; // 左轮速
double pwm2; // 右轮速
};
// 对方机器人类型
class ORobot
{
public:
double x;
double y;
double angle;
};
// 场地类型
class Field
{
public:
// 构造函数,初始化场地各点坐标
Field():left(FLEFTX), top(FTOP), right(FRIGHTX), bottom(FBOT), gtop(GTOPY), gbot(GBOTY){}
double left; // 场地左边界
double top; // 场地上边界
double right; // 场地右边界
double bottom; // 场地下边界
double gtop; // 球门上边界
double gbot; // 球门下边界
};
// 球的坐标转换
inline void TransformCoordinate(Ball &ball, const Field &fd)
{
ball.x = fd.left + fd.right - ball.x;
ball.y = fd.bottom + fd.top - ball.y;
}
// 己方机器人的坐标转换
inline void TransformCoordinate(HRobot &robot, const Field &fd)
{
robot.x = fd.left + fd.right - robot.x;
robot.y = fd.bottom + fd.top - robot.y;
if(robot.angle > 0) robot.angle -= 180;
else robot.angle += 180;
}
// 对方机器人的坐标转换
inline void TransformCoordinate(ORobot &robot, const Field &fd)
{
robot.x = fd.left + fd.right - robot.x;
robot.y = fd.bottom + fd.top - robot.y;
if(robot.angle > 0) robot.angle -= 180;
else robot.angle += 180;
}
#endif // __GENERAL_H__
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -