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

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

?? interceptcalculate.cpp

?? 2006年世界杯足球賽2D仿真組第16名的源代碼。在此代碼上隨便改改
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
/* *  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 * *  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 <Logger.h>#include <Degree.h>#include <Defines.h>#include <WorldModel.h>#include <InterceptCalculate.h>using namespace std;using namespace Degree;// class InterceptPlayerInterceptPlayer::InterceptPlayer(){	player = NULL;	withTurnVel = NULL;	withoutTurnVel = NULL;	withTurnDashDist = NULL;	withoutTurnDashDist = NULL;}void InterceptPlayer::simulate(){	withTurnVel++;	withTurnDashDist++;	withoutTurnVel++;	withoutTurnDashDist++;}void InterceptPlayer::getReadyToRun(){	// Reseting dynamic variables	setCatchBall(false);	withTurnVel = withTurnVelArchive;	withTurnDashDist = withTurnDashDistArchive;	withoutTurnVel = withoutTurnVelArchive;	withoutTurnDashDist = withoutTurnDashDistArchive;}void InterceptPlayer::init(const Player &playerArg, const Ball &ball,		bool kickingFlagArg, unsigned kickCycles,		unsigned seeBallDelayArg, float slowDashPower,		float fastDashPower, float directDashPower,		float posDevDashDist, bool blockedPlayer, bool checkForPenaltyBox){	unsigned cyclesCounter;	blockedFlag = blockedPlayer;	player = &playerArg;	simPlayer = *player;//	Body tempBody; // A Theory says these lines are bug.//	simPlayer.simulateByDynamics(tempBody);    if (player->isGoalie())	{		if (!checkForPenaltyBox ||			(player->getTeamId() == TID_TEAMMATE &&			 player->getPos().getX() < -36.4 &&			 fabs(player->getPos().getY()) < 19.6) ||			(player->getTeamId() == TID_OPPONENT &&			 player->getPos().getX() > 36.4 &&			 fabs(player->getPos().getY()) < 19.6))			kickableRadius = player->getCatchableAreaL();		else			kickableRadius = player->getSize() +					player->getKickableMargin() +					ball.getSize();	}	else		kickableRadius = player->getSize() +				player->getKickableMargin() +				ball.getSize();	slowAccel = slowDashPower * player->getDashPowerRate() *				player->getEffortMax();	fastAccel = fastDashPower * player->getDashPowerRate() *				player->getEffortMax();	directAccel = directDashPower * player->getDashPowerRate() *				player->getEffortMax();	seeBallDelay = seeBallDelayArg;	setKicking(kickingFlagArg);	// Setting start values	withTurnVelArchive[0] = 0;	withTurnDashDistArchive[0] = posDevDashDist;	withoutTurnVelArchive[0] = player->getVel().getMagnitude();	withoutTurnDashDistArchive[0] = posDevDashDist;	if (isLogging())		LOG << "NewP: " << player->getTeamId() << " " << player->getUniNum()			<< " Pos" << simPlayer.getPos() << " ----------" << endl			<< "WithTurnDashVel[0]: " << withTurnDashDistArchive[0] << " "			<< withTurnVelArchive[0] << endl			<< "NoTurnDashVel[0]: " << withoutTurnDashDistArchive[0] << " "			<< withoutTurnVelArchive[0] << endl;	// Setting other values	for (cyclesCounter = 1; cyclesCounter < INCA_MAX_INTERCEPT_TIME; cyclesCounter++)	{		// Copying values from last cycle		withTurnDashDistArchive[cyclesCounter] =				withTurnDashDistArchive[cyclesCounter - 1];		withoutTurnDashDistArchive[cyclesCounter] =				withoutTurnDashDistArchive[cyclesCounter - 1];		withTurnVelArchive[cyclesCounter] =				withTurnVelArchive[cyclesCounter - 1];		withoutTurnVelArchive[cyclesCounter] =				withoutTurnVelArchive[cyclesCounter - 1];		// Accelerating		if (!isKicking() &&			cyclesCounter <= seeBallDelay + kickCycles) // The ball is kicking or I still don't know it has kicked.		{			withTurnVelArchive[cyclesCounter] += slowAccel;			withoutTurnVelArchive[cyclesCounter] += directAccel;			if (withTurnVelArchive[cyclesCounter] > player->getSpeedMax())				withTurnVelArchive[cyclesCounter] = player->getSpeedMax();			if (withoutTurnVelArchive[cyclesCounter] > player->getSpeedMax())				withoutTurnVelArchive[cyclesCounter] = player->getSpeedMax();		}		else		{			if (cyclesCounter > seeBallDelay + kickCycles)			{				withoutTurnVelArchive[cyclesCounter] += fastAccel;				if (withoutTurnVelArchive[cyclesCounter] > player->getSpeedMax())					withoutTurnVelArchive[cyclesCounter] = player->getSpeedMax();			}			if (cyclesCounter > seeBallDelay + kickCycles + 1)			{				withTurnVelArchive[cyclesCounter] += fastAccel;				if (withTurnVelArchive[cyclesCounter] > player->getSpeedMax())					withTurnVelArchive[cyclesCounter] = player->getSpeedMax();			}		}		// Moving		withTurnDashDistArchive[cyclesCounter] += 				withTurnVelArchive[cyclesCounter];		withoutTurnDashDistArchive[cyclesCounter] += 				withoutTurnVelArchive[cyclesCounter];		// Simulating		withTurnVelArchive[cyclesCounter] *= player->getDecay();		withoutTurnVelArchive[cyclesCounter] *= player->getDecay();	}}void InterceptPlayer::finalizeIntercept(const Ball &ball, unsigned interceptTimeArg){	setCatchBall(true);	interceptTime = interceptTimeArg;	interceptPoint = ball.getPos();}bool InterceptPlayer::isBallKickable(const Ball &ball){	if (player->getDistance(ball) <= kickableRadius)		return true;	return false;}bool InterceptPlayer::checkCatchBall(const Ball &ball){	bool flag = false;	float ballDist;	float deltaAngle;	float validDeltaAngle;	Vector vector;	if (isLogging())		LOG << "Player: " << player->getTeamId() << " " << player->getUniNum()			<< " Pos" << simPlayer.getPos() << " ----------" << endl			<< "WithTurnDashVel: " << *withTurnDashDist << " "			<< *withTurnVel << endl			<< "NoTurnDashVel: " << *withoutTurnDashDist << " "			<< *withoutTurnVel << endl;	// Without turn catch ball check	ballDist = simPlayer.getDistance(ball) - *withoutTurnDashDist;	if (isLogging())		LOG << "NoTurnBallDist: " << ballDist << endl;	if (ballDist < kickableRadius)	{		if (player->getBodyDir() != NOVALUE)		{			vector.setByPoints(simPlayer.getPos(), ball.getPos());			validDeltaAngle = arcTan(kickableRadius / vector.getMagnitude());			deltaAngle = getDeltaAngle(vector.getDirection(),					simPlayer.getBodyDir());			if (fabs(deltaAngle) <= validDeltaAngle ||				fabs(deltaAngle) <= INCA_MIN_DELTA_ANGLE)				flag = true;			else // Checking back dash.			{				deltaAngle = getDeltaAngle(vector.getDirection(),						simPlayer.getBodyDir() + 180);				if (fabs(deltaAngle) <= validDeltaAngle ||					fabs(deltaAngle) <= INCA_MIN_DELTA_ANGLE)					flag = true;			}		}		// With turn catch ball check		if (flag == false)		{			ballDist = simPlayer.getDistance(ball) - *withTurnDashDist;			if (isLogging())				LOG << "WithTurnBallDist: " << ballDist << endl;			if (ballDist < kickableRadius)				flag = true;		}	}	if (flag)	{		if (isLogging())			LOG << "*** I catched the ball ***" << endl;		return true;	}	return false;}void InterceptPlayer::checkForExtraCatch(const Ball &ball){	float ballDist = simPlayer.getDistance(ball) - *withTurnDashDist;	if (isLogging())		LOG << "Player: " << player->getTeamId() << " " << player->getUniNum()			<< " Pos" << simPlayer.getPos() << " ----EC----" << endl			<< "WithTurnDashVel: " << *withTurnDashDist << " "			<< *withTurnVel << endl			<< "WithTurnBallDist: " << ballDist << endl;	if (ballDist < kickableRadius)	{		extraCatchedFlag = true;		if (isLogging())			LOG << "*** I extra catched the ball ***" << endl;	}}// Getting functionsbool InterceptPlayer::isLogging() const{	return loggingFlag;}bool InterceptPlayer::isKicking() const{	return kickingFlag;}bool InterceptPlayer::isBlocked() const{	return blockedFlag;}bool InterceptPlayer::isCatchBall() const{	return catchBallFlag;}bool InterceptPlayer::isExtraCatched() const{	return extraCatchedFlag;}float InterceptPlayer::getDashDist() const{	return *withTurnDashDist;}unsigned InterceptPlayer::getInterTime() const{	return interceptTime;}Point InterceptPlayer::getInterPoint() const{	return interceptPoint;}const Player &InterceptPlayer::getPlayer() const{	return *player;}float InterceptPlayer::getKickableRadius() const{	return kickableRadius;}// Setting functionsvoid InterceptPlayer::setLogging(bool loggingFlagArg){	loggingFlag = loggingFlagArg;}void InterceptPlayer::setKicking(bool kickingFlagArg){	kickingFlag = kickingFlagArg;}void InterceptPlayer::setCatchBall(bool catchBallFlagArg){	catchBallFlag = catchBallFlagArg;}void InterceptPlayer::setExtraCatched(bool extraCatchedFlagArg){	extraCatchedFlag = extraCatchedFlagArg;}void InterceptPlayer::setKickableRadius(float kickableRadiusArg){	kickableRadius = kickableRadiusArg;}// class InterceptCalculatevoid InterceptCalculate::run(){	unsigned finishTimer = NOVALUE;	unsigned interceptsCycle = 0;	unsigned kickCyclesCounter = kickCycles;	unsigned i;	if (isLogging())		LOG << "Running Intercepts." << endl;	getReadyToRun();	// checking the moment	if (kickCyclesCounter == 0)		for (i = 0; i < playersNum; i++)			if (interceptPlayers[i].isBallKickable(virtualBall))			{				interceptPlayers[i].finalizeIntercept(virtualBall,						interceptsCycle);				if (!interceptPlayers[i].isBlocked())				{					checkedPlayers[checkedPlayersNum] = i;					checkedPlayersNum++;					if (finishTimer == NOVALUE)						finishTimer = 0;					if (checkedPlayersNum == MAX_CHECK_PLAYERS ||						interceptPlayers[i].getPlayer().isGoalie())					{						finalizeIntercepts();						return;					}				}				else					setBlockedBall();			}	// Running GoToBalls	while (1)	{		interceptsCycle++;		if (finishTimer != NOVALUE)			finishTimer++;		if (isLogging())			LOG << "Time: " << interceptsCycle << " - "				<< "FinishTime: " << finishTimer << " ---------------------"				<< endl	<< "Simulating objects..." << endl;		// simulating the ball and players		for (i = 0; i < playersNum; i++)			if (!interceptPlayers[i].isCatchBall())				interceptPlayers[i].simulate();		if (kickCyclesCounter > 0)			kickCyclesCounter--;		if (kickCyclesCounter == 0)			simulateVirtualBall();		if (isLogging())			LOG << "Ball:"				<< " Pos" << virtualBall.getPos()				<< " Vel" << virtualBall.getVel() << endl				<< "Checking for catches..." << endl;		// Checking players for catching the ball		for (i = 0; i < playersNum; i++) 			if (!interceptPlayers[i].isCatchBall())			{				if (interceptPlayers[i].checkCatchBall(virtualBall))				{					interceptPlayers[i].finalizeIntercept(virtualBall,						interceptsCycle);					if (!interceptPlayers[i].isBlocked())					{						checkedPlayers[checkedPlayersNum] = i;						checkedPlayersNum++;						if (finishTimer == NOVALUE)							finishTimer = 0;						if (checkedPlayersNum == MAX_CHECK_PLAYERS ||							interceptPlayers[i].getPlayer().isGoalie())						{							finalizeIntercepts();							return;						}					}					else						setBlockedBall();				}			}			else if (!interceptPlayers[i].isExtraCatched())				interceptPlayers[i].checkForExtraCatch(virtualBall);		if (finishTimer != NOVALUE &&			finishTimer >= shareCycles)		{			if (isLogging())				LOG << "*** Finish : finishTimer overflow ***" << endl;			finalizeIntercepts();			return;		}		if (interceptsCycle > INCA_MAX_INTERCEPT_TIME - 5)		{			if (isLogging())				LOG << "*** Finish : interceptCycles overflow ***" << endl;			finalizeIntercepts();			return;		}		if (playersNum == 0 &&			virtualBall.getVel().getMagnitude() < 0.05) // the ball is stoped in an empty field.		{			if (isLogging())				LOG << "*** Finish : Ownerless ball in the field ***" << endl;			finalizeIntercepts();			return;		}		if (WorldModel::getOutDistance(virtualBall.getPos()) > INCA_OUT_DIST)		{			if (isLogging())				LOG << "*** Finish : The ball goes out ***" << endl;			playMode = PM_KICK_OFF_OPP;			finalizeIntercepts();			return;		}	}}void InterceptCalculate::prepareSum(){	if (checkedPlayersNum == 0)		return;	fastestCheckedPlayerNum = 0;	fastestPlayerNum = checkedPlayers[0];	for (unsigned i = 0; i < checkedPlayersNum; i++)		if (getCheckedInterPlayer(i).getPlayer().getTeamId() == TID_TEAMMATE)		{			fastestTmmCheckedPlayerNum = i;			fastestTmmPlayerNum = checkedPlayers[i];			break;		}	for (unsigned i = 0; i < checkedPlayersNum; i++)		if (getCheckedInterPlayer(i).getPlayer().getTeamId() == TID_OPPONENT)		{			fastestOppCheckedPlayerNum = i;			fastestOppPlayerNum = checkedPlayers[i];			break;		}}void InterceptCalculate::initTeamsProps()

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人免费毛片嘿嘿连载视频| 精品视频在线免费看| 99久久久国产精品免费蜜臀| 欧美日韩国产大片| 国产日韩精品一区二区浪潮av| 91精品国产高清一区二区三区蜜臀 | 中文字幕一区免费在线观看| 国产成人综合自拍| 久久色.com| 成人av在线电影| 亚洲精品亚洲人成人网在线播放| 91麻豆福利精品推荐| 国产激情视频一区二区三区欧美 | 欧洲一区二区三区在线| 精品国产成人系列| 午夜精品福利一区二区三区av| 高清不卡一区二区在线| 欧美一区二区成人6969| 亚洲一区二区三区精品在线| aa级大片欧美| 国产精品免费久久久久| 国产一区二区三区四区五区美女| 69堂国产成人免费视频| 亚洲自拍另类综合| 色综合一个色综合亚洲| 欧美极品少妇xxxxⅹ高跟鞋| 另类小说视频一区二区| 在线播放国产精品二区一二区四区 | 亚洲激情六月丁香| 成人精品国产免费网站| 久久精品亚洲麻豆av一区二区| 麻豆精品视频在线观看视频| 欧美猛男超大videosgay| 亚洲永久精品大片| 欧美无人高清视频在线观看| 亚洲精品乱码久久久久久久久 | 色综合久久综合中文综合网| 同产精品九九九| 综合激情成人伊人| 欧美国产日韩a欧美在线观看| 欧美三区在线观看| 在线观看视频一区二区| jlzzjlzz国产精品久久| 在线观看国产91| 精品中文字幕一区二区| 不卡的电视剧免费网站有什么| 久久久久久久av麻豆果冻| 国产一区二区精品久久99 | 激情国产一区二区 | 国产精品不卡一区| 色呦呦网站一区| 一区二区三区电影在线播| 在线亚洲人成电影网站色www| 亚洲一二三区不卡| 日韩午夜在线观看| 粉嫩在线一区二区三区视频| 亚洲欧美日韩人成在线播放| 欧美日韩视频第一区| 奇米影视一区二区三区小说| 国产亚洲欧美在线| 91美女片黄在线| 蜜臀久久久久久久| 一区在线观看免费| 91精品国产色综合久久| 国产高清久久久久| 亚洲午夜精品网| 337p日本欧洲亚洲大胆色噜噜| 成人爽a毛片一区二区免费| 一区二区国产视频| 久久久另类综合| 欧美写真视频网站| 国产福利一区二区| 亚洲一区二区影院| 欧美极品少妇xxxxⅹ高跟鞋| 欧美日韩你懂的| 东方欧美亚洲色图在线| 丝瓜av网站精品一区二区| 欧美国产日韩精品免费观看| 欧美浪妇xxxx高跟鞋交| eeuss鲁片一区二区三区| 麻豆精品一区二区| 一区二区三区四区五区视频在线观看| 欧美mv日韩mv| 91精品福利在线| 成人晚上爱看视频| 美女视频黄 久久| 亚洲黄色性网站| 欧美激情在线一区二区| 欧美一区二区三区思思人| 91在线一区二区三区| 国内精品视频一区二区三区八戒| 一区二区三区在线免费视频| 国产亚洲综合在线| 日韩一区二区三区av| 成人av在线资源| 国产毛片精品国产一区二区三区| 亚洲国产日韩在线一区模特| 国产精品久久久久婷婷二区次| 日韩你懂的在线播放| 777xxx欧美| 在线视频一区二区三| 99热这里都是精品| 国产精品亚洲第一区在线暖暖韩国| 免费观看成人av| 婷婷开心激情综合| 午夜激情一区二区| 亚洲国产aⅴ成人精品无吗| 亚洲欧洲性图库| 亚洲日本电影在线| 国产精品家庭影院| 国产精品福利av| 亚洲日本乱码在线观看| 中文字幕字幕中文在线中不卡视频| 国产人成一区二区三区影院| 欧美va日韩va| 久久久综合网站| 久久精品在线免费观看| 国产欧美视频在线观看| 国产亚洲精品aa| 国产精品热久久久久夜色精品三区| 日本一区二区免费在线观看视频 | 激情成人综合网| 久久超碰97人人做人人爱| 久草精品在线观看| 精品中文字幕一区二区小辣椒| 另类中文字幕网| 国产在线不卡一区| 国产一区二区三区综合| 国产九九视频一区二区三区| 麻豆精品新av中文字幕| 国产精品一区二区无线| 狠狠色狠狠色综合| 黄一区二区三区| 精品一区二区日韩| 成人性生交大合| gogo大胆日本视频一区| 成人a区在线观看| av激情综合网| 国产精品亚洲视频| 成人午夜伦理影院| 99视频一区二区| 91麻豆精品在线观看| 蜜臀av性久久久久蜜臀aⅴ| 国产一区视频导航| 成人动漫一区二区三区| av不卡免费电影| 在线观看三级视频欧美| 日韩视频一区二区三区| 精品国产百合女同互慰| 国产欧美日韩在线| 日韩码欧中文字| 国产精品美女久久久久久久久| 亚洲成人动漫在线免费观看| 视频一区二区三区在线| 狠狠网亚洲精品| 91在线国产福利| 日韩欧美www| 国产精品剧情在线亚洲| 亚洲欧美另类小说视频| 一区二区三区中文在线| 尤物在线观看一区| 国产乱码精品1区2区3区| 91丝袜呻吟高潮美腿白嫩在线观看| 91国偷自产一区二区三区观看| 欧美日韩免费视频| 日韩亚洲欧美高清| 国产午夜精品福利| 一区二区三区欧美日| 男女男精品视频| 在线观看免费成人| 精品粉嫩aⅴ一区二区三区四区| 中文一区二区在线观看| 亚洲国产精品久久久久婷婷884| 亚洲免费观看高清| 国产成人综合亚洲网站| 欧美性xxxxxx少妇| 国产午夜精品一区二区三区视频| 一区二区三区丝袜| av电影天堂一区二区在线| 欧美一区二区三区性视频| 国产精品国产三级国产三级人妇 | www.日韩精品| 4438x亚洲最大成人网| 久久精品欧美一区二区三区不卡| 日韩高清电影一区| 91理论电影在线观看| 精品日韩一区二区三区| 久久精品网站免费观看| 国产精品综合二区| 56国语精品自产拍在线观看| 亚洲欧洲日韩av| 亚洲成人自拍一区| 欧美亚洲国产一区二区三区va| 久久无码av三级| 全国精品久久少妇| 97久久久精品综合88久久| 国产精品狼人久久影院观看方式| 麻豆中文一区二区| 欧美日韩精品三区| 国产亚洲综合av|