Exemplo n.º 1
0
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
Exemplo n.º 2
0
    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)
Exemplo n.º 3
0
    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)
Exemplo n.º 4
0
 def effect(self, player: BasePlayer, target: BasePlayer):
     player.skip()
Exemplo n.º 5
0
 def effect(self, player: BasePlayer, target: BasePlayer):
     player.skip()
     target.take_turn_twice(self)
Exemplo n.º 6
0
 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()
Exemplo n.º 8
0
 def __init__(self, parent_game, position, player_descriptor):
     BasePlayer.__init__(self, parent_game, position, player_descriptor)
     self.go = False
     self.target_position = (0,0)