예제 #1
0
    def new(self):
        # start a new game
        self.all_sprites = pg.sprite.Group()
        self.tilesize = TILESIZE
        # the offset moves the camera over the board
        self.offset = BOARD_CENTER
        self.tilemap = Tilemap(self)
        self.camera = Camera(self)
        for building in self.tilemap.players[
                self.tilemap.current_player]["buildings"]:
            self.camera.apply_camera(self, building.pos)
        # self.last_time = 0
        self.mx0, self.my0, self.mx1, self.my1 = 0, 0, 0, 0
        self.mouse_pos = []
        self.enable_ui = True
        self.show_path = False
        self.tooltips = True
        self.camera_counter = 0

        # self.offset[0] = self.tilemap.unit.pos[1] * 64 - 8*64-32
        # self.offset[1] = self.tilemap.unit.pos[0] * 64 - 6*64-32
        # self.camera = Camera(self, self.tilemap.unit.pos)
        # self.offset[0] = self.camera.camera_x
        # self.offset[1] = self.camera.camera_y
        self.clicked = False
        self.right_click = False
        self.run()
예제 #2
0
def run_game():
    """Main entry point for Py-Climber"""

    # Startup pygame object
    pygame.init()

    random.seed()

    # Load our settings object and image resources, disk I/O that can be done in advance
    settings = Settings()
    image_res = ImageResources(settings)

    # Create the main screen to render to based on settings
    screen = pygame.display.set_mode((settings.screen_width, settings.screen_height))
    pygame.display.set_caption(settings.caption)
    
    # Create a 2D tilemap - this takes a list of indices and an image list to produce a tiled surface
    tile_map = Tilemap(settings, screen, settings.map_indicies, image_res.tile_images, image_res.block_image)

    # Overwrite default indices with generated map 
    tile_map.generate_basic_map(settings.map_number_floors , settings.map_number_subfloors)

    # Create player
    player = Player(settings, screen, image_res.player_sprite_images, tile_map)

    # Create an enemies list
    enemies = []

    # Reset the game
    gf.reset_game(settings, image_res, screen, player, tile_map, enemies)

    # Use pygame's simple loop management for a fixed 30 FPS
    clock = pygame.time.Clock()
    new_enemy_counter = 0
    while True:
        # Should make sure each frame spends at least 1/30 seconds in this loop
        # downside is wasted sleep on fast hardware and slow hardware will lag
        # but slow hardware will always lag and implementing a time-delta based
        # loop for this simple game is IMHO overkill.
        clock.tick(30)

        # Process system events (key-presses, joystick, etc)
        gf.check_events(settings, screen, image_res, player, tile_map, enemies)

        # Update the game (this will update all sub-object and render them to the screen)
        gf.update_screen(settings, screen, image_res, tile_map, player, enemies)

        if player.reset_game:
            gf.reset_game(settings, image_res, screen, player, tile_map, enemies)

        new_enemy_counter += 1
        if new_enemy_counter >= settings.enemy_generation_rate:
            new_enemy_counter = 0
            gf.generate_new_random_blob(settings, screen, image_res.enemy_blob_images, tile_map, enemies)
예제 #3
0
파일: Room.py 프로젝트: C3RV1/DarkProject
    def __init__(self,
                 room_map,
                 tileset,
                 objects=[],
                 camera=None,
                 connections=[None, None, None, None]):
        # type: (list, str, list, Camera, list) -> None
        self.tilemap = Tilemap.Tilemap(tileset,
                                       map_size=(len(room_map),
                                                 len(room_map[0])))
        self.room_map = room_map
        self.size = [len(room_map), len(room_map[0])]

        self.objects = objects  # Objects in the room
        self.camera = camera  # Camera (we have to draw relative to it)
        self.connections = connections  # Connections (used when the player changes the screen he is in)

        self.light_map = None
        self.temp_light_map = None

        self.display_surface = None

        self.collisions = []
예제 #4
0
    def __init__(self, display):
        super(PlayScene, self).__init__(display)
        display.clear()
        self.log_messages = []
        self.tilemap = Tilemap()
        self.draw_frame(display)
        self.camera = Camera(35, 15, self.tilemap.width, self.tilemap.height)

        self.draw_view(display)

        self.player = Player(self.camera.half_width, self.camera.half_height)
        self.player_id = 0
        self.entities = self.tilemap.entities
        self.entities.append(self.player)
        rod = FishingRod()
        (rod.x, rod.y) = (10, 15)
        axe = Axe()
        (axe.x, axe.y) = (28, 5)
        self.entities.insert(0, rod)
        self.entities.insert(0, axe)
        self.draw_entities(display)
        self.draw_inventory(display)
        display.flush()