Beispiel #1
0
def main():
    """initiate tiles, survival, clock and start music and run main loop"""
    Tile.create()
    survivor = Survivor(*Tile.random_open_tile())
    clock = pygame.time.Clock()
    logging.debug("options: %s", Options.__dict__)
    logging.debug("monitor: w=%s, h=%s", Options.monitor_w, Options.monitor_h)
    pygame.mixer.music.play(loops=-1)
    main_loop(survivor, clock)
    game_over(display, Zombie.level)
Beispiel #2
0
def get_best_action_for_board_state(board, tiles_in_play):

    best_placement = Placement()
    for tile_type in shuffle(get_my_unplayed_tile_types(board)):
        valid_placement_positions = shuffle(
            board.get_valid_placements_for_tile(tile_type))

        for placement_position in valid_placement_positions:
            new_tile = Tile.create(tile_type, board.get_me())
            new_tile.set_position(placement_position, FakeBoard(tiles_in_play))

            potential_new_tiles = tiles_in_play + [new_tile]
            potential_new_tiles_score = score_tile_state(
                potential_new_tiles, board)

            placement = Placement(tile_type, placement_position,
                                  potential_new_tiles_score)
            if placement.score > best_placement.score:
                best_placement = placement

    best_movement = Movement()
    for tile in shuffle(board.get_my_played_tiles()):
        valid_movement_positions = shuffle(
            board.get_valid_movements_for_tile(tile))

        for movement_position in valid_movement_positions:
            tiles_in_play.remove(tile)

            new_tile = Tile.create(tile.type, board.get_me())
            new_tile.set_position(movement_position, FakeBoard(tiles_in_play))

            potential_new_tiles = tiles_in_play + [new_tile]
            potential_new_tiles_score = score_tile_state(
                potential_new_tiles, board)

            movement = Movement(tile, movement_position,
                                potential_new_tiles_score)
            if movement.score > best_movement.score:
                best_movement = movement

            # Little bit of a hack - move any potential beetles off other tiles
            new_tile.set_position(Position([1000, 1000]),
                                  FakeBoard(tiles_in_play))
            tiles_in_play.append(tile)

    if best_placement.score > 0 and best_placement.score > best_movement.score:
        return best_placement
    elif best_movement.score > 0:
        return best_movement

    return None
Beispiel #3
0
def get_best_action_for_board_state( board, tiles_in_play ):

	best_placement = Placement()
	for tile_type in shuffle( get_my_unplayed_tile_types( board ) ):
		valid_placement_positions = shuffle( board.get_valid_placements_for_tile( tile_type ) )

		for placement_position in valid_placement_positions:
			new_tile = Tile.create( tile_type, board.get_me() )
			new_tile.set_position( placement_position, FakeBoard( tiles_in_play ) )

			potential_new_tiles = tiles_in_play + [ new_tile ]
			potential_new_tiles_score = score_tile_state( potential_new_tiles, board )

			placement = Placement( tile_type, placement_position, potential_new_tiles_score )
			if placement.score > best_placement.score:
				best_placement = placement

	best_movement = Movement()
	for tile in shuffle( board.get_my_played_tiles() ):
		valid_movement_positions = shuffle( board.get_valid_movements_for_tile( tile ) )

		for movement_position in valid_movement_positions:
			tiles_in_play.remove( tile )

			new_tile = Tile.create( tile.type, board.get_me() )
			new_tile.set_position( movement_position, FakeBoard( tiles_in_play ) )

			potential_new_tiles = tiles_in_play + [ new_tile ]
			potential_new_tiles_score = score_tile_state( potential_new_tiles, board )

			movement = Movement( tile, movement_position, potential_new_tiles_score )
			if movement.score > best_movement.score:
				best_movement = movement

			# Little bit of a hack - move any potential beetles off other tiles
			new_tile.set_position( Position( [ 1000, 1000 ] ), FakeBoard( tiles_in_play ) )
			tiles_in_play.append( tile )

	if best_placement.score > 0 and best_placement.score > best_movement.score:
		return best_placement
	elif best_movement.score > 0:
		return best_movement

	return None
Beispiel #4
0
 def setUpClass():
     Tile.create()
Beispiel #5
0
        return int(self.pos.x // Tile.length +
                   self.pos.y // Tile.length * Options.tiles_x)

    def get_tile(self):
        """Return the tile on which self is"""
        return Tile.instances[self.get_number()]


def get_number(pos):
    """Return the index in Tile.instances of the tile pos is on
    :param pos: a container with two items
    >>> get_number([0, 0])
    0"""
    x, y = pos
    return x // Tile.length + y // Tile.length * Options.tiles_x


if __name__ == "__main__":
    import doctest
    doctest.testmod()
    from timeit import timeit
    setup = """
from __main__ import BaseClass, get_number, Tile
Tile.create()
a = BaseClass(45, 91)
b = BaseClass(45, 90)
Options = Tile.instances[34]
"""
    print(timeit("a.collide(b)", setup=setup))
Beispiel #6
0
    @classmethod
    def update(cls, screen, survivor, total_frames):
        if cls.left_round:
            try:
                if total_frames % ((Options.fps * cls.zombie_init_round * 2) //
                                   cls.init_round) == 0:
                    cls.spawn(survivor)
            except ZeroDivisionError:
                if total_frames % Options.fps * 10 == 0:
                    cls.spawn(survivor)
        del_pick_up = set()
        for pick_up in cls.instances:
            screen.blit(cls.images[pick_up.type], pick_up.pos.as_ints())
            if collide(*pick_up.pos, *pick_up._size, *survivor.pos,
                       *survivor._size):
                setattr(survivor, pick_up.type,
                        getattr(survivor, pick_up.type) + pick_up.incr)
                cls.sounds[pick_up.type].play()
                cls.spawn_tiles.append(pick_up.spawn_tile)
                del_pick_up.add(pick_up)
                del pick_up

        cls.instances -= del_pick_up


if __name__ == "__main__":
    Tile.create()
    import doctest
    doctest.testmod()
Beispiel #7
0
	def __init__( self, player_number, ai_file ):
		self.__player_number = player_number
                self.__turn_number = 0

		self.__ai_perform_move = imp.load_source( "", ai_file ).perform_move
		self.__ai_file = ai_file
		assert self.__ai_perform_move is not None

		self.tiles = [
			Tile.create( TileType.bee, self ),

			Tile.create( TileType.beetle, self ),
			Tile.create( TileType.beetle, self ),

			Tile.create( TileType.spider, self ),
			Tile.create( TileType.spider, self ),

			Tile.create( TileType.ant, self ),
			Tile.create( TileType.ant, self ),
			Tile.create( TileType.ant, self ),

			Tile.create( TileType.grass_hopper, self ),
			Tile.create( TileType.grass_hopper, self ),
			Tile.create( TileType.grass_hopper, self ),
		]