44
55from file_io import read_json , write_json
66from sprites import load_file
7- from utilities import Board , Smiley , Timer , pygame , screen
7+ from utilities import Board , Smiley , Timer , pg , screen
88
99if platform .system () == "Windows" :
1010 sys_name = "Windows"
@@ -64,17 +64,17 @@ def __init__(self,
6464 self ._jr_reveal = jr_reveal
6565
6666 def run (self ) -> None :
67- pygame .init ()
68- pygame .mixer .init ()
67+ pg .init ()
68+ pg .mixer .init ()
6969
70- pygame .display .set_caption ("pysweeper" )
71- pygame .display .set_icon (pygame .image .load (load_file ("textures/bomb.png" )))
72- pygame .display .set_mode (size = (32 * self ._width + 200 ,
73- 32 * self ._height + 200 ),
74- flags = pygame .RESIZABLE ,
75- vsync = True )
70+ pg .display .set_caption ("pysweeper" )
71+ pg .display .set_icon (pg .image .load (load_file ("textures/bomb.png" )))
72+ pg .display .set_mode (size = (32 * self ._width + 200 ,
73+ 32 * self ._height + 200 ),
74+ flags = pg .RESIZABLE ,
75+ vsync = True )
7676
77- clock = pygame .time .Clock ()
77+ clock = pg .time .Clock ()
7878
7979 if sys_name == "Windows" :
8080 temp = win32gui .GetPixel (dc , 0 , 0 )
@@ -92,7 +92,7 @@ def run(self) -> None:
9292 for score in self ._score :
9393 score .draw (screen )
9494
95- mouse_pos = pygame .mouse .get_pos ()
95+ mouse_pos = pg .mouse .get_pos ()
9696 mouse_x = (mouse_pos [0 ] - self ._board ._left_offset ) // 32
9797 mouse_y = (mouse_pos [1 ] - self ._board ._top_offset ) // 32
9898
@@ -104,15 +104,15 @@ def run(self) -> None:
104104 elif sys_name == "Windows" :
105105 win32gui .SetPixel (dc , 0 , 0 , temp )
106106
107- for event in pygame .event .get ():
108- if event .type == pygame .QUIT :
109- pygame .quit ()
107+ for event in pg .event .get ():
108+ if event .type == pg .QUIT :
109+ pg .quit ()
110110 exit ()
111111
112- if event .type == pygame .MOUSEBUTTONDOWN :
112+ if event .type == pg .MOUSEBUTTONDOWN :
113113 self ._smiley .set_in_awe ()
114114
115- if event .type == pygame .MOUSEBUTTONUP :
115+ if event .type == pg .MOUSEBUTTONUP :
116116 self ._smiley .set_reset ()
117117 if mouse_x < self ._width and \
118118 mouse_x >= 0 and \
@@ -146,14 +146,7 @@ def run(self) -> None:
146146 else :
147147 self ._flags += 1
148148 block .flag ()
149- self ._score [0 ].set_number ((self ._bombs
150- - self ._flags ) // 100 )
151- self ._score [1 ].set_number (((self ._bombs
152- - self ._flags ) % 100 )
153- // 10 )
154- self ._score [2 ].set_number ((self ._bombs
155- - self ._flags ) % 10 )
156-
149+ self .update_score ()
157150 elif event .button == 2 :
158151 if not block .is_flagged ():
159152 if block .is_question_mark ():
@@ -169,10 +162,10 @@ def run(self) -> None:
169162 event .button == 1 :
170163 self .restart ()
171164
172- if event .type == pygame .KEYDOWN :
173- if event .key in (pygame .K_LSHIFT , pygame .K_RSHIFT ):
165+ if event .type == pg .KEYDOWN :
166+ if event .key in (pg .K_LSHIFT , pg .K_RSHIFT ):
174167 input_arr .append ("shift" )
175- elif (event .key == pygame .K_BACKSPACE and
168+ elif (event .key == pg .K_BACKSPACE and
176169 len (input_arr ) > 0 ):
177170 input_arr .pop ()
178171 else :
@@ -185,8 +178,10 @@ def run(self) -> None:
185178 cheat = not cheat
186179 input_arr = []
187180
188- font = pygame .font .Font (load_file ("fonts/minecraft_regular.ttf" ),
189- 32 )
181+ if event .type == pg .VIDEORESIZE :
182+ self .resize ()
183+
184+ font = pg .font .Font (load_file ("fonts/minecraft_regular.ttf" ), 32 )
190185 text = font .render ("" .join (input_arr ), True , (0 , 0 , 0 ))
191186 screen .blit (text , (50 , 750 ))
192187
@@ -210,8 +205,8 @@ def run(self) -> None:
210205
211206 if self ._board ._game_over == "LOSE" :
212207 if self ._play_sound :
213- pygame .mixer .music .load (load_file ("sounds/explosion.mp3" ))
214- pygame .mixer .music .play ()
208+ pg .mixer .music .load (load_file ("sounds/explosion.mp3" ))
209+ pg .mixer .music .play ()
215210 self ._play_sound = False
216211 self ._smiley .set_dead ()
217212
@@ -223,44 +218,74 @@ def run(self) -> None:
223218
224219 clock .tick (60 )
225220
226- pygame .display .update ()
221+ pg .display .update ()
227222
228223 def restart (self ) -> None :
229224 self ._clicks = 0
230225 self ._flags = 0
231226 self ._question_marks = 0
227+ temp_left_offset = self ._board ._left_offset
228+ temp_top_offset = self ._board ._top_offset
232229 self ._board = Board (self ._width , self ._height , self ._bombs )
230+ self ._board ._left_offset = temp_left_offset
231+ self ._board ._top_offset = temp_top_offset
232+ self ._board .window_resize ()
233233 self ._smiley = Smiley (x = (self ._board ._left_offset - 32
234234 + 32 * self ._width // 2 ),
235235 y = (self ._board ._top_offset - 64 ))
236236 self ._time = 0
237- self ._timer_0 = Timer (x = (self ._board ._left_offset + 32
238- + 32 * self ._width // 2 ),
239- y = (self ._board ._top_offset - 64 ))
240- self ._timer_1 = Timer (x = (self ._board ._left_offset + 64
241- + 32 * self ._width // 2 ),
242- y = (self ._board ._top_offset - 64 ))
243- self ._timer_2 = Timer (x = (self ._board ._left_offset + 96
244- + 32 * self ._width // 2 ),
245- y = (self ._board ._top_offset - 64 ))
246- self ._timer = [self ._timer_0 , self ._timer_1 , self ._timer_2 ]
247- self ._score_0 = Timer (x = (self ._board ._left_offset - 128
248- + 32 * self ._width // 2 ),
249- y = (self ._board ._top_offset - 64 ))
250- self ._score_1 = Timer (x = (self ._board ._left_offset - 96
251- + 32 * self ._width // 2 ),
252- y = (self ._board ._top_offset - 64 ))
253- self ._score_2 = Timer (x = (self ._board ._left_offset - 64
254- + 32 * self ._width // 2 ),
255- y = (self ._board ._top_offset - 64 ))
256- self ._score = [self ._score_0 , self ._score_1 , self ._score_2 ]
237+ self .set_digit_displays ()
257238 self ._score [0 ].set_number (self ._bombs // 100 )
258239 self ._score [1 ].set_number ((self ._bombs % 100 ) // 10 )
259240 self ._score [2 ].set_number (self ._bombs % 10 )
260241 self ._first_move = True
261242 self ._new_highscore = True
262243 self ._play_sound = True
263244
245+ def resize (self ) -> None :
246+ self ._board ._left_offset = (pg .display .get_surface ().get_width () -
247+ 32 * self ._width )// 2
248+ self ._board ._top_offset = (pg .display .get_surface ().get_height () -
249+ 32 * self ._height )// 2
250+ self ._smiley = Smiley (x = (self ._board ._left_offset - 32
251+ + 32 * self ._width // 2 ),
252+ y = (self ._board ._top_offset - 64 ))
253+ self .set_digit_displays ()
254+ self .update_score ()
255+ self ._board .window_resize ()
256+
257+ def set_digit_displays (self ):
258+ self ._timer_0 = Timer (x = (self ._board ._left_offset
259+ + 32 + 32 * self ._width // 2 ),
260+ y = self ._board ._top_offset - 64 )
261+
262+ self ._timer_1 = Timer (x = (self ._board ._left_offset
263+ + 64 + 32 * self ._width // 2 ),
264+ y = self ._board ._top_offset - 64 )
265+
266+ self ._timer_2 = Timer (x = (self ._board ._left_offset
267+ + 96 + 32 * self ._width // 2 ),
268+ y = self ._board ._top_offset - 64 )
269+ self ._timer = [self ._timer_0 , self ._timer_1 , self ._timer_2 ]
270+
271+ self ._score_0 = Timer (x = (self ._board ._left_offset
272+ - 128 + 32 * self ._width // 2 ),
273+ y = self ._board ._top_offset - 64 )
274+
275+ self ._score_1 = Timer (x = (self ._board ._left_offset
276+ - 96 + 32 * self ._width // 2 ),
277+ y = self ._board ._top_offset - 64 )
278+
279+ self ._score_2 = Timer (x = (self ._board ._left_offset
280+ - 64 + 32 * self ._width // 2 ),
281+ y = self ._board ._top_offset - 64 )
282+ self ._score = [self ._score_0 , self ._score_1 , self ._score_2 ]
283+
284+ def update_score (self ):
285+ self ._score [0 ].set_number ((((self ._bombs - self ._flags )) // 100 ))
286+ self ._score [1 ].set_number (((((self ._bombs - self ._flags )) % 100 ) // 10 ))
287+ self ._score [2 ].set_number ((((self ._bombs - self ._flags )) % 10 ))
288+
264289
265290def main ():
266291 pass
0 commit comments