亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
欧美少妇xxx| 91在线看国产| 91超碰这里只有精品国产| 亚洲一区二区三区小说| 在线亚洲一区二区| 亚洲综合丝袜美腿| 欧美日韩一区二区不卡| 人禽交欧美网站| 欧美一激情一区二区三区| 麻豆91精品91久久久的内涵| 精品乱码亚洲一区二区不卡| 久久99久久99精品免视看婷婷| 精品精品国产高清a毛片牛牛| 韩国精品一区二区| 国产精品不卡在线观看| 欧美最猛性xxxxx直播| 秋霞影院一区二区| 久久精品欧美一区二区三区不卡| 成人白浆超碰人人人人| 亚洲精品免费在线观看| 正在播放一区二区| 精彩视频一区二区三区| **性色生活片久久毛片| 欧美三级资源在线| 九一久久久久久| 1024成人网| 欧美一区二区精美| 国产乱码精品一区二区三区忘忧草 | 日韩欧美在线网站| 成人美女视频在线观看18| 亚洲一二三四区| 欧美成人vr18sexvr| 97se亚洲国产综合在线| 日韩高清不卡一区二区| 国产精品久久久久久亚洲毛片| 欧美三级资源在线| 国产a区久久久| 日日摸夜夜添夜夜添精品视频| 久久久午夜精品理论片中文字幕| 99国产精品国产精品久久| 男人的天堂亚洲一区| 国产一区二区三区在线观看精品 | 蜜桃久久av一区| 中文字幕在线视频一区| 欧美一区二区三区免费大片 | 午夜激情一区二区三区| 国产女同互慰高潮91漫画| 欧美视频一区二区三区四区| 国产suv精品一区二区883| 麻豆国产精品视频| 亚洲一二三区在线观看| 国产精品久久久久久妇女6080 | 亚洲视频一区二区在线观看| 精品国产免费一区二区三区四区| 91久久精品国产91性色tv| 国产成人精品免费| 麻豆精品蜜桃视频网站| 一区二区三区中文免费| 国产精品国产三级国产专播品爱网| 91麻豆精品国产无毒不卡在线观看| 成人av在线资源网站| 国产一区二区三区精品欧美日韩一区二区三区 | 一区二区在线免费| 国产亚洲欧美日韩在线一区| 日韩视频在线观看一区二区| 欧美在线免费播放| 不卡电影一区二区三区| 国产一区91精品张津瑜| 美日韩一区二区三区| 亚洲成人1区2区| 亚洲二区视频在线| 亚洲一区二区三区国产| 极品瑜伽女神91| 奇米色777欧美一区二区| 亚洲成a人片综合在线| 亚洲一区二区视频| 一区二区日韩av| 亚洲狠狠丁香婷婷综合久久久| 亚洲色图在线视频| 亚洲欧美二区三区| 日韩伦理av电影| 亚洲美女视频一区| 亚洲人成影院在线观看| 亚洲精品国产一区二区三区四区在线| 国产欧美日本一区二区三区| 欧美激情一区二区| 亚洲国产成人一区二区三区| 欧美经典三级视频一区二区三区| 久久久久97国产精华液好用吗| 国产亚洲欧美中文| 中文字幕一区二区三区四区 | 亚洲欧美国产高清| 亚洲激情图片小说视频| 亚洲成人在线观看视频| 免费观看一级特黄欧美大片| 激情欧美一区二区三区在线观看| 狠狠色狠狠色综合| www.欧美日韩| 欧美丝袜自拍制服另类| 日韩午夜在线播放| 久久久久久久久久久久久女国产乱 | 在线观看91精品国产麻豆| 制服丝袜日韩国产| 欧美一区二区三区的| 久久亚洲捆绑美女| 亚洲色图色小说| 亚洲成av人综合在线观看| 久久国产生活片100| 大陆成人av片| 欧美午夜在线一二页| 精品国产一区二区三区忘忧草| 欧美国产日产图区| 一区二区三区免费网站| 另类中文字幕网| 99久久精品免费精品国产| 欧美日韩国产综合久久| 日韩女优电影在线观看| 国产精品久久久久久亚洲伦| 日本强好片久久久久久aaa| 国产麻豆视频精品| 在线中文字幕不卡| 久久天堂av综合合色蜜桃网| 亚洲精品成人a在线观看| 麻豆精品精品国产自在97香蕉| 9色porny自拍视频一区二区| 欧美日韩国产欧美日美国产精品| 久久综合99re88久久爱| 亚洲自拍偷拍麻豆| 懂色av一区二区三区免费看| 在线观看亚洲精品| 久久精品一区二区三区不卡| 午夜精品福利一区二区三区av | 亚洲国产欧美日韩另类综合| 欧美日韩在线免费视频| 久久久精品黄色| 丝瓜av网站精品一区二区| 成人不卡免费av| 久久嫩草精品久久久精品一| 亚洲一区二区三区四区中文字幕| 国产成人av电影在线播放| 日韩一级视频免费观看在线| 一区二区三区在线观看欧美 | 免费的成人av| 一本大道久久a久久精二百| 久久久久久久久久久久久夜| 午夜精品福利在线| 在线精品观看国产| 中文字幕综合网| 成人性视频免费网站| 欧美精品一区二区三区一线天视频| 亚洲高清免费一级二级三级| 成人av影院在线| 国产欧美一区二区精品仙草咪| 麻豆国产精品777777在线| 欧美日韩国产电影| 夜夜夜精品看看| 91色乱码一区二区三区| 国产精品视频你懂的| 国产精品正在播放| 精品久久久三级丝袜| 久久激情五月婷婷| 91精品在线免费观看| 亚洲午夜久久久久久久久久久| 一本到高清视频免费精品| 国产精品国产馆在线真实露脸 | av亚洲精华国产精华| 国产欧美一区二区在线| 国产成人99久久亚洲综合精品| 久久综合久久久久88| 极品尤物av久久免费看| 精品国产伦一区二区三区观看体验| 无码av免费一区二区三区试看| 欧洲亚洲国产日韩| 亚洲成人黄色影院| 欧美日本一区二区| 日本大胆欧美人术艺术动态| 日韩欧美不卡一区| 狠狠狠色丁香婷婷综合久久五月| 日韩精品自拍偷拍| 国产剧情一区二区| 国产精品拍天天在线| 91婷婷韩国欧美一区二区| 亚洲精品少妇30p| 欧美色图在线观看| 日本美女视频一区二区| 久久久久一区二区三区四区| 不卡免费追剧大全电视剧网站| 亚洲色图都市小说| 欧美性一区二区| 美美哒免费高清在线观看视频一区二区| 日韩精品影音先锋| 国产成人日日夜夜| 亚洲免费在线看| 欧美一区二区三区视频| 国产乱一区二区| 日韩理论电影院| 欧美一区二区三区四区五区| 国产91精品精华液一区二区三区| 亚洲欧美国产三级| 91精品久久久久久久久99蜜臂|