fix line remove

This commit is contained in:
Adrien MALINGREY 2019-10-04 18:03:35 +02:00
parent f025ad5fd8
commit f013a061b2
2 changed files with 26 additions and 21 deletions

View File

@ -323,6 +323,7 @@ AGAIN""".format(
self.show_text("LEVEL\n{:n}".format(level))
def on_generation_phase(self, piece):
self.matrix.sprites.refresh()
self.matrix.ghost.sprites = TetrominoSprites(self.matrix.ghost, self, GHOST_ALPHA)
for tetromino in [self.matrix.piece, self.matrix.ghost] + self.next.pieces:
tetromino.sprites.refresh()
@ -340,6 +341,15 @@ AGAIN""".format(
def on_lock_phase(self):
self.matrix.piece.sprites.refresh()
self.matrix.sprites.refresh()
def on_locked(self, piece):
piece.sprites.refresh()
for mino in piece:
self.matrix.sprites.append(mino.sprite)
def on_line_remove(self, y):
self.matrix.sprites.remove_line(y)
def swap(self):
super().swap()
@ -348,16 +358,6 @@ AGAIN""".format(
if tetromino:
tetromino.sprites.refresh()
def on_locked(self, piece):
piece.sprites.refresh()
for mino in piece:
self.matrix.sprites.append(mino.sprite)
def remove_line(self, y):
self.matrix.sprites.remove_line(y)
super().remove_line(y)
self.matrix.sprites.refresh()
def pause(self):
super().pause()
if self.play_music:

View File

@ -299,7 +299,17 @@ class TetrisLogic:
if self.pressed_actions:
self.auto_repeat = False
self.stop(self.repeat_action)
for mino in self.matrix.piece:
coord = mino.coord + self.matrix.piece.coord
if coord.y <= self.matrix.lines + 3:
self.matrix[coord.y][coord.x] = mino
self.on_locked(self.matrix.piece)
self.pattern_phase()
def pattern_phase(self):
# T-Spin
if type(self.matrix.piece) == T_Tetrimino and self.matrix.piece.last_rotation_point is not None:
a = self.is_t_slot(0)
@ -315,18 +325,13 @@ class TetrisLogic:
else:
t_spin = T_Spin.NONE
for mino in self.matrix.piece:
coord = mino.coord + self.matrix.piece.coord
if coord.y <= self.matrix.lines + 3:
self.matrix[coord.y][coord.x] = mino
self.on_locked(self.matrix.piece)
# Clear complete lines
lines_cleared = 0
for y, line in reversed(list(enumerate(self.matrix))):
if all(mino for mino in line):
lines_cleared += 1
self.remove_line(y)
self.on_line_remove(y)
self.matrix.pop(y)
self.matrix.append_new_line()
if lines_cleared:
self.stats.lines_cleared += lines_cleared
@ -363,14 +368,14 @@ class TetrisLogic:
else:
self.generation_phase()
if self.auto_repeat:
self.restart(self.repeat_action, self.AUTOREPEAT_DELAY)
if self.pressed_actions:
self.start(self.repeat_action, self.AUTOREPEAT_DELAY)
def on_locked(piece):
pass
def remove_line(self, y):
self.matrix.pop(y)
def on_line_remove(self, y):
pass
def can_move(self, potential_coord, minoes_coords):
return all(self.matrix.cell_is_free(potential_coord + mino_coord) for mino_coord in minoes_coords)