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

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

?? block.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: Meisam Vosoughpour * *  Released on Monday 1 August 2005, 10 Mordad 1384 by Mersad RoboCup Team. *  For more information please read README file.*/#include <cmath>#include <Block.h>#include <cassert>#include <Degree.h>#include <BasicDash.h>#include <Logger.h>#include <AdvancedAgent.h>using namespace std;float Block::getValue(const Library &library){	LOG << "Block::getValue" << endl;	float minTurnAngle = 20;	if (!worldModel->getCurInterCalculate().existFastestPlayer())	{		LOG << "BLOCK AD_MIN_VALUE 1" << endl;		return AD_MIN_VALUE;	}	blockCommand = NULL;	float oppDribbleFixedVel = 1;		Vector oppDribbleVector, opptoMeVector, blockAbsVector, 			ballVelVector, blockPointToMeVector;	Point oppDribblePoint = Point(-52.5, 0);		if (worldModel->getBall().getPos().getX() > -30)	{		oppDribbleFixedVel = .85;		oppDribblePoint.y = worldModel->getBall().getPos().getY();	}	else		oppDribbleFixedVel = 1.1;				oppDribbleVector.setByPoints(worldModel->getBall().getPos(), 			oppDribblePoint);	ballVelVector.setAsPolar(oppDribbleFixedVel, 						oppDribbleVector.getDirection());		opptoMeVector.setByPoints(worldModel->getBall().getPos(), 			worldModel->getBody().getPos());	blockInterCalc.startSession(0, NULL, 			&worldModel->getCurInterCalculate().getFastestPlayer());//	blockInterCalc.setLogging(true);//	if (worldModel->getBallStatus() == BS_KICKABLE_OPP)//	{	if (worldModel->getBall().getPos().getX() > -35)	{		blockInterCalc.setTmmSeeBallDelay(3);		blockInterCalc.setTmmSlowDashPower(15);		blockInterCalc.setTmmDirectDashPower(15);	}	else	{		blockInterCalc.setTmmSeeBallDelay(2);		blockInterCalc.setTmmSlowDashPower(20);		blockInterCalc.setTmmDirectDashPower(20);	}//	}	blockInterCalc.addPlayer(worldModel->getBody());	blockInterCalc.addPlayer(worldModel->getCurInterCalculate().			getFastestPlayer(), false, true);	Ball blockBall(worldModel->getBall());//	if (worldModel->getBallStatus() == BS_KICKABLE_OPP)//			blockBall.setPos() = worldModel->getCurInterCalculate().//											getFastestPlayer().getPos();				blockInterCalc.setVirtualBall(blockBall);						blockInterCalc.setBlockedBallVel(ballVelVector);			blockInterCalc.run();	 	while (!blockInterCalc.existFastestPlayer() && 				ballVelVector.getMagnitude() >= 0)	{		ballVelVector.setAsPolar(ballVelVector.getMagnitude() - .05, 								ballVelVector.getDirection());			//	blockInterCalc.setLogging(true);		if (worldModel->getBallStatus() == BS_KICKABLE_OPP &&			worldModel->getBall().getPos().getX() > -36)		{			blockInterCalc.setTmmSeeBallDelay(2);			blockInterCalc.setTmmSlowDashPower(20);			blockInterCalc.setTmmDirectDashPower(20);		}		blockInterCalc.setVirtualBall(worldModel->getBall());				blockInterCalc.setBlockedBallVel(ballVelVector);				blockInterCalc.run();	} 		if (!blockInterCalc.existFastestPlayer())	{		blockCommand = NULL;		LOG << "BLOCK RETURN AD_MIN_VALUE 2 " << endl;		return AD_MIN_VALUE;	} 		blockPoint = blockInterCalc.getFastestInterPlayer().getInterPoint();		blockPointToMeVector.setByPoints(blockPoint, 				worldModel->getBody().getPos());		blockAbsVector.setAsPolar(blockPointToMeVector.getMagnitude(), 				Degree::getDeltaAngle(oppDribbleVector.getDirection(), 				blockPointToMeVector.getDirection()));	float maxBasicDist = 1.5 + blockPointToMeVector.getMagnitude() / 5.00;	LOG << "worldModel->getCurInterCalculate().getFastestPlayer().getPos() : "		<< worldModel->getCurInterCalculate().getFastestPlayer().getPos() << endl;			LOG << "maxBasicDist : " << maxBasicDist << endl;	Vector changedBlockVector;	Point changedBlockPoint;	changedBlockVector.setAsPolar(10, oppDribbleVector.getDirection());	changedBlockPoint.x = worldModel->getBody().getPos().getX() + changedBlockVector.getX();	changedBlockPoint.y = worldModel->getBody().getPos().getY() + changedBlockVector.getY();	LOG << "blockPoint : " << blockPoint << endl;	LOG << "changedBlockPoint : " << changedBlockPoint << endl;////////////////////////////////////	if (worldModel->getBody().getPostNum() <= 5)	{		if (blockPoint.x >= 0)			blockPoint.x = 0;	}////////////////THISO/*	if ((worldModel->getBody().getPostNum() <= 5 || 		worldModel->getBody().getPostNum() == 8) && 		worldModel->getBall().getPos().getX() > -34 &&		worldModel->getBall().getPos().getX() < 0)	{		float unitStep = 6.5;		float deffStep = ((int)(worldModel->getBall().getPos().getX() / 					unitStep) - 1) * unitStep;		if (blockPoint.x > deffStep)			blockPoint.x = deffStep;	}*/////////////////THISO	if ((worldModel->getBody().getPostNum() <= 5 || 		worldModel->getBody().getPostNum() == 8) &&		worldModel->getCurInterCalculate().existFastestPlayer())	{//		float outsideMaxDelY;//		float insideMaxDelY;//		float bodyDeltaX = worldModel->getBody().getPos().getX() - blockPoint.x;//		float bodyDeltaY = worldModel->getBody().getPos().getY() - blockPoint.y;		Point localHomePoint = library.positioning.getHomePoint(worldModel->getBody().getUniNum());		float deltaX = library.positioning.getHomePoint(				worldModel->getBody().getUniNum()).x - blockPoint.x;			float deltaY = library.positioning.getHomePoint(				worldModel->getBody().getUniNum()).y - blockPoint.y;		float deltaBodyX = worldModel->getBody().getPos().getX() - blockPoint.x;		float deltaBodyY = worldModel->getBody().getPos().getY() - blockPoint.y;					LOG << "MEISAM 2005 KHOONE : blockPoint , homePoint : " << blockPoint << 					" " <<  library.positioning.getHomePoint(				worldModel->getBody().getUniNum()) << endl;								float xDist34 = -4.5;		float xBodyDist34 = -3.5;				if (worldModel->getBall().getPos().getX() > -30)		{			if (library.lastBodyCycleCommand->getCreator() == AT_BLOCK)				xDist34 = -4.5;		}		if (worldModel->getBall().getPos().getX() < -30)		{			xDist34 = -2.5;					if (library.lastBodyCycleCommand->getCreator() == AT_BLOCK)				xDist34 = -3.5;		}		float xDist25 = -4.8;		if (worldModel->getBall().getPos().getX() > -30)		{			if (library.lastBodyCycleCommand->getCreator() == AT_BLOCK)				xDist25 = -11;		}		if (worldModel->getBall().getPos().getX() < -30)		{			xDist25 = -2.5;					if (library.lastBodyCycleCommand->getCreator() == AT_BLOCK)				xDist25 = -4;		}		if (worldModel->getBody().getStamina() < 2000)			xDist25 = -2;		if (worldModel->getBody().getStamina() < 1700)			xDist25 = -1;				float bigDelY34, smallDelY34;				if (worldModel->getBody().getPos().getX() > blockPoint.x)		{			if (blockPoint.x > -3)			{				bigDelY34 = 6;				smallDelY34 = 4;			}			else			{				bigDelY34 = 6;				smallDelY34 = 6;			}		}		else		{			if (blockPoint.x > -3)			{				bigDelY34 = 6;				smallDelY34 = 4;			}			else			{				bigDelY34 = 6;				smallDelY34 = 6;			}		}				LOG << "library.lastBodyCycleCommand->getCreator() : " <<				library.lastBodyCycleCommand->getCreator() << endl;		LOG << "AT_BLOCK = " << AT_BLOCK << endl;		if (library.lastBodyCycleCommand->getCreator() == AT_BLOCK)		{			bigDelY34 *= 1.2;			smallDelY34 *= 1.2;		}				LOG << "MEISAM : BLOCK : deltaX , deltaY : " << deltaX << " " << 				deltaY << endl;		LOG << "MEISAM2005 : BLOCK : deltaBodyX , deltaBodyY : " << deltaBodyX << " " << 				deltaBodyY << endl;		LOG << "MEISAM : BLOCK : localHomePoint : " <<  localHomePoint << endl;		float smallVeto2 = 5, bigVeto2 = 8, alowedDelBodyX = 3;			if (library.lastBodyCycleCommand->getCreator() == AT_BLOCK)		{			smallVeto2 = 7;			bigVeto2 = 10;			alowedDelBodyX = 4.5;		}				switch (worldModel->getBody().getPostNum())		{			case 2:				if (deltaY < -5 || (deltaX < xDist25 && blockPoint.x > 						worldModel->getBody().getPos().getX()))					return AD_MIN_VALUE;				break;			case 5:				if (deltaY > 5 || (deltaX < xDist25 && blockPoint.x > 						worldModel->getBody().getPos().getX()))					return AD_MIN_VALUE;				break;						case 3:			case 4:				if (!(((fabs(deltaY) < bigDelY34 && fabs(worldModel->getBall().getPos().getY()) < 					fabs(localHomePoint.y)) || 					(fabs(deltaY) < smallDelY34 && fabs(worldModel->getBall().getPos().getY()) > 					fabs(localHomePoint.y))) && 					((deltaX > xDist34 || (deltaX * .5 > xDist34 && deltaBodyX > xBodyDist34)) || 						blockPoint.x < worldModel->getBody().getPos().getX())))				{					LOG << "VETO VETO Block 1 " << endl;					return AD_MIN_VALUE;				}				else if (((worldModel->getBody().getPos().getX() - 						worldModel->getBall().getPos().getX()) < -smallVeto2 && 						deltaBodyX < -alowedDelBodyX) || 						(worldModel->getBody().getPos().getX() - 						worldModel->getBall().getPos().getX()) < -bigVeto2)				{					LOG << "VETO VETO Block 2 " << endl;					return AD_MIN_VALUE;				}									break;			case 8:				if (worldModel->getBall().getPos().getX() > 5)				{					if (!(fabs(deltaY) <= 4 &&						(fabs(deltaX) <= 2 || 						blockPoint.x <= worldModel->getBody().getPos().getX())))// || deltaX < -4.5)						return AD_MIN_VALUE;					break;				}				else if (worldModel->getBall().getPos().getX() > -30)				{					LOG << "SALAM Block 1 : Dx,Dy" << deltaX << " " << deltaY << endl;//					if (!((fabs(deltaY) <= 4 &&						(fabs(deltaX) <= 4 || 						blockPoint.x <= worldModel->getBody().getPos().getX()))						|| (fabs(deltaY) <= 4 &&						(deltaX <= 0 || 						blockPoint.x <= worldModel->getBody().getPos().getX()))))// || deltaX < -4.5)						return AD_MIN_VALUE;										break;//				}				else				{					if (!(fabs(deltaY) <= 4 && 						(fabs(deltaX) <= 4 || 						blockPoint.x <= worldModel->getBody().getPos().getX())))// || deltaX < -4.5)						return AD_MIN_VALUE;					break;				}				break;		}	}////////////////////////////////////	if (worldModel->getBody().getPostNum() == 6 ||		worldModel->getBody().getPostNum() == 7)		if (blockPoint.x < worldModel->getTmmOffsideLine() &&			worldModel->getBody().getPos().getX() != 			worldModel->getTmmOffsideLine())		{			LOG << "AKHARIN TOF" << endl;			blockPoint.x = worldModel->getTmmOffsideLine();//			return AD_MIN_VALUE;		}				LOG << "BLOCK fabs(blockAbsVector.getDirection() ( > 110) : " << 			fabs(blockAbsVector.getDirection()) << endl;	LOG << "BLOCK fabs(blockAbsVector.getY()) : ( < 8 )" <<			fabs(blockAbsVector.getY()) << endl; 	float maxYBlockDist = 5;		maxYBlockDist += (fabs(blockAbsVector.getDirection()) - 130) / 25.00;	maxYBlockDist = min(maxYBlockDist, float(10));		if (fabs(blockAbsVector.getDirection()) > 155 && 		fabs(blockAbsVector.getY()) < maxYBlockDist && 			worldModel->getBall().getPos().getX() > -35)	{//		blockPoint = changedBlockPoint;//		minTurnAngle = 16;		//		LOG << "blockPoint changed to changedBlockPoint ;)" << endl;	}	float distToBlockPoint = blockPointToMeVector.getMagnitude();	LOG << "------- -- MEISAM 2005 Block New method -- ----------" << endl;	LOG << "distance to blockPoint : " << distToBlockPoint << endl;	LOG << "-----------------------------------------------------" << endl;	float minDistAction = 1;			float bigDist = 2.8, smallDist = 1.8;	float bigAngle = 60, smallAngle = 45;		if (((worldModel->getBody().getPostNum() == 3 && 			blockPoint.y < worldModel->getBody().getPos().getY()) ||			(worldModel->getBody().getPostNum() == 4 && 			blockPoint.y > worldModel->getBody().getPos().getY()))) 	{		smallDist = 2.4;	}								if (distToBlockPoint < bigDist)	{		if ((fabs(blockAbsVector.getDirection()) < smallAngle ||			(fabs(blockAbsVector.getDirection()) < bigAngle && 			distToBlockPoint < smallDist)) && 			worldModel->getBallStatus() == BS_KICKABLE_OPP &&			!((worldModel->getBody().getPostNum() <= 5) && worldModel->				getCurInterCalculate().getFastestPlayer().getPos().getX() > 0))		{			LOG << "Meisam2005 blockPoint is changed to enemy position " << endl;			blockPoint = worldModel->getCurInterCalculate().			getFastestPlayer().getPos();			minDistAction = .4;			LOG << "Meisam2005 changed blockPoint : " << blockPoint << endl;		}	}	LOG << "latest blockPoint : " <<  blockPoint << endl;			blockCommand = PreciseGotoPoint(AT_BLOCK, blockPoint, minDistAction,			worldModel->getBody(), 0, minTurnAngle).getCommand();	if (blockCommand == NULL)		blockCommand = new EmptyCommand(AT_BLOCK);	return AD_ALWAYS_RUN_VALUE;}Block::Block(const WorldModel *worldModel): AdvancedAction(worldModel){}void Block::execute(Form &form, const Library &library){	LOG << "Block::execute" << endl;	command = blockCommand;}Block::~Block(){}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美三级电影网站| 欧美日韩你懂的| 国产片一区二区| 蜜臀a∨国产成人精品| 欧美日韩国产另类不卡| 亚洲一区二区三区在线看| 91色porny在线视频| 成人免费在线视频| 97精品电影院| 成人免费在线视频观看| 91日韩一区二区三区| 综合av第一页| 97精品久久久午夜一区二区三区| 中文字幕不卡三区| 成人一区二区三区| 日本一二三四高清不卡| 国产成人精品免费看| 国产三级久久久| 成人免费毛片app| 国产精品入口麻豆原神| 从欧美一区二区三区| 中文在线一区二区| 不卡欧美aaaaa| 中文字幕一区二区三区精华液| 国产成人午夜电影网| 国产精品人人做人人爽人人添| 不卡欧美aaaaa| 伊人色综合久久天天人手人婷| 91精品福利视频| 亚洲成在人线免费| 日韩午夜在线播放| 国产高清亚洲一区| 日本一区二区免费在线观看视频| 99热精品国产| 亚洲香蕉伊在人在线观| 91精品久久久久久久91蜜桃| 毛片av一区二区| 久久精品这里都是精品| gogogo免费视频观看亚洲一| 亚洲免费资源在线播放| 欧美日韩一区二区电影| 久久国产精品区| 国产欧美日韩在线视频| 一本大道久久a久久综合婷婷| 一级精品视频在线观看宜春院 | 日本不卡一二三| 日韩精品一区二区三区四区视频 | 亚洲制服丝袜在线| 欧美放荡的少妇| 国产综合色视频| 中文字幕一区免费在线观看| 欧美色偷偷大香| 激情综合网激情| 国产精品久久久久久久久免费樱桃 | 亚洲一区电影777| 91精品国产色综合久久ai换脸| 九九久久精品视频| 国产精品不卡在线| 欧美美女bb生活片| 国产美女精品人人做人人爽| 亚洲色图在线视频| 欧美日韩视频一区二区| 狠狠色丁香久久婷婷综合丁香| 中文字幕一区二区三区在线观看| 欧美日韩精品一二三区| 国产精品99久久久久| 一区二区三区四区五区视频在线观看 | 99久久精品免费看国产| 天堂一区二区在线免费观看| 久久精品人人爽人人爽| 欧美亚洲动漫制服丝袜| 精油按摩中文字幕久久| 亚洲免费看黄网站| 日韩美女视频在线| 色哟哟国产精品免费观看| 麻豆精品视频在线观看免费| 中文字幕一区二区三区不卡| 欧美一区二区三区视频在线| 国产成人高清在线| 亚洲成人免费在线观看| 欧美韩国一区二区| 欧美一区二区三区公司| 97成人超碰视| 韩国精品一区二区| 亚洲成av人片一区二区三区| 日本一区二区三区四区在线视频| 91精品久久久久久久91蜜桃| 不卡的av网站| 久久99久久久久| 亚洲午夜激情网页| 亚洲国产精品精华液2区45| 91精品国产一区二区三区| caoporn国产一区二区| 国产综合色产在线精品| 日韩av在线发布| 亚洲精品中文在线| 国产精品美女久久久久高潮| 精品国产伦一区二区三区免费 | 在线影视一区二区三区| 成人一区二区三区在线观看| 91伊人久久大香线蕉| 国内外成人在线| 午夜精品久久久久久久99樱桃 | 久久精品一区二区三区四区| 884aa四虎影成人精品一区| 99视频一区二区| 国产精品系列在线观看| 精品制服美女久久| 亚洲电影一级黄| 亚洲天堂福利av| 欧美激情艳妇裸体舞| 26uuu国产电影一区二区| 欧美人妇做爰xxxⅹ性高电影| 99精品视频中文字幕| 国产精品1区2区| 国产在线一区观看| 久久精品国产秦先生| 亚洲r级在线视频| 亚洲一区视频在线| 亚洲欧美一区二区在线观看| 国产三级精品三级在线专区| 久久亚洲精品国产精品紫薇| 91精品免费在线观看| 欧美嫩在线观看| 欧美午夜理伦三级在线观看| 色综合一个色综合| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 亚洲精品一线二线三线| 日韩欧美一级在线播放| 制服丝袜中文字幕一区| 欧美日韩亚洲综合| 欧美日韩免费一区二区三区视频| 色屁屁一区二区| 色综合久久综合中文综合网| 一本一道波多野结衣一区二区| av一二三不卡影片| av高清不卡在线| 91在线播放网址| 色综合网色综合| 欧美影视一区在线| 欧美性视频一区二区三区| 欧美在线看片a免费观看| 欧美性一区二区| 51午夜精品国产| 日韩女优视频免费观看| 亚洲精品一线二线三线| 久久久三级国产网站| 国产偷国产偷精品高清尤物| 日本一区二区三区高清不卡| 国产精品久久久久影院色老大| 国产精品国产三级国产aⅴ入口| 国产精品福利av | 久久久777精品电影网影网| 久久久亚洲欧洲日产国码αv| 国产拍揄自揄精品视频麻豆| 国产精品免费av| 亚洲另类在线制服丝袜| 亚洲大片精品永久免费| 蜜桃传媒麻豆第一区在线观看| 精品一二三四区| 国产成人99久久亚洲综合精品| 99这里都是精品| 欧日韩精品视频| 欧美日韩高清影院| 欧美va亚洲va香蕉在线| 中文字幕欧美激情| 亚洲精品国久久99热| 日韩中文字幕区一区有砖一区 | 丁香天五香天堂综合| www.av精品| 欧美三级三级三级爽爽爽| 亚洲综合精品自拍| 奇米色一区二区| 国产精品一二一区| 91麻豆免费看片| 欧美久久一二区| 久久久久国产免费免费| 亚洲欧美日韩电影| 日韩国产欧美在线播放| 国产精品资源网站| 91在线丨porny丨国产| 欧美精三区欧美精三区| 2欧美一区二区三区在线观看视频| 中文文精品字幕一区二区| 亚洲综合色成人| 国产一区二区91| 色综合天天综合| 日韩欧美国产三级电影视频| 国产精品免费免费| 爽好多水快深点欧美视频| 激情五月婷婷综合网| 91啪九色porn原创视频在线观看| 欧美二区三区91| 国产精品美女久久久久久久网站| 午夜一区二区三区在线观看| 国产精选一区二区三区| 欧美怡红院视频| 国产免费成人在线视频| 亚洲成人精品影院| 高清beeg欧美|