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

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

?? crossposplan.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: Darioush Jalali, Sassan Haradji * *  Released on Monday 1 August 2005, 10 Mordad 1384 by Mersad RoboCup Team. *  For more information please read README file.*/#include <AdvancedAgent.h>#include <Logger.h>#include <Basics.h>#include <InterceptCalculate.h>#include <cmath>#include <CrossPosPlan.h>#include <Line.h>#include <map>#include <algorithm>#include <Degree.h>#include <Types.h>#include <sstream>#include <cassert>using namespace std;using namespace Basics;using namespace Degree;CrossPosPlan::CrossPosPlan(const WorldModel *wm, Form &form,		const Library &library, Side side):		Plan("CrossPos", wm, form, library), side(side), updatedRoles(0)    {    config.add("CrossPos");    config["CrossPos"].setByFile("./Configs/CrossPos.conf");    LOG << "Loading cross positioning factors from conf..." << endl;}CrossPosPlan::~CrossPosPlan(){}void CrossPosPlan::decide(){	LOG << "CrossPosPlan::decide" << endl;	updatedRoles++;	if (wm->isBallKickable())	{		updateRoles();	}	else	{    try {        updateRoles();        if (myRole == Invalid) {            LOG << "namanaDERROR!" << endl;            assert (0);        }        Vector corrVec = 	preserveShapeUpdate(myRole);        throw (corrVec + wm->getBody().getPos()).asPoint();    }    catch (Point point)    {        LOG << "sending command..." << endl;        Command *command = library.positioning.getPositioningCommand(point);        command->setCreator(AT_OFFENSE);        throw command;    }	}	LOG << "CrossPosPlan Now Kill Program" << endl;	assert(0);}double CrossPosPlan::successRate(){    return 1.0;}bool CrossPosPlan::isFinished(){  if (!isInPlayers(wm->getBody().getUniNum(), "234AB"))    return true;    if(!wm->isBallKickable() &&       library.gwSelection == WOBS_OFFENSE &&       abs(wm->getBall().getPos().getY()) > 16)        return false;    return true;}void CrossPosPlan::updateRoles(){	RoleType tmpType;	if (updatedRoles > 10) updatedRoles = 0;	string hearString = wm->getHearedPlanInfo();	if (wm->getBody().getUniNum() == wm->getNearestTmmToBall().getUniNum())	{		form.sayForm.planSay = true;		form.sayForm.planHeader = "X";		form.sayForm.planInfo = "C";	}	if (wm->getBody().getUniNum() == wm->getNearestTmmToBall().getUniNum() ||			hearString.substr(0, 2) != "XC")	{		if (updatedRoles > 3)		{			for (unsigned i = 0; i < ROLE_NUM; ++i)				form.sayForm.planInfo += uniNumToChar(roles[RoleType(i)]->getUniNum());			for (unsigned i = 0 ; i < ROLE_NUM; ++i)				if (roles.find(RoleType(i)) != roles.end())					if (roles[RoleType(i)])					{						tmpType = RoleType(i);						LOG << tmpType << " : " << uniNumToChar(roles[RoleType(i)]->getUniNum())								<< endl;					}			return;		}		string playerLists[2][5];		playerLists[0][0] = "A234B";		playerLists[1][0] = "B432A";		playerLists[0][1] = "2A34B";		playerLists[1][1] = "4B32A";		playerLists[0][2] = "B234A";		playerLists[1][2] = "A432B";		playerLists[0][3] = "3B24A";		playerLists[1][3] = "3A42B";		playerLists[0][4] = "4B32A";		playerLists[1][4] = "2A34B";		roles.clear();		string busyPlayers = "156789";		const	Player* tmpPlayer = NULL;		tmpPlayer = wm->getNearestTmmToPointFromList(wm->getBall().getPos(),			"123456789AB", busyPlayers + "3");		if (tmpPlayer || !roles[Crosser]->isValid())			roles[Crosser] = tmpPlayer;		else if (!roles[Crosser])			roles[Crosser] = &wm->getFullPlayer(TID_TEAMMATE, firstPlayerInList(					playerLists[side][0], busyPlayers) - 1);		if (roles[Crosser]){			busyPlayers += uniNumToChar(roles[Crosser]->getUniNum());			form.sayForm.planInfo += uniNumToChar(roles[Crosser]->getUniNum());		}		float minDistance = 1000;		float tmpDistance = 0;		const Player* bestPlayer = NULL;		float oval_a = .6, oval_b = .45;		for (unsigned i = 0; i < FULL_PLAYERS_NUM; i++)			if (wm->getFullPlayer(TID_TEAMMATE, i).isValid() &&	  		!isInPlayers(wm->getFullPlayer(TID_TEAMMATE, i).getUniNum(),						busyPlayers.c_str()))				{					float tmmPlayerX = wm->getFullPlayer(TID_TEAMMATE, i).getPos().getX() -							roles[Crosser]->getPos().getX();					float tmmPlayerY = wm->getFullPlayer(TID_TEAMMATE, i).getPos().getY() -							roles[Crosser]->getPos().getY();					if (side == SI_LEFT)						tmmPlayerY = -tmmPlayerY;					tmpDistance = abs(2 * oval_a *							tmmPlayerX * tmmPlayerY *	sqrt(abs(							1 / (oval_a * tmmPlayerY) + 1 / (oval_b * tmmPlayerX))));					if (tmpDistance < minDistance)					{						minDistance = tmpDistance;						bestPlayer = &wm->getFullPlayer(TID_TEAMMATE, i);					}				}		if (bestPlayer)			roles[CrosserFriend] = bestPlayer;		else if (!roles[CrosserFriend])			roles[CrosserFriend] = &wm->getFullPlayer(TID_TEAMMATE, firstPlayerInList(					playerLists[side][1], busyPlayers) - 1);		if (roles[CrosserFriend])		{			busyPlayers += uniNumToChar(roles[CrosserFriend]->getUniNum());			form.sayForm.planInfo += uniNumToChar(roles[CrosserFriend]->getUniNum());		}				float ballImportance =				config["CrossPos"]["HomePos"]["BallImportance"].asFloat();		for (unsigned i = 2; i < ROLE_NUM; ++i)		{			if (!roles[RoleType(i)])			{				roles[RoleType(i)] =						wm->getNearestTmmToPointFromList((wm->getBall().getPos() /						ballImportance) +						Vector(Point(config["CrossPos"]["HomePos"]["RFX"][i].asFloat(),						((side == SI_LEFT) * 2 - 1) *						config["CrossPos"]["HomePos"]["RFY"][i].asFloat())) /						(1.0 + 1.0 / ballImportance), "123456789AB", busyPlayers);			}			if (!roles[RoleType(i)])				roles[RoleType(i)] = &wm->getFullPlayer(TID_TEAMMATE, firstPlayerInList(						playerLists[side][i], busyPlayers) - 1);			if (roles[RoleType(i)])			{				busyPlayers += uniNumToChar(roles[RoleType(i)]->getUniNum());				form.sayForm.planInfo = uniNumToChar(roles[RoleType(i)]->getUniNum());			}		}	}	else	{		/*if (hearString.substr(0, 2) != "XC")		{			hearString = "XC";			if (side == SI_LEFT &&					wm->getNearestTmmToPointFromList(wm->getBall().getPos(), "2A"))			{				hearString += uniNumToChar(wm->getNearestTmmToPointFromList(						wm->getBall().getPos(), "2A")->getUniNum());				hearString += uniNumToChar(-(wm->getNearestTmmToPointFromList(						wm->getBall().getPos(), "2A")->getUniNum() - 6) + 6);				hearString += "B34";			}			else if (side == SI_RIGHT &&					wm->getNearestTmmToPointFromList(wm->getBall().getPos(), "4B"))			{				hearString += uniNumToChar(wm->getNearestTmmToPointFromList(						wm->getBall().getPos(), "4B")->getUniNum());				hearString += uniNumToChar(-(wm->getNearestTmmToPointFromList(						wm->getBall().getPos(), "4B")->getUniNum() - 7) + 8);				hearString += "A32";			}			else if (side == SI_LEFT &&					!wm->getNearestTmmToPointFromList(wm->getBall().getPos(), "2A"))				hearString += "2AB34";			else if (side == SI_RIGHT &&					!wm->getNearestTmmToPointFromList(wm->getBall().getPos(), "4B"))				hearString += "4BA32";		}*/		if (hearString.substr(0, 2) == "XC")		{			if (wm->getFullPlayer(TID_TEAMMATE,					charToUniNum(hearString[2]) - 1).isValid())				roles[Crosser] = &wm->getFullPlayer(TID_TEAMMATE, 						charToUniNum(hearString[2]) - 1);			if (wm->getFullPlayer(TID_TEAMMATE,					charToUniNum(hearString[3]) - 1).isValid())				roles[CrosserFriend] = &wm->getFullPlayer(TID_TEAMMATE, 						charToUniNum(hearString[3]) - 1);			if (wm->getFullPlayer(TID_TEAMMATE,					charToUniNum(hearString[4]) - 1).isValid())				roles[Supporter] = &wm->getFullPlayer(TID_TEAMMATE, 						charToUniNum(hearString[4]) - 1);	 		if (wm->getFullPlayer(TID_TEAMMATE,					charToUniNum(hearString[5]) - 1).isValid())				roles[Insider] = &wm->getFullPlayer(TID_TEAMMATE, 						charToUniNum(hearString[5]) - 1);			if (wm->getFullPlayer(TID_TEAMMATE,					charToUniNum(hearString[6]) - 1).isValid())				roles[Outsider] = &wm->getFullPlayer(TID_TEAMMATE, 						charToUniNum(hearString[6]) - 1);		}	}	myRole = Invalid;	for (unsigned i = 0 ; i < ROLE_NUM; ++i)	{		if (roles.find(RoleType(i)) != roles.end())			if (roles[RoleType(i)])				if (roles[RoleType(i)]->getUniNum() == wm->getBody().getUniNum())					myRole = RoleType(i);		if (roles.find(RoleType(i)) != roles.end())			if (roles[RoleType(i)])			{				tmpType = RoleType(i);				LOG << tmpType << " : " << uniNumToChar(roles[RoleType(i)]->getUniNum())						<< endl;			}	}}const Vector CrossPosPlan::preserveShapeUpdate(RoleType role) {    ostringstream ss;    ss << "RF" << (int)role;    Vector totalCorrectionVector;    for (unsigned i = 0 ; i < ROLE_NUM + 1; ++i){        Vector requiredPos;				if (RoleType(i) == ConstantPoint) {					requiredPos.setAsCartesian(0,0);				} 				else {	        if (side == SI_LEFT) {  	          requiredPos.setAsCartesian(    	            config["CrossPos"]["RelativePos"][ss.str()+"X"][i].asFloat(),    		        	config["CrossPos"]["RelativePos"][ss.str()+"Y"][i].asFloat());	        } else {	            requiredPos.setAsCartesian(  	              config["CrossPos"]["RelativePos"][ss.str()+"X"][i].asFloat(),    			        -config["CrossPos"]["RelativePos"][ss.str()+"Y"][i].asFloat());	        }				}        Vector currentPos;        if (roles.find(RoleType(i)) != roles.end()) {            if (roles[RoleType(i)]) {							if(RoleType(i) == ConstantPoint) {											Point constPoint;				        if (side == SI_LEFT) {  	  			        constPoint. x =    	      			      config["CrossPos"]["RelativePos"][ss.str()+"X"][i].asFloat();										constPoint.y =												    		        				config["CrossPos"]["RelativePos"][ss.str()+"Y"][i].asFloat();				        } else {										constPoint.x =   	        			      config["CrossPos"]["RelativePos"][ss.str()+"X"][i].asFloat();										constPoint.y =    			        			-config["CrossPos"]["RelativePos"][ss.str()+"Y"][i].asFloat();				        }								currentPos.setByPoints(constPoint, wm->getBody().getPos());								}							else {                currentPos.setByPoints(roles[RoleType(i)]->getPos(),                                       wm->getBody().getPos());							}  	      	float extraLength = abs(requiredPos.getMagnitude() - currentPos.getMagnitude());                float extraAngle  = abs(requiredPos.getDirection() - currentPos.getDirection());                LOG << "extra: (R,theta) (" << extraLength << ", "<<                    extraAngle << ')' << endl;                Vector correctionVector = requiredPos - currentPos;                correctionVector.normalize();      	  	float correctionFactor =                    extraLength * config["CrossPos"]["RelativePos"][ss.str()+"kLength"][i].asFloat() +                    extraAngle  * config["CrossPos"]["RelativePos"][ss.str()+"kAngle"][i].asFloat();                correctionVector *= correctionFactor;                totalCorrectionVector += correctionVector;            } else {                LOG << "Warning.... Cannot find role num " <<  i << endl;            }        }        else {            LOG << "Warning... Cannot find in map:" << i << endl;        }            }    LOG << "..... Final Log for totalCorrectionVector..." << totalCorrectionVector        << endl;		DRAW << "DRAW LINE " << 50+wm->getBody().getUniNum() << ' ' << wm->getBody().getPos().getX() << ' ' << wm->getBody().getPos().getY()					<< " 0 0" << endl;		DRAW << "END OF DRXING" << endl;    return totalCorrectionVector;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲永久精品大片| 综合av第一页| 欧美卡1卡2卡| 欧美日韩另类一区| 欧美老年两性高潮| 337p亚洲精品色噜噜| 91精品国产免费久久综合| 精品少妇一区二区三区日产乱码| 欧美一区二区女人| 精品国产一区二区三区四区四 | 亚洲aaa精品| 午夜私人影院久久久久| 日韩高清国产一区在线| 精品一区二区精品| 国产精品亚洲人在线观看| a美女胸又www黄视频久久| 色综合一区二区| 欧美日韩精品欧美日韩精品一综合| 欧美日韩一区国产| 欧美一级高清片| 中文字幕一区免费在线观看 | 日韩免费看的电影| 国产亚洲欧美在线| 亚洲va欧美va国产va天堂影院| 免费观看在线综合| 91亚洲精品乱码久久久久久蜜桃| 色综合色狠狠综合色| 555www色欧美视频| 国产精品国产自产拍高清av王其 | 国产精品素人视频| 午夜国产精品一区| 国产成人午夜精品5599 | 日韩欧美中文一区二区| 国产欧美视频在线观看| 亚洲激情综合网| 韩国欧美国产一区| 欧美日韩免费电影| 国产精品久99| 国产一区二区三区电影在线观看 | 亚洲影视在线播放| 国产真实精品久久二三区| 欧日韩精品视频| 国产三级精品视频| 美女免费视频一区| 欧洲国产伦久久久久久久| 欧美国产日本视频| 美日韩一级片在线观看| 91福利在线播放| 中文字幕精品—区二区四季| 久久爱另类一区二区小说| 色视频一区二区| 国产精品女同互慰在线看| 捆绑紧缚一区二区三区视频| 欧美系列日韩一区| 一区二区三区**美女毛片| 国产成人aaa| 国产亚洲精品bt天堂精选| 蜜桃视频第一区免费观看| 欧美日韩久久一区二区| 综合色中文字幕| 国产v日产∨综合v精品视频| 精品国产乱码久久久久久久| 午夜久久电影网| 欧美精选午夜久久久乱码6080| 136国产福利精品导航| 成人精品高清在线| 久久精品视频免费| 国产精品原创巨作av| 久久综合99re88久久爱| 国产精品中文字幕一区二区三区| 精品欧美一区二区久久| 久久66热偷产精品| 久久综合久久99| 国产suv精品一区二区883| 国产精品免费av| 99久久精品免费看国产免费软件| 无码av中文一区二区三区桃花岛| 在线日韩av片| 亚洲一区二区三区美女| 欧美美女bb生活片| 蜜桃av噜噜一区二区三区小说| 欧美成人video| 国产成人精品午夜视频免费| 中文字幕国产一区| 91丨porny丨中文| 亚洲一区免费观看| 日韩视频一区二区三区 | 亚洲精品视频免费看| 91成人网在线| 日欧美一区二区| 日韩精品中文字幕一区二区三区| 国产精品一区二区三区四区| 欧美激情一区二区三区不卡| 色悠悠久久综合| 免费欧美日韩国产三级电影| 国产欧美一区二区三区网站| 99久免费精品视频在线观看| 亚洲国产人成综合网站| 精品国产乱码久久久久久久久| 成人免费视频免费观看| 亚洲一区二区黄色| 欧美精品一区二区三区高清aⅴ| 北条麻妃一区二区三区| 亚洲bt欧美bt精品| 国产欧美久久久精品影院| 色婷婷av一区| 国内外成人在线视频| 亚洲精品亚洲人成人网| 欧美成人aa大片| 欧美怡红院视频| 粉嫩高潮美女一区二区三区| 亚洲一线二线三线久久久| 精品国产伦一区二区三区免费| 色呦呦网站一区| 国产河南妇女毛片精品久久久| 亚洲成人福利片| 国产精品欧美久久久久无广告| 91麻豆精品国产91久久久资源速度 | 日韩av午夜在线观看| 国产精品视频麻豆| 日韩精品一区二区三区中文不卡| 91麻豆免费观看| 国产美女精品人人做人人爽| 五月激情六月综合| 夜夜精品浪潮av一区二区三区 | 91在线你懂得| 久久99精品久久久| 午夜电影一区二区| 亚洲精品高清在线| 国产精品乱码久久久久久| 久久这里只精品最新地址| 欧美精品视频www在线观看| 91蜜桃网址入口| 成人av高清在线| 国产成人免费9x9x人网站视频| 日本成人在线看| 五月天丁香久久| 亚洲一区在线免费观看| 亚洲欧美日韩系列| 亚洲免费三区一区二区| 国产精品美女久久久久久久久久久| 久久人人超碰精品| 久久天天做天天爱综合色| 日韩色在线观看| 日韩一二在线观看| 精品国产乱码久久久久久图片 | 亚洲欧洲性图库| 国产精品每日更新| 国产精品系列在线| 中文字幕亚洲视频| 一区二区三区鲁丝不卡| 亚洲国产精品久久久男人的天堂| 亚洲精品欧美在线| 午夜久久福利影院| 免费成人av资源网| 国产一区日韩二区欧美三区| 国产成人午夜99999| 成人永久免费视频| 99视频精品全部免费在线| 在线观看视频欧美| 91精品国产91综合久久蜜臀| 日韩亚洲欧美高清| 久久久久久久久蜜桃| 国产精品毛片大码女人| 亚洲免费在线观看视频| 日韩国产欧美三级| 国产精品一区二区在线播放| 不卡的av在线播放| 欧美三级视频在线播放| 日韩一级黄色片| 国产精品美女久久福利网站| 一区二区在线观看视频| 午夜亚洲国产au精品一区二区| 久久国产人妖系列| av一区二区三区| 欧美日韩一区二区三区高清| 久久色.com| 一区二区在线看| 国产在线一区观看| 欧美亚洲高清一区| 精品少妇一区二区三区免费观看| 国产精品久久久久三级| 奇米精品一区二区三区在线观看 | 国产精品白丝在线| 婷婷综合另类小说色区| 懂色av一区二区在线播放| 欧美在线一二三四区| 2020国产精品| 亚洲高清一区二区三区| 国产成人综合亚洲91猫咪| 欧美老女人第四色| 中文字幕综合网| 国产一区二区中文字幕| 欧美精品视频www在线观看| 国产精品久久毛片av大全日韩| 日本三级韩国三级欧美三级| 97se狠狠狠综合亚洲狠狠| 日韩午夜激情av| 亚洲精选一二三| 国产91丝袜在线18|