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

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

?? cminesweeper.cpp

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

//-----------------------------------constructor-------------------------
//
//-----------------------------------------------------------------------
CMinesweeper::CMinesweeper():
                             m_dRotation(RandFloat()*CParams::dTwoPi),
                             m_lTrack(0.16),
                             m_rTrack(0.16),
                             m_dFitness(CParams::dStartEnergy),
							               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, energy level and rotation
//
//----------------------------------------------------------------------
void CMinesweeper::Reset()
{
	//reset the sweepers positions
	m_vPosition = SVector2D((RandFloat() * CParams::WindowWidth), 
					                (RandFloat() * CParams::WindowHeight));
	
	//and the energy level
	m_dFitness = CParams::dStartEnergy;

  //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 signed angle to the closest mine
//
//	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);
  
  //calculate dot product of the look at vector and Closest mine
  //vector. This will give us the angle we need turn to face
  //the closest mine
  double dot = Vec2DDot(m_vLookAt, vClosestMine);

  //calculate sign
  int sign   = Vec2DSign(m_vLookAt, vClosestMine);

  inputs.push_back(dot*sign);

  
	//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;
}

		

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91麻豆精品国产91久久久更新时间| 亚洲欧美日韩人成在线播放| 91精品国产综合久久久蜜臀图片| 色94色欧美sute亚洲线路一久| 成a人片国产精品| 成人久久18免费网站麻豆 | 国产精品视频麻豆| 久久精品一区二区| 久久精品一区二区三区四区| 国产嫩草影院久久久久| 国产精品天天看| 亚洲视频在线观看一区| 国产精品三级电影| 亚洲婷婷综合色高清在线| 亚洲日穴在线视频| 亚洲高清三级视频| 老鸭窝一区二区久久精品| 久久99久久久欧美国产| 国产精品综合二区| 成人毛片在线观看| 在线免费观看日本欧美| 精品污污网站免费看| 欧美精品 日韩| 日韩女优视频免费观看| 国产偷国产偷亚洲高清人白洁| 中文字幕电影一区| 亚洲日本在线看| 五月激情综合色| 国产美女主播视频一区| www..com久久爱| 欧洲精品中文字幕| 精品美女在线播放| 亚洲欧洲日产国码二区| 亚洲国产成人av| 久久国产精品色| caoporn国产一区二区| 在线区一区二视频| 2021久久国产精品不只是精品| 国产精品久久久一区麻豆最新章节| 亚洲女厕所小便bbb| 午夜精品久久一牛影视| 国产精品亚洲午夜一区二区三区 | 国产主播一区二区三区| 国产精品一区二区久久不卡| jizzjizzjizz欧美| 欧美精品欧美精品系列| 久久久青草青青国产亚洲免观| 亚洲特黄一级片| 蜜乳av一区二区| 97se亚洲国产综合自在线观| 欧美老肥妇做.爰bbww视频| 国产婷婷一区二区| 首页综合国产亚洲丝袜| 成人国产视频在线观看| 欧美一区二区免费| 亚洲天堂2014| 国内成人自拍视频| 欧美三级电影网| 国产精品福利电影一区二区三区四区| 五月激情综合婷婷| 99国产精品久久久久| 欧美一区二区三区男人的天堂| 国产精品久久久久桃色tv| 日韩精品每日更新| 在线欧美小视频| 中文字幕av一区二区三区高| 五月天一区二区| 91毛片在线观看| 久久日一线二线三线suv| 亚洲6080在线| 91小视频在线观看| 久久精品一区四区| 久久精品99国产精品| 欧美日韩在线播放三区| 最新中文字幕一区二区三区| 激情伊人五月天久久综合| 欧美视频一区在线| 亚洲蜜桃精久久久久久久| 国产一区不卡在线| 精品对白一区国产伦| 日韩成人一级片| 欧美色电影在线| 一区二区三区在线观看视频| 风流少妇一区二区| 26uuu国产在线精品一区二区| 日韩中文字幕区一区有砖一区| 99综合影院在线| 亚洲国产精品av| 国产成人欧美日韩在线电影| 日韩免费观看2025年上映的电影| 亚洲成人资源网| 欧美视频第二页| 一区二区三区免费看视频| 99久久婷婷国产综合精品电影| 久久午夜色播影院免费高清| 九色|91porny| 精品动漫一区二区三区在线观看| 青娱乐精品在线视频| 6080日韩午夜伦伦午夜伦| 午夜精品福利一区二区三区av| 欧美视频一区在线| 亚洲电影一区二区| 欧美欧美欧美欧美| 日精品一区二区三区| 91精品国产综合久久久久久| 天天操天天综合网| 91精品国产综合久久精品性色| 午夜精品国产更新| 欧美一区2区视频在线观看| 日韩二区在线观看| 精品国产免费一区二区三区香蕉 | 欧美日韩性生活| 亚洲一区在线观看免费 | 在线成人av影院| 天天综合日日夜夜精品| 日韩一区二区高清| 激情综合网av| 国产精品私房写真福利视频| www.久久精品| 亚洲国产精品一区二区久久恐怖片 | 国产精品私人影院| 91丨九色丨国产丨porny| 亚洲女爱视频在线| 3atv一区二区三区| 精品一区二区三区香蕉蜜桃| 日本一区二区三区视频视频| 91在线国产福利| 亚洲成人免费av| 日韩精品一区二区三区视频| 国产美女在线观看一区| 亚洲天堂网中文字| 欧美一区二区三区爱爱| 国产麻豆午夜三级精品| 中文字幕巨乱亚洲| 欧美揉bbbbb揉bbbbb| 精品无人区卡一卡二卡三乱码免费卡 | 亚洲不卡一区二区三区| 亚洲欧美色综合| 一区二区三区在线视频免费 | 蓝色福利精品导航| 欧美精品一区二区三区在线| 亚洲第一激情av| 紧缚奴在线一区二区三区| 蜜桃一区二区三区四区| 亚洲国产另类av| 奇米精品一区二区三区四区| 亚洲国产精品一区二区www在线| 国产精品热久久久久夜色精品三区 | 首页欧美精品中文字幕| 亚洲男人的天堂在线观看| 亚洲人成小说网站色在线| 国产欧美视频在线观看| 国产亚洲1区2区3区| 欧美国产精品v| 一片黄亚洲嫩模| 天天色综合成人网| 国产精品亚洲一区二区三区妖精| 国产麻豆91精品| 色综合视频一区二区三区高清| eeuss影院一区二区三区| 在线视频国产一区| 日本不卡一区二区三区| 欧美四级电影网| 69堂亚洲精品首页| 欧美大片在线观看| 美女视频免费一区| 成人精品国产福利| 日韩欧美国产综合| 亚洲免费视频成人| 成人听书哪个软件好| 成人黄页毛片网站| 精品粉嫩超白一线天av| 亚洲成人综合在线| www.欧美亚洲| 国产午夜一区二区三区| 欧美精品一区二区三区蜜臀| 精品国产a毛片| 婷婷综合五月天| 99麻豆久久久国产精品免费 | 久久女同互慰一区二区三区| 99精品国产91久久久久久| 色综合久久88色综合天天 | 欧美日韩性生活| 成人国产精品视频| 韩国一区二区三区| 免费一级欧美片在线观看| 亚洲三级免费电影| 国产精品福利一区| 国产丝袜美腿一区二区三区| 日韩欧美在线网站| 久久99精品国产.久久久久久| 欧美三级韩国三级日本一级| 国产精品女同一区二区三区| 天天综合日日夜夜精品| 波多野结衣一区二区三区| 亚洲乱码国产乱码精品精的特点| 狠狠色丁香久久婷婷综| 日韩美女在线视频| 老司机精品视频一区二区三区| 久久这里只有精品6|