亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? advancedagent.cpp

?? 2006年世界杯足球賽2D仿真組第16名的源代碼。在此代碼上隨便改改
?? CPP
字號:
/* *  Copyright 2002-2005, Mersad Team, Allameh Helli High School (NODET). * *  This program is free software, you can redistribute it and/or modify *  it under the terms of the GNU General Public License as published by *  the Free Software Foundation. * *  This program is distributed in the hope that it will be useful, *  but WITHOUT ANY WARRANTY; without even the implied warranty of *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *  GNU Library General Public License for more details. * *  This file is created by: Ahmad Boorghany *  and is modified by: Mohammad Salehe, Sassan Haradji * *  Released on Monday 1 August 2005, 10 Mordad 1384 by Mersad RoboCup Team. *  For more information please read README file.*/#include <cmath>#include <cassert>#include <Pass.h>#include <Shoot.h>#include <Degree.h>#include <Logger.h>#include <Offense.h>#include <Defense.h>#include <Dribble.h>#include <Command.h>#include <Intercept.h>#include <SRPDribble.h>#include <AdvancedAgent.h>#include <Config.h>#include <RootPlan.h>using namespace std;// Library's fuctionsLibrary::Library(const WorldModel *worldModel): pass(worldModel), positioning(worldModel){	pass.setCurKickCalculate(&worldModel->getCurKickCalculate());}// Form's fuctionsForm::Form(){	reset();}void Form::reset(){	sayForm.reset();	headForm.reset();	setBreakExperiment = 0;}// AdvancedAgent's fuctionsAdvancedAgent::AdvancedAgent(int argc, char **argv): SyncedAgent(argc, argv),		groupWorks(worldModel), sayDecision(worldModel),		headDecision(this), pointToDecision(worldModel),		library(worldModel), radar(worldModel){	statelessPlan = new StatelessPlan(worldModel, form, library);	if (config["Agent"]["PlanningSystem"]["UseHPS"].asBool())		rootPlan = new RootPlan(worldModel, form, library);	else		rootPlan = NULL;}AdvancedAgent::~AdvancedAgent(){	delete statelessPlan;	delete rootPlan;}void AdvancedAgent::senseBody(const SExpression &exp){	SyncedAgent::senseBody(exp);	groupWorks.updateAfterSenseBody();	if (form.setCycle != worldModel->getCurCycle())	{		form.setCycle = worldModel->getCurCycle();		form.reset();	}/*	if (lastDecide == DT_BLOCK ||		lastDecide == DT_INTERCEPT ||		lastDecide == DT_DRIBBLE_INTERCEPT ||		lastDecide == DT_GOALIE_INTERCEPT)		worldModel->setBall().setUpdateByHearPermitted(false);	else*/	worldModel->setBall().setUpdateByHearPermitted(true);	worldModel->updateCurInterCalculate();	worldModel->updateBallStatus();	if (rootPlan)		rootPlan->senseBody(exp);	statelessPlan->senseBody(exp);}void AdvancedAgent::see(const SExpression &exp){	SyncedAgent::see(exp);	worldModel->updateCurInterCalculate();	worldModel->updateBallStatus();	worldModel->updateMarkingPlayers();	statelessPlan->see(exp);}void AdvancedAgent::hear(const SExpression &exp){	SyncedAgent::hear(exp);		SExpAtomic *at;	at = dynamic_cast<SExpAtomic *>(exp[2]);	assert(at);	if (at->toString() == "referee")	{		groupWorks.resetByChangePlayMode();		if (worldModel->checkPlayModeForPenalty() == 1)		{			LOG << "AdvancedAgent::hear : Reversing Field" << endl;			if (!worldModel->getBody().isGoalie())			{				LOG << "Reverse. You are player" << endl;				worldModel->setFieldData().setPenaltySideRate(-1);			}			else				LOG << "NO! Don't Reverse. You are goalie" << endl;  		}		else if (worldModel->checkPlayModeForPenalty() == 2)		{			LOG << "AdvancedAgent::hear : -1 Reversing Field" << endl;			if (worldModel->getBody().isGoalie())			{				LOG << "Reverse. You are goalie" << endl;  				worldModel->setFieldData().setPenaltySideRate(-1);			}			else				LOG << "NO! Don't Reverse. You are player" << endl;   		}	}	if ((worldModel->getHearedHeader() == 'A' ||		 worldModel->getHearedHeader() == 'B') &&		worldModel->getHearedSender() == GOALIE_UNIFORM_NUM &&		worldModel->getHearedInterceptNum() != GOALIE_UNIFORM_NUM &&	    worldModel->getPlayMode() == PM_GOAL_KICK)	{		if (worldModel->getPlayModeRemainCycle() < 199)		{			LOG << "GOAL_KICK --> GOAL_KICK_TAKEN" << endl;			worldModel->setVirtualPlayMode(VPM_GOAL_KICK_TAKEN);		}		else			LOG << "GOAL_KICK --> NO CHANGE TO PLAY MODE" << endl;	}	if (worldModel->getHearedHeader() == 'A' ||		worldModel->getHearedHeader() == 'B')		groupWorks.setInterceptNumByPassSay(				worldModel->getHearedInterceptNum());/*	else if (worldModel->getHearedHeader() == 'Y' ||			worldModel->getHearedHeader() == 'Z')	{		groupWorks.changeInterceptNumByHear(				worldModel->getHearedSender(),				worldModel->getHearedInterceptNum());		groupWorks.setHearedRequestPassNum(				worldModel->getHearedRequestPassNum());		groupWorks.setHearedRequestPassSender(				worldModel->getHearedSender());		groupWorks.setHearedRequestPassTime(worldModel->getCurTime());	}*//*	if (worldModel->getMustAttention())	{		form.sayForm.attentionNum =				worldModel->getHearedInterceptNum();	}*/	worldModel->updateCurInterCalculate();	worldModel->updateBallStatus();	statelessPlan->hear(exp);}bool AdvancedAgent::bodyDecide(int quickLevel){	LOG << "AdvancedAgent::bodyDecide" << endl;	if (isBodyCycleCommandLost() && lastBodyCycleCommand->getCreator() == AT_PASS)		groupWorks.resetByChangePlayMode();	if (form.setCycle != worldModel->getCurCycle())	{		form.setCycle = worldModel->getCurCycle();		form.reset();	}	library.lastBodyCycleCommand = lastBodyCycleCommand;	library.positioning.setHomePoints();	groupWorks.updateInterceptNum(library);	library.gwSelection = groupWorks.getWithoutBallSelection(library);	library.quickLevel = quickLevel;	if (quickLevel == 0 && worldModel->getBall().isValid() &&			worldModel->isBallKickable())	{		worldModel->updateCurKickCalculate();		library.pass.calculate();	}	form.headForm.tnMode = TNM_AUTO_PLAY_ON;	try	{		if (rootPlan && !rootPlan->isFinished() &&				rootPlan->successRate() > 				config["Agent"]["PlanningSystem"]["MinSuccessRate"].asFloat())			rootPlan->decide();		else		{			statelessPlan->decide();		}	}	catch (Command *cmd)	{		bodyCycleCommand = cmd;	}	if (bodyCycleCommand == NULL)		bodyCycleCommand = new EmptyCommand(AT_NONE);	if (form.setBreakExperiment)		library.breakExperiment = form.setBreakExperiment;		if (bodyCycleCommand->getCreator() == AT_POSITIONING ||		bodyCycleCommand->getCreator() == AT_BASIC_AGENT ||		bodyCycleCommand->getCreator() == AT_BASIC_COACH ||		bodyCycleCommand->getCreator() == AT_ADVANCED_COACH ||		bodyCycleCommand->getCreator() == AT_KICK_CALCULATE ||		bodyCycleCommand->getCreator() == AT_CROSS_CALCULATE ||		bodyCycleCommand->getCreator() == AT_SAY_DECISION ||		bodyCycleCommand->getCreator() == AT_HEAD_DECISION ||		bodyCycleCommand->getCreator() == AT_POINTTO_DECISION)		assert(0);	if (worldModel->getBall().getAbsVec().getMagnitude() < 7.5)		return true;	return false;}void AdvancedAgent::sayDecide(){	radar.sender(form, library);	radar.receiver(form, library);/*	try	{		if (rootPlan && !rootPlan->isFinished() && rootPlan->successRate() > 			config["Agent"]["PlanningSystem"]["MinSuccessRate"].asFloat())			rootPlan->sayDecide();		else			statelessPlan->sayDecide();	}	catch (pair<Command *, Command *> cmds)	{		sayCycleCommand = cmds.first;		attentionCycleCommand = cmds.second;	}*/	groupWorks.updateInterceptNum(library);	groupWorks.signInterceptNum(form.sayForm);	sayDecision.decide(bodyCycleCommand, form.sayForm);	sayCycleCommand = sayDecision.getSayCommand();	attentionCycleCommand = sayDecision.getAttentionCommand();}void AdvancedAgent::pointToDecide(){/*	try	{		if (rootPlan && !rootPlan->isFinished() && rootPlan->successRate() > 			config["Agent"]["PlanningSystem"]["MinSuccessRate"].asFloat())			rootPlan->pointToDecide();		else			statelessPlan->pointToDecide();	}	catch (Command *cmd)	{		pointToCycleCommand = cmd;	}*/	pointToDecision.decide(headCycleCommand);	pointToCycleCommand = pointToDecision.getPointToCommand();}void AdvancedAgent::headDecide(){/*	try	{		if (rootPlan && !rootPlan->isFinished() && rootPlan->successRate() > 			config["Agent"]["PlanningSystem"]["MinSuccessRate"].asFloat())			rootPlan->headDecide();		else			statelessPlan->headDecide();	}	catch (pair<Command *, Command *> cmds)	{		LOG << "Catched by Handler" << endl;		headCycleCommand = cmds.first;		changeViewCycleCommand = cmds.second;		LOG << "End Catch" << endl;	}*/	LOG << "AdvancedAgent::headDecide" << endl;	headDecision.decide(bodyCycleCommand, form.headForm);	headCycleCommand = headDecision.getTurnNeckCommand();	changeViewCycleCommand = headDecision.getChangeViewCommand();}// Radar functionsRadarSystem::RadarSystem(const WorldModel *worldModel): worldModel(worldModel){	sayingsNum = 0;	for (int i = 0; i < 3; i++)		sayings[i] = NULL;	semiRandom = 0;	lastUpdateTime = 0;	lastTargetPlayer = NULL;}void RadarSystem::sender(Form &form, const Library &library){	LOG << "RadarSystem::sender" << endl;	if (lastUpdateTime != (int)worldModel->getCurTime())	{		for (int i = 0; i < 3; i++)		{			saids[i] = sayings[i];			sayings[i] = NULL;		}		saidsNum = sayingsNum;		sayingsNum = 0;		lastUpdateTime = worldModel->getCurTime();	}	if (worldModel->getBall().getSeeTime() - worldModel->getCurTime() >= 2 ||		library.gwSelection == WOBS_INTERCEPT ||		worldModel->isBallKickable())		return;	const Player &targetPlayer(worldModel->getNearestTmmToBall());	if (&targetPlayer != lastTargetPlayer)	{		saidsNum = 0;		for (int i = 0; i < 3; i++)			saids[i] = NULL;	}	lastTargetPlayer = &targetPlayer;LOG << "targetPlayer: " << targetPlayer.getUniNum() << endl;	const Player *candidatePlayers[3];	const Player *starredPlayer = NULL;	for (int i = 0; i < 3; i++)		candidatePlayers[i] = NULL;	switch (worldModel->getBody().getUniNum())	{	case 10:		if (targetPlayer.getUniNum() == 2)		{			candidatePlayers[0] = &worldModel->getFullPlayer(TID_TEAMMATE, 10 - 1);			candidatePlayers[1] = &worldModel->getFullPlayer(TID_TEAMMATE, 3 - 1);		}		else if (targetPlayer.getUniNum() == 3)		{			candidatePlayers[0] = &worldModel->getFullPlayer(TID_TEAMMATE, 2 - 1);			candidatePlayers[1] = &worldModel->getFullPlayer(TID_TEAMMATE, 4 - 1);		}		break;	case 11:		if (targetPlayer.getUniNum() == 4)		{			candidatePlayers[0] = &worldModel->getFullPlayer(TID_TEAMMATE, 11 - 1);			candidatePlayers[1] = &worldModel->getFullPlayer(TID_TEAMMATE, 3 - 1);		}		break;	case 6:		if (targetPlayer.getUniNum() == 10)		{			candidatePlayers[0] = &worldModel->getFullPlayer(TID_TEAMMATE, 6 - 1);			candidatePlayers[1] = &worldModel->getFullPlayer(TID_TEAMMATE, 2 - 1);		}		break;	case 9:		if (targetPlayer.getUniNum() == 11)		{			candidatePlayers[0] = &worldModel->getFullPlayer(TID_TEAMMATE, 9 - 1);			candidatePlayers[1] = &worldModel->getFullPlayer(TID_TEAMMATE, 4 - 1);		}		break;	}	if (candidatePlayers[0] == NULL)		return;	form.headForm.tnMode = TNM_LOOK_NORMALLY_TO_BALL;	LOG << "\tTNM_LOOK_NORMALLY_TO_BALL" << endl;	if (worldModel->getBall().getDistance(targetPlayer) > 5)		return;	int counter = 0;	while (!(candidatePlayers[semiRandom] != NULL &&		!isSaid(*candidatePlayers[semiRandom]) &&		candidatePlayers[semiRandom]->isValid()))	{		semiRandom++;		if (semiRandom >= 3)			semiRandom = 0;		counter++;		if (counter == 10) // I have fallen in a loop			return;	}	starredPlayer = candidatePlayers[semiRandom];LOG << "\tstarredPlayer: " << starredPlayer->getUniNum() << endl;	sayings[0] = starredPlayer;	sayingsNum = 1;	anglesNum = 0;	int i;	for (i = 0; i < FULL_PLAYERS_NUM; i++)	{		if (worldModel->getFullPlayer(TID_OPPONENT, i).isValid() &&			!isSaid(worldModel->getFullPlayer(TID_OPPONENT, i)) &&			worldModel->getFullPlayer(TID_OPPONENT, i).getDistance(worldModel->getBall()) <				starredPlayer->getDistance(worldModel->getBall()) + 3 &&			worldModel->getFullPlayer(TID_OPPONENT, i).getDistance(worldModel->getBall()) < 28)		{			angPlayers[anglesNum] = &worldModel->getFullPlayer(TID_OPPONENT, i);			Vector passVec;			Vector enemyVec;			enemyVec.setByPoints(targetPlayer.getPos(), worldModel->getFullPlayer(TID_OPPONENT, i).getPos());			passVec.setByPoints(targetPlayer.getPos(), starredPlayer->getPos());			anglesList[anglesNum] = fabs(Degree::getDeltaAngle(					enemyVec.getDirection(), passVec.getDirection()));LOG << "\tangPlayer[" << anglesNum << "]: " << angPlayers[anglesNum]->getUniNum() << endl;LOG << "\tanglesList[" << anglesNum << "]: " << anglesList[anglesNum] << endl;			anglesNum++;		}	}	if (anglesNum != 0)	{		int miner = 0;		for (i = 1; i < anglesNum; i++)			if (anglesList[i] < anglesList[miner])				miner = i;		sayings[1] = angPlayers[miner];		sayingsNum = 2;LOG << "\tsayings[1]: " << sayings[1]->getUniNum() << endl;		if (anglesNum != 1)		{			anglesList[miner] = (float)0xFFFF; // putting this out			miner = 0;			for (i = 1; i < anglesNum; i++)				if (anglesList[i] < anglesList[miner])					miner = i;			sayings[2] = angPlayers[miner];			sayingsNum = 3;LOG << "\tsayings[2]: " << sayings[2]->getUniNum() << endl;		}	}	Ball ball(worldModel->getBall());	ball.simulateByDynamics(worldModel->getBody());	Player simPlayers[3];	for (int i = 0; i < sayingsNum; i++)	{		simPlayers[i] = *sayings[i];		simPlayers[i].simulateByDynamics(worldModel->getBody());	}	form.sayForm.radarSay = true;	form.sayForm.radarPlayersNum = sayingsNum;	for (int i = 0; i < sayingsNum; i++)	{		Vector vec;		vec.setByPoints(ball.getPos(), simPlayers[i].getPos());		form.sayForm.radarPlayers[i] = vec;		int id = simPlayers[i].getTeamId() * 11 +					simPlayers[i].getUniNum() - 1;		form.sayForm.ids[i] = id;	}}bool RadarSystem::isSaid(const Player &player){	for (int i = 0; i < saidsNum; i++)		if (&player == saids[i])			return true;	return false;}void RadarSystem::receiver(Form &form, const Library &library){	if (worldModel->isBallKickable() ||		(library.gwSelection == WOBS_INTERCEPT &&		 worldModel->getBall().getAbsVec().getMagnitude() < 5))	{	}	else		return;	switch (worldModel->getBody().getUniNum())	{		case 2: case 3:			form.sayForm.attentionNum = 10;			break;		case 4:			form.sayForm.attentionNum = 11;			break;		case 10:			form.sayForm.attentionNum = 6;			break;		case 11:			form.sayForm.attentionNum = 9;			break;	}	LOG << "RadarSystem::receiver setted" << endl;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲人成网站影音先锋播放| 黄色精品一二区| 日韩中文字幕av电影| 免费观看成人av| 粉嫩久久99精品久久久久久夜| 色呦呦网站一区| 6080日韩午夜伦伦午夜伦| www国产亚洲精品久久麻豆| 最近日韩中文字幕| 奇米一区二区三区av| 成人伦理片在线| 欧美精品一级二级三级| 国产欧美综合在线观看第十页| 一区二区三区在线免费| 蜜臀久久久99精品久久久久久| 丁香六月综合激情| 欧美美女bb生活片| 欧美激情一区二区三区| 亚洲高清视频的网址| 国产大陆精品国产| 欧美日韩精品一区二区三区四区| 久久久久国产免费免费| 一级特黄大欧美久久久| 国产麻豆一精品一av一免费| 在线视频亚洲一区| 久久免费视频色| 天天色图综合网| 不卡电影一区二区三区| 日韩欧美激情一区| 一区二区三区中文免费| 国产精品99久久久久久久女警| 欧美在线观看一二区| 国产欧美精品一区二区三区四区| 午夜视频在线观看一区二区| 丁香六月久久综合狠狠色| 欧美一级电影网站| 亚洲电影在线免费观看| 成av人片一区二区| 久久先锋影音av鲁色资源| 亚洲va天堂va国产va久| 91美女片黄在线观看| 久久久99精品免费观看| 免费看欧美女人艹b| 欧美丝袜丝nylons| 1000部国产精品成人观看| 国产一级精品在线| 成人免费在线观看入口| 国产一区二区三区在线看麻豆| 欧美日韩成人在线一区| 亚洲卡通欧美制服中文| 成人毛片视频在线观看| 久久久精品日韩欧美| 免费在线观看视频一区| 欧美日韩免费在线视频| 一区二区三区四区国产精品| 成人国产精品视频| 久久久久久电影| 久久精品国产第一区二区三区| 7777精品久久久大香线蕉 | 成人免费av在线| 久久网站热最新地址| 另类综合日韩欧美亚洲| 欧美一区二区性放荡片| 天天综合网天天综合色| 欧美日本国产视频| 日韩中文欧美在线| 制服.丝袜.亚洲.中文.综合| 首页亚洲欧美制服丝腿| 欧美喷水一区二区| 亚洲成人自拍一区| 欧美日韩成人高清| 日本三级韩国三级欧美三级| 91精品国产一区二区三区蜜臀| 午夜精品福利视频网站| 欧美狂野另类xxxxoooo| 日韩精品欧美成人高清一区二区| 欧美精品第一页| 麻豆精品国产传媒mv男同| 日韩精品一区二区在线| 精油按摩中文字幕久久| 久久久久久久免费视频了| 国产精品一区二区黑丝| 国产女人18毛片水真多成人如厕| 国产黄色成人av| 国产精品第五页| 日本韩国一区二区三区视频| 亚洲影视在线观看| 欧美视频自拍偷拍| 另类欧美日韩国产在线| 国产欧美日产一区| 91视频观看视频| 亚州成人在线电影| 日韩精品一区二区三区swag| 精品午夜一区二区三区在线观看 | 风流少妇一区二区| 亚洲欧洲日韩在线| 91久久久免费一区二区| 午夜精品福利久久久| 欧美xxxxx牲另类人与| 国产成人自拍网| 亚洲欧洲综合另类| 7777精品伊人久久久大香线蕉 | 久久综合九色综合久久久精品综合| 国产在线精品一区在线观看麻豆| 国产日产精品1区| 91丝袜美腿高跟国产极品老师 | 国产精品福利一区二区三区| 色婷婷综合久久久| 丝袜a∨在线一区二区三区不卡| 日韩限制级电影在线观看| 国产九色sp调教91| 亚洲免费观看高清完整| 制服丝袜激情欧洲亚洲| 国产精品一二三四五| 亚洲激情一二三区| 日韩免费看的电影| 成人免费看片app下载| 亚洲综合色婷婷| 日韩片之四级片| av激情亚洲男人天堂| 午夜精品福利视频网站| 国产日韩欧美a| 欧美日本在线播放| 成人午夜av电影| 日韩精品三区四区| 亚洲天堂福利av| 精品国产污污免费网站入口| 91污在线观看| 韩国v欧美v日本v亚洲v| 亚洲综合一区二区三区| 国产欧美日韩麻豆91| 日韩一区二区高清| 99精品国产视频| 国产一区二区在线电影| 亚洲愉拍自拍另类高清精品| 国产欧美精品一区| 日韩视频免费观看高清在线视频| 91丝袜国产在线播放| 国产精品乡下勾搭老头1| 日韩专区中文字幕一区二区| 中文字幕制服丝袜一区二区三区| 欧美一区二区黄| 欧美亚洲动漫另类| 成人黄动漫网站免费app| 久久99精品久久久久婷婷| 亚洲电影一级黄| 国产精品国产三级国产专播品爱网| 欧美大片拔萝卜| 欧美三日本三级三级在线播放| 成人激情动漫在线观看| 久久69国产一区二区蜜臀| 五月天婷婷综合| 亚洲精品国产精华液| 欧美激情一区二区三区| 日韩欧美激情一区| 51精品国自产在线| 日本电影亚洲天堂一区| 国产成人av影院| 国产一区三区三区| 久88久久88久久久| 免费精品视频在线| 日韩福利视频导航| 日韩精品午夜视频| 午夜精品久久久| 亚洲va国产天堂va久久en| 一区二区不卡在线播放| 亚洲色图制服丝袜| 一区免费观看视频| 中文字幕一区免费在线观看| 国产精品人妖ts系列视频| 久久精品网站免费观看| 久久综合色之久久综合| 日韩欧美三级在线| 精品美女一区二区| 精品久久久久久久久久久久久久久 | 欧美不卡一区二区| 欧美伦理视频网站| 制服丝袜成人动漫| 91精品国产福利在线观看 | 久久国产精品99久久人人澡| 日本不卡一二三| 免费看日韩精品| 久久99精品久久久久久| 国内成+人亚洲+欧美+综合在线 | 欧美国产乱子伦| 中文字幕的久久| 国产精品国产自产拍高清av王其| 国产精品国产三级国产a| 亚洲欧洲av在线| 亚洲猫色日本管| 亚洲成人高清在线| 日本中文在线一区| 美女性感视频久久| 国内精品自线一区二区三区视频| 国模套图日韩精品一区二区| 激情国产一区二区| 成人av免费在线观看| 91黄视频在线观看| 欧美日韩高清影院| 日韩女优视频免费观看|