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

📄 strategy.cpp

📁 武汉工程大学曾经参加过仿真机器人世界杯的源程序
💻 CPP
字号:
/**************************************************************************** 文件名称:Strategy.cpp
* 摘    要:该文件部分或全部实现了Strategy.h中所声明的函数。
* 
* 当前版本:2.0
* 作    者:李迅
* 完成日期:2005年10月24日
***************************************************************************/
#include "Strategy.h"
#include "Action.h"

//	策略初始化函数
void Strategys::initializtion(const Environment &env)
{
	gameCounter++;

	//	---------------------- 初始化球 --------------------------
	lastBall = ball;

	ball.x = env.currentBall.pos.x * CM;
	ball.y = env.currentBall.pos.y * CM;

	//	坐标转换
	if(ourside == BLUE_TEAM)
		TransformCoordinate(ball, fd);

	//	--------------------- 初始化机器人 -----------------------
	for(int i = 0; i < PLAYERS_PER_SIDE; i++)
	{
		//	己方机器人初始化
		lastHome[i] = home[i];
		home[i].x = env.home[i].pos.x * CM;
		home[i].y = env.home[i].pos.y * CM;
		home[i].angle = env.home[i].rotation;

		//	对方机器人初始化
		lastOpponent[i] = opponent[i];
		opponent[i].x = env.opponent[i].pos.x * CM;
		opponent[i].y = env.opponent[i].pos.y * CM;
		opponent[i].angle = env.opponent[i].rotation;

		//	坐标转换
		if(ourside == BLUE_TEAM)
		{
			TransformCoordinate(home[i], fd);
			TransformCoordinate(opponent[i], fd);
		}
	}
}

//	给服务器发送本周期数据(机器人轮速)
void Strategys::sendDataToServer(Environment &env) const
{
	for(int i = 0; i < PLAYERS_PER_SIDE; i++)
	{
		env.home[i].velocityLeft = home[i].pwm1;
		env.home[i].velocityRight = home[i].pwm2;
	}
}

//--------------------------------- 策略 ----------------------------------------------
//	自由球策略
void Strategys::FreeBall()
{
	Normal();

	//if(自由球条件满足 并且 时间小于一定的周期)
	//	......开始执行自由球策略
}

//	开球策略
void Strategys::PlaceKick()
{
	Normal();

	//if(开球条件满足 并且 时间小于一定的周期)
	//	......开始执行开球策略
}

//	点球策略
void Strategys::PenaltyKick()
{
	Normal();

	//if(点球条件满足 并且 时间小于一定的周期)
	//	......开始执行点球策略
}

//	球门球策略
void Strategys::GoalKick()
{
	Normal();

	//if(球门球条件满足 并且 时间小于一定的周期)
	//	......开始执行球门球策略
}

//	任意求策略
void Strategys::FreeKick()
{
	//MLS里面不用
	Normal();
}

//	一般策略
void Strategys::Normal()
{
	Goalie(home[0], ball, fd);
	Position1(home[1], ball.x, ball.y);
	Rotation2(home[2], 80);
	Velocity(home[4], 20, 20);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -