class Hub: """ HUB class, provide a central place to hold all the properties that are constantly being accessed """ def __init__(self): """ Initializing properties """ self.CLOCK = pygame.time.Clock() self.WINDOW_WIDTH = 1280 self.WINDOW_HEIGHT = 720 self.BG_COLOR = (125, 125, 125) self.main_screen = pygame.display.set_mode((self.WINDOW_WIDTH, self.WINDOW_HEIGHT)) self.game_mode = GameMode(self) self.shoot_sound = pygame.mixer.Sound('wav/Laser.wav') self.enemy_dies_sound = pygame.mixer.Sound('wav/Enemy_Dies.wav') self.controller = { 'up': False, 'down': False, 'left': False, 'right': False } self.game_screen = GameScreen(self) def displayscreen(self): self.game_screen.run()
def __init__(self): """ Initialize default values """ self.CLOCK = pygame.time.Clock() self.WINDOW_WIDTH = 1080 self.WINDOW_HEIGHT = 720 self.WINDOW_TITLE = "Legend of Peach" self.WINDOW_ICON = pygame.image.load('imgs/WINDOW_ICON.png') self.BG_COLOR = (0, 0, 0) self.FRAMERATE = 30 self.speed = 0 # PHYSICS VALUES self.GRAVITY = 10 self.velocityAI = 5 self.velocityMushroom = 5 self.velocityStar = 10 # DEBUG MODE self.modeFreeze = False self.modePlace = False # Load mario levels from mario level self.game_levels = self.get_levels() self.gamemode = GameMode(self) self.controller = Controller(self) self.camera = Camera(self) # Screen selector chooses what screen to display self.screen_selector = 1 self.level_name = '' # STATES self.WALK = 'WALK' self.LEFT = 'LEFT' self.RIGHT = 'RIGHT' self.STOMPED = 'STOMPED' self.STAND = 'STAND' self.SHELL = 'SHELL' self.SLIDE = 'SLIDE' self.HIT = 'HIT' self.DEATHFALL = 'DEATHFALL' self.RISE = "RISE" self.FALL = "FALL" # Brick States self.RESTING = 'RESTING' self.BUMPED = 'BUMPED' self.OPENED = 'OPENED' """ Initialize the type of screen possible to display game_screen is the only one that will probably be reinstance everytime a new level opens. """ self.sound_board = SoundBoard() self.main_screen = pygame.display.set_mode((self.WINDOW_WIDTH, self.WINDOW_HEIGHT)) self.hud_screen = HudScreen(self) self.main_menu_screen = MainMenuScreen(self) self.level_screen = LevelSelectionScreen(self) self.game_screen = GameScreen(self)
def __init__(self): # Define all game state variables self.welcome_screen = WelcomeScreen() self.game_screen = GameScreen() self.game_over_screen = GameOverScreen() self.difficulty = Difficulty(self.setOptions) self.points = 0 self.done = False self.alert_loss = False self.settings = Settings() self.settings.set('hTime', 0.3) # Define all the Curses stuff curses.initscr() curses.start_color() curses.init_pair(1, curses.COLOR_BLACK, curses.COLOR_WHITE) curses.init_pair(2, curses.COLOR_WHITE, curses.COLOR_BLACK) curses.init_pair(3, curses.COLOR_RED, curses.COLOR_BLACK) self.screen = curses.newwin(0, 0) self.screen.keypad(1) self.screen.nodelay(1) curses.noecho() curses.cbreak() curses.curs_set(0)
def open_level(self, level_name, world_offset=0): """ Opens new gamee_screen and level""" print('new game_screen instantiated') self.game_screen = GameScreen(self, level_name) self.level_name = level_name theme = self.game_levels[level_name]["theme"] self.camera.reset_camera() self.camera.world_offset_x = world_offset if theme is "0": self.sound_board.play_main_theme_overworld() elif theme is "1": self.sound_board.play_underworld() elif theme is "2": self.sound_board.play_castle() else: self.sound_board.play_main_theme_overworld()
def update(self, delta_time): ''' ''' super().update(delta_time) if event_handler.is_key_pressed(pygame.K_RETURN): Screen.load_screen(GameScreen())
def __init__(self): """ Initializing properties """ self.WINDOW_WIDTH = 1280 self.WINDOW_HEIGHT = 720 self.BG_COLOR = (125, 125, 125) self.main_screen = pygame.display.set_mode((self.WINDOW_WIDTH, self.WINDOW_HEIGHT)) self.WINDOW_TITLE = "Space Invader by Randy Le" self.CLOCK = pygame.time.Clock() self.game_mode = GameMode(self) self.shoot_sound = pygame.mixer.Sound('wav/Laser.wav') self.enemy_dies_sound = pygame.mixer.Sound('wav/Enemy_Dies.wav') self.bg_music = pygame.mixer.Sound('wav/bg_music.wav') self.prep_sounds() self.play_bg_music() self.controller = { 'up': False, 'down': False, 'left': False, 'right': False, 'shooting': False } self.delayShot = 360 self.nextShot = pygame.time.get_ticks() + self.delayShot self.game_screen = GameScreen(self) self.main_menu_screen = MainMenuScreen(self) self.high_score_screen = HighScoreScreen(self) self.screen_type = { 'GameScreen': 1, 'MainMenuScreen': 2, 'HighScoreScreen': 3 } self.screen_mode = 2 self.high_score_board = [400, 600, 300, 25, 120, 1500]
def __init__(self): """ Initializing properties """ self.CLOCK = pygame.time.Clock() self.WINDOW_WIDTH = 1280 self.WINDOW_HEIGHT = 720 self.BG_COLOR = (125, 125, 125) self.main_screen = pygame.display.set_mode((self.WINDOW_WIDTH, self.WINDOW_HEIGHT)) self.game_mode = GameMode(self) self.shoot_sound = pygame.mixer.Sound('wav/Laser.wav') self.enemy_dies_sound = pygame.mixer.Sound('wav/Enemy_Dies.wav') self.controller = { 'up': False, 'down': False, 'left': False, 'right': False } self.game_screen = GameScreen(self)
def check_buttons_clicked(self, mouse_x, mouse_y): if self.play_button.rect.collidepoint(mouse_x, mouse_y): self.hub.screen_mode = self.hub.screen_type['GameScreen'] self.hub.game_screen = GameScreen(self.hub) self.hub.game_mode.reset_stats() if self.exit_button.rect.collidepoint(mouse_x, mouse_y): pygame.quit() sys.exit() if self.high_score_button.rect.collidepoint(mouse_x, mouse_y): self.hub.screen_mode = self.hub.screen_type['HighScoreScreen'] self.hub.high_score_board.sort(reverse=True) self.hub.high_score_screen.update_score()
class Hub: """ HUB class, provide a central place to hold all the properties that are constantly being accessed """ def __init__(self): """ Initializing properties """ self.WINDOW_WIDTH = 1280 self.WINDOW_HEIGHT = 720 self.BG_COLOR = (125, 125, 125) self.main_screen = pygame.display.set_mode((self.WINDOW_WIDTH, self.WINDOW_HEIGHT)) self.WINDOW_TITLE = "Space Invader by Randy Le" self.CLOCK = pygame.time.Clock() self.game_mode = GameMode(self) self.shoot_sound = pygame.mixer.Sound('wav/Laser.wav') self.enemy_dies_sound = pygame.mixer.Sound('wav/Enemy_Dies.wav') self.bg_music = pygame.mixer.Sound('wav/bg_music.wav') self.prep_sounds() self.play_bg_music() self.controller = { 'up': False, 'down': False, 'left': False, 'right': False, 'shooting': False } self.delayShot = 360 self.nextShot = pygame.time.get_ticks() + self.delayShot self.game_screen = GameScreen(self) self.main_menu_screen = MainMenuScreen(self) self.high_score_screen = HighScoreScreen(self) self.screen_type = { 'GameScreen': 1, 'MainMenuScreen': 2, 'HighScoreScreen': 3 } self.screen_mode = 2 self.high_score_board = [400, 600, 300, 25, 120, 1500] def displayscreen(self): # Display Game Screen if self.screen_mode == 1: self.game_screen.run() elif self.screen_mode == 2: self.main_menu_screen.run() # Display Main Menu Screen elif self.screen_mode == 3: self.high_score_screen.run() def prep_sounds(self): pygame.mixer.music.set_volume(0.1) self.enemy_dies_sound.set_volume(0.2) self.shoot_sound.set_volume(0.2) def play_bg_music(self): pygame.mixer.music.load('wav/bg_music.wav') pygame.mixer.music.play(-1, 0.0)
def open_level(self, level_name, world_offset=0): print('new game_screen instantiated') self.game_screen = GameScreen(self, level_name) self.level_name = level_name self.camera.reset_camera() self.camera.world_offset_x = world_offset
class Hub: """ Hub class, provides a central module to hold all the propertie that are constantly being accessed """ def __init__(self): """ Initialize default values """ self.CLOCK = pygame.time.Clock() self.WINDOW_WIDTH = 1080 self.WINDOW_HEIGHT = 720 self.WINDOW_TITLE = "Legend of Peach" self.WINDOW_ICON = pygame.image.load('imgs/WINDOW_ICON.png') self.BG_COLOR = (0, 0, 0) self.FRAMERATE = 30 self.speed = 0 # PHYSICS VALUES self.GRAVITY = 10 self.velocityAI = 5 # DEBUG MODE self.modeFreeze = False self.modePlace = False # Load mario levels from mario level self.game_levels = self.get_levels() self.gamemode = GameMode(self) self.controller = Controller(self) self.camera = Camera(self) # STATES self.WALK = 'WALK' self.LEFT = 'LEFT' self.RIGHT = 'RIGHT' self.STOMPED = 'STOMPED' self.STAND = 'STAND' self.SHELL = 'SHELL' self.SLIDE = 'SLIDE' self.HIT = 'HIT' self.DEATHFALL = 'DEATHFALL' # Brick States self.RESTING = 'RESTING' self.BUMPED = 'BUMPED' self.OPENED = 'OPENED' """ Initialize the type of screen possible to display game_screen is the only one that will probably be reinstance everytime a new level opens. """ self.main_screen = pygame.display.set_mode( (self.WINDOW_WIDTH, self.WINDOW_HEIGHT)) self.main_menu_screen = MainMenuScreen(self) self.level_screen = LevelSelectionScreen(self) self.game_screen = GameScreen(self) # Screen selector chooses what screen to display self.screen_selector = 1 self.level_name = '' def display_screen(self): if self.screen_selector is 1: self.main_menu_screen.run() elif self.screen_selector is 2: self.level_screen.run() elif self.screen_selector is 3: # display gameover screen pass elif self.screen_selector is 0: # runs the game screen self.game_screen.run() if self.gamemode.mario_is_dead: self.open_level(self.level_name) self.gamemode.mario_is_dead = False def exit_game(self): pygame.quit() sys.exit() def get_levels(self): """ Grab the level data from the JSON file""" filename = 'levels.json' with open(filename, 'r') as read_file: data = json.load(read_file) return data def open_level(self, level_name, world_offset=0): print('new game_screen instantiated') self.game_screen = GameScreen(self, level_name) self.level_name = level_name self.camera.reset_camera() self.camera.world_offset_x = world_offset
class App(object): def __init__(self): # Define all game state variables self.welcome_screen = WelcomeScreen() self.game_screen = GameScreen() self.game_over_screen = GameOverScreen() self.difficulty = Difficulty(self.setOptions) self.points = 0 self.done = False self.alert_loss = False self.settings = Settings() self.settings.set('hTime', 0.3) # Define all the Curses stuff curses.initscr() curses.start_color() curses.init_pair(1, curses.COLOR_BLACK, curses.COLOR_WHITE) curses.init_pair(2, curses.COLOR_WHITE, curses.COLOR_BLACK) curses.init_pair(3, curses.COLOR_RED, curses.COLOR_BLACK) self.screen = curses.newwin(0, 0) self.screen.keypad(1) self.screen.nodelay(1) curses.noecho() curses.cbreak() curses.curs_set(0) def setOptions(self): self.settings.set('hTime', self.difficulty.getHTime()) self.settings.set('obsWidth',10) self.settings.set('obsHoleHeigth', 7) self.settings.set('obsSpacing',15) self.game_screen.initGame(self.settings) def deinit(self): self.screen.nodelay(0) self.screen.keypad(0) curses.nocbreak() curses.echo() curses.curs_set(1) curses.endwin() sys.exit(1) # Event Loop Functions def events(self): # Global Events key = self.screen.getch() if key == K_ESCAPE or key is K_Q: self.deinit() # State-depent events if not self.difficulty: self.difficulty.set(self.welcome_screen.events(key)) else: self.game_screen.events(key) def update(self): if self.difficulty and not self.done: self.done, self.points = self.game_screen.update(self.screen, self.settings) if self.done: # Alert Loss Once if not self.alert_loss: curses.flash() curses.beep() curses.init_pair(2, curses.COLOR_RED, curses.COLOR_BLACK) self.alert_loss = True def render(self): self.screen.erase() # Render Current State if not self.difficulty: self.welcome_screen.screen(self.screen) else: self.game_screen.screen(self.screen, self.settings) if self.done: self.game_over_screen.screen(self.screen, self.points) # Refresh and Loop self.screen.refresh() time.sleep(self.settings.get('hTime')) def loop(self): while True: self.events() self.update() self.render()