def fitness_player_one(dna): player_list = [ SmartInvestor('A', dna), BasePlayer('B'), BasePlayer('C'), BasePlayer('D') ] master_results = {p.id: 0 for p in player_list} for _ in range(num_games_to_run): game = Game(players=copy.deepcopy(player_list)) results = game.run() collect_results(results, master_results) return master_results['A'] / num_games_to_run * 100
def render(self): screen = pygame.display.get_surface() p = self.parent_game.camera.field_to_screen(self.target_position) #overall_target_position) p = (int(p[0]),int(p[1])) pygame.draw.circle(screen, (255,0,0), p, self.collision_size) target_angle = math.degrees(math.atan2(self.position[1]-self.target_position[1], -(self.position[0]-self.target_position[0]))) dy = self.position[1] - math.sin(math.radians(target_angle)) * 100 dx = self.position[0] + math.cos(math.radians(target_angle)) * 100 pygame.draw.line(screen, (0,255,100), self.parent_game.camera.field_to_screen(self.position), self.parent_game.camera.field_to_screen((dx,dy)), 2) BasePlayer.render(self)
def _update(self, elapsed): if utils.geometry.distance(self.position, self.overall_target_position) < 2*self.collision_size: self.set_overall_target() if utils.geometry.distance(self.position, self.target_position) < 1*self.collision_size: self.set_mini_target() target_angle = math.degrees(math.atan2(self.position[1]-self.target_position[1], -(self.position[0]-self.target_position[0]))) target_angle = target_angle%360 if self.body_angle < target_angle: temp1 = self.body_angle + 360 - target_angle else: temp1 = self.body_angle - target_angle if temp1 > 65: self.go = False elif temp1 < 15: self.go = True self.move(elapsed, PLAYER_DEF.D_FORWARD*self.go) if temp1 < 2: pass elif temp1 <= 180: self.turn_body(elapsed, PLAYER_DEF.D_CW) else: self.turn_body(elapsed, PLAYER_DEF.D_CCW) chance = random.randint(0,100) if not chance: self.shoot() if random.randint(0,1000) == 1: self.place_mine() BasePlayer._update(self, elapsed)
def effect(self, player: BasePlayer, target: BasePlayer): player.skip()
def effect(self, player: BasePlayer, target: BasePlayer): player.skip() target.take_turn_twice(self)
def effect(self, player: BasePlayer, target: BasePlayer): position = player.insert_explode() self.deck.add_single(ExplodeCard(), position=position)
def effect(self, player: BasePlayer, target: BasePlayer, game: Game): player.skip()
def __init__(self, parent_game, position, player_descriptor): BasePlayer.__init__(self, parent_game, position, player_descriptor) self.go = False self.target_position = (0,0)