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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? kickcalculate.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 * *  Released on Monday 1 August 2005, 10 Mordad 1384 by Mersad RoboCup Team. *  For more information please read README file.*/#include <cmath>#include <Logger.h>#include <Degree.h>#include <Defines.h>#include <Command.h>#include <BasicKick.h>#include <WorldModel.h>#include <KickCalculate.h>//#define KICK_CALCULATE_LOGLEVEL1using namespace std;using namespace Degree;// class KickInterceptPlayervoid KickInterceptPlayer::init(const InterceptPlayer &interPlayer){	extraCatchedFlag = interPlayer.isExtraCatched();	dashDist = interPlayer.getDashDist();	interceptTime = interPlayer.getInterTime();	player = &interPlayer.getPlayer();	interceptPoint = interPlayer.getInterPoint();}// Getting functionsbool KickInterceptPlayer::isExtraCatched() const{	return extraCatchedFlag;}float KickInterceptPlayer::getDashDist() const{	return dashDist;}unsigned KickInterceptPlayer::getInterTime() const{	return interceptTime;}const Player &KickInterceptPlayer::getPlayer() const{	return *player;}const Point &KickInterceptPlayer::getInterPoint() const{	return interceptPoint;}// class KickInterceptCalculateKickInterceptCalculate::KickInterceptCalculate(){	kickCommand = NULL;}KickInterceptCalculate::~KickInterceptCalculate(){}unsigned KickInterceptCalculate::getTmmCheckedPlayersNum() const{	unsigned tmmCounter = 0;	for (unsigned i = 0; i < checkedPlayersNum; i++)		if (checkedPlayers[i].getPlayer().getTeamId() == TID_TEAMMATE)			tmmCounter++;	return tmmCounter;}unsigned KickInterceptCalculate::getOppCheckedPlayersNum() const{	unsigned oppCounter = 0;	for (unsigned i = 0; i < checkedPlayersNum; i++)		if (checkedPlayers[i].getPlayer().getTeamId() == TID_OPPONENT)			oppCounter++;	return oppCounter;}unsigned KickInterceptCalculate::getCheckedListNum(const Player &player) const{	for (unsigned i = 0; i < checkedPlayersNum; i++)		if (checkedPlayers[i].getPlayer().getModel() == player.getModel() &&			checkedPlayers[i].getPlayer().getTeamId() == player.getTeamId() &&			checkedPlayers[i].getPlayer().getUniNum() == player.getUniNum())				return i;	return NOVALUE;}bool KickInterceptCalculate::existFastestPlayer() const{	if (fastestPlayerNum == NOVALUE)		return false;	return true;}bool KickInterceptCalculate::existFastestTmmPlayer() const{	if (fastestTmmPlayerNum == NOVALUE)		return false;	return true;}bool KickInterceptCalculate::existFastestOppPlayer() const{	if (fastestOppPlayerNum == NOVALUE)		return false;	return true;}bool KickInterceptCalculate::isFastestPlayer(const Player &player) const{	if (checkedPlayers[fastestPlayerNum].getPlayer().getModel() ==				player.getModel() &&		checkedPlayers[fastestPlayerNum].getPlayer().getTeamId() ==				player.getTeamId() &&		checkedPlayers[fastestPlayerNum].getPlayer().getUniNum() ==				player.getUniNum())		return true;	return false;}const Player& KickInterceptCalculate::getFastestPlayer() const{	return checkedPlayers[fastestPlayerNum].getPlayer();}const KickInterceptPlayer& KickInterceptCalculate::getFastestInterPlayer() const{	return checkedPlayers[fastestPlayerNum];}const KickInterceptPlayer& KickInterceptCalculate::getFastestTmmInterPlayer() const{	return checkedPlayers[fastestTmmPlayerNum];}const KickInterceptPlayer& KickInterceptCalculate::getFastestOppInterPlayer() const{	return checkedPlayers[fastestOppPlayerNum];}void KickInterceptCalculate::saveResults(const InterceptCalculate &interCalc){	virtualBall.setPos() = interCalc.getVirtualBall().getPos();	virtualBall.setVel() = interCalc.getVirtualBall().getVel();	playMode = interCalc.getPlayMode();	checkedPlayersNum = interCalc.getCheckedPlayersNum();	fastestPlayerNum = interCalc.getFastestCheckedPlayerNum();	fastestTmmPlayerNum = interCalc.getFastestTmmCheckedPlayerNum();	fastestOppPlayerNum = interCalc.getFastestOppCheckedPlayerNum();	kickPlayer = interCalc.getKickPlayer();	for (unsigned i = 0; i < checkedPlayersNum; i++)		checkedPlayers[i].init(interCalc.getCheckedInterPlayer(i));}void KickInterceptCalculate::init(const WorldModel *worldModel,		const KickCommand *kickCommandArg, InterceptCalculate &interCalc){	if (!kickCommandArg)	{		setValid(false);		return;	}	delete kickCommand;	kickCommand = new KickCommand(*kickCommandArg);	firstBall = worldModel->getBall();	firstBall.simulateByAction(worldModel->getBody(), kickCommand);#ifdef KICK_CALCULATE_LOGLEVEL1	LOG << "New kick: " << kickCommand->toString() << " Ball vel: "		<< Point(firstBall.getVel().getMagnitude(),				 firstBall.getVel().getDirection()) << endl;#endif	if (worldModel->getSeeDeltaCycle(firstBall.getVel().getDirection(), 0.2) >			KICK_CALC_MAX_SEE_DELTA_CYCLE)	{#ifdef KICK_CALCULATE_LOGLEVEL1		LOG << "Break: did not see." << endl;#endif		setValid(false);		return;	}	setValid(true);	interCalc.setVirtualBall(firstBall);	interCalc.run();	saveResults(interCalc);	// Initing Informations	passedOppPlayers = 0;	nearestOppToFastestDist = 0xFFFF;	nearestOppToFastestDir = 180;	if (interCalc.existFastestPlayer())	{		if (firstBall.getPos().getX() <			interCalc.getFastestInterPlayer().getInterPoint().x)			passedOppPlayers = interCalc.getOppPlayersBetweenLines(					firstBall.getPos().getX(),					interCalc.getFastestInterPlayer().getInterPoint().x);		interCalc.getNearestOppDistDirToFastest(				nearestOppToFastestDist, nearestOppToFastestDir);	}}// Getting functionsunsigned KickInterceptCalculate::getKickCycles() const{	return kickCycles;}unsigned KickInterceptCalculate::getFastestPlayerNum() const{	return fastestPlayerNum;}unsigned KickInterceptCalculate::getFastestTmmPlayerNum() const{	return fastestTmmPlayerNum;}unsigned KickInterceptCalculate::getFastestOppPlayerNum() const{	return fastestOppPlayerNum;}unsigned KickInterceptCalculate::getCheckedPlayersNum() const{	return checkedPlayersNum;}bool KickInterceptCalculate::isValid() const{	return validFlag;}unsigned KickInterceptCalculate::getPassedOppPlayers() const{	return passedOppPlayers;}float KickInterceptCalculate::getNearestOppToFastestDist() const{	return nearestOppToFastestDist;}float KickInterceptCalculate::getNearestOppToFastestDir() const{	return nearestOppToFastestDir;}PlayMode KickInterceptCalculate::getPlayMode() const{	return playMode;}const KickCommand &KickInterceptCalculate::getKickCommand() const{	return *kickCommand;}const KickInterceptPlayer &KickInterceptCalculate::getCheckedInterPlayer(unsigned num) const{	return checkedPlayers[num];}const Ball &KickInterceptCalculate::getFirstBall() const{	return firstBall;}const Ball &KickInterceptCalculate::getVirtualBall() const{	return virtualBall;}const Player *KickInterceptCalculate::getKickPlayer() const{	return kickPlayer;}// Setting functionsvoid KickInterceptCalculate::setValid(bool validFlagArg){	validFlag = validFlagArg;}// class KickCalculateKickCalculate::KickCalculate(){	setValid(false);	setInited(false);	simulates = NULL;	simulatesNum = 0;}KickCalculate::~KickCalculate(){	if (isInited())		delete [] simulates;}void KickCalculate::init(){	setInited(true);	simulatesNum = KICK_CALCULATES_NUM;	simulates = new KickInterceptCalculate[simulatesNum];}void KickCalculate::update(const WorldModel *worldModel){	InterceptCalculate interCalc;	KickCommand *kickCommand = new KickCommand(AT_KICK_CALCULATE, 100, 0);	LOG << "KickCalculate::update" << endl;	setValid(true);	updateTime = worldModel->getCurTime();	interCalc.startSession(1, &worldModel->getBody(), NULL);	interCalc.setShareCycles(1);//	if (worldModel->getCurCycle() == 82)//		interCalc.setLogging(true);	interCalc.updateByWorldModel(worldModel);	for (unsigned i = 0; i < simulatesNum - KICK_CALCULATES_EXTRA_NUM; i++)	{		kickCommand->setPower(((i % KICK_POW_NUM) + 1) * KICK_POW_STEP);		kickCommand->setDirection(normalizeAngle(				floor((float)i / KICK_POW_NUM) * KICK_DIR_STEP));		simulates[i].init(worldModel, kickCommand, interCalc);	}	for (unsigned i = 0; i < KICK_CALCULATES_EXTRA_NUM; i++)	{		delete kickCommand;		KickToDirectionVelocity extraKick(AT_KICK_CALCULATE, worldModel->getBody().getBodyDir(),			0.75 + i * 0.25, worldModel->getBall(), worldModel->getBody());		if (extraKick.isPossible())			kickCommand = dynamic_cast<KickCommand *>(extraKick.getCommand());		else			kickCommand = NULL;		simulates[i].init(worldModel, kickCommand, interCalc);	}	delete kickCommand;}void KickCalculate::getNeighboursByDir(unsigned num,		unsigned &neighbour1, unsigned &neighbour2) const{	float pow = simulates[num].getKickCommand().getPower();	float dir = simulates[num].getKickCommand().getDirection();	neighbour1 = NOVALUE;	neighbour2 = NOVALUE;	for (unsigned i = 0; i < KICK_CALCULATES_NUM; i++)	{		float thisPow = simulates[i].getKickCommand().getPower();		float thisDir = simulates[i].getKickCommand().getDirection();		if (pow == thisPow)		{		}		else if (neighbour1 == NOVALUE &&				getDeltaAngle(thisDir,dir) == KICK_DIR_STEP)		{			neighbour1 = i;			if (neighbour2 != NOVALUE)				break;		}		else if (neighbour2 == NOVALUE &&				getDeltaAngle(thisDir,dir) == -KICK_DIR_STEP)		{			neighbour2 = i;			if (neighbour1 != NOVALUE)				break;		}	}}// Getting functionsbool KickCalculate::isValid() const{	return validFlag;}bool KickCalculate::isInited() const{	return initedFlag;}unsigned KickCalculate::getUpdateTime() const{	return updateTime;}unsigned KickCalculate::getSimulatesNum() const{	return simulatesNum;}const KickInterceptCalculate &KickCalculate::getSimulate(unsigned num) const{	return simulates[num];}// Setting functionsvoid KickCalculate::setInited(bool initedFlagArg){	initedFlag = initedFlagArg;}void KickCalculate::setValid(bool validFlagArg){	validFlag = validFlagArg;}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人精品综合在线观看| 91香蕉视频污在线| 国产精品123区| 99久久99久久久精品齐齐| 欧美天天综合网| 日韩欧美一级二级| 亚洲国产成人一区二区三区| 亚洲激情自拍视频| 久久国产精品免费| 91视频一区二区| 日韩一卡二卡三卡| 亚洲三级在线观看| 久久精品国产77777蜜臀| 波多野结衣精品在线| 777精品伊人久久久久大香线蕉| 久久久噜噜噜久久中文字幕色伊伊| 综合亚洲深深色噜噜狠狠网站| 婷婷成人综合网| 波多野洁衣一区| 精品久久久久久久久久久久久久久久久 | 欧美日韩久久不卡| 精品999久久久| 亚洲精品国产视频| 免费看欧美女人艹b| 日本精品视频一区二区| 日韩一区二区三区观看| 欧美经典三级视频一区二区三区| 一区二区三区国产精华| 久久国产人妖系列| 欧洲一区二区三区在线| 亚洲精品一区在线观看| 一区二区视频免费在线观看| 激情久久五月天| 99视频超级精品| 26uuu亚洲综合色| 亚洲一二三专区| 99久久精品一区| 国产亚洲欧美日韩日本| 欧美a级理论片| 在线观看网站黄不卡| 国产人妖乱国产精品人妖| 日韩高清电影一区| 日本韩国一区二区三区视频| 国产日产亚洲精品系列| 久久国产福利国产秒拍| 欧美精品在线观看一区二区| 亚洲视频你懂的| 国产不卡视频在线观看| 精品嫩草影院久久| 免费一级片91| 911精品国产一区二区在线| 亚洲日本欧美天堂| 国精产品一区一区三区mba视频| 欧美日韩亚洲不卡| 一区二区三区欧美日韩| av激情综合网| 中文字幕一区二区三区四区| 成人黄色大片在线观看| 国产欧美综合在线| 国产一区二区女| 精品处破学生在线二十三| 麻豆精品一区二区三区| 9191久久久久久久久久久| 亚洲.国产.中文慕字在线| 在线亚洲一区二区| 一区在线观看免费| av激情综合网| 亚洲色欲色欲www在线观看| 99久久精品免费看国产免费软件| 欧美国产综合色视频| 成人综合婷婷国产精品久久蜜臀| 久久久欧美精品sm网站| 国产成人av影院| 国产精品欧美久久久久无广告 | 欧美老年两性高潮| 亚洲图片欧美激情| 欧美日韩国产电影| 成人国产亚洲欧美成人综合网| 亚洲免费观看高清完整版在线观看| 色婷婷综合在线| 久久精品国内一区二区三区| 国产性色一区二区| 成人av免费观看| 亚洲成人资源网| 国产精品久久久久久久久免费相片| 色偷偷久久人人79超碰人人澡| 韩日欧美一区二区三区| 青青草97国产精品免费观看| 在线综合+亚洲+欧美中文字幕| 青青草97国产精品免费观看 | 日韩专区欧美专区| 91精品国产品国语在线不卡| 久久精品国产在热久久| 国产亚洲一区二区在线观看| 成人av在线资源| 亚洲成a人片综合在线| 日韩视频一区二区在线观看| 国产乱码精品一区二区三区av| 国产精品久久毛片| 在线观看视频91| 麻豆国产91在线播放| 欧美国产成人精品| 在线观看亚洲一区| 久久精品国产99久久6| 国产精品热久久久久夜色精品三区| 一本色道亚洲精品aⅴ| 丝袜国产日韩另类美女| 久久久精品影视| 色综合天天狠狠| 久久精品国产色蜜蜜麻豆| 国产精品久久久久一区二区三区共 | 精品国产在天天线2019| www.性欧美| 性久久久久久久久久久久 | 懂色av中文字幕一区二区三区| 亚洲视频电影在线| 日韩一级片在线播放| 丁香激情综合国产| 亚洲va韩国va欧美va| 欧美国产日韩a欧美在线观看| 欧美色视频在线观看| 国产福利视频一区二区三区| 亚洲一区二区成人在线观看| 久久精品视频在线免费观看| 欧美日韩情趣电影| 国产成人综合在线播放| 香蕉成人伊视频在线观看| 欧美国产综合色视频| 制服视频三区第一页精品| www.亚洲色图| 亚洲一区欧美一区| 天天综合网 天天综合色| 色综合天天综合色综合av| 欧美日韩一级片在线观看| 91精品国产色综合久久不卡电影 | 久草在线在线精品观看| 极品销魂美女一区二区三区| 国产成人精品免费网站| 欧美日韩高清在线| 久久久无码精品亚洲日韩按摩| 91搞黄在线观看| 国产v综合v亚洲欧| 日韩精品久久久久久| 一区二区三区在线观看网站| 国产视频在线观看一区二区三区| 欧美日韩在线三区| 91影视在线播放| 国产高清在线精品| 蜜臀精品久久久久久蜜臀| 一区二区激情视频| 国产精品的网站| 国产亚洲自拍一区| 精品国产123| 日韩免费视频一区二区| 欧美视频一区二| 91蜜桃免费观看视频| 成人性生交大合| 狠狠久久亚洲欧美| 青青草97国产精品免费观看无弹窗版 | 亚洲国产精品久久人人爱蜜臀| 中文字幕一区二区三区蜜月| 国产亚洲欧美一级| 精品国产制服丝袜高跟| 日韩欧美久久久| 日韩一本二本av| 91精品欧美福利在线观看| 欧美午夜影院一区| 欧美性高清videossexo| 色综合天天综合狠狠| 97国产一区二区| 波多野结衣视频一区| 成人福利电影精品一区二区在线观看| 国产综合色视频| 久久66热re国产| 韩国女主播成人在线| 久久精品国产澳门| 国产在线精品一区二区夜色| 久久精品国产99国产精品| 久久国产精品99精品国产| 国内外成人在线| 国产一区日韩二区欧美三区| 国精产品一区一区三区mba桃花 | 欧美经典一区二区| 中文字幕成人av| 国产日韩欧美一区二区三区综合 | 欧美精品第1页| 欧美日韩精品一区二区三区四区| 性久久久久久久久| 精品第一国产综合精品aⅴ| 国产成人精品1024| 亚洲欧美日韩在线| 欧美日韩大陆一区二区| 久久国产乱子精品免费女| 国产色产综合产在线视频| 99re8在线精品视频免费播放| 亚洲夂夂婷婷色拍ww47| 精品美女在线播放| 欧美一a一片一级一片| 国产日韩欧美精品一区| 国产精品日韩成人|