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
106
107
108 | """
Use sprites to scroll around a large screen.
Simple program to show basic sprite usage.
Artwork from https://kenney.nl
If Python and Arcade are installed, this example can be run from the command line with:
python -m arcade.examples.full_screen_example
"""
import arcade
import os
SPRITE_SCALING = 0.5
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600
SCREEN_TITLE = "Full Screen Example"
# How many pixels to keep as a minimum margin between the character
# and the edge of the screen.
VIEWPORT_MARGIN = 40
MOVEMENT_SPEED = 5
class MyGame(arcade.Window):
""" Main application class. """
def __init__(self):
"""
Initializer
"""
# Open a window in full screen mode. Remove fullscreen=True if
# you don't want to start this way.
super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_TITLE, fullscreen=True)
# Set the working directory (where we expect to find files) to the same
# directory this .py file is in. You can leave this out of your own
# code, but it is needed to easily run the examples using "python -m"
# as mentioned at the top of this program.
file_path = os.path.dirname(os.path.abspath(__file__))
os.chdir(file_path)
# This will get the size of the window, and set the viewport to match.
# So if the window is 1000x1000, then so will our viewport. If
# you want something different, then use those coordinates instead.
width, height = self.get_size()
self.set_viewport(0, width, 0, height)
arcade.set_background_color(arcade.color.AMAZON)
self.example_image = arcade.load_texture(":resources:images/tiles/boxCrate_double.png")
def on_draw(self):
"""
Render the screen.
"""
arcade.start_render()
# Get viewport dimensions
left, screen_width, bottom, screen_height = self.get_viewport()
text_size = 18
# Draw text on the screen so the user has an idea of what is happening
arcade.draw_text("Press F to toggle between full screen and windowed mode, unstretched.",
screen_width // 2, screen_height // 2 - 20,
arcade.color.WHITE, text_size, anchor_x="center")
arcade.draw_text("Press S to toggle between full screen and windowed mode, stretched.",
screen_width // 2, screen_height // 2 + 20,
arcade.color.WHITE, text_size, anchor_x="center")
# Draw some boxes on the bottom so we can see how they change
for x in range(64, 800, 128):
y = 64
width = 128
height = 128
arcade.draw_texture_rectangle(x, y, width, height, self.example_image)
def on_key_press(self, key, modifiers):
"""Called whenever a key is pressed. """
if key == arcade.key.F:
# User hits f. Flip between full and not full screen.
self.set_fullscreen(not self.fullscreen)
# Get the window coordinates. Match viewport to window coordinates
# so there is a one-to-one mapping.
width, height = self.get_size()
self.set_viewport(0, width, 0, height)
if key == arcade.key.S:
# User hits s. Flip between full and not full screen.
self.set_fullscreen(not self.fullscreen)
# Instead of a one-to-one mapping, stretch/squash window to match the
# constants. This does NOT respect aspect ratio. You'd need to
# do a bit of math for that.
self.set_viewport(0, SCREEN_WIDTH, 0, SCREEN_HEIGHT)
def main():
""" Main function """
MyGame()
arcade.run()
if __name__ == "__main__":
main()
|