1010See the "Quest" tutorial for a more simple use with
1111pygame sprites and groups.
1212"""
13+
1314import collections
1415import logging
16+ from typing import Deque
1517
1618import pygame
1719from pygame .locals import *
18- from pytmx .util_pygame import load_pygame
20+ from pytmx .util_pygame import load_pygame # type: ignore
1921
2022import pyscroll
2123import pyscroll .data
3133
3234
3335# simple wrapper to keep the screen resizeable
34- def init_screen (width , height ) :
36+ def init_screen (width : int , height : int ) -> pygame . Surface :
3537 return pygame .display .set_mode ((width , height ), pygame .RESIZABLE )
3638
3739
@@ -42,7 +44,7 @@ class ScrollTest:
4244
4345 """
4446
45- def __init__ (self , filename ) -> None :
47+ def __init__ (self , filename : str ) -> None :
4648
4749 # load data from pytmx
4850 tmx_data = load_pygame (filename )
@@ -60,7 +62,7 @@ def __init__(self, filename) -> None:
6062 t = ["scroll demo. press escape to quit" , "arrow keys move" ]
6163
6264 # save the rendered text
63- self .text_overlay = [f .render (i , 1 , (180 , 180 , 0 )) for i in t ]
65+ self .text_overlay = [f .render (i , True , (180 , 180 , 0 )) for i in t ]
6466
6567 # set our initial viewpoint in the center of the map
6668 self .center = [
@@ -71,12 +73,12 @@ def __init__(self, filename) -> None:
7173 # the camera vector is used to handle camera movement
7274 self .camera_acc = [0 , 0 , 0 ]
7375 self .camera_vel = [0 , 0 , 0 ]
74- self .last_update_time = 0
76+ self .last_update_time = 0.0
7577
7678 # true when running
7779 self .running = False
7880
79- def draw (self , surface ) -> None :
81+ def draw (self , surface : pygame . Surface ) -> None :
8082
8183 # tell the map_layer (BufferedRenderer) to draw to the surface
8284 # the draw function requires a rect to draw to.
@@ -85,7 +87,7 @@ def draw(self, surface) -> None:
8587 # blit our text over the map
8688 self .draw_text (surface )
8789
88- def draw_text (self , surface ) -> None :
90+ def draw_text (self , surface : pygame . Surface ) -> None :
8991 y = 0
9092 for text in self .text_overlay :
9193 surface .blit (text , (0 , y ))
@@ -116,27 +118,27 @@ def handle_input(self) -> None:
116118 # but is much easier to use.
117119 pressed = pygame .key .get_pressed ()
118120 if pressed [K_UP ]:
119- self .camera_acc [1 ] = - SCROLL_SPEED * self .last_update_time
121+ self .camera_acc [1 ] = int ( - SCROLL_SPEED * self .last_update_time )
120122 elif pressed [K_DOWN ]:
121- self .camera_acc [1 ] = SCROLL_SPEED * self .last_update_time
123+ self .camera_acc [1 ] = int ( SCROLL_SPEED * self .last_update_time )
122124 else :
123125 self .camera_acc [1 ] = 0
124126
125127 if pressed [K_LEFT ]:
126- self .camera_acc [0 ] = - SCROLL_SPEED * self .last_update_time
128+ self .camera_acc [0 ] = int ( - SCROLL_SPEED * self .last_update_time )
127129 elif pressed [K_RIGHT ]:
128- self .camera_acc [0 ] = SCROLL_SPEED * self .last_update_time
130+ self .camera_acc [0 ] = int ( SCROLL_SPEED * self .last_update_time )
129131 else :
130132 self .camera_acc [0 ] = 0
131133
132- def update (self , td ) -> None :
134+ def update (self , td : float ) -> None :
133135 self .last_update_time = td
134136
135137 friction = pow (0.0001 , self .last_update_time )
136138
137139 # update the camera vector
138- self .camera_vel [0 ] += self .camera_acc [0 ] * td
139- self .camera_vel [1 ] += self .camera_acc [1 ] * td
140+ self .camera_vel [0 ] += int ( self .camera_acc [0 ] * td )
141+ self .camera_vel [1 ] += int ( self .camera_acc [1 ] * td )
140142
141143 self .camera_vel [0 ] *= friction
142144 self .camera_vel [1 ] *= friction
@@ -165,13 +167,13 @@ def update(self, td) -> None:
165167
166168 # set the center somewhere else
167169 # in a game, you would set center to a playable character
168- self .map_layer .center (self .center )
170+ self .map_layer .center (( self .center [ 0 ], self . center [ 1 ]) )
169171
170172 def run (self ) -> None :
171173 clock = pygame .time .Clock ()
172174 self .running = True
173175 fps = 60.0
174- fps_log = collections .deque (maxlen = 20 )
176+ fps_log : Deque [ float ] = collections .deque (maxlen = 20 )
175177
176178 try :
177179 while self .running :
0 commit comments