class MyView(arcade.View): def __init__(self, window: arcade.Window): super().__init__() self.window = window self.ui_manager = UIManager(window) def on_draw(self): arcade.start_render() def on_show_view(self): arcade.set_background_color(arcade.color.BLACK) self.ui_manager.purge_ui_elements() button_normal = arcade.load_texture( ':resources:gui_basic_assets/red_button_normal.png') hovered_texture = arcade.load_texture( ':resources:gui_basic_assets/red_button_hover.png') pressed_texture = arcade.load_texture( ':resources:gui_basic_assets/red_button_press.png') self.ui_manager.add_ui_element( arcade.gui.UIImageButton( center_x=self.window.width // 2, center_y=window.height // 2, normal_texture=button_normal, hover_texture=hovered_texture, press_texture=pressed_texture, text='UIImageButton', ))
class LevelMenu(arcade.View): def __init__(self, window, level_manager): super().__init__() self.window = window self.ui_manager = UIManager(window) self.level_manager = level_manager def setup(self): arcade.set_background_color(arcade.color.BLACK) for x, level in enumerate(generator_data.level_list): level_button = LevelButton( level, self.window, self.ui_manager, self.level_manager, f'Level {level.lvl_id + 1}:\n {level.lvl_description}', 175 + (x % 6) * 250, 700 - (150 * (x // 6)), 200, 100) level_button.set_style_attrs(font_color=arcade.color.WHITE, font_color_hover=arcade.color.RED, font_color_press=arcade.color.WHITE, bg_color=arcade.color.BLACK, border_color=arcade.color.RED, border_color_hover=arcade.color.WHITE, border_color_press=arcade.color.WHITE) self.ui_manager.add_ui_element(level_button) def on_show_view(self): self.setup() def on_draw(self): arcade.start_render() def on_key_press(self, symbol: int, modifiers: int): if symbol == arcade.key.ESCAPE: self.ui_manager.purge_ui_elements() self.window.show_view(MainMenu(self.window))
class MyView(arcade.View): def __init__(self, window: arcade.Window): super().__init__() self.window = window self.ui_manager = UIManager(window) def on_draw(self): arcade.start_render() def on_show_view(self): arcade.set_background_color(arcade.color.BLACK) self.ui_manager.purge_ui_elements() self.ui_manager.add_ui_element( UIFlatButton('Hello world', center_x=200, center_y=self.window.height // 2, width=200, height=40)) self.ui_manager.add_ui_element( UIGhostFlatButton('Hello world', center_x=600, center_y=self.window.height // 2, width=200, height=40)) def on_hide_view(self): self.ui_manager.unregister_handlers()
class MyView(arcade.View): """ Main program view """ def __init__(self): """ Set up this view """ super().__init__() self.ui_manager = UIManager() def setup(self): """ Setup the view """ self.ui_manager.purge_ui_elements() flat = UIFlatButton('Hello world', center_x=200, center_y=self.window.height // 2, width=200, height=40) flat.set_style_attrs(font_color=arcade.color.WHITE, font_color_hover=arcade.color.WHITE, font_color_press=arcade.color.WHITE, bg_color=(51, 139, 57), bg_color_hover=(51, 139, 57), bg_color_press=(28, 71, 32), border_color=(51, 139, 57), border_color_hover=arcade.color.WHITE, border_color_press=arcade.color.WHITE) self.ui_manager.add_ui_element(flat) # creates a new class, which will match the id UIStyle.default_style().set_class_attrs( 'right_button', font_color=arcade.color.WHITE, font_color_hover=arcade.color.WHITE, font_color_press=arcade.color.WHITE, bg_color=(135, 21, 25), bg_color_hover=(135, 21, 25), bg_color_press=(122, 21, 24), border_color=(135, 21, 25), border_color_hover=arcade.color.WHITE, border_color_press=arcade.color.WHITE) self.ui_manager.add_ui_element( UIGhostFlatButton('Hello world', center_x=600, center_y=self.window.height // 2, width=200, height=40, id='right_button')) def on_draw(self): """ Draw this view """ arcade.start_render() arcade.set_background_color(arcade.color.BLACK) def on_show_view(self): """ Show this view """ self.setup() def on_hide_view(self): self.ui_manager.unregister_handlers()
class GameView(arcade.View): def __init__(self): global score super().__init__() self.ui_manager = UIManager() self.window.set_mouse_visible(True) arcade.set_background_color(arcade.color.RED) score = 0 self.score_text = None def setup(self): self.ui_manager.purge_ui_elements() y_slot = self.window.height // 4 left_column_x = self.window.width // 4 right_column_x = 3 * self.window.width // 4 ui_input_box = arcade.gui.UIInputBox( center_x=left_column_x, center_y=y_slot * 2, width=300 ) button = MyFlatButton( 'UPGRADE', center_x=right_column_x, center_y=y_slot * 1, width=250, # height=20 ) self.ui_manager.add_ui_element(button) def on_draw(self): global score arcade.start_render() global multiplier output = f"Score: {score}" arcade.draw_text(output, 10, 20, arcade.color.WHITE, 14) def on_show_view(self): self.setup() def on_hide_view(self): self.ui_manager.unregister_handlers() def on_mouse_press(self, x, y, button, modifiers): global score global multiplier arcade.set_background_color([random.randrange(0, 255), random.randrange(0, 255), random.randrange(0, 255)]) score += multiplier
class InitView(arcade.View): """ View to show instructions """ def __init__(self): super().__init__() self.ui_manager = UIManager() self.controlador = controller.Controller() def on_show(self): """ This is run once when we switch to this view """ arcade.set_background_color(arcade.csscolor.LIGHT_GOLDENROD_YELLOW) # Reset the viewport, necessary if we have a scrolling game and we need # to reset the viewport back to the start so we can see what we draw. arcade.set_viewport(0, self.controlador.SCREEN_WIDTH - 1, 0, self.controlador.SCREEN_HEIGHT - 1) def on_draw(self): """ Draw this view """ arcade.start_render() arcade.draw_text("PyCharmers", self.controlador.SCREEN_WIDTH / 2, self.controlador.SCREEN_HEIGHT / 2, arcade.color.BEAU_BLUE, font_size=50, anchor_x="center") """ Set up this view. """ self.ui_manager.purge_ui_elements() y_slot = self.window.height // 4 left_column_x = self.window.width // 2 backgound_menu = arcade.load_texture('assets/menu.png') button_normal = arcade.load_texture('assets/iconn.png') hovered_texture = arcade.load_texture('assets/iconn.png') pressed_texture = arcade.load_texture('assets/iconn.png') arcade.draw_lrwh_rectangle_textured(0, 0, self.controlador.SCREEN_WIDTH, self.controlador.SCREEN_HEIGHT, backgound_menu) button = arcade.gui.UIImageButton(center_x=left_column_x, center_y=y_slot * 1, normal_texture=button_normal, hover_texture=hovered_texture, press_texture=pressed_texture, text='') self.ui_manager.add_ui_element(button) def on_mouse_press(self, _x, _y, _button, _modifiers): """ If the user presses the mouse button, start the game. """ self.ui_manager.purge_ui_elements() choice_view = self.controlador.choice_view() self.window.show_view(choice_view)
class GameWon(arcade.View): def __init__(self, game_view): super().__init__() self.ui_manager = UIManager() self.game_view = game_view def on_hide_view(self): self.ui_manager.unregister_handlers() def on_show(self): arcade.set_background_color(arcade.csscolor.BLACK) arcade.set_viewport(0, SCREEN_WIDTH - 1, 0, SCREEN_HEIGHT - 1) def on_show_view(self): """ Called once when view is activated. """ y_slot = self.window.height // 4 left_column_x = self.window.width // 4 right_column_x = 3 * self.window.width // 4 print("Setup") self.ui_manager.purge_ui_elements() # Button for level 2 button = MyFlatButton(app=self, text='Level select', center_x=475, center_y=y_slot * 1, width=250, height=100) button.set_style_attrs( font_color=arcade.color.WHITE, font_color_hover=arcade.color.WHITE, font_color_press=arcade.color.BLACK, bg_color=(169, 169, 169), bg_color_hover=arcade.color.BLIZZARD_BLUE, bg_color_press=arcade.color.WHITE, border_color=arcade.color.BLACK, ) button.add_event_listener(self.level_select) self.ui_manager.add_ui_element(button) def on_draw(self): arcade.start_render() arcade.draw_text("Level Complete!", 275, 450, arcade.color.BLUE, font_size=50) def level_select(self): new_view = level_select.LevelSelect(self.game_view) self.window.show_view(new_view)
class GameOver(arcade.View): def __init__(self): super().__init__() self.ui_manager = UIManager() def on_show(self): self.setup() arcade.set_background_color(arcade.color.BLACK) def setup(self): #resets the viewport otherwise the button hitbox may not be accurate self.window.set_viewport(0, 1000, 0, 650) #Set the mouse to be visible again self.window.set_mouse_visible(visible = True) #Reset all the gui element every time the setup is called to avoid misshandled ui elements self.ui_manager.purge_ui_elements() #initiate the sprite list self.decor_list = arcade.SpriteList() #Loads the texture decor = arcade.Sprite("Assets/UiStuff/GameOverSword.png") restart_button_normal = arcade.load_texture("Assets/UiStuff/Restart0.png") restart_button_hovered = arcade.load_texture("Assets/UiStuff/Restart1.png") restart_button_pressed = arcade.load_texture("Assets/UiStuff/Restart0.png") quit_button_normal = arcade.load_texture("Assets/UiStuff/GiveUp0.png") quit_button_hovered = arcade.load_texture("Assets/UiStuff/GiveUp1.png") quit_button_pressed = arcade.load_texture("Assets/UiStuff/GiveUp0.png") #Adds the texture to the sprite list and as the gui elements decor.center_x = 500 decor.center_y = 325 self.decor_list.append(decor) self.RestartButton = ImageButton(restart_button_normal, restart_button_hovered, restart_button_pressed, 800, 325) self.QuitButton = ImageButton(quit_button_normal, quit_button_hovered, quit_button_pressed, 200, 325) self.ui_manager.add_ui_element(self.RestartButton) self.ui_manager.add_ui_element(self.QuitButton) def on_update(self, delta_time): if self.RestartButton.is_clicked == True: self.ui_manager.purge_ui_elements() view = GameState() view.setup() self.window.show_view(view) if self.QuitButton.is_clicked == True: arcade.close_window() def on_draw(self): arcade.start_render() self.decor_list.draw()
class MyView(arcade.View): """ Main view. Really the only view in this example. """ def __init__(self): super().__init__() self.ui_manager = UIManager() def on_draw(self): """ Draw this view. GUI elements are automatically drawn. """ arcade.start_render() def on_show_view(self): """ Called once when view is activated. """ self.setup() def on_hide_view(self): self.ui_manager.unregister_handlers() def setup(self): """ Set up this view. """ self.ui_manager.purge_ui_elements() y_slot = self.window.height - 40 left_column_x = self.window.width // 4 right_column_x = self.window.width - 200 # left side elements self.ui_manager.add_ui_element( arcade.gui.UILabel( 'UILabel', center_x=left_column_x, center_y=y_slot * 3, )) # right side elements button = Button( 'Tutorial', center_x=right_column_x, center_y=y_slot * 1, width=250, # height=20 ) self.ui_manager.add_ui_element(button) button = Button( 'Tutorial', center_x=right_column_x, center_y=y_slot * 1, width=250, # height=20 )
class MyView(arcade.View): def __init__(self, window: arcade.Window): super().__init__() self.window = window self.ui_manager = UIManager(window) def on_draw(self): arcade.start_render() arcade.set_background_color(arcade.color.BLACK) def on_show_view(self): print('on_show_view') self.setup() def setup(self): self.ui_manager.purge_ui_elements() self.ui_manager.add_ui_element( UILabel( text='Username:'******'username') self.ui_manager.add_ui_element(input_box) submit_button = UIFlatButton(text='Login', center_x=650, center_y=self.window.height // 2, width=200, height=40, id='submit_button') self.ui_manager.add_ui_element(submit_button) self.ui_manager.add_ui_element( UILabel(text='', center_x=self.window.width // 2, center_y=self.window.height // 2 - 100, width=600, height=40, id='login_message')) @input_box.event('on_enter') @submit_button.event('on_click') def submit(): username_input = cast(UIInputBox, self.ui_manager.find_by_id('username')) username = username_input.text login_message: UILabel = cast( UILabel, self.ui_manager.find_by_id('login_message')) login_message.text = f'Welcome {username}, you are my first player.'
class GameStart(arcade.View): def __init__(self): super().__init__() self.ui_manager = UIManager() self.music = arcade.Sound("Assets/Audio/burn_no_autostart.wav") def on_show(self): self.current_music = self.music.play(loop = True) self.setup() arcade.set_background_color((22, 16, 70)) def setup(self): self.window.set_viewport(0, 1000, 0, 650) self.window.set_mouse_visible(visible = True) self.ui_manager.purge_ui_elements() self.decor_list = arcade.SpriteList() decor = arcade.Sprite("Assets/UiStuff/GameStartTorch.png") newGame_button_normal = arcade.load_texture("Assets/UiStuff/NewGame0.png") newGame_button_hovered = arcade.load_texture("Assets/UiStuff/NewGame1.png") newGame_button_pressed = arcade.load_texture("Assets/UiStuff/NewGame0.png") quit_button_normal = arcade.load_texture("Assets/UiStuff/Quit0.png") quit_button_hovered = arcade.load_texture("Assets/UiStuff/Quit1.png") quit_button_pressed = arcade.load_texture("Assets/UiStuff/Quit0.png") decor.center_x = 500 decor.center_y = 325 self.decor_list.append(decor) self.NewGameButton = ImageButton(newGame_button_normal, newGame_button_hovered, newGame_button_pressed, 800, 325) self.QuitButton = ImageButton(quit_button_normal, quit_button_hovered, quit_button_pressed, 200, 325) self.ui_manager.add_ui_element(self.NewGameButton) self.ui_manager.add_ui_element(self.QuitButton) def on_update(self, delta_time): if self.NewGameButton.is_clicked == True: self.music.stop(self.current_music) self.ui_manager.purge_ui_elements() view = GameState() view.setup() self.window.show_view(view) if self.QuitButton.is_clicked == True: arcade.close_window() def on_draw(self): arcade.start_render() self.decor_list.draw()
class ConnectScreen(arcade.View): def __init__(self, win: arcade.Window): super().__init__() self.window = win self.ui_manager = UIManager(self.window) self.ui_manager.purge_ui_elements() ui_input_box = arcade.gui.UIInputBox(center_x=_width // 2, center_y=_height // 2, width=300) ui_input_box.text = '' ui_input_box.cursor_index = len(ui_input_box.text) self.ui_manager.add_ui_element(ui_input_box) self.ui_manager.add_ui_element( InputBoxButton(ui_input_box, self.window, self.ui_manager)) def on_draw(self): arcade.start_render() arcade.set_background_color(arcade.csscolor.INDIGO)
class GameEnd(arcade.View): def __init__(self): super().__init__() self.ui_manager = UIManager() def on_show(self): self.setup() arcade.set_background_color((10, 7, 38)) def setup(self): self.window.set_viewport(0, 1000, 0, 650) self.window.set_mouse_visible(visible = True) self.ui_manager.purge_ui_elements() self.decor_list = arcade.SpriteList() decor = arcade.Sprite("Assets/UiStuff/EndScreenDecor.png") retry_button_normal = arcade.load_texture("Assets/UiStuff/Retry0.png") retry_button_hovered = arcade.load_texture("Assets/UiStuff/Retry1.png") retry_button_pressed = arcade.load_texture("Assets/UiStuff/Retry1.png") exit_button_normal = arcade.load_texture("Assets/UiStuff/Exit0.png") exit_button_hovered = arcade.load_texture("Assets/UiStuff/Exit1.png") exit_button_pressed = arcade.load_texture("Assets/UiStuff/Exit1.png") decor.center_x = 500 decor.center_y = 325 self.decor_list.append(decor) self.ExitButton = ImageButton(exit_button_normal, exit_button_hovered, exit_button_pressed, 800, 325) self.RestartButton = ImageButton(retry_button_normal, retry_button_hovered, retry_button_pressed, 200, 325) self.ui_manager.add_ui_element(self.ExitButton) self.ui_manager.add_ui_element(self.RestartButton) def on_draw(self): arcade.start_render() self.decor_list.draw() def on_update(self, delta_time): if self.ExitButton.is_clicked: arcade.close_window() if self.RestartButton.is_clicked: self.ui_manager.purge_ui_elements() view = GameStart() self.window.show_view(view)
class MenuView(arcade.View): def __init__(self): super().__init__() self.ui_manager = UIManager() def on_draw(self): arcade.start_render() self.logo.draw() def on_show_view(self): self.setup() arcade.set_background_color(arcade.color.BLACK) arcade.set_viewport(0, SCREEN_WIDTH - 1, 0, SCREEN_HEIGHT - 1) def on_hide_view(self): self.ui_manager.unregister_handlers() def setup(self): self.ui_manager.purge_ui_elements() y_slot = SCREEN_HEIGHT // 4 x_slot = SCREEN_WIDTH // 4 self.logo = arcade.Sprite('sprites/menu/logo.png', 1, center_x=x_slot * 2, center_y=y_slot * 3) button = buttons.ChangeViewButton('Play', x_slot, y_slot, game_view, width=250) self.ui_manager.add_ui_element(button) button = buttons.FullScreenButton('Toggle Fullscreen', x_slot * 2, y_slot, width=250) self.ui_manager.add_ui_element(button)
class MyView(arcade.View): def __init__(self, window: arcade.Window): super().__init__() self.window = window self.ui_manager = UIManager(window) def on_draw(self): arcade.start_render() def on_show_view(self): arcade.set_background_color(arcade.color.BLACK) self.ui_manager.purge_ui_elements() box = arcade.gui.UIInputBox(text='hello', center_x=400, center_y=300, width=200, height=40) self.ui_manager.add_ui_element(box)
class MyView(arcade.View): def __init__(self, window: arcade.Window): super().__init__() self.window = window self.ui_manager = UIManager(window) def on_draw(self): arcade.start_render() def on_show_view(self): arcade.set_background_color(arcade.color.BLACK) self.ui_manager.purge_ui_elements() self.ui_manager.add_ui_element( arcade.gui.UILabel( text='Hello world', center_x=self.window.width // 2, center_y=self.window.height // 2, ))
class gameover(arcade.View): def __init__(self, win: arcade.Window): super().__init__() self.window = win self.ui_manager = UIManager(self.window) '''self.nameInput = UIInputBox(width=300, height=100, center_x=100, center_y=100)''' self.mainMenu = mainMenuButton() self.retry = retryButton() self.ui_manager.add_ui_element(self.mainMenu) self.ui_manager.add_ui_element(self.retry) def on_draw(self): arcade.start_render() arcade.draw_text("GAME OVER", _width / 2, (3 * _height) / 4, arcade.color.WHITE, 30, anchor_x="center", anchor_y="center")
class gameUI(arcade.View): def __init__(self, win: arcade.Window): super().__init__() self.window = win self.ui_manager = UIManager(self.window) def setup(self): self.ui_manager.purge_ui_elements() #default style sheet UIStyle.default_style().set_class_attrs( 'buttons', font_color=arcade.color.WHITE, font_color_hover=arcade.color.WHITE, font_color_press=arcade.color.WHITE, bg_color=(135, 21, 25), bg_color_hover=(135, 21, 25), bg_color_press=(122, 21, 24), border_color=(135, 21, 25), border_color_hover=arcade.color.WHITE, border_color_press=arcade.color.WHITE) #add buttons to UI manager self.ui_manager.add_ui_element( SinglePlayerButton(self.window.height // 2, self.window, self.ui_manager)) self.ui_manager.add_ui_element( MultiPlayerButton(self.window.height // 3, self.window, self.ui_manager)) def on_draw(self): arcade.start_render() arcade.set_background_color(arcade.csscolor.INDIGO) #renders title arcade.draw_text("Asteroids", 375, 395, arcade.color.BLACK, 40, align="center") def on_show_view(self): self.setup()
class MenuView(arcade.View): def __init__(self): super().__init__() self.ui_manager = UIManager() self.start_with_player = StartGameWithPlayerButton( SCREEN_WIDTH / 2, SCREEN_HEIGHT / 2 + 50, self) self.start_with_bot = StartGameWithBotButton(SCREEN_WIDTH / 2, SCREEN_HEIGHT / 2 - 40, self) self.exit = ExitButton(SCREEN_WIDTH / 2, SCREEN_HEIGHT / 2 - 170) self.ui_manager.add_ui_element(self.start_with_player) self.ui_manager.add_ui_element(self.start_with_bot) self.ui_manager.add_ui_element(self.exit) def on_show(self): arcade.set_background_color(arcade.color.WHITE) def on_draw(self): arcade.start_render() arcade.draw_text("Дурак", SCREEN_WIDTH / 2, SCREEN_HEIGHT / 2 + 180, arcade.color.BLACK, font_size=50, anchor_x="center")
class Start_Screen_View(arcade.View): def __init__(self): super().__init__() self.ui_manager = UIManager() self.name = "" self.name_input = arcade.gui.UIInputBox( center_x = SCREEN_WIDTH/2, center_y = SCREEN_HEIGHT/2, width = 300, height = 40 ) # on show method def on_show(self): """ This is run once when we switch to this view """ arcade.set_background_color(arcade.csscolor.BLACK) # Resets the viewport if needed arcade.set_viewport(0, SCREEN_WIDTH-1, 0, SCREEN_HEIGHT-1) # draws the input box to the screen self.ui_manager.add_ui_element(self.name_input) # on draw method def on_draw(self): """ This view is runs normally when this view is active """ arcade.start_render() # Draw some text below arcade.draw_text("Press Enter to Start", SCREEN_WIDTH / 2, SCREEN_HEIGHT / 2-75, arcade.color.WHITE, font_size=20, anchor_x="center") def on_key_press(self, key, _modifiers): """ If the user presses enter, the game starts """ if key == 65293: # enter key = 65293 self.name = self.name_input.text self.ui_manager.purge_ui_elements() game_view = MyGame(self.name) game_view.setup() self.window.show_view(game_view)
class Menu(arcade.View): def __init__(self, state, window: arcade.Window): super().__init__(window) self.window = window self.state = state self.background_img = None self.ui_manager = UIManager(self.window) def setup(self): self.background_img = arcade.load_texture(C.RESOURCES + 'Backgrounds/Menu.png') self.ui_manager.purge_ui_elements() start = UIFlatButton('PLAY', self.window.width // 2, self.window.height // 2 - 115, 200, 125) start.set_style_attrs(font_color=arcade.color.WHITE, font_color_hover=arcade.color.WHITE, font_color_press=arcade.color.WHITE, bg_color=arcade.color.GREEN, bg_color_hover=(0, 150, 0), bg_color_press=arcade.color.DARK_GREEN, border_color_hover=arcade.color.WHITE, border_color=arcade.color.GREEN, border_color_press=arcade.color.WHITE) self.ui_manager.add_ui_element(start) @start.event('on_click') def play(): self.state.update_state() def on_show_view(self): self.setup() def on_draw(self): arcade.start_render() arcade.draw_lrwh_rectangle_textured(0, 0, C.WIDTH, C.HEIGHT, self.background_img)
class Menu(arcade.View): def __init__(self): super().__init__() self.ui_manager = UIManager() def on_draw(self): """ Draw this view. GUI elements are automatically drawn. """ arcade.start_render() def on_show_view(self): """ Called once when view is activated. """ self.setup() arcade.set_background_color(arcade.color.BLACK) def on_hide_view(self): self.ui_manager.unregister_handlers() def setup(self): """ Set up this view. """ self.ui_manager.purge_ui_elements() y_slot = self.window.height // 4 self.ui_manager.add_ui_element( arcade.gui.UILabel(self.window.caption, center_x=self.window.width // 2, center_y=y_slot * 3, id="label")) button = MyFlatButton( self.window, 'Play', center_x=self.window.width // 2, center_y=y_slot * 2, width=250, ) self.ui_manager.add_ui_element(button)
class MyView(arcade.View): def __init__(self, window: arcade.Window): super().__init__() self.window = window self.ui_manager = UIManager(window) def on_draw(self): arcade.start_render() def on_show_view(self): arcade.set_background_color(arcade.color.WHITE) self.ui_manager.purge_ui_elements() screen_switch = UIImageToggle( true_texture=load_texture( ':resources:gui_basic_assets/icons/smaller.png'), false_texture=load_texture( ':resources:gui_basic_assets/icons/larger.png'), center_x=self.window.width // 2, center_y=self.window.height // 2, value=False) self.ui_manager.add_ui_element(screen_switch) @screen_switch.event def on_toggle(value: bool): if value: self.window.set_fullscreen(True) else: self.window.set_fullscreen(False) # Recenter screen_switch.position = self.window.width // 2, self.window.height // 2 def on_hide_view(self): self.ui_manager.unregister_handlers()
class gameover(arcade.View): def __init__(self, s): super().__init__() self.finScore = s self.nameInput = UIInputBox(width=300, height=50, center_x=_width / 2, center_y=_height / 2 + 60) self.gameOverWindow = self.window self.gameOver_ui_manager = UIManager(self.gameOverWindow) self.mainMenu = mainMenuButton(self.window, self.gameOver_ui_manager) self.retry = retryButton(self.window, self.gameOver_ui_manager) self.submit = submitButton(self.window, self.gameOver_ui_manager, self.nameInput, self.finScore) def setup(self): self.gameOver_ui_manager.purge_ui_elements() self.gameOver_ui_manager.add_ui_element(self.mainMenu) self.gameOver_ui_manager.add_ui_element(self.retry) self.gameOver_ui_manager.add_ui_element(self.nameInput) self.gameOver_ui_manager.add_ui_element(self.submit) def on_draw(self): arcade.start_render() arcade.set_background_color(arcade.csscolor.CRIMSON) arcade.draw_text("GAME OVER", _width / 2, _height - 40, arcade.color.WHITE, 30, anchor_x="center", anchor_y="center") arcade.draw_text("Final Score: " + str(self.finScore), _width / 2, _height - 100, arcade.color.WHITE, 30, anchor_x="center", anchor_y="center") def on_show_view(self): self.setup()
class MyView(arcade.View): """ Main view. Really the only view in this example. """ def __init__(self): super().__init__() self.ui_manager = UIManager() def on_draw(self): """ Draw this view. GUI elements are automatically drawn. """ arcade.start_render() def on_show_view(self): """ Called once when view is activated. """ self.setup() arcade.set_background_color(arcade.color.BLACK) def on_hide_view(self): self.ui_manager.unregister_handlers() def setup(self): """ Set up this view. """ self.ui_manager.purge_ui_elements() y_slot = self.window.height // 4 left_column_x = self.window.width // 4 right_column_x = 3 * self.window.width // 4 # left side elements self.ui_manager.add_ui_element( arcade.gui.UILabel( 'Grid By ALi Khan & Zhyaaaaa', center_x=left_column_x * 2, center_y=y_slot * 3, )) ui_input_box = arcade.gui.UIInputBox(center_x=left_column_x, center_y=y_slot * 2, width=300) ui_input_box.text = '' ui_input_box.cursor_index = len(ui_input_box.text) self.ui_manager.add_ui_element(ui_input_box) #grid_choice.make_grid(ui_input_box.text) # right side elements button = MyGhostFlatButton(center_x=right_column_x, center_y=y_slot * 2, input_box=ui_input_box) self.ui_manager.add_ui_element(button)
class MenuView(arcade.View): #меню def __init__(self): super().__init__() self.ui_manager = UIManager() def on_show_view(self): self.setup() arcade.set_background_color(arcade.color.BLACK) def on_draw(self): arcade.start_render() arcade.draw_text("Добро пожаловать", self.window.width / 2, self.window.height / 1.5, arcade.color.WHITE, font_size=30, anchor_x="center") def on_hide_view(self): self.ui_manager.unregister_handlers() def setup(self): self.ui_manager.purge_ui_elements() self.ui_manager.add_ui_element(PlayButton()) self.ui_manager.add_ui_element(SettingButton()) self.ui_manager.add_ui_element(ExitButton()) def on_update(self, delta_time): for i in range(3): button = self.ui_manager.find_by_id(i) button.center_x = self.window.width / 2 button.center_y = (self.window.height / 2) - (35 * i) if button.click and i == 0: button.click = False game_view = GameView() game_view.setup() #загрузка ресурсов window.show_view(game_view) elif button.click and i == 1: button.click = False elif button.click and i == 2: button.click = False window.close()
class MyView(arcade.View): def __init__(self, window: arcade.Window): super().__init__() self.window = window self.ui_manager = UIManager(window) self.ui_manager.push_handlers(self.on_ui_event) def on_draw(self): arcade.start_render() arcade.set_background_color(arcade.color.BLACK) def on_show_view(self): print('on_show_view') self.setup() def setup(self): self.ui_manager.purge_ui_elements() self.ui_manager.add_ui_element( UILabel( text='Username:'******'username')) self.ui_manager.add_ui_element( UIFlatButton(text='Login', center_x=650, center_y=self.window.height // 2, width=200, height=40, id='submit_button')) self.ui_manager.add_ui_element( UILabel(text='', center_x=self.window.width // 2, center_y=self.window.height // 2 - 100, width=600, height=40, id='login_message')) def on_ui_event(self, event: UIEvent): if event.type == UIClickable.CLICKED and event.get( 'ui_element').id == 'submit_button': # Trigger action if 'submit_button' was clicked self.submit() elif event.type == UIInputBox.ENTER and event.get( 'ui_element').id == 'username': # Trigger action if ENTER pressed in 'username'-UIInputBox self.submit() def submit(self): username_input = cast(UIInputBox, self.ui_manager.find_by_id('username')) username = username_input.text login_message: UILabel = cast( UILabel, self.ui_manager.find_by_id('login_message')) login_message.text = f'Welcome {username}, you are my first player.'
class MyView(arcade.View): """ Main view. Really the only view in this example. """ def __init__(self): super().__init__() self.ui_manager = UIManager() def on_draw(self): """ Draw this view. GUI elements are automatically drawn. """ arcade.start_render() def on_show_view(self): """ Called once when view is activated. """ self.setup() arcade.set_background_color(arcade.color.BLACK) def on_hide_view(self): self.ui_manager.unregister_handlers() def setup(self): """ Set up this view. """ self.ui_manager.purge_ui_elements() y_slot = self.window.height // 4 left_column_x = self.window.width // 4 right_column_x = 3 * self.window.width // 4 # left side elements self.ui_manager.add_ui_element(arcade.gui.UILabel( 'UILabel', center_x=left_column_x, center_y=y_slot * 3, )) ui_input_box = arcade.gui.UIInputBox( center_x=left_column_x, center_y=y_slot * 2, width=300 ) ui_input_box.text = 'UIInputBox' ui_input_box.cursor_index = len(ui_input_box.text) self.ui_manager.add_ui_element(ui_input_box) button_normal = arcade.load_texture(':resources:gui_basic_assets/red_button_normal.png') hovered_texture = arcade.load_texture(':resources:gui_basic_assets/red_button_hover.png') pressed_texture = arcade.load_texture(':resources:gui_basic_assets/red_button_press.png') button = arcade.gui.UIImageButton( center_x=left_column_x, center_y=y_slot * 1, normal_texture=button_normal, hover_texture=hovered_texture, press_texture=pressed_texture, text='UIImageButton' ) self.ui_manager.add_ui_element(button) # right side elements button = MyFlatButton( 'FlatButton', center_x=right_column_x, center_y=y_slot * 1, width=250, # height=20 ) self.ui_manager.add_ui_element(button) button = MyGhostFlatButton( center_x=right_column_x, center_y=y_slot * 2, input_box=ui_input_box ) self.ui_manager.add_ui_element(button)
class PauseView(arcade.View): """ View that shows up only in `ForestKnightView` to pause the game when 'P' is pressed """ def __init__(self, game_view: arcade.View): super().__init__() self.game_view = game_view # Store a semitransparent color to use as an overlay self.fill_color = arcade.make_transparent_color(arcade.color.WHITE, transparency=150) self.ui_manager = UIManager() self.viewport_coords = None # Setting up our background self.background = load_texture( f"{IMAGES_DIR}/backgrounds/backgroundColorForest.png") def on_show(self): self.viewport_coords = arcade.get_viewport() arcade.set_viewport(0, SCREEN_WIDTH - 1, 0, SCREEN_HEIGHT - 1) self.ui_manager.purge_ui_elements() lime_button = load_texture(f"{IMAGES_DIR}/gui/lime_button.png") # Creating 'Save Game' button save_game_coords = (SCREEN_WIDTH // 2, SCREEN_HEIGHT // 2) button = GameSavingButton( center_x=save_game_coords[0], center_y=save_game_coords[1], normal_texture=lime_button, game_view=self.game_view, viewport_coords=self.viewport_coords, ) button.scale = 0.5 self.ui_manager.add_ui_element(button) # Creating 'Save Game' label label = Label( text="Save Game", center_x=save_game_coords[0], center_y=save_game_coords[1], color=arcade.color.FIRE_ENGINE_RED, on_top_of_button=True, parent_button=button, ) self.ui_manager.add_ui_element(label) # Creating 'Main Menu' button main_menu_coords = (SCREEN_WIDTH // 2, save_game_coords[1] - 100) button = ViewChangingButton( center_x=main_menu_coords[0], center_y=main_menu_coords[1], normal_texture=lime_button, game_view=self.game_view, window=self.window, onclick_view=TitleView, delete_sprites=True, ) self.ui_manager.add_ui_element(button) # Creating 'Main Menu' label label = Label( text="Main Menu", center_x=main_menu_coords[0], center_y=main_menu_coords[1], color=arcade.color.FIRE_ENGINE_RED, on_top_of_button=True, parent_button=button, ) self.ui_manager.add_ui_element(label) # Creating 'Exit Game' button exit_game_coords = (SCREEN_WIDTH // 2, save_game_coords[1] - 200) button = ExitButton( center_x=exit_game_coords[0], center_y=exit_game_coords[1], normal_texture=lime_button, ) button.scale = 0.5 self.ui_manager.add_ui_element(button) # Creating 'Exit Game' label label = Label( text="Exit Game", center_x=exit_game_coords[0], center_y=exit_game_coords[1], color=arcade.color.FIRE_ENGINE_RED, on_top_of_button=True, parent_button=button, ) self.ui_manager.add_ui_element(label) return super().on_show() def on_hide_view(self): arcade.set_viewport(*self.viewport_coords) self.ui_manager.unregister_handlers() return super().on_hide_view() def on_draw(self): """Draw the 'Paused' text on the screen""" # self.game_view.update_viewport() # Drawing the background image arcade.draw_texture_rectangle( (SCREEN_WIDTH // 2), (SCREEN_HEIGHT // 2), SCREEN_WIDTH, SCREEN_HEIGHT, self.background, ) return super().on_draw() def on_key_press(self, symbol, modifiers): """Switch off PauseView by again pressing 'P'""" if symbol == arcade.key.ESCAPE: self.game_view.knight.change_x = 0 self.game_view.knight.change_y = 0 self.window.show_view(self.game_view) return super().on_key_press(symbol, modifiers)
class MyMenu(arcade.View): """ Main application class. """ def __init__(self): super().__init__() self.ui_manager = UIManager() self.background = None # Variables used to manage our music. See setup() for giving them values. self.music_list = [] self.current_song_index = 0 self.current_music_player = None self.music = None def advance_song(self): """ Advance our pointer to the next song. This does NOT start the song. """ self.current_song_index += 1 if self.current_song_index >= len(self.music_list): self.current_song_index = 0 print(f"Advancing song to {self.current_song_index}.") def play_song(self): """ Play the song. """ # Play the next song print(f"Playing {self.music_list[self.current_song_index]}") self.music = arcade.Sound(self.music_list[self.current_song_index], streaming=True) self.current_music_player = self.music.play(MUSIC_VOLUME) # This is a quick delay. If we don't do this, our elapsed time is 0.0 # and on_update will think the music is over and advance us to the next # song before starting this one. time.sleep(0.08) def on_show(self): """ Called once when view is activated. """ self.background = arcade.load_texture("Immagini/sky.png") def on_show_view(self): # List of music self.music_list = ["musica/MenuMusic.mp3"] # Array index of what to play self.current_song_index = 0 # Play the song self.play_song() self.ui_manager.purge_ui_elements() self.setup() def on_hide_view(self): self.ui_manager.unregister_handlers() def on_draw(self): """ Render the screen. """ arcade.start_render() arcade.draw_lrwh_rectangle_textured(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, self.background) def setup(self): """ Set up the game here. Call this function to restart the game. """ self.button_normal = arcade.load_texture('Immagini/SinglePlayer.png') self.hovered_texture = arcade.load_texture( 'Immagini/SinglePlayerPressed.png') self.pressed_texture = arcade.load_texture( 'Immagini/SinglePlayerPressed.png') self.singleplayer_btn = SinglePlayerButton( normal_texture=self.button_normal, hover_texture=self.hovered_texture, press_texture=self.pressed_texture, center_x=200, center_y=300) self.singleplayer_btn.scale = BTN_SCALE self.ui_manager.add_ui_element(self.singleplayer_btn) self.button_normal = arcade.load_texture('Immagini/MultiPlayer.png') self.hovered_texture = arcade.load_texture( 'Immagini/MultiPlayerPressed.png') self.pressed_texture = arcade.load_texture( 'Immagini/MultiPlayerPressed.png') self.multiplayer_btn = MultiPlayerButton( normal_texture=self.button_normal, hover_texture=self.hovered_texture, press_texture=self.pressed_texture, center_x=800, center_y=300) self.multiplayer_btn.scale = BTN_SCALE self.ui_manager.add_ui_element(self.multiplayer_btn) self.button_normal = arcade.load_texture('Immagini/Join.png') self.hovered_texture = arcade.load_texture('Immagini/JoinPressed.png') self.pressed_texture = arcade.load_texture('Immagini/JoinPressed.png') self.join_btn = JoinSessionButton(normal_texture=self.button_normal, hover_texture=self.hovered_texture, press_texture=self.pressed_texture, center_x=500, center_y=100) self.join_btn.scale = JOIN_BTN_SCALE self.ui_manager.add_ui_element(self.join_btn) def on_update(self, delta_time): if self.singleplayer_btn.pressed == True: self.music.stop(self.current_music_player) game_view = singleplayer_file.MyGame() self.window.show_view(game_view) if self.multiplayer_btn.pressed == True: self.music.stop(self.current_music_player) ip_address_view = ipaddress_file.IPAdressWindow() self.window.show_view(ip_address_view) if self.join_btn.pressed == True: self.music.stop(self.current_music_player) ip_address_view = ipaddressinsert_file.IPAdressWindow() self.window.show_view(ip_address_view)