예제 #1
0
	def update(self):
	
		self.steering = self.mintrunc(self.steering + self.avoidance, MAXFOR)
		self.steering = self.steering / self.mass
		self.velocity = self.maxtrunc(self.velocity + self.steering, MAXSPD)
		
		self.position = self.position + self.velocity
	
		if(self.position.x < 0):self.position.x = kd.sp['width']
		if(self.position.x > kd.sp['width']):self.position.x = 0
		if(self.position.y < 0):self.position.y = kd.sp['height'] 
		if(self.position.y > kd.sp['height']):self.position.y = 0
		
		PKFW.spmo(self.sprite,self.position.x, self.position.y)
예제 #2
0
	def LevelGridDraw(self):
		for x in range(len(self.levelTiles)):
			for y in range(len(self.levelTiles[x])):
				if(self.levelTiles[x][y].Sid != -1):
					PKFW.spmo(self.levelTiles[x][y].Sid,self.levelTiles[x][y].pos.x, self.levelTiles[x][y].pos.y )
					PKFW.spdr(self.levelTiles[x][y].Sid)	
		
		for i in range(len(self.wanderers)):
			self.wanderers[i].obstacleAvoid(walls)
			self.wanderers[i].update()
			self.wanderers[i].draw()
			if(math.isnan(self.wanderers[i].position.x) or math.isnan(self.wanderers[i].position.y)):
				# on rare occasions the boid position and steering becomes NAN due to being too close to too many 
				# walls... I am not sure why this is happening and have implemented a half fix which just
				# re initialises the boid if this happens
				self.wanderers[i] = ai.boid(kd.sp['width']*0.5, kd.sp['height']*0.5, 64, sprites[5])
		
		if(self.flock is not None):
			self.flock.update()