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

📄 decision.h

📁 本程序是2005年参加中国机器人大赛的比赛程序
💻 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 + -