最小视图示例#
您可能还想退房 使用开始/结束屏幕的视图 。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 | """ This program shows how to: * Display a sequence of screens in your game. The "arcade.View" class makes it easy to separate the code for each screen into its own class. * This example shows the absolute basics of using "arcade.View". See the "different_screens_example.py" for how to handle screen-specific data. Make a separate class for each view (screen) in your game. The class will inherit from arcade.View. The structure will look like an arcade.Window as each View will need to have its own draw, update and window event methods. To switch a View, simply create a View with `view = MyView()` and then use the "self.window.set_view(view)" method. If Python and Arcade are installed, this example can be run from the command line with: python -m arcade.examples.view_screens_minimal """ import arcade WIDTH = 800 HEIGHT = 600 class MenuView(arcade.View): """ Class that manages the 'menu' view. """ def on_show_view(self): """ Called when switching to this view""" arcade.set_background_color(arcade.color.WHITE) def on_draw(self): """ Draw the menu """ self.clear() arcade.draw_text("Menu Screen - click to advance", WIDTH / 2, HEIGHT / 2, arcade.color.BLACK, font_size=30, anchor_x="center") def on_mouse_press(self, _x, _y, _button, _modifiers): """ Use a mouse press to advance to the 'game' view. """ game_view = GameView() game_view.setup() self.window.show_view(game_view) class GameView(arcade.View): """ Manage the 'game' view for our program. """ def __init__(self): super().__init__() # Create variables here def setup(self): """ This should set up your game and get it ready to play """ # Replace 'pass' with the code to set up your game pass def on_show_view(self): """ Called when switching to this view""" arcade.set_background_color(arcade.color.ORANGE_PEEL) def on_draw(self): """ Draw everything for the game. """ self.clear() arcade.draw_text("Game - press SPACE to advance", WIDTH / 2, HEIGHT / 2, arcade.color.BLACK, font_size=30, anchor_x="center") def on_key_press(self, key, _modifiers): """ Handle key presses. In this case, we'll just count a 'space' as game over and advance to the game over view. """ if key == arcade.key.SPACE: game_over_view = GameOverView() self.window.show_view(game_over_view) class GameOverView(arcade.View): """ Class to manage the game over view """ def on_show_view(self): """ Called when switching to this view""" arcade.set_background_color(arcade.color.BLACK) def on_draw(self): """ Draw the game over view """ self.clear() arcade.draw_text("Game Over - press ESCAPE to advance", WIDTH / 2, HEIGHT / 2, arcade.color.WHITE, 30, anchor_x="center") def on_key_press(self, key, _modifiers): """ If user hits escape, go back to the main menu view """ if key == arcade.key.ESCAPE: menu_view = MenuView() self.window.show_view(menu_view) def main(): """ Startup """ window = arcade.Window(WIDTH, HEIGHT, "Different Views Minimal Example") menu_view = MenuView() window.show_view(menu_view) arcade.run() if __name__ == "__main__": main() |