def make_settings_menu(self, width, height): self.settings_menu = pgmen.Menu(title='Settings', width=width, height=height, theme=self.get_theme(), mouse_enabled=True, mouse_motion_selection=True) self.settings_menu.add.button('volume up', volume_up) self.settings_menu.add.button('volume down', volume_down) self.settings_menu.add.button('Back', self.change_settings_menu_status)
def __init__( self, level, player, game_width, game_height, fire_speed, game_over_func=None, gravity=False, fire_list_coords=None, theme=pygame_menu.themes.THEME_BLUE, fire_delay=None): self.timer = pygame.time.Clock() self.entities = pygame.sprite.Group() # Все объекты self.run = True self.paused = False self.fire_list_coords = [] # Window size self.WIN_SIZE = self.WIN_WIDTH, self.WIN_HEIGHT = game_width, game_height # Группируем ширину и высоту в одну переменную self.DISPLAY = (self.WIN_WIDTH, self.WIN_HEIGHT) # Game self.level = level self.fire_speed = fire_speed # Delay for fire spreading self.fire_counter = 0 # Delay for starting level if fire_delay is None: self.fire_delay = 300 else: self.fire_delay = fire_delay self.game_over_func = game_over_func self.platforms = [] self.seed = 0 self.x = self.y = 0 # координаты self.player = player self.entities.add(self.player) if fire_list_coords is not None: self.fire_list_coords = fire_list_coords else: self.fire_list_coords = [FIRE_START] # Высчитываем фактическую ширину уровня self.total_level_width = len(self.level[0]) * PLATFORM_WIDTH self.total_level_height = len(self.level) * PLATFORM_HEIGHT # высоту # Camera for player self.camera = Camera( self._camera_configure, self.total_level_width, self.total_level_height) # Pause menu for level self.PAUSE_MENU = pygame_menu.Menu( self.WIN_WIDTH // 3, self.WIN_HEIGHT // 3, 'Paused', theme=theme) self.PAUSE_MENU.add_button('Continue', action=self._continue_game) self.PAUSE_MENU.add_button('Save game', action=self._return_game_val) self.PAUSE_MENU.add_button( 'Quit to menu', action=self._stop_level)
def __init__(self, display): """ Args: display (pygame Display): game area """ self.display = display display_x, display_y = display.get_size() self.menu = pygame_menu.Menu("Sudoku", display_x, display_y, theme=pygame_menu.themes.THEME_BLUE)
def __init__(self, window, text): width = 500 height = 100 super().__init__(width, height, window) self.menu = pgmen.Menu(title='warning', width=width, height=height, position=(50, 50), theme=self.get_theme(), enabled=True) self.menu.add.label(text)
def play_again_menu(): pygame.display.set_caption("Menu") surface = pygame.display.set_mode((WIDTH, WIDTH)) menu = pygame_menu.Menu(300, 400, "Game Over", theme=pygame_menu.themes.THEME_BLUE) menu.add_button("Play Again", main) menu.add_button("How To Play", how_to_play) menu.add_button("Quit", pygame_menu.events.EXIT) menu.mainloop(surface)
def update_load_game_menu(self): save = Save() self.save_list = [("New Game",0)] self.load_game_menu = pygame_menu.Menu("Load Game", 400, 300) index = 1 for savedata in save.list_saves(): self.save_list.append((savedata, index)) index += 1 self.load_game_menu.add.dropselect("Save: ", self.save_list, placeholder="Select a save", placeholder_add_to_selection_box=True, onchange=self.set_save) self.load_game_menu.add.button("Load", self.load_game) self.load_game_menu.add.button("Back", self.return_to_main_menu)
def Pause(): pause = pygame_menu.Menu(300, 400, 'Kosmo', theme=pygame_menu.themes.THEME_DARK) pause.add_button('Продолжить', main.start_the_game) pause.add_button("Сохранить", save) pause.add_button('Выход', pygame_menu.events.EXIT) pause.mainloop(main.display)
def create_pause_menu(screen, screen_width, screen_height, main_game_loop): pause_menu = pygame_menu.Menu(screen_width, screen_height, 'Fly me to the moon', theme=mytheme) pause_menu.add_button('Return to Game', main_game_loop) pause_menu.add_button('Main Menu', pause_menu.disable) pause_menu.add_button('Quit', pygame_menu.events.EXIT) return pause_menu
def menu_screen(self): """ Displays menu screen :return: None """ theme = pygame_menu.themes.Theme( title_bar_style=pygame_menu.widgets.MENUBAR_STYLE_NONE, menubar_close_button=False, widget_font_color=SMALL_TEXT_COLOR, background_color=BG_COLOR, widget_font=pygame_menu.font.FONT_OPEN_SANS_BOLD, cursor_color=WHITE) menu = pygame_menu.Menu(height=SCREEN_HEIGHT, width=SCREEN_WIDTH, title="", theme=theme, menu_position=(50, 0)) menu.add_label("ChessAI", align=pygame_menu.locals.ALIGN_CENTER, font_name=pygame_menu.font.FONT_OPEN_SANS_BOLD, font_color=LARGE_TEXT_COLOR, font_size=90, margin=(0, 50)) menu.add_text_input('Name : ', default=self.p1_name, maxchar=10, onchange=self.set_name) menu.add_selector('Color : ', [('White', WHITE), ('Black', BLACK)], onchange=self.set_color) menu.add_selector('AI : ', [('Minimax', 1), ('Random', 2)], onchange=self.set_ai) menu.add_button('Play', self.game_screen) menu.add_button('Quit', pygame_menu.events.EXIT) menu.add_label("", align=pygame_menu.locals.ALIGN_CENTER, font_color=BLACK, font_size=70, margin=(0, 50)) menu.center_content() # Keeps track of whether menu screen should keep running or stop running = True # Menu screen loop while running: for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() exit() menu.mainloop(SCREEN) pygame.display.flip()
def fim_jogo(self): #display = pygame.display.set_mode([200, 200]) menu = pygame_menu.Menu(200, 400, 'Fim de jogo', theme=pygame_menu.themes.THEME_DARK) menu.add.button('Sair', pygame_menu.events.EXIT) menu.mainloop(pygame.display.get_surface()) pygame.display.update()
def create_game_over_view(client, events): menu = pygame_menu.Menu('Mother Trucker', SCR_WIDTH, SCR_HEIGHT, theme=pygame_menu.themes.THEME_DARK) menu.add.label("Game over") winner = events.get_winner() text = "Winner: " + winner menu.add.label(text) menu.add.button('Continue', continue_function, client, events) return menu
def __init__(self, arg_screen, sound_path): self.menu = pygame_menu.Menu(600, 800, 'Shamboogeon', theme=self.my_theme()) self.screen = arg_screen self.sound = pygame.mixer.Sound(sound_path) self.sound.play(-1) self.sound.set_volume(0.1) self.response(800, 600)
def create_settings_view(client, events): menu = pygame_menu.Menu('Mother Trucker', SCR_WIDTH, SCR_HEIGHT, theme=pygame_menu.themes.THEME_DARK) menu.add.button('Some option1') menu.add.button('Some option2') menu.add.button('Back', back_function, events) st = "You are logged as: " + client.get_nick() menu.add.label(st).scale(0.5, 0.5) return menu
def __init__(self, width, height, position, game_window): super().__init__(width, height, game_window) self.city_images = CityImages() self.menu = pgmen.Menu(title='BUILD - BUY', width=width, height=height, position=position, theme=self.get_theme(), columns=11, rows=1, enabled=False, mouse_enabled=True) # ZONING PANEL self.zone_building_panel = ZoningPanel( width=width, height=height, position=(100, 100 - 100 * height / game_window.window.get_height() - 0.3), game_window=game_window) # BUY A SPECIAL BUILDING PANEL self.special_building_panel = BuySpecialBuildingPanel( width=width, height=height, position=(100, 100 - 100 * height / game_window.window.get_height()), game_window=game_window) # BUTTONS scale = (0.075, 0.075) self.menu.add.image(self.city_images.get_icon('modern-city'), scale=scale) self.zoning_button = self.menu.add.button("zone buildings", self.zone_buildings) self.zoning_button.select(False) self.menu.add.label(' ') self.menu.add.label(' ') self.menu.add.image(self.city_images.get_icon('capitol'), scale=scale) self.buy_building_button = self.menu.add.button( "special buildings", self.special_buildings) self.menu.add.label(' ') self.menu.add.label(' ') self.menu.add.image(self.city_images.get_icon('bulldozer'), scale=scale) self.bulldoze_button = self.menu.add.button("bulldoze", self.bulldoze) self.menu.add.label(' ')
def _build_submenu_counters(self, title): menu = pgm.Menu(title=title.capitalize(), width=self.size[0], height=self.size[1], theme=SUBTHEME2_DARK) labels = [] for text in _counters(self.count): labels.append(menu.add_label(text)) menu.add_vertical_margin(40) menu.add_button("Reset all", self._on_reset_counters, labels) return menu
def __start_game(self): while True: # game loop self.__display.fill( Settings.SKY_COLOR ) # clear screen by filling it with blue all environment will be here if self.__grass_sound_timer > 0: self.__grass_sound_timer -= 10 self.__count_scroll() self.__draw_background() self.__redraw_map() self.__player.redraw() for event in pygame.event.get(): # event loop if event.type == QUIT: pygame.quit() sys.exit() if event.type == KEYDOWN: if event.key == K_ESCAPE: menu = pygame_menu.Menu( Settings.WINDOW_SIZE[1], Settings.WINDOW_SIZE[0], 'Pause', theme=pygame_menu.themes.THEME_DARK) menu.add_button('Continue', self.__start_game) menu.add_button('Quit', pygame_menu.events.EXIT) menu.mainloop(self.__screen) if event.key == K_1: # off music pygame.mixer.music.fadeout(1000) if event.key == K_2: # on music pygame.mixer.music.play(-1) if event.key == K_RIGHT: self.__player.move_right() if event.key == K_LEFT: self.__player.move_left() if event.key == K_UP: self.__player.jump() if event.type == KEYUP: if event.key == K_RIGHT: self.__player.stop_right() if event.key == K_LEFT: self.__player.stop_left() self.__screen.blit( pygame.transform.scale(self.__display, Settings.WINDOW_SIZE), (0, 0)) # rendering game session pygame.display.update() # update display self.__clock.tick(60) # maintain 60fps
def create_del_user_view(client, events): menu = pygame_menu.Menu('Mother Trucker Documents', SCR_WIDTH, SCR_HEIGHT, theme=pygame_menu.themes.THEME_ORANGE) menu.add.button('Battles', battles_function, client, events) menu.add.button('Users', users_function, client, events) #menu.add.button('Stats', stats_function, client, events) #menu.add.button('Maps', maps_function, client, events) menu.add.button('Back', back_fun, events) return menu
def generic_menu(center_content=True, columns=1, height=400, onclose=None, position_x=50, position_y=50, rows=None, theme=pygame_menu.themes.THEME_DEFAULT, title='', width=600, *args, **kwargs): """ Generate a generic test menu. :param center_content: Center menu content :type center_content: bool :param columns: Number of columns :type columns: int :param height: Menu height (px) :type height: int :param onclose: Event or function applied when closing the Menu :type onclose: :py:class:`pygame_menu.events.MenuAction`, callable, None :param position_x: X position of the menu :type position_x: int, float :param position_y: Y position of the menu :type position_y: int, float :param rows: Number of rows :type rows: int, None :param theme: Menu theme :type theme: :py:class:`pygame_menu.themes.Theme` :param title: Menu title :type title: str :param width: Menu width (px) :type width: int :param args: Additional args :type args: any :param kwargs: Optional keyword arguments :type kwargs: dict :return: Menu :rtype: :py:class:`pygame_menu.Menu` """ return pygame_menu.Menu(center_content=center_content, columns=columns, enabled=False, height=height, menu_position=(position_x, position_y), onclose=onclose, rows=rows, theme=theme, title=title, width=width, *args, **kwargs)
def pathfinding_menu(): pfmenu = pygame_menu.Menu(720, 1280, "Path-Finding Algorithms", theme=pygame_menu.themes.THEME_DARK) pfmenu.add.button("A* Search", foo, font_size=50) pfmenu.add.vertical_margin(50) pfmenu.add.button("Dijkstra\'s Algorithm", foo, font_size=50) pfmenu.add.vertical_margin(150) pfmenu.add.button("Back", select_menu, font_size=50) pfmenu.mainloop(screen)
def sorting_menu(): smenu = pygame_menu.Menu(720, 1280, "Sorting Algorithms", theme=pygame_menu.themes.THEME_DARK) smenu.add.button("Bubble Sort", foo, font_size=50) smenu.add.vertical_margin(50) smenu.add.button("Merge Sort", foo, font_size=50) smenu.add.vertical_margin(150) smenu.add.button("Back", select_menu, font_size=50) smenu.mainloop(screen)
def _build_submenu(self, section): """Build sub-menu""" length = 0 for name, option in DEFAULT[section].items(): if option[2] and length < len(option[2]): length = len(option[2]) pattern = '{:.<' + str(max(length + 2, 25)) + '} ' menu = pgm.Menu(self.size[1], self.size[0], section.capitalize(), theme=SUBTHEME1_DARK) for name, option in DEFAULT[section].items(): if option[2]: title = pattern.format(option[2]) if isinstance(option[3], str): menu.add_text_input( title, onchange=self._on_text_changed, default=self.cfg.get(section, name).strip('"'), # Parameters passed to callback: section=section, option=name) elif isinstance(option[3], (list, tuple)) and len(option[3]) == 3\ and all(isinstance(i, int) for i in option[3]): menu.add_color_input( title, "rgb", default=self.cfg.gettyped(section, name), input_separator=',', onchange=self._on_color_changed, previsualization_width=1, # Parameters passed to callback: section=section, option=name) else: values = [(v, ) for v in option[3]] menu.add_selector( title, values, onchange=self._on_selector_changed, default=_find(values, self.cfg.get(section, name)), # Parameters passed to callback: section=section, option=name) if section.lower() == 'general': menu.add_vertical_margin(40) menu.add_button("View counters", self._build_submenu_counters("Counters"), margin=(self.size[0] // 2 - 100, 0)) return menu
def create_menu(self): """""" self._menu = pygame_menu.Menu(300, 400, "Welcome", theme=pygame_menu.themes.THEME_SOLARIZED) self._menu.add_selector("Number of Players: ", [("One", 1), ("Two", 2)], onchange=self.set_number_players) self._menu.add_button("Play", self.start_the_game) self._menu.add_button("Quit", pygame_menu.events.EXIT)
def __init__(self, app): self.app = app menu_theme = pygame_menu.themes.Theme( background_color=Color.LIGHT_BLUE, # transparent background title_shadow=True, title_background_color=(4, 47, 126), widget_font_color=Color.WHITE) self.menu = pygame_menu.Menu(SCREEN_HEIGHT, SCREEN_WIDTH, 'Connect 4', theme=menu_theme) self.menu.add_text_input('Username : '******'Play', self.handle_play)
def prepare_player_list_menu(self): self.menu = pygame_menu.Menu(SCREEN_HEIGHT, SCREEN_WIDTH - 300, 'Connect 4', theme=self.menu_theme, menu_position=(0, 0)) self.menu.add_label(f'Your Score: {self.app.my_score}') self.menu.add_label('Available Players: ') for player in self.app.players.keys(): self.menu.add_button( f"User: {player}, Score: {self.app.players[player]['score']}", lambda: self.handle_choose_player(player))
def create_account_view(client, events): account = client.get_nick() menu = pygame_menu.Menu('Mother Trucker', SCR_WIDTH, SCR_HEIGHT, theme=pygame_menu.themes.THEME_DARK) nick_str = "Your nick: " + account menu.add.button(nick_str) menu.add.button("Change password or nick", change_password_or_nick, client, events) menu.add.button('Back', back_function, events) return menu
def __init__(self, menu, sizeX=1920, sizeY=1020): self.parent = None self.settings = {"MOUSE_CONTROL": True} mytheme = pygame_menu.themes.THEME_DARK.copy() mytheme.background_color = (0, 0, 0, 0) self.menu = pygame_menu.Menu(sizeY, sizeX, 'Settings', theme=mytheme) self.menu.add.toggle_switch('Mouse control', True, onchange=self.setMouseControl) self.menu.add.button('Back', pygame_menu.events.BACK)
def startMenu(): """Инициализирует окно программы, создает виджет меню""" pygame.init() menu = pygame_menu.Menu(530, 790, 'Меню', theme=mytheme) pygame.display.set_caption("Игра про Самурая") menu.add_button('Новая игра', start_new_game) menu.add_button('Продолжить', startGame) menu.add_button('Выйти', pygame_menu.events.EXIT) pygame.mixer.music.load('soundtrack.mp3') # загружаем саундтрек pygame.mixer.music.play(-1) # зацикливает проигрывание музыки menu.mainloop(surface)
def __init__(self, screen): self.__config = MenuPauseConfigLoader() self.__screen = screen self.__tema = self.__criar_tema() self.__menu = pygame_menu.Menu(self.__screen.get_height(), self.__screen.get_width(), 'Jogo pausado', theme=self.__tema) self.__menu.add_button("Continuar", self.continuar) self.__menu.add_button("Menu principal", self.voltar_menu_principal) self.__menu.add_button("Sair", self.sair_do_jogo) self.__voltar = False
def main_menu(): pygame.init() pygame.display.set_caption("Menu") surface = pygame.display.set_mode((WIDTH, WIDTH)) menu = pygame_menu.Menu(300, 400, "Welcome", theme=pygame_menu.themes.THEME_BLUE) menu.add_button("Play", partial(main, WIN, WIDTH)) menu.add_button("How To Play", partial(how_to_use, WIDTH)) menu.add_button("Quit", pygame_menu.events.EXIT) menu.mainloop(surface)
def create_pause_menu(theme): pause_menu = pygame_menu.Menu(config.WINDOWHEIGHT * 0.9, config.WINDOWWIDTH * 0.6, '欢迎', theme=theme) pause_menu.add_button('继续游戏', resume_game) pause_menu.add_button('返回标题', return_titlepage) pause_menu.add_button('退出游戏', pygame_menu.events.EXIT) pause_menu.center_content() return pause_menu