www.pudn.com > StrategyClass1.rar > StrategySystem.h, change:2006-02-24,size:5261b

```// StrategySystem.h: interface for the CStrategySystem class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_STRATEGYSYSTEM_H__FA4DC9A8_2EE9_464D_B6F8_16815E8C9066__INCLUDED_)
#define AFX_STRATEGYSYSTEM_H__FA4DC9A8_2EE9_464D_B6F8_16815E8C9066__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "Strategy.h"

/********************************************************************
坐标
********************************************************************/
class CVector3D
{
public:
CVector3D& operator =(const Vector3D &vec3D);
public:
double x, y, z;
};

/********************************************************************
球
********************************************************************/
class CBall
{
public:
CBall& operator =(const Ball &ball);
public:
CVector3D pos;
};

/********************************************************************
矩形区域
********************************************************************/
class CBounds
{
public:
CBounds& operator =(const Bounds &bounds);
public:
long left, right, top, bottom;
};

/********************************************************************
敌方机器人
********************************************************************/
class COpponentRobot
{
public:
COpponentRobot& operator =(const OpponentRobot& oppRobot);
public:
CVector3D pos;
double rotation;
};
/********************************************************************
本方机器人数据
********************************************************************/
struct tagRobotData :public Robot
{
double dbVr;
double dbVl;
};

/********************************************************************
本方机器人
********************************************************************/
class CRobot :public tagRobotData
{
public:
CRobot& operator =(const Robot &robot);
CVector3D pos;
public:
void MoonFollowOpponent( COpponentRobot& opponent);
//	CVector3D pos;                                       //机器人坐标
//	double rotation;                                    //机器人方向角
//	double velocityLeft, velocityRight;                 //机器人左右速度

void Position(const CVector3D& pos);			    //跑位函数
void Position(const double& x, const double& y);
void Velocity(const int& vl, const int& vr);		//速度设置函数
};

/********************************************************************
环境信息
********************************************************************/
class CEnvironment
{
public:
CEnvironment& operator=(const Environment& env);
public:
CRobot home[PLAYERS_PER_SIDE];                       //本方机器人数据
COpponentRobot opponent[PLAYERS_PER_SIDE];           //对方机器人数据
CBall currentBall, lastBall, predictedBall;          //球的数据(当前周期，上一周期，无下周期)
CBounds fieldBounds, goalBounds;                     //场地信息
long gameState;                                     //比赛状态
long whosBall;                                      //控球方
void *userData;                                     //用户数据
};

/********************************************************************
策略
********************************************************************/
class CStrategySystem
{
public:
void MyAttack1(CRobot& robot,CRobot &robot1);
void GoalieAngle();
void Role();
void MyAttack(CRobot& robot);                       //进攻策略
void MyGoalie(CRobot& robot);                       //守门员策略
void MyAttackDefender(CRobot& robot);               //防守进攻策略
void MyDefender(CRobot& robot);                     //防守策略
void MyShoot(CRobot& robot);                        //射门策略
int MyMoveStyle(CVector3D BPoint, CVector3D RPoint);//移运策略（跟据实际情况进行相应的策略）
void PredictBall ();                                //预测球的位置

//	void Test();
int MyGoalieMoveStyle(CVector3D BPoint);//守门员策略（跟据实际情况进行相应的策略）

CStrategySystem(Environment& env);
CStrategySystem();

void Run(Environment& env);									//做相应的策略

virtual ~CStrategySystem();

protected:

//*************************************************************
//						不修改部分
void GetEnvironment(Environment& env);		//获得环境变量
void SetMyStrategy();						//设置小车的速度，释放指针
//**********************************************************************

private:
//成员变量
CRobot m_Home[PLAYERS_PER_SIDE];                       //本方机器人数据
COpponentRobot m_Opponent[PLAYERS_PER_SIDE];           //对方机器人数据
CBall m_CurrentBall, m_LastBall, m_PredictedBall;      //球的数据(当前周期，上一周期，无下周期)
CBounds m_FieldBounds, m_GoalBounds;                   //场地信息
long m_GameState;                                      //比赛状态
long m_WhosBall;                                       //控球方
void *m_pUserData;                                     //用户数据

Environment* m_pEnv;
};

#endif // !defined(AFX_STRATEGYSYSTEM_H__FA4DC9A8_2EE9_464D_B6F8_16815E8C9066__INCLUDED_)
```