def main(): # Determine assets sprite_asset, bullet_sound_asset = DetermineAssets() # Load sprite assets IMAGESDICT, animObjs = LoadSpriteAssets(sprite_asset) # Main game surface DISPLAYSURF = pygame.display.set_mode((SCREEN_X, SCREEN_Y)) #Make the screen # Colors BLACK = (0,0,0) # Calculate starting position of player startX, startY = SCREEN_X/2 - LEN_SPRT_X, SCREEN_Y - LEN_SPRT_Y # Hold info on keys pressed, held, released keyinput = Input() # Initialize gamemap and Player player = Player(IMAGESDICT, animObjs, bullet_sound_asset) player.rect.topleft = startX, 0 # Create map sprite group environment = pygame.sprite.Group() # Open and parse map file parseMap(IMAGESDICT, environment) # Sprite group allsprites = pygame.sprite.RenderPlain(player) # Start game loop while True: # Clear key info keyinput.clearKeys() # Draw screen black DISPLAYSURF.fill(BLACK) # Check for game events for event in pygame.event.get(): # Reset player direction if event.type == QUIT: pygame.quit() sys.exit() elif event.type == KEYDOWN: # Handle key presses keyinput.keyDownEvent(event.key) elif event.type == KEYUP: keyinput.keyUpEvent(event.key) # Player horizontal logic if keyinput.isKeyHeld(K_LEFT) and keyinput.isKeyHeld(K_RIGHT): player.stopMoving() elif keyinput.isKeyHeld(K_LEFT): player.moveLeft() elif keyinput.isKeyHeld(K_RIGHT): player.moveRight() elif keyinput.wasKeyPressed(K_SPACE): # Play player shooting animation player.shoot() elif keyinput.wasKeyPressed(K_ESCAPE): pygame.quit() sys.exit() elif not player.shooting: player.stopMoving() # Toggle Blue/Red character if keyinput.wasKeyPressed(K_c): player.toggleColor() # Vertical logic if keyinput.wasKeyPressed(K_UP): player.jump() # Remove bullets that leave screen for sprite in allsprites: if isinstance(sprite, Bullet): if sprite.rect[0] > SCREEN_X or sprite.rect[0] < 0: allsprites.remove(sprite) # Update allsprites.update(environment) environment.update(allsprites) # Draw allsprites.draw(DISPLAYSURF) environment.draw(DISPLAYSURF) pygame.display.update() fpsClock.tick(FPS)
def main(): # Determine assets sprite_asset, bullet_sound_asset = DetermineAssets() # Load sprite assets IMAGESDICT, animObjs = LoadSpriteAssets(sprite_asset) # Main game surface DISPLAYSURF = pygame.display.set_mode((SCREEN_X, SCREEN_Y)) #Make the screen # Colors BLACK = (0,0,0) # Calculate starting position of player startX = SCREEN_X - LEN_SPRT_X startY = SCREEN_Y - LEN_SPRT_Y # Hold info on keys pressed, held, released keyinput = Input() # Initialize gamemap and Player player = Player(IMAGESDICT, animObjs, bullet_sound_asset) player.rect.topleft = startX, startY # Add tiles startx = 0 starty = SCREEN_Y - LEN_SPRT_Y/2 tile = Tile(IMAGESDICT['ground']) tile.rect.topleft = startx, starty # Sprite Groups allsprites = pygame.sprite.RenderPlain(player) environment = pygame.sprite.RenderPlain(tile) # Start game loop while True: # Clear key info keyinput.clearKeys() # Draw screen black DISPLAYSURF.fill(BLACK) # Check for game events for event in pygame.event.get(): # Reset player direction if event.type == QUIT: pygame.quit() sys.exit() elif event.type == KEYDOWN: # Handle key presses keyinput.keyDownEvent(event.key) elif event.type == KEYUP: keyinput.keyUpEvent(event.key) # Player horizontal logic if keyinput.isKeyHeld(K_LEFT) and keyinput.isKeyHeld(K_RIGHT): player.stopMoving() elif keyinput.isKeyHeld(K_LEFT): player.moveLeft() elif keyinput.isKeyHeld(K_RIGHT): player.moveRight() elif keyinput.wasKeyPressed(K_SPACE): # Play player shooting animation player.shoot() elif keyinput.wasKeyPressed(K_ESCAPE): pygame.quit() sys.exit() elif not player.shooting: player.stopMoving() # Vertical logic if keyinput.wasKeyPressed(K_UP): player.jump() # Check for collisions between player and environment collision_list = pygame.sprite.spritecollide(player, environment, False) # Update allsprites.update() environment.update() # Draw allsprites.draw(DISPLAYSURF) environment.draw(DISPLAYSURF) pygame.display.update() fpsClock.tick(FPS)