def __init__(self, level_name, player, static_world_components, dynamic_world_components, background=None, level_size=None, camera_type=None): if level_size == None: level_size = background.size self.background = background self.size = level_size self.name = level_name # a dictionary with all image related game components self.player = player self.characters = [ ] # starts empty; is filled by npc, and the player(s) self.npc = pygame.sprite.Group() self.static_components = static_world_components # image parts (e.g. background, ground) self.dynamic_components = dynamic_world_components # image parts (e.g. swings, moving objects, bullets) self.components = [] + self.static_components + self.dynamic_components # redundant list; fast requesting component self.add_character(player) # build the static game world self.image, self.rect = self.build_background( level_size, background=background, static_components=self.static_components) if camera_type is not None: self.camera = Camera(camera_type, player.rect, level_size) # the screen view # todo: decide on who should hold the camera graphics_handler.set_camera( self.camera ) # makes it possible to blit directly to the graphics handler else: self.camera = None self.freeze = False # freezes all updates to components if INFO: print("[LV] image '{}' loaded".format(level_name)) self.killed_monster = 0
scene = loading.load("test_map03") chest = objects.getObjectsOfType(Chest)[0] chest._items = [Item("Potion"), Item("Potion"), Item("Book")] animTile = GameObject(z = 10, position = Vector2(0, 50)) animTile.sprite = sprite2.loadSpriteAnimation("player_idle") animTile.play("player_idle") _player = objects.getObjectsOfType(player.Player)[0] _player.sprite = sprite2.loadSpriteAnimation("eggy") _player.play("eggy") ##### camera = Camera(15) camera.setTarget(player.getPlayer()) fps_delay = 60 #Show fps every second fps_delta = 0 while True: inputcontrol.evaluate(pygame.event.get()) physics.solve(objects.getObjectsOfType(Entity)) camera.render(gameScreen) ui.render(gameScreen) scaled_display = pygame.transform.scale(gameScreen, (SCREENWIDTH * SCALEFACTOR, SCREENHEIGHT * SCALEFACTOR)) display.blit(scaled_display, (0, 0)) pygame.display.update() clock.tick(60)
from pygame.locals import * from pygame import * from graphics import Camera from pygame.math import Vector2 from gameobject import GameObject pygame.init() display = pygame.display.set_mode((SCREENWIDTH, SCREENHEIGHT)) pygame.display.set_caption("Ultimate Pong") clock = pygame.time.Clock() fps_delay = 60 fps_delta = 0 camera = Camera() background = GameObject(position=Vector2(0, 0), scale=Vector2(SCREENWIDTH, SCREENHEIGHT)) background.colorize(pygame.Color(255, 255, 255)) ball = GameObject(position=Vector2(40, 40)) ball.colorize(pygame.Color(255, 0, 0)) while True: #TODO: Move inputs into a custom class and handle with single function call for event in pygame.event.get(): if event.type == QUIT: print("Closing game...") pygame.quit() sys.exit(0)