Beispiel #1
0
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',
            ))
Beispiel #2
0
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))
Beispiel #3
0
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()
Beispiel #4
0
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()
Beispiel #5
0
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
Beispiel #6
0
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)
Beispiel #7
0
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)
Beispiel #8
0
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()
Beispiel #9
0
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.'
Beispiel #11
0
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()
Beispiel #12
0
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)
Beispiel #13
0
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)
Beispiel #14
0
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)
Beispiel #16
0
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()
Beispiel #19
0
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")
Beispiel #20
0
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)
Beispiel #21
0
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)
Beispiel #22
0
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)
Beispiel #23
0
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()
Beispiel #24
0
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()
Beispiel #25
0
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)
Beispiel #26
0
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()
Beispiel #27
0
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.'
Beispiel #28
0
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)
Beispiel #29
0
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)
Beispiel #30
0
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)