clean up
This commit is contained in:
parent
0d1caac357
commit
629e20b304
@ -223,11 +223,9 @@ class GameLogic():
|
|||||||
self.current_piece.position = MATRIX_PIECE_INIT_POSITION
|
self.current_piece.position = MATRIX_PIECE_INIT_POSITION
|
||||||
self.ghost_piece = self.current_piece.ghost()
|
self.ghost_piece = self.current_piece.ghost()
|
||||||
self.move_ghost()
|
self.move_ghost()
|
||||||
self.ui.new_current_piece()
|
|
||||||
self.next_pieces.append(Tetromino())
|
self.next_pieces.append(Tetromino())
|
||||||
for piece, position in zip (self.next_pieces, NEXT_PIECES_POSITIONS):
|
for piece, position in zip (self.next_pieces, NEXT_PIECES_POSITIONS):
|
||||||
piece.position = position
|
piece.position = position
|
||||||
self.ui.new_next_pieces()
|
|
||||||
if self.can_move(
|
if self.can_move(
|
||||||
self.current_piece.position,
|
self.current_piece.position,
|
||||||
self.current_piece.minoes_positions
|
self.current_piece.minoes_positions
|
||||||
@ -329,7 +327,6 @@ class GameLogic():
|
|||||||
for mino_position in self.current_piece.minoes_positions
|
for mino_position in self.current_piece.minoes_positions
|
||||||
):
|
):
|
||||||
self.current_piece.prelocked = False
|
self.current_piece.prelocked = False
|
||||||
self.ui.update_current_piece()
|
|
||||||
self.game_over()
|
self.game_over()
|
||||||
return
|
return
|
||||||
|
|
||||||
@ -416,17 +413,14 @@ class GameLogic():
|
|||||||
else:
|
else:
|
||||||
self.held_piece.position = HELD_PIECE_POSITION
|
self.held_piece.position = HELD_PIECE_POSITION
|
||||||
self.held_piece.minoes_positions = self.held_piece.MINOES_POSITIONS
|
self.held_piece.minoes_positions = self.held_piece.MINOES_POSITIONS
|
||||||
self.ui.new_held_piece()
|
|
||||||
if self.current_piece:
|
if self.current_piece:
|
||||||
self.current_piece.position = MATRIX_PIECE_INIT_POSITION
|
self.current_piece.position = MATRIX_PIECE_INIT_POSITION
|
||||||
self.ghost_piece = self.current_piece.ghost()
|
self.ghost_piece = self.current_piece.ghost()
|
||||||
self.move_ghost()
|
self.move_ghost()
|
||||||
self.ui.new_current_piece()
|
|
||||||
self.ui.start_fall()
|
self.ui.start_fall()
|
||||||
else:
|
else:
|
||||||
self.new_current_piece()
|
self.new_current_piece()
|
||||||
|
|
||||||
def game_over(self):
|
def game_over(self):
|
||||||
self.status = Status.OVER
|
self.status = Status.OVER
|
||||||
self.ui.game_over()
|
|
||||||
|
|
||||||
|
289
tetrarcade.py
289
tetrarcade.py
@ -151,11 +151,7 @@ class TetrArcade(arcade.Window):
|
|||||||
self.matrix_sprite.center_y = center_y
|
self.matrix_sprite.center_y = center_y
|
||||||
self.matrix_sprite.left = int(self.matrix_sprite.left)
|
self.matrix_sprite.left = int(self.matrix_sprite.left)
|
||||||
self.matrix_sprite.top = int(self.matrix_sprite.top)
|
self.matrix_sprite.top = int(self.matrix_sprite.top)
|
||||||
self.update_matrix()
|
self.load_matrix()
|
||||||
if self.game.status in (Status.PLAYING, Status.OVER):
|
|
||||||
self.update_current_piece()
|
|
||||||
self.update_held_piece()
|
|
||||||
self.update_next_pieces()
|
|
||||||
|
|
||||||
def new_game(self):
|
def new_game(self):
|
||||||
self.pressed_actions = []
|
self.pressed_actions = []
|
||||||
@ -163,43 +159,103 @@ class TetrArcade(arcade.Window):
|
|||||||
self.auto_repeat = False
|
self.auto_repeat = False
|
||||||
arcade.schedule(self.clock, 1)
|
arcade.schedule(self.clock, 1)
|
||||||
self.game.new_game()
|
self.game.new_game()
|
||||||
self.update_matrix()
|
self.new_current_piece()
|
||||||
if self.game.status in (Status.PLAYING, Status.OVER):
|
|
||||||
self.update_current_piece()
|
|
||||||
self.update_held_piece()
|
|
||||||
self.update_next_pieces()
|
|
||||||
|
|
||||||
def new_piece(self, piece):
|
|
||||||
piece_sprites = arcade.SpriteList()
|
|
||||||
for mino_position in piece.minoes_positions:
|
|
||||||
mino_sprite_path = MINOES_SPRITES_PATHS[piece.MINOES_COLOR]
|
|
||||||
mino_sprite = arcade.Sprite(mino_sprite_path)
|
|
||||||
mino_sprite.alpha = NORMAL_ALPHA
|
|
||||||
piece_sprites.append(mino_sprite)
|
|
||||||
return piece_sprites
|
|
||||||
|
|
||||||
def new_held_piece(self):
|
|
||||||
self.held_piece_sprites = self.new_piece(self.game.held_piece)
|
|
||||||
self.update_held_piece()
|
|
||||||
|
|
||||||
def new_next_pieces(self):
|
|
||||||
self.next_pieces_sprites = arcade.SpriteList()
|
|
||||||
for piece in self.game.next_pieces:
|
|
||||||
for mino_position in piece.minoes_positions:
|
|
||||||
mino_sprite_path = MINOES_SPRITES_PATHS[piece.MINOES_COLOR]
|
|
||||||
mino_sprite = arcade.Sprite(mino_sprite_path)
|
|
||||||
mino_sprite.alpha = NORMAL_ALPHA
|
|
||||||
self.next_pieces_sprites.append(mino_sprite)
|
|
||||||
self.update_next_pieces()
|
|
||||||
|
|
||||||
def new_current_piece(self):
|
def new_current_piece(self):
|
||||||
self.current_piece_sprites = self.new_piece(self.game.current_piece)
|
self.load_next_pieces()
|
||||||
self.ghost_piece_sprites = self.new_piece(self.game.ghost_piece)
|
self.load_current_piece()
|
||||||
self.update_current_piece()
|
self.load_matrix()
|
||||||
if self.pressed_actions:
|
if self.pressed_actions:
|
||||||
self.stop_autorepeat()
|
self.stop_autorepeat()
|
||||||
arcade.schedule(self.repeat_action, AUTOREPEAT_DELAY)
|
arcade.schedule(self.repeat_action, AUTOREPEAT_DELAY)
|
||||||
|
|
||||||
|
def move_left(self, delta_time=0):
|
||||||
|
self.game.move(Movement.LEFT)
|
||||||
|
|
||||||
|
def move_right(self, delta_time=0):
|
||||||
|
self.game.move(Movement.RIGHT)
|
||||||
|
|
||||||
|
def soft_drop(self, delta_time=0):
|
||||||
|
self.game.soft_drop()
|
||||||
|
|
||||||
|
def hard_drop(self, delta_time=0):
|
||||||
|
self.game.hard_drop()
|
||||||
|
self.lock()
|
||||||
|
|
||||||
|
def rotate_counterclockwise(self, delta_time=0):
|
||||||
|
self.game.rotate(Rotation.COUNTERCLOCKWISE)
|
||||||
|
|
||||||
|
def rotate_clockwise(self, delta_time=0):
|
||||||
|
self.game.rotate(Rotation.CLOCKWISE)
|
||||||
|
|
||||||
|
def fall(self, delta_time=0):
|
||||||
|
self.game.move(Movement.DOWN)
|
||||||
|
|
||||||
|
def start_fall(self):
|
||||||
|
arcade.schedule(self.fall, self.game.fall_delay)
|
||||||
|
|
||||||
|
def stop_fall(self):
|
||||||
|
arcade.unschedule(self.fall)
|
||||||
|
|
||||||
|
def prelock(self, restart=False):
|
||||||
|
if restart:
|
||||||
|
self.cancel_prelock()
|
||||||
|
arcade.schedule(self.lock, self.game.lock_delay)
|
||||||
|
|
||||||
|
def cancel_prelock(self):
|
||||||
|
arcade.unschedule(self.lock)
|
||||||
|
|
||||||
|
def lock(self, delta_time=0):
|
||||||
|
self.game.lock()
|
||||||
|
self.load_matrix()
|
||||||
|
self.load_next_pieces()
|
||||||
|
self.load_current_piece()
|
||||||
|
if self.game.status == Status.PLAYING:
|
||||||
|
self.new_current_piece()
|
||||||
|
elif self.game.status == Status.OVER:
|
||||||
|
self.game_over()
|
||||||
|
|
||||||
|
def swap(self, delta_time=0):
|
||||||
|
self.game.swap()
|
||||||
|
self.load_held_piece()
|
||||||
|
self.load_current_piece()
|
||||||
|
|
||||||
|
def pause(self, delta_time=0):
|
||||||
|
self.highlight_texts = ("""PAUSE
|
||||||
|
|
||||||
|
PRESS
|
||||||
|
[ESC]
|
||||||
|
TO
|
||||||
|
RESUME""",)
|
||||||
|
self.game.status = Status.PAUSED
|
||||||
|
self.stop_fall()
|
||||||
|
self.cancel_prelock()
|
||||||
|
arcade.unschedule(self.clock)
|
||||||
|
self.pressed_actions = []
|
||||||
|
self.stop_autorepeat()
|
||||||
|
|
||||||
|
def resume(self, delta_time=0):
|
||||||
|
self.highlight_texts = []
|
||||||
|
self.game.status = Status.PLAYING
|
||||||
|
self.start_fall()
|
||||||
|
if self.game.current_piece.prelocked:
|
||||||
|
arcade.schedule(self.lock, self.game.lock_delay)
|
||||||
|
arcade.schedule(self.clock, 1)
|
||||||
|
|
||||||
|
def game_over(self):
|
||||||
|
arcade.unschedule(self.repeat_action)
|
||||||
|
self.cancel_prelock()
|
||||||
|
self.stop_fall()
|
||||||
|
arcade.unschedule(self.clock)
|
||||||
|
self.highlight_texts = ("""GAME
|
||||||
|
OVER
|
||||||
|
|
||||||
|
PRESS
|
||||||
|
[ENTER]
|
||||||
|
TO
|
||||||
|
PLAY
|
||||||
|
AGAIN""",)
|
||||||
|
|
||||||
def on_key_press(self, key, modifiers):
|
def on_key_press(self, key, modifiers):
|
||||||
for key_or_modifier in (key, modifiers):
|
for key_or_modifier in (key, modifiers):
|
||||||
try:
|
try:
|
||||||
@ -244,91 +300,6 @@ class TetrArcade(arcade.Window):
|
|||||||
self.auto_repeat = False
|
self.auto_repeat = False
|
||||||
arcade.unschedule(self.repeat_action)
|
arcade.unschedule(self.repeat_action)
|
||||||
|
|
||||||
def move_left(self, delta_time=0):
|
|
||||||
if self.game.move(Movement.LEFT):
|
|
||||||
self.update_current_piece()
|
|
||||||
|
|
||||||
def move_right(self, delta_time=0):
|
|
||||||
if self.game.move(Movement.RIGHT):
|
|
||||||
self.update_current_piece()
|
|
||||||
|
|
||||||
def soft_drop(self, delta_time=0):
|
|
||||||
if self.game.soft_drop():
|
|
||||||
self.update_current_piece()
|
|
||||||
|
|
||||||
def hard_drop(self, delta_time=0):
|
|
||||||
self.game.hard_drop()
|
|
||||||
self.lock()
|
|
||||||
|
|
||||||
def rotate_counterclockwise(self, delta_time=0):
|
|
||||||
if self.game.rotate(Rotation.COUNTERCLOCKWISE):
|
|
||||||
self.update_current_piece()
|
|
||||||
|
|
||||||
def rotate_clockwise(self, delta_time=0):
|
|
||||||
if self.game.rotate(Rotation.CLOCKWISE):
|
|
||||||
self.update_current_piece()
|
|
||||||
|
|
||||||
def fall(self, delta_time=0):
|
|
||||||
if self.game.move(Movement.DOWN):
|
|
||||||
self.update_current_piece()
|
|
||||||
|
|
||||||
def start_fall(self):
|
|
||||||
arcade.schedule(self.fall, self.game.fall_delay)
|
|
||||||
|
|
||||||
def stop_fall(self):
|
|
||||||
arcade.unschedule(self.fall)
|
|
||||||
|
|
||||||
def prelock(self, restart=False):
|
|
||||||
if restart:
|
|
||||||
self.cancel_prelock()
|
|
||||||
arcade.schedule(self.lock, self.game.lock_delay)
|
|
||||||
|
|
||||||
def cancel_prelock(self):
|
|
||||||
arcade.unschedule(self.lock)
|
|
||||||
|
|
||||||
def lock(self, delta_time=0):
|
|
||||||
self.game.lock()
|
|
||||||
self.update_matrix()
|
|
||||||
|
|
||||||
def swap(self, delta_time=0):
|
|
||||||
self.game.swap()
|
|
||||||
|
|
||||||
def pause(self, delta_time=0):
|
|
||||||
self.highlight_texts = ("""PAUSE
|
|
||||||
|
|
||||||
PRESS
|
|
||||||
[ESC]
|
|
||||||
TO
|
|
||||||
RESUME""",)
|
|
||||||
self.game.status = Status.PAUSED
|
|
||||||
self.stop_fall()
|
|
||||||
self.cancel_prelock()
|
|
||||||
arcade.unschedule(self.clock)
|
|
||||||
self.pressed_actions = []
|
|
||||||
self.stop_autorepeat()
|
|
||||||
|
|
||||||
def resume(self, delta_time=0):
|
|
||||||
self.highlight_texts = []
|
|
||||||
self.game.status = Status.PLAYING
|
|
||||||
self.start_fall()
|
|
||||||
if self.game.current_piece.prelocked:
|
|
||||||
arcade.schedule(self.lock, self.game.lock_delay)
|
|
||||||
arcade.schedule(self.clock, 1)
|
|
||||||
|
|
||||||
def game_over(self):
|
|
||||||
arcade.unschedule(self.repeat_action)
|
|
||||||
self.cancel_prelock()
|
|
||||||
self.stop_fall()
|
|
||||||
arcade.unschedule(self.clock)
|
|
||||||
self.highlight_texts = ("""GAME
|
|
||||||
OVER
|
|
||||||
|
|
||||||
PRESS
|
|
||||||
[ENTER]
|
|
||||||
TO
|
|
||||||
PLAY
|
|
||||||
AGAIN""",)
|
|
||||||
|
|
||||||
def add_highlight_text(self, string):
|
def add_highlight_text(self, string):
|
||||||
self.highlight_texts.append(string)
|
self.highlight_texts.append(string)
|
||||||
arcade.schedule(self.del_highlight_text, HIGHLIGHT_TEXT_DISPLAY_DELAY)
|
arcade.schedule(self.del_highlight_text, HIGHLIGHT_TEXT_DISPLAY_DELAY)
|
||||||
@ -341,7 +312,32 @@ AGAIN""",)
|
|||||||
def clock(self, delta_time=0):
|
def clock(self, delta_time=0):
|
||||||
self.game.time += delta_time
|
self.game.time += delta_time
|
||||||
|
|
||||||
def update_matrix(self):
|
def load_piece(self, piece):
|
||||||
|
piece_sprites = arcade.SpriteList()
|
||||||
|
for mino_position in piece.minoes_positions:
|
||||||
|
mino_sprite_path = MINOES_SPRITES_PATHS[piece.MINOES_COLOR]
|
||||||
|
mino_sprite = arcade.Sprite(mino_sprite_path)
|
||||||
|
mino_sprite.alpha = NORMAL_ALPHA
|
||||||
|
piece_sprites.append(mino_sprite)
|
||||||
|
return piece_sprites
|
||||||
|
|
||||||
|
def load_held_piece(self):
|
||||||
|
self.held_piece_sprites = self.load_piece(self.game.held_piece)
|
||||||
|
|
||||||
|
def load_next_pieces(self):
|
||||||
|
self.next_pieces_sprites = arcade.SpriteList()
|
||||||
|
for piece in self.game.next_pieces:
|
||||||
|
for mino_position in piece.minoes_positions:
|
||||||
|
mino_sprite_path = MINOES_SPRITES_PATHS[piece.MINOES_COLOR]
|
||||||
|
mino_sprite = arcade.Sprite(mino_sprite_path)
|
||||||
|
mino_sprite.alpha = NORMAL_ALPHA
|
||||||
|
self.next_pieces_sprites.append(mino_sprite)
|
||||||
|
|
||||||
|
def load_current_piece(self):
|
||||||
|
self.current_piece_sprites = self.load_piece(self.game.current_piece)
|
||||||
|
self.ghost_piece_sprites = self.load_piece(self.game.ghost_piece)
|
||||||
|
|
||||||
|
def load_matrix(self):
|
||||||
if self.game.matrix:
|
if self.game.matrix:
|
||||||
self.matrix_minoes_sprites = arcade.SpriteList()
|
self.matrix_minoes_sprites = arcade.SpriteList()
|
||||||
for y, line in enumerate(self.game.matrix):
|
for y, line in enumerate(self.game.matrix):
|
||||||
@ -363,7 +359,28 @@ AGAIN""",)
|
|||||||
mino_sprite.left = self.matrix_sprite.left + mino_position.x*(mino_sprite.width-1)
|
mino_sprite.left = self.matrix_sprite.left + mino_position.x*(mino_sprite.width-1)
|
||||||
mino_sprite.bottom = self.matrix_sprite.bottom + mino_position.y*(mino_sprite.height-1)
|
mino_sprite.bottom = self.matrix_sprite.bottom + mino_position.y*(mino_sprite.height-1)
|
||||||
|
|
||||||
def update_next_pieces(self):
|
def on_draw(self):
|
||||||
|
arcade.start_render()
|
||||||
|
self.bg_sprite.draw()
|
||||||
|
self.matrix_sprite.draw()
|
||||||
|
if not self.game.status == Status.PAUSED:
|
||||||
|
self.matrix_minoes_sprites.draw()
|
||||||
|
|
||||||
|
self.update_piece(self.game.held_piece, self.held_piece_sprites)
|
||||||
|
self.held_piece_sprites.draw()
|
||||||
|
|
||||||
|
self.update_piece(self.game.current_piece, self.current_piece_sprites)
|
||||||
|
if self.game.current_piece.prelocked:
|
||||||
|
alpha = PRELOCKED_ALPHA if self.game.current_piece.prelocked else NORMAL_ALPHA
|
||||||
|
for mino_sprite in self.current_piece_sprites:
|
||||||
|
mino_sprite.alpha = alpha
|
||||||
|
self.current_piece_sprites.draw()
|
||||||
|
|
||||||
|
self.update_piece(self.game.ghost_piece, self.ghost_piece_sprites)
|
||||||
|
for mino_sprite in self.ghost_piece_sprites:
|
||||||
|
mino_sprite.alpha = GHOST_ALPHA
|
||||||
|
self.ghost_piece_sprites.draw()
|
||||||
|
|
||||||
for n, piece in enumerate(self.game.next_pieces):
|
for n, piece in enumerate(self.game.next_pieces):
|
||||||
for mino_sprite, mino_position in zip(
|
for mino_sprite, mino_position in zip(
|
||||||
self.next_pieces_sprites[4*n:4*(n+1)], piece.minoes_positions
|
self.next_pieces_sprites[4*n:4*(n+1)], piece.minoes_positions
|
||||||
@ -371,31 +388,8 @@ AGAIN""",)
|
|||||||
mino_position += piece.position
|
mino_position += piece.position
|
||||||
mino_sprite.left = self.matrix_sprite.left + mino_position.x*(mino_sprite.width-1)
|
mino_sprite.left = self.matrix_sprite.left + mino_position.x*(mino_sprite.width-1)
|
||||||
mino_sprite.bottom = self.matrix_sprite.bottom + mino_position.y*(mino_sprite.height-1)
|
mino_sprite.bottom = self.matrix_sprite.bottom + mino_position.y*(mino_sprite.height-1)
|
||||||
|
|
||||||
def update_held_piece(self):
|
|
||||||
self.update_piece(self.game.held_piece, self.held_piece_sprites)
|
|
||||||
|
|
||||||
def update_current_piece(self):
|
|
||||||
if self.game.current_piece:
|
|
||||||
self.update_piece(self.game.current_piece, self.current_piece_sprites)
|
|
||||||
if self.game.current_piece.prelocked:
|
|
||||||
alpha = PRELOCKED_ALPHA if self.game.current_piece.prelocked else NORMAL_ALPHA
|
|
||||||
for mino_sprite in self.current_piece_sprites:
|
|
||||||
mino_sprite.alpha = alpha
|
|
||||||
self.update_piece(self.game.ghost_piece, self.ghost_piece_sprites)
|
|
||||||
for mino_sprite in self.ghost_piece_sprites:
|
|
||||||
mino_sprite.alpha = GHOST_ALPHA
|
|
||||||
|
|
||||||
def on_draw(self):
|
|
||||||
arcade.start_render()
|
|
||||||
self.bg_sprite.draw()
|
|
||||||
self.matrix_sprite.draw()
|
|
||||||
if not self.game.status == Status.PAUSED:
|
|
||||||
self.matrix_minoes_sprites.draw()
|
|
||||||
self.held_piece_sprites.draw()
|
|
||||||
self.current_piece_sprites.draw()
|
|
||||||
self.ghost_piece_sprites.draw()
|
|
||||||
self.next_pieces_sprites.draw()
|
self.next_pieces_sprites.draw()
|
||||||
|
|
||||||
arcade.render_text(
|
arcade.render_text(
|
||||||
self.general_text,
|
self.general_text,
|
||||||
self.matrix_sprite.left - TEXT_MARGIN,
|
self.matrix_sprite.left - TEXT_MARGIN,
|
||||||
@ -423,6 +417,7 @@ AGAIN""",)
|
|||||||
font_name = FONT_NAME,
|
font_name = FONT_NAME,
|
||||||
anchor_x = 'right'
|
anchor_x = 'right'
|
||||||
)
|
)
|
||||||
|
|
||||||
if self.highlight_texts:
|
if self.highlight_texts:
|
||||||
arcade.draw_text(
|
arcade.draw_text(
|
||||||
text = self.highlight_texts[0],
|
text = self.highlight_texts[0],
|
||||||
|
Loading…
x
Reference in New Issue
Block a user