📄 decision.h
字号:
// Decision.h: interface for the CDecision class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_DECISION_H__6F227EE5_747D_456A_B4C6_4314CDD40EC9__INCLUDED_)
#define AFX_DECISION_H__6F227EE5_747D_456A_B4C6_4314CDD40EC9__INCLUDED_
#include "Vector.h" // Added by ClassView
#include "Object.h" // Added by ClassView
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
//特别注意本文件和Global.cpp文件的初始化工作!!!
//所有的数据都和场地的实际值有关!需要当场采集!!
//所有的值都是在采集显示区的像素值!!
#define pi 3.14
#define ATTACK 1 //在路径规划时用到
#define NUM 12 //路径规划时选取点的个数
#define DEFFENSE 2 //在路径规划时用到
#define SHOOTDIST 40 //进入射门程序的距离(即此时机器人在球后方,并且距离球在该范围以内)
#define JUDGEDIST 70 //正向处理距离值大小
#define DEBUGDIST 100
//以上为场地四条边的横纵坐标值(以显示的左下角为原点)
//以下为所需要的公共定义
#define LEFT 460 //y最左点
#define RIGHT 0 //y最右点
#define TOP 590 //x最上点
#define BOTTOM 0 //x最下点
#define LENGTH 40 //机器人长度
#define FORBIDDENLY 320 //禁区左侧y值
#define FORBIDDENRY 170 //禁区右侧y值
#define MIDDLEPOINTY 250 //中心坐标点的y值
#define MIDDLEPOINTX 210 //中心坐标点的x值
//以下为右方所需要的宏定义
#define STDDISTANT 70 //需要离球的距离的大小
#define SHOOTRANGE 100
#define OPPONENTGOALIEX 560//非精确值,对方禁区
#define OPPONENTDIFFENSEX 530//对方防守底线
#define AX 230.01 //下半场的后方底线,与DX相对应
//以下为左方要用到的宏定义
#define DEFFENSEX 80 //我方禁区前面一点,为后卫挡球时的位置
#define GOALIEDEFFENSEX 60//守门员防守的x位置
#define DX 250.01 //后防底线,超过此线则有机器人冲向前进行处理
#define SDEFFENSEX 100 //第二个防守队员的防守底线
#define GOALIEDIST 250 //守门员的判断距离,未必用
#define DPDISTANT 200 //2号防守机器人以我方球门为圆心所画的一个圆,球进入该圆内时就扑向球
class CDecision
{
public:
int islost;
int isboundary;
void LostObject(Player &player);
int InRect(Player &player, CRect rect);
void Goalie(Player &player,CRect rect);
void FindObject(Player &player,Vector &object);
void FindBall(Player &player);
void DefenceBall(Player &player, CRect rect);
void Boundary(Player &player);
void IntegratedAction2(Player &player);
void GoalieMoveSecondHalf(Player &player);
void SDefenseSecondHalf(Player &player);
void FDefenseSecondHalf(Player &player);
void SDefense(Player &player);
void FDefense(Player &player);
void RShooterSecondHalf(Player &player);
void LShooterSecondHalf(Player &player);
void RShooter(Player &player);
void LShooter(Player &player);
void GoalieMove(Player &player);
void ChooseDotsSecondHalf(Player &player);
void IntegratedActionSecondHalf(Player &player);
int JudgeRoleSecondHalf(Player &player);
void NorIntegratedAction(Player &player, Vector des);
int ComputeNorIndex(Player &player, Vector des);
void ChooseNorDots(Player &player, Vector des);
void IntegratedAction(Player &player);
void ChooseFouth();
void ChooseThird(Ball ball);
void ChooseSecond(Ball ball);
void ChooseMain(Ball ball);
// void ChooseFTwo2(Ball ball);
// void ChooseLTwo();
// int RobotsBehindBall(Ball ball);
// void ChooseFTwo1(Ball ball);
double Radius;
int JudgeRole(Player &player);
int ComputeIndex2(Player &player);
int ComputeIndex1(Player &player);
double index[NUM];
Vector Dot[NUM];
void ChooseDots(Player &player);
// HANDLE hMutex;
//两种方案:1、动态角色分配
// 2、每个机器人有固定的角色,只要选择点就可以了;
// 先实现第二种方案
/* Action DFreeManA();
Action DAssistantA();
Action MDeffenser2A();
Action MDeffenser1A();
int DeffenseFreeMan;
int DFreeMan();
void DFreeManA();
int MainDeffenser2;
int MDeffenser2();
void MDeffenser2A();
int MainDeffenser1;
int MDeffenser1();
void MDeffenser1A();
int DeffenseAssistant;
void DAssistantA();
int DAssistant();
Action AFreeManA();
Action AssistAttack2A();
Action AssistAttack1A();
Action MainAttackA();
int AttackFreeMan;
int CAFreeMan( );
void AFreeManA();
int AAssist2;
int AAssistant2( );
void AssistAttack2A();
int AAssist1;
int AAssistant1( );
void AssistAttack1A();
void MainAttackA();
int MAttacker;
int ShootP();
int Shooter( );
state stateDecision();
int WhoHasBall( );
int ChooseLest( double *array );
// int IsHaveObstacle( Vector &vector1, Vector &vector2);
double DistRandR( Player &player1, Player &player2);
double DistRandB( Player &player, Ball &ball );
double DistVandV( Vector &vector1, Vector &vector2 );
*/
Ball predictedBall;
Ball lastBall;
Ball currentBall;
void PredictBall();
// static void SimpleDecision();
CDecision();
virtual ~CDecision();
};
#endif // !defined(AFX_DECISION_H__6F227EE5_747D_456A_B4C6_4314CDD40EC9__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -