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

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

?? cminesweeper.cpp

?? 開發(fā)游戲人工智能的王道書
?? CPP
字號:
#include "CMinesweeper.h"

//-----------------------------------constructor-------------------------
//
//-----------------------------------------------------------------------
CMinesweeper::CMinesweeper():
                             m_dRotation(RandFloat()*CParams::dTwoPi),
                             m_lTrack(0.16),
                             m_rTrack(0.16),
                             m_dFitness(0),
							               m_dScale(CParams::iSweeperScale),
                             m_iClosestMine(0)
			 
{
	//create a random start position
	m_vPosition = SVector2D((RandFloat() * CParams::WindowWidth), 
					                (RandFloat() * CParams::WindowHeight));
  
}

//-------------------------------------------Reset()--------------------
//
//	Resets the sweepers position, fitness and rotation
//
//----------------------------------------------------------------------
void CMinesweeper::Reset()
{
	//reset the sweepers positions
	m_vPosition = SVector2D((RandFloat() * CParams::WindowWidth), 
					                (RandFloat() * CParams::WindowHeight));
	
	//and the fitness
	m_dFitness = 0;

  //and the rotation
  m_dRotation = RandFloat()*CParams::dTwoPi;

	return;
}
//---------------------WorldTransform--------------------------------
//
//	sets up a translation matrix for the sweeper according to its
//  scale, rotation and position. Returns the transformed vertices.
//-------------------------------------------------------------------
void CMinesweeper::WorldTransform(vector<SPoint> &sweeper)
{
	//create the world transformation matrix
	C2DMatrix matTransform;
	
	//scale
	matTransform.Scale(m_dScale, m_dScale);
	
	//rotate
	matTransform.Rotate(m_dRotation);
	
	//and translate
	matTransform.Translate(m_vPosition.x, m_vPosition.y);
	
	//now transform the ships vertices
	matTransform.TransformSPoints(sweeper);
}

//-------------------------------Update()--------------------------------
//
//	First we take sensor readings and feed these into the sweepers brain.
//
//	The inputs are:
//	
//	A vector to the closest mine (x, y)
//	The sweepers 'look at' vector (x, y)
//
//	We receive two outputs from the brain.. lTrack & rTrack.
//	So given a force for each track we calculate the resultant rotation 
//	and acceleration and apply to current velocity vector.
//
//-----------------------------------------------------------------------
bool CMinesweeper::Update(vector<SVector2D> &mines)
{
	
	//this will store all the inputs for the NN
	vector<double> inputs;	

	//get vector to closest mine
	SVector2D vClosestMine = GetClosestMine(mines);
  
	//normalise it
  Vec2DNormalize(vClosestMine);
  
  //add in vector to closest mine
	inputs.push_back(vClosestMine.x);
	inputs.push_back(vClosestMine.y);

	//add in sweepers look at vector
	inputs.push_back(m_vLookAt.x);
	inputs.push_back(m_vLookAt.y);

  
	//update the brain and get feedback
	vector<double> output = m_ItsBrain.Update(inputs);

	//make sure there were no errors in calculating the 
	//output
	if (output.size() < CParams::iNumOutputs) 
  {
    return false;
  }

	//assign the outputs to the sweepers left & right tracks
	m_lTrack = output[0];
	m_rTrack = output[1];

	//calculate steering forces
	double RotForce = m_lTrack - m_rTrack;

	//clamp rotation
	Clamp(RotForce, -CParams::dMaxTurnRate, CParams::dMaxTurnRate);

  m_dRotation += RotForce;
	
	m_dSpeed = (m_lTrack + m_rTrack);	

	//update Look At 
	m_vLookAt.x = -sin(m_dRotation);
	m_vLookAt.y = cos(m_dRotation);

	//update position
  m_vPosition += (m_vLookAt * m_dSpeed);

	//wrap around window limits
	if (m_vPosition.x > CParams::WindowWidth) m_vPosition.x = 0;
	if (m_vPosition.x < 0) m_vPosition.x = CParams::WindowWidth;
	if (m_vPosition.y > CParams::WindowHeight) m_vPosition.y = 0;
	if (m_vPosition.y < 0) m_vPosition.y = CParams::WindowHeight;

	return true;
}


//----------------------GetClosestObject()---------------------------------
//
//	returns the vector from the sweeper to the closest mine
//
//-----------------------------------------------------------------------
SVector2D CMinesweeper::GetClosestMine(vector<SVector2D> &mines)
{
	double			closest_so_far = 99999;

	SVector2D		vClosestObject(0, 0);

	//cycle through mines to find closest
	for (int i=0; i<mines.size(); i++)
	{
		double len_to_object = Vec2DLength(mines[i] - m_vPosition);

		if (len_to_object < closest_so_far)
		{
			closest_so_far	= len_to_object;
			
			vClosestObject	= m_vPosition - mines[i];

      m_iClosestMine = i;
		}
	}

	return vClosestObject;
}
//----------------------------- CheckForMine -----------------------------
//
//  this function checks for collision with its closest mine (calculated
//  earlier and stored in m_iClosestMine)
//-----------------------------------------------------------------------
int CMinesweeper::CheckForMine(vector<SVector2D> &mines, double size)
{
  SVector2D DistToObject = m_vPosition - mines[m_iClosestMine];
		
	if (Vec2DLength(DistToObject) < (size + 5))
	{
			return m_iClosestMine;
  }

  return -1;
}

		

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
94色蜜桃网一区二区三区| 在线观看91精品国产入口| 成人免费黄色在线| 一本久久a久久精品亚洲| 欧美日韩在线一区二区| 日韩视频免费直播| 欧美激情自拍偷拍| 亚洲第一狼人社区| 国内国产精品久久| 91色婷婷久久久久合中文| 色网综合在线观看| 日韩欧美123| 亚洲视频在线一区二区| 日韩精品久久久久久| 国产精品2024| 欧美色网一区二区| 国产亚洲精品资源在线26u| 亚洲最色的网站| 国产精品一区不卡| 91精品国产综合久久国产大片| 久久久久青草大香线综合精品| 一区二区三区中文免费| 精品在线一区二区| 欧美亚洲另类激情小说| 国产偷v国产偷v亚洲高清| 亚洲福利视频导航| av欧美精品.com| 精品国产一区二区三区久久影院| 一区二区欧美国产| 成人激情校园春色| 精品福利av导航| 亚洲成人激情综合网| 菠萝蜜视频在线观看一区| 日韩美女视频一区二区在线观看| 亚洲精品亚洲人成人网在线播放| 日韩精品一区二区三区swag | 在线不卡免费av| 国产精品久久久久久久久图文区 | 久久国产精品99久久人人澡| 另类欧美日韩国产在线| 91小视频免费观看| 国产欧美一区二区在线观看| 中文字幕在线观看一区二区| 久久精品国产一区二区| 91日韩精品一区| 亚洲欧美aⅴ...| 国产激情视频一区二区在线观看| 欧美国产一区二区| 成人激情小说乱人伦| 精品欧美乱码久久久久久1区2区| 1024亚洲合集| 偷窥国产亚洲免费视频| 成人激情av网| 国产欧美一区二区三区在线看蜜臀| 日本韩国精品在线| 国产白丝网站精品污在线入口| 久久99热国产| 欧美久久久久久久久中文字幕| 久久久噜噜噜久久人人看| 亚洲bt欧美bt精品| 色吧成人激情小说| 亚洲欧美激情在线| 国产高清久久久久| 久久久久久久综合狠狠综合| 日本在线不卡视频| 欧美一级xxx| 午夜久久久影院| 欧美三区免费完整视频在线观看| 一区二区三区欧美| 97se亚洲国产综合在线| 亚洲免费观看高清完整| av网站免费线看精品| 亚洲色图一区二区| 99精品久久99久久久久| 亚洲欧洲精品一区二区三区| 国产乱理伦片在线观看夜一区| 久久久影视传媒| 国产一区二区成人久久免费影院| 久久视频一区二区| 国产精品羞羞答答xxdd| 亚洲精品一区二区精华| 国产精品18久久久久久久网站| 久久午夜免费电影| 大胆欧美人体老妇| 国产精品久久久久久久蜜臀| 国产一区二区三区免费在线观看| 日韩美女视频在线| 日韩专区在线视频| 日韩欧美一区二区视频| 精品制服美女久久| 国产欧美日韩精品一区| 成人爽a毛片一区二区免费| 一区视频在线播放| 色琪琪一区二区三区亚洲区| 亚洲高清视频的网址| 在线91免费看| 国模套图日韩精品一区二区| 久久精品一区二区三区四区| 99久久精品国产观看| 亚洲精品水蜜桃| 91麻豆精品国产91| 精品无人区卡一卡二卡三乱码免费卡| 久久综合五月天婷婷伊人| 国产成人综合自拍| 中文字幕第一区第二区| 99久久免费精品| 亚洲精品视频一区| 欧美一区二区女人| 国产精华液一区二区三区| 亚洲天堂福利av| 欧美日韩电影一区| 国产乱人伦精品一区二区在线观看| 日本一区二区三区久久久久久久久不| 91麻豆swag| 三级久久三级久久久| 久久久亚洲高清| 色先锋aa成人| 国内精品久久久久影院色| 中文在线一区二区| 欧美精品久久久久久久多人混战 | 偷窥国产亚洲免费视频 | 国产在线日韩欧美| 亚洲欧洲日产国码二区| 欧美绝品在线观看成人午夜影视| 久久国产人妖系列| 亚洲色图清纯唯美| 欧美一区二区三区在线视频| 岛国一区二区三区| 亚洲国产精品久久久久婷婷884 | 国产色一区二区| 91美女在线视频| 日一区二区三区| 欧美变态tickle挠乳网站| 91色乱码一区二区三区| 热久久一区二区| 一区二区三区四区中文字幕| 日韩一级免费观看| 一本大道久久精品懂色aⅴ | 精品成a人在线观看| 91年精品国产| 久久91精品国产91久久小草| 亚洲精品高清在线| 精品日韩欧美一区二区| 91免费在线看| 国产精品一区二区三区四区| 亚洲国产一区在线观看| 国产精品麻豆欧美日韩ww| 欧美一区二区三区婷婷月色| 91国偷自产一区二区开放时间| 狠狠色丁香久久婷婷综| 五月婷婷激情综合网| 亚洲国产成人自拍| 精品日韩一区二区| 欧亚一区二区三区| 99国产精品一区| 国产美女一区二区三区| 蜜乳av一区二区三区| 亚洲桃色在线一区| 中文字幕欧美区| 欧美丰满嫩嫩电影| 在线看日本不卡| 国产一区二区三区免费在线观看| 亚洲成av人片在线观看| 亚洲欧洲日产国码二区| 国产精品情趣视频| www一区二区| 2023国产精品视频| 91精品啪在线观看国产60岁| 欧美调教femdomvk| 97se亚洲国产综合自在线不卡 | 亚洲妇熟xx妇色黄| 欧美性xxxxxxxx| 国产精品一区二区久久不卡| 精品久久五月天| 国产裸体歌舞团一区二区| 精品国产不卡一区二区三区| 五月婷婷综合在线| 欧美刺激午夜性久久久久久久| 精品在线亚洲视频| 中文字幕一区二| 精品国产网站在线观看| 狠狠狠色丁香婷婷综合久久五月| 日韩欧美国产电影| 91国模大尺度私拍在线视频| 亚洲精品第1页| 成人激情小说网站| 亚洲欧洲成人精品av97| 成人一区二区三区视频 | 粉嫩一区二区三区在线看| 精品av综合导航| 激情综合网av| 一区免费观看视频| 欧美日韩精品电影| 亚洲综合激情小说| 欧美一区二区大片| 97久久人人超碰| 天堂资源在线中文精品| 久久在线观看免费| 国产美女主播视频一区| 国产色婷婷亚洲99精品小说|