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

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

?? saydecision.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 <string>#include <Logger.h>#include <Command.h>#include <Defines.h>#include <SayEncoding.h>#include <SayDecision.h>using namespace std;// struct SayDecisionFlagsSayDecisionForm::SayDecisionForm(){	reset();}void SayDecisionForm::reset(){	doRoutinSay = false;	beforePassSay = false;	suggestPassSay = false;	planSay = false;	freeKickSay = false;	planHeader = "";	interceptNum = 0;	attentionNum = 0;	planStatus = 0;	gwInterceptNum = 0;	gwAttentionNum = 0;	planSay = false;	radarSay = false;}/*void SayDecisionForm::decideReset(){	beforePassSay = false;//	suggestPassSay = false; AHMAD	interceptNum = 0;	planStatus = 0;//	requestPassSayNum = 0;	freeKickSay = false;}*/// class SayDecisionSayDecision::SayDecision(const WorldModel *worldModel):		worldModel(worldModel){}SayDecision::~SayDecision(){}void SayDecision::decide(const Command *bodyCycleCommand,		SayDecisionForm &sayForm){	LOG << "SayDecision::decide" << endl;	unsigned attentionNum;	if (sayForm.attentionNum)		attentionNum = sayForm.attentionNum;	else if (sayForm.gwAttentionNum != 0 &&			sayForm.gwAttentionNum != worldModel->getBody().getUniNum())		attentionNum = sayForm.gwAttentionNum;	else	{		float min = 0xFFFF;		unsigned miner = NOVALUE;		for (unsigned i = 0; i < FULL_PLAYERS_NUM; i++)			if (worldModel->getFullPlayer(TID_TEAMMATE, i).isValid() &&				!worldModel->getFullPlayer(TID_TEAMMATE, i).isBody())				if (miner == NOVALUE ||					worldModel->getFullPlayer(TID_TEAMMATE, i).getDistance(						worldModel->getBall()) < min)				{					miner = i;					min = worldModel->getFullPlayer(TID_TEAMMATE, i).getDistance(							worldModel->getBall());				}		if (miner == NOVALUE)			attentionNum = 9;		else			attentionNum = miner + 1;	}	attentionCommand = new AttentionToCommand(AT_SAY_DECISION, TID_TEAMMATE, attentionNum);	if (sayForm.planSay)		sayPlan(sayForm);	else if (sayForm.radarSay)		sayRadar(sayForm);	else if (sayForm.freeKickSay)	{		sayFreeKick(sayForm);	}		else if (sayForm.beforePassSay)	{		unsigned playerNum = sayForm.interceptNum;		if (playerNum > 11)			playerNum -= 11;/*		if (playerNum !=  0 &&			worldModel->getFullPlayer(TID_TEAMMATE, playerNum - 1).					getPosDeviation() < 4 &&			abs(worldModel->getBall().getPos().getX() -				worldModel->getFullPlayer(TID_TEAMMATE, playerNum - 1).						getPos().getX()) < RELATED_PLAYER_X_RANGE &&			abs(worldModel->getBall().getPos().getY() -				worldModel->getFullPlayer(TID_TEAMMATE, playerNum - 1).						getPos().getY()) < RELATED_PLAYER_Y_RANGE)			sayBeforePassRelated(bodyCycleCommand);		else*/			sayBeforePass(bodyCycleCommand, sayForm);	}	else if (sayForm.suggestPassSay)		saySuggestPass(sayForm);	else if (getSayRoutinBallPermission(sayForm))	{		sayForm.interceptNum = sayForm.gwInterceptNum;		sayRoutinBall(bodyCycleCommand, sayForm);	}/*	else if (sayForm.requestPassSayNum)	{		sayForm.interceptNum = gwInterceptNum;		sayRequestPassSayWithoutBall(bodyCycleCommand);	}*/	else		sayCommand = new EmptyCommand(AT_SAY_DECISION);}void SayDecision::sayBeforePass(const Command *bodyCycleCommand,		const SayDecisionForm &sayForm){	string str = "A"; // BeforePass say flag	Body nextBody(worldModel->getBody());	nextBody.simulateByAction(bodyCycleCommand);	nextBody.simulateByDynamics();	Ball nextBall(worldModel->getBall());	nextBall.simulateByAction(worldModel->getBody(), bodyCycleCommand);	nextBall.simulateByDynamics(nextBody, 1);	SayEncoding::encodeObjectPosition(nextBall.getPos().getX(),			nextBall.getPos().getY(), str);	SayEncoding::encodeObjectVelocity(nextBall.getVel().getMagnitude(),			nextBall.getVel().getDirection(), str);		str += SayEncoding::sayCodeKey[sayForm.interceptNum];	sayCommand = new SayCommand(AT_SAY_DECISION, str);}void SayDecision::sayBeforePassRelated(const Command *bodyCycleCommand,		const SayDecisionForm &sayForm){	string str = "B"; // BeforePass say flag	unsigned playerNum = sayForm.interceptNum;	if (playerNum > 11)		playerNum -= 11;	Player nextPlayer(worldModel->getFullPlayer(TID_TEAMMATE, playerNum - 1));	nextPlayer.simulateByDynamics(worldModel->getBody());	Ball nextBall(worldModel->getBall());	nextBall.simulateByAction(worldModel->getBody(), bodyCycleCommand);	nextBall.simulateByDynamics(worldModel->getBody());	SayEncoding::encodeObjectPosition(			nextBall.getPos().getX() - nextPlayer.getPos().getX(),			nextBall.getPos().getY() - nextPlayer.getPos().getY(), str);	SayEncoding::encodeObjectVelocity(nextBall.getVel().getMagnitude(),			nextBall.getVel().getDirection(), str);	str += SayEncoding::sayCodeKey[sayForm.interceptNum];	sayCommand = new SayCommand(AT_SAY_DECISION, str);}void SayDecision::sayRoutinBall(const Command *bodyCycleCommand,		const SayDecisionForm &sayForm){	string str = "Z"; // RoutinBall say flag	Body nextBody(worldModel->getBody());	nextBody.simulateByAction(bodyCycleCommand);	Body speedBody(nextBody); // I need this copy.	nextBody.simulateByDynamics();	Ball nextBall(worldModel->getBall());	nextBall.simulateByAction(worldModel->getBody(), bodyCycleCommand);	nextBall.simulateByDynamics(nextBody, 1);	SayEncoding::encodeObjectPosition(nextBall.getPos().getX(),			nextBall.getPos().getY(), str);	if (worldModel->isBallKickable() && sayForm.interceptNum != 0 &&		worldModel->getBall().getPosDeviation() < 5)	{		SayEncoding::encodeObjectVelocity(				speedBody.getVel().getMagnitude(),				speedBody.getVel().getDirection(), str); // When I have the ball, it's velocity has no meaning.		str += SayEncoding::sayCodeKey[sayForm.interceptNum +					SAY_UPPER_CASE_NUM]; // It means "Khow that I have the ball."	}	else	{		SayEncoding::encodeObjectVelocity(nextBall.getVel().getMagnitude(),				nextBall.getVel().getDirection(), str);		str += SayEncoding::sayCodeKey[sayForm.interceptNum];	}	str += SayEncoding::sayCodeKey[sayForm.planStatus];	sayCommand = new SayCommand(AT_SAY_DECISION, str);}/*void SayDecision::sayRequestPassSayWithoutBall(const Command *bodyCycleCommand){	string str = "Y"; // RoutinBall say without ball flag	str += SayEncoding::sayCodeKey[sayForm.interceptNum];	str += SayEncoding::sayCodeKey[sayForm.requestPassSayNum];	if (worldModel->isBallKickable())		str += SayEncoding::sayCodeKey[1];	else		str += SayEncoding::sayCodeKey[0];	sayCommand = new SayCommand(AT_SAY_DECISION, str);}*/bool SayDecision::getSayRoutinBallPermission(const SayDecisionForm &sayForm){	if ((worldModel->getBall().getSeeTime() == worldModel->getCurTime() &&		 worldModel->getBall().getVelSeeTime() == worldModel->getCurTime()) ||		(worldModel->isBallKickable() &&		 worldModel->getBall().getPosDeviation() < 5) ||		(sayForm.doRoutinSay &&		 worldModel->getBall().getPosDeviation() < 5))		return true;	return false;}void SayDecision::saySuggestPass(const SayDecisionForm &sayForm){	string str = "C"; // SuggestPass say flag	LOG << "A SayDecision::saySuggestPass" << endl;	LOG << "A speed dir weight num: "		<< sayForm.passSpeed << " "		<< sayForm.passDir << " "		<< sayForm.passWeight << " "		<< sayForm.passPlayerNum << endl;	SayEncoding::encodeObjectVelocity(sayForm.passSpeed,			sayForm.passDir, str);	SayEncoding::encodeWeight(sayForm.passWeight, -50, 150, str);	str += SayEncoding::sayCodeKey[sayForm.passPlayerNum];	sayCommand = new SayCommand(AT_SAY_DECISION, str);}void SayDecision::sayFreeKick(const SayDecisionForm &sayForm){	string str = "F"; // freeKick say flag//	LOG << "SayDecision:: sayFreeKick advice number=" << sayForm.freeKickAdviceNumber << endl;	str += SayEncoding::sayCodeKey[sayForm.freeKickAdviceNumber];	sayCommand = new SayCommand(AT_SAY_DECISION, str);}void SayDecision::sayPlan(const SayDecisionForm &sayForm){	string str = sayForm.planHeader; // Plan say flag	LOG << "SayDecision::sayPlan" << endl;	str += sayForm.planInfo;	sayCommand = new SayCommand(AT_SAY_DECISION, str);}void SayDecision::sayRadar(const SayDecisionForm &sayForm){	LOG << "SayDecision::sayRadar" << endl;	string str = "R"; // Radar say flag	for (int i = 0; i < sayForm.radarPlayersNum; i++)	{		LOG << "\tPlayer " << i << " ID: " << sayForm.ids[i]			<< " Mag: " << sayForm.radarPlayers[i].getMagnitude()			<< " Dir: " << sayForm.radarPlayers[i].getDirection() << endl;		SayEncoding::encodeRadarObject(sayForm.ids[i],			sayForm.radarPlayers[i].getMagnitude(),			sayForm.radarPlayers[i].getDirection(),  str);	}		sayCommand = new SayCommand(AT_SAY_DECISION, str);}Command *SayDecision::getSayCommand(){	return sayCommand;}Command *SayDecision::getAttentionCommand(){	return attentionCommand;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩成人在线| 亚洲成人av一区二区| 樱花影视一区二区| 另类小说一区二区三区| 91蜜桃传媒精品久久久一区二区| 51久久夜色精品国产麻豆| 亚洲欧洲av另类| 激情综合色丁香一区二区| 欧美视频一区二区三区在线观看 | 一区二区三区高清不卡| 国产精品一区二区三区99| 色悠悠亚洲一区二区| 欧美激情在线观看视频免费| 久久精品久久久精品美女| 欧美高清视频一二三区| 一级中文字幕一区二区| 成人aaaa免费全部观看| 国产色综合久久| 国产在线麻豆精品观看| 日韩你懂的电影在线观看| 亚洲大片在线观看| 色哟哟一区二区| 亚洲裸体在线观看| 91碰在线视频| 国产精品成人免费精品自在线观看| 黄网站免费久久| 精品国产一区二区三区久久久蜜月| 夜夜嗨av一区二区三区| 色噜噜狠狠色综合中国| 国产精品欧美极品| www.日本不卡| 亚洲黄色尤物视频| 欧美一区二区三级| 午夜视频在线观看一区| 欧美日韩一级二级三级| 亚洲成人三级小说| 欧美一区二区三区四区在线观看| 婷婷丁香久久五月婷婷| 日韩西西人体444www| 精东粉嫩av免费一区二区三区| 欧美成人三级电影在线| 黄页视频在线91| 国产精品网曝门| 日本乱人伦aⅴ精品| 亚洲成a人v欧美综合天堂下载| 欧美日韩免费视频| 麻豆精品在线播放| 国产视频在线观看一区二区三区| 成人亚洲一区二区一| 一区二区三区色| 91精品国产福利| 国产高清成人在线| 一区二区三区四区国产精品| 欧美猛男gaygay网站| 日本亚洲视频在线| 亚洲国产精品精华液ab| 91蝌蚪porny九色| 婷婷中文字幕一区三区| 久久久久综合网| 91麻豆福利精品推荐| 日产国产欧美视频一区精品| 久久久不卡影院| 欧美色网站导航| 国产一区二区视频在线播放| 亚洲视频中文字幕| 欧美一级一级性生活免费录像| 成人午夜av电影| 亚洲地区一二三色| 国产欧美日韩在线看| 欧美日韩国产综合视频在线观看| 国产精品自在欧美一区| 亚洲综合区在线| 久久久国际精品| 欧美主播一区二区三区美女| 国产乱色国产精品免费视频| 一区二区三区四区在线| 久久久激情视频| 欧美日本国产一区| 91香蕉视频在线| 国内成人精品2018免费看| 亚洲成人激情综合网| 日本一区二区三区国色天香| 欧美日韩成人在线| 91麻豆精品一区二区三区| 韩国在线一区二区| 五月天一区二区| 一区二区三区中文字幕电影| 久久嫩草精品久久久精品| 欧美日韩精品一区二区在线播放| zzijzzij亚洲日本少妇熟睡| 另类人妖一区二区av| 亚洲国产aⅴ成人精品无吗| 中文幕一区二区三区久久蜜桃| 欧美久久婷婷综合色| 97久久久精品综合88久久| 国产99久久久国产精品潘金| 免费一级片91| 婷婷六月综合亚洲| 三级欧美韩日大片在线看| 亚洲精品视频免费观看| 中文字幕一区在线观看视频| 久久精品亚洲麻豆av一区二区 | 欧美视频一区二区在线观看| 成人av网址在线| 国产精品一二三在| 精品一区二区三区蜜桃| 男女男精品网站| 免费成人在线网站| 日韩电影免费一区| 亚洲国产欧美日韩另类综合| 亚洲精品第1页| 亚洲男人的天堂在线观看| 国产精品第五页| 国产精品久线在线观看| 最近日韩中文字幕| 1区2区3区欧美| 一区二区三区色| 午夜精品久久久久久久| 日韩高清电影一区| 蜜臀91精品一区二区三区 | 91精品国产综合久久国产大片 | 亚洲成av人片| 亚洲v中文字幕| 美女网站色91| 精品一区二区国语对白| 国产在线一区观看| 国产91高潮流白浆在线麻豆| 成人av午夜电影| 欧美影院精品一区| 7777精品伊人久久久大香线蕉| 日韩情涩欧美日韩视频| 久久久影院官网| 亚洲卡通欧美制服中文| 天天色天天爱天天射综合| 久久99在线观看| 风间由美中文字幕在线看视频国产欧美| 成人一区二区三区中文字幕| 91久久国产最好的精华液| 欧美日韩aaa| 久久亚洲一区二区三区四区| 国产精品私人自拍| 亚洲h精品动漫在线观看| 精品亚洲成a人在线观看| 成人福利电影精品一区二区在线观看| 色婷婷一区二区三区四区| 7878成人国产在线观看| 久久久久久麻豆| 亚洲激情自拍偷拍| 麻豆91在线观看| 97se亚洲国产综合在线| 欧美一区永久视频免费观看| 亚洲高清视频的网址| 国模大尺度一区二区三区| av一区二区不卡| 日韩视频不卡中文| 中文字幕在线不卡一区二区三区| 天堂资源在线中文精品| 国产成人久久精品77777最新版本| 欧美伊人久久大香线蕉综合69| 精品999久久久| 亚洲国产一区二区a毛片| 国产麻豆欧美日韩一区| 精品视频免费在线| 中文字幕不卡在线| 免费国产亚洲视频| 91视频在线看| 国产欧美一区二区精品忘忧草 | 日韩精品五月天| 91在线免费播放| 国产亚洲欧美在线| 青青草国产成人99久久| 91久久精品一区二区二区| 国产欧美日韩久久| 看电影不卡的网站| 欧美图区在线视频| 亚洲色图欧美在线| 丰满白嫩尤物一区二区| 欧美成人欧美edvon| 日韩av成人高清| 欧美年轻男男videosbes| 亚洲女性喷水在线观看一区| 国产成人啪免费观看软件 | 久久精工是国产品牌吗| 欧美主播一区二区三区| 亚洲色图.com| 欧美一级黄色片| 亚洲午夜在线观看视频在线| 99精品1区2区| 综合欧美一区二区三区| 国产91富婆露脸刺激对白| 久久久99久久| 国产精品中文字幕一区二区三区| 欧美一级视频精品观看| 日韩和的一区二区| 欧美精品在线观看播放| 日本伊人色综合网| 日韩欧美卡一卡二| 久久精品国产色蜜蜜麻豆| 精品国产在天天线2019| 激情六月婷婷久久|