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

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

?? player.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 <cassert>#include <Body.h>#include <Config.h>#include <Logger.h>#include <Player.h>#include <Degree.h>#include <Basics.h>#include <Defines.h>#include <SExpression.h>#include <PossiblePoints.h>using namespace std;Player::Player(PlayerModel model) : model(model){	goalieFlag = false;	tacklingFlag = false;	pointingDir = 0;	bodyDir = 0;	headDir = 0;	uniNum = 0;	postNum = 0;	type = 0;	teamId = TID_TEAMMATE;	relativePointingDir = 0;	relativeBodyDir = 0;	relativeHeadDir = 0;	lastAPVRTime = 0;	dashExpires = 0;}Player::~Player(){}void Player::parse(TeamId teamIdArg, unsigned uniNumArg, bool isGoalie,		const SExpression &exp, unsigned curTime){	SExpAtomic *at;	tacklingFlag = false;	relativeBodyDir = -NOVALUE;	relativeHeadDir = -NOVALUE;	relativePointingDir = -NOVALUE;	Object::parse(exp, curTime);	goalieFlag = isGoalie;	setUniNum(uniNumArg);	teamId = teamIdArg;	if (teamId == TID_UNKNOWN)		model = PLM_QUARTER;	else if (uniNum == 0)		model = PLM_HALF;	else		model = PLM_FULL;	unsigned decreaseNum = 0;	at = dynamic_cast<SExpAtomic *>(exp[exp.size() - 1]);	if (at->toString() == "t")		decreaseNum = 1;	if (exp.size() - decreaseNum > 6)	{		at = dynamic_cast<SExpAtomic *>(exp[5]);		assert(at);		relativeBodyDir = at->asFloat();		at = dynamic_cast<SExpAtomic *>(exp[6]);		assert(at);		relativeHeadDir = at->asFloat();	}	if (model != PLM_QUARTER)	{		at = dynamic_cast<SExpAtomic *>(exp[exp.size() - 1]);		assert(at);		if (at->toString() == "t")			tacklingFlag = true;	}	if ((exp.size() - decreaseNum) % 2 == 0) // see format is very very poor in this case.	{		if (tacklingFlag)			at = dynamic_cast<SExpAtomic *>(exp[exp.size() - 2]);		else			at = dynamic_cast<SExpAtomic *>(exp[exp.size() - 1]);		assert(at);		relativePointingDir = at->asFloat();	}	relativeBodyDir *= -1;	relativeHeadDir *= -1;	relativePointingDir *= -1;}void Player::setServerParamVars(const Param &serverParam){	Object::setServerParamVars(serverParam);	accelMax = serverParam["player_accel_max"].asFloat();	decay = serverParam["player_decay"].asFloat();	rand = serverParam["player_rand"].asFloat();	size = serverParam["player_size"].asFloat();	speedMax = serverParam["player_speed_max"].asFloat();	staminaMax = serverParam["stamina_max"].asFloat();	effortDecThr = serverParam["effort_dec_thr"].asFloat();	recoverDecThr = serverParam["recover_dec_thr"].asFloat();	maxNeckAng = serverParam["maxneckang"].asFloat();	minNeckAng = serverParam["minneckang"].asFloat();	maxNeckMoment = serverParam["maxneckmoment"].asFloat();	minNeckMoment = serverParam["minneckmoment"].asFloat();	catchableAreaL = serverParam["catchable_area_l"].asFloat();	catchableAreaW = serverParam["catchable_area_w"].asFloat();}void Player::update(const Body &body, PlayMode playMode){	position = possiblePoints.calculatePlayerPosition(*this, body,			posDeviation, quantizeStep);	validPosDeviation = posDeviation;	absVector.setByPoints(body.getPos(), position);	bodyVector = absVector;	bodyVector.rotate(-body.getBodyDir());	headVector = absVector;	headVector.rotate(-body.getHeadDir());	if (relativeBodyDir != NOVALUE)	{		bodyDir = Degree::normalizeAngle(body.getHeadDir() + relativeBodyDir);		headDir = Degree::normalizeAngle(body.getHeadDir() + relativeHeadDir);	}	if (seeDistChange != NOVALUE)	{		velocity.setByDistDirChange(headVector, seeDistChange, seeDirChange);		velocity.rotate(body.getHeadDir());		velocity += body.getVel();	}	if (relativePointingDir != NOVALUE)		pointingDir = Degree::normalizeAngle(				body.getHeadDir() + relativePointingDir);	else		pointingDir = NOVALUE;	float maxSenseStamina;	if (playMode == PM_PLAY_ON)		maxSenseStamina = 2500;	else		maxSenseStamina = 3850;	if (pointingDir != NOVALUE)		stamina = Basics::reRate(Degree::absoluteAngle(pointingDir),				0, 270, 1000, maxSenseStamina, RRM_DIRECT);	else		stamina = staminaMax;	executeAPVR(body);	executeAPDR(body);	if (seeTime == velSeeTime && velocity.getMagnitude() > 0.2)	{		LOG << "APMR: started for player " << teamId << " " << uniNum			<< "." << endl;		dashExpires = 2;	}}void Player::simulateByDynamics(const Body &body){	if (dashExpires > 0 && bodyDir != NOVALUE)	{		LOG << "APMR: accelerated for player " << teamId << " " << uniNum			<< "." << endl;		Vector accel;		accel.setAsPolar(0.6, bodyDir);		velocity += accel;		if (velocity.getMagnitude() > getSpeedMax())			velocity.setAsPolar(getSpeedMax(), velocity.getDirection());	}	position += velocity;	velocity *= decay;	posDeviation += 1;	if (posDeviation > MAX_POS_DEV)		posDeviation = MAX_POS_DEV;	validPosDeviation += 1;	if (validPosDeviation > MAX_POS_DEV)		validPosDeviation = MAX_POS_DEV;	velDeviation += 0.02;	if (velDeviation > MAX_VEL_DEV)		velDeviation = MAX_VEL_DEV;	absVector.setByPoints(body.getPos(), position);	bodyVector = absVector;	bodyVector.rotate(-body.getBodyDir());	headVector = absVector;	headVector.rotate(-body.getHeadDir());//	bodyDir = headDir = NOVALUE;	if (dashExpires > 0)		dashExpires--;}void Player::virtualUpdate(const Body &body){	position = body.getPos() + absVector;}void Player::setByAnotherPlayer(const Player &player, const Body &body){	// Object vars	posDeviation = player.getPosDeviation();	validPosDeviation = player.getValidPosDeviation();	velDeviation = player.getVelDeviation();	seeDistance = player.getSeeDistance();	seeDirection = player.getSeeDirection();	seeDistChange = player.getSeeDistChange();	seeDirChange = player.getSeeDirChange();	seeTime = player.getSeeTime();	velSeeTime = player.getVelSeeTime();	position = player.getPos();	velocity = player.getVel();	absVector = player.getAbsVec();	bodyVector = player.getBodyVec();	headVector = player.getHeadVec();	// Player vars	goalieFlag = isGoalie() | player.isGoalie();	tacklingFlag = player.isTackling();	stamina = player.getStamina();	bodyDir = player.getBodyDir();	headDir = player.getHeadDir();	pointingDir = player.getPointingDir();	relativeBodyDir = player.getRelativeBodyDir();	relativeHeadDir = player.getRelativeHeadDir();	relativePointingDir = player.getRelativePointingDir();	dashExpires = player.getDashExpires();	// last* variables do not be copied.	if (model == PLM_FULL && player.getModel() == PLM_FULL)	{		setUniNum(player.getUniNum());		type = player.getType();		staminaIncMax = player.getStaminaIncMax();		inertiaMoment = player.getInertiaMoment();		dashPowerRate = player.getDashPowerRate();		kickableMargin = player.getKickableMargin();		kickRand = player.getKickRand();		extraStamina = player.getExtraStamina();		effortMax = player.getEffortMax();		effortMin = player.getEffortMin();	}	if (model >= PLM_HALF && player.getModel() >= PLM_HALF)		teamId = player.getTeamId();	// some update functions	executeAPVR(body);	executeAPDR(body);}bool Player::isBody() const{	if (dynamic_cast<const Body *>(this))		return true;	return false;}bool Player::isAlive() const{	if (model != PLM_FULL)		return isValid();	if (validPosDeviation < PLAYER_ALIVE_POS_DEV)		return true;	return false;}bool Player::isValid() const{	if (validPosDeviation < PLAYER_VALID_POS_DEV)		return true;	return false;}void Player::executeAPVR(const Body &body){	// Advance Player Velocity Recognizer (APVR)	if (model == PLM_FULL && seeDistChange == NOVALUE &&		absVector.getMagnitude() < APVR_RADIUS &&		body.getCollisionStatus() != TA_YES && lastAPVRTime == seeTime - 1)	{		Vector lastBodyVel(body.getVel());		lastBodyVel /= body.getDecay();		Vector virtualVel(absVector - lastAPVRPosition + lastBodyVel);		virtualVel *= getDecay();		velocity = virtualVel;		velSeeTime = seeTime; // it must be in Parsing but it is an exeption.		LOG << "APVR: executed for player " << teamId << " "			<< uniNum << "." << endl;	}	if (absVector.getMagnitude() < APVR_RADIUS)	{		lastAPVRPosition = absVector;		lastAPVRTime = seeTime;	}	else		lastAPVRTime = 0;}void Player::executeAPDR(const Body &body){	// Advanced Player Direction Recognizer (APDR)	if (model == PLM_FULL && velSeeTime == seeTime &&		lastAPDRTime == seeTime - 1)	{		Vector Accelerate(velocity);		Accelerate /= getDecay();		Accelerate -= lastAPDRVelocity;		if (Accelerate.getMagnitude() > 0.15)		{			bodyDir = Accelerate.getDirection();			LOG << "APDR: executed for player " << teamId << " "				<< uniNum << "." << endl;		}	}	if (velSeeTime == seeTime)	{		lastAPDRVelocity = velocity;		lastAPDRTime = seeTime;	}	else		lastAPDRTime = 0;}bool Player::canBodySee(const Vector &playerPos, float viewAngle,		float visibleDist) const{	float farLength;	if (model == PLM_FULL)		farLength = UNUM_FAR_LENGTH;	else if (model == PLM_HALF)		farLength = TEAM_FAR_LENGTH;	else		farLength = 0xFFFF;	if (absVector.getMagnitude() + 0.75 * posDeviation < visibleDist)		return true;	if (fabs(headVector.getDirection()) +		Degree::arcTan(0.75 * posDeviation / absVector.getMagnitude()) <				viewAngle &&		absVector.getMagnitude() + 0.75 * posDeviation < farLength)		return true;	return false;}unsigned Player::uniNumToPostNum(unsigned uniNum){	switch (uniNum)	{	case 2:		return 11;	case 3:		return 9;	case 4:

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91亚洲午夜精品久久久久久| 国产一区二区精品在线观看| 亚洲欧美色图小说| 日韩毛片视频在线看| 高清视频一区二区| 国产成人免费视频精品含羞草妖精| 日韩一二在线观看| 国产精品美女久久久久aⅴ| 日韩中文字幕区一区有砖一区| 国产欧美综合在线观看第十页| 欧美一级精品大片| 亚洲人123区| 丁香婷婷综合激情五月色| 91精品国产色综合久久| 国产精品第五页| 国产在线精品一区二区夜色| 91精品在线麻豆| 亚洲黄色在线视频| heyzo一本久久综合| 欧美精品一区二区三区蜜桃视频| 久久综合九色综合久久久精品综合| 日韩午夜在线影院| 亚洲国产成人91porn| eeuss国产一区二区三区| 日韩美女一区二区三区四区| 日韩激情av在线| 欧美精品色一区二区三区| 一区二区在线观看免费| 91亚洲午夜精品久久久久久| 亚洲欧洲一区二区三区| 99久久婷婷国产综合精品电影 | 国产一区二区三区免费看| 欧美电影一区二区三区| 天天av天天翘天天综合网色鬼国产| 日本中文在线一区| 欧美唯美清纯偷拍| 亚洲第一电影网| 精品视频免费在线| 日本在线不卡一区| 日韩限制级电影在线观看| 亚洲成av人在线观看| 欧美一级国产精品| 国产一区中文字幕| 中文字幕第一区| 91在线观看免费视频| 亚洲一区影音先锋| 日韩免费观看2025年上映的电影| 国产精品理伦片| 一本大道久久精品懂色aⅴ| 国产精品高潮久久久久无| 91丨九色丨黑人外教| 一区二区三区精品| 欧美一区二区三区在线视频 | 在线不卡a资源高清| 亚洲丰满少妇videoshd| 欧美精品免费视频| 国内精品视频666| 国产精品嫩草久久久久| 在线看日本不卡| 久久精品国产免费| 亚洲女人小视频在线观看| 欧美精品丝袜中出| 国产传媒一区在线| 亚洲成av人**亚洲成av**| 精品久久久久久无| 91日韩在线专区| 裸体歌舞表演一区二区| 自拍视频在线观看一区二区| 91精品国产乱码久久蜜臀| 国产老女人精品毛片久久| 亚洲色图制服诱惑| 精品剧情v国产在线观看在线| 午夜精品久久久久久久久| 日韩一区国产二区欧美三区| av福利精品导航| 男女男精品视频网| 亚洲欧美色一区| 2024国产精品| 欧美日韩电影在线播放| 国产精品911| 日韩影院精彩在线| 亚洲美女偷拍久久| 久久久精品免费观看| 欧美丝袜自拍制服另类| 成人综合婷婷国产精品久久免费| 日韩欧美色综合| 欧美在线视频你懂得| 国产高清精品久久久久| 亚洲国产精品久久一线不卡| 国产精品伦理在线| 日韩一区二区三区观看| 欧美体内she精视频| 成人动漫中文字幕| 国产美女在线观看一区| 婷婷激情综合网| 亚洲最色的网站| 成人免费在线播放视频| 2024国产精品| 日韩欧美激情在线| 欧美猛男超大videosgay| 99视频热这里只有精品免费| 国产乱码精品一区二区三区五月婷| 日韩精品一区二区三区蜜臀 | 中文字幕日韩一区二区| 国产亚洲欧美激情| 4438x成人网最大色成网站| 欧美怡红院视频| 一道本成人在线| 99久久精品国产精品久久| 国产激情精品久久久第一区二区| 中文字幕国产一区| 国产欧美精品一区| 国产区在线观看成人精品| 国产亚洲精品aa午夜观看| 精品福利一区二区三区| 精品国产一区二区精华| 日韩一区二区三区电影在线观看 | 精品美女在线观看| 日韩一级精品视频在线观看| 欧美一卡二卡在线| 欧美日韩成人在线一区| 欧美精品亚洲一区二区在线播放| 国内精品免费**视频| 久久99国产精品久久99果冻传媒| 国产日产精品一区| 国产精品毛片久久久久久久| 欧美激情中文不卡| 亚洲色图另类专区| 亚洲一级片在线观看| 亚洲高清在线精品| 男女男精品网站| 国产一区二区主播在线| 国产ts人妖一区二区| 99精品欧美一区二区三区小说 | 884aa四虎影成人精品一区| 欧美日韩免费一区二区三区视频| 极品少妇xxxx偷拍精品少妇| 日本不卡免费在线视频| 免费高清视频精品| 国产一区二区三区av电影 | 色偷偷久久一区二区三区| 色婷婷综合激情| 欧美日韩美少妇| 日韩欧美一区二区三区在线| 国产午夜精品美女毛片视频| 中文字幕在线一区二区三区| 亚洲午夜激情av| 激情文学综合网| 99久久综合色| 日韩一区二区三区视频在线观看| 91美女片黄在线观看| 欧美日韩激情一区二区| 日韩欧美精品在线| 中文字幕人成不卡一区| 午夜精品久久一牛影视| 国产一区二区免费看| 99精品黄色片免费大全| 欧美一区二区视频观看视频| 国产精品国产三级国产普通话99| 精品国产伦理网| 亚洲色图一区二区| 免费成人美女在线观看.| hitomi一区二区三区精品| 91麻豆精品国产91久久久 | 日韩免费高清av| 1024精品合集| 国产呦精品一区二区三区网站| 日韩成人一级片| zzijzzij亚洲日本少妇熟睡| 欧美变态tickling挠脚心| 亚洲欧洲精品一区二区三区| 67194成人在线观看| 88在线观看91蜜桃国自产| 日本韩国一区二区| 久久美女高清视频| 亚洲成人动漫一区| 高清国产一区二区三区| 国产精品灌醉下药二区| 久久蜜桃av一区二区天堂| 久久日韩精品一区二区五区| 国产精品毛片大码女人| 狠狠色丁香九九婷婷综合五月| 日韩av一级片| 欧美性xxxxx极品少妇| 国产精品人人做人人爽人人添| 久久精品在这里| 日本视频在线一区| 欧美视频中文字幕| 亚洲午夜电影网| 日本久久一区二区三区| 国产精品白丝在线| 不卡的av中国片| 国产欧美日韩亚州综合| 国产精品一区二区男女羞羞无遮挡 | 精彩视频一区二区| 91精品国产丝袜白色高跟鞋| 亚洲成人av免费| 欧美午夜精品免费| 亚洲r级在线视频| 在线成人免费观看|