fix soft drop

This commit is contained in:
adrienmalin 2019-09-28 16:02:52 +02:00
parent 2b99db6077
commit 22ede2cef6

View File

@ -237,7 +237,7 @@ class TetrisLogic():
if self.level > 15: if self.level > 15:
self.lock_delay = 0.5 * pow(0.9, self.level-15) self.lock_delay = 0.5 * pow(0.9, self.level-15)
self.show_text("LEVEL\n{:n}".format(self.level)) self.show_text("LEVEL\n{:n}".format(self.level))
self.scheduler.start(self.drop, self.fall_delay) self.scheduler.start(self.fall, self.fall_delay)
self.new_current_piece() self.new_current_piece()
def new_current_piece(self): def new_current_piece(self):
@ -276,21 +276,21 @@ class TetrisLogic():
self.ghost_piece.position += Movement.DOWN self.ghost_piece.position += Movement.DOWN
def soft_drop(self): def soft_drop(self):
if self.drop(): if self.move(Movement.DOWN):
self.add_to_score(1) self.add_to_score(1)
return True return True
else: else:
return False return False
def hard_drop(self): def hard_drop(self):
while self.move(Movement.DOWN, prelock_on_stuck=False): while self.move(Movement.DOWN, prelock=False):
self.add_to_score(2) self.add_to_score(2)
self.lock() self.lock()
def drop(self): def fall(self):
self.move(Movement.DOWN) self.move(Movement.DOWN)
def move(self, movement, prelock_on_stuck=True): def move(self, movement, prelock=True):
potential_position = self.current_piece.position + movement potential_position = self.current_piece.position + movement
if self.can_move(potential_position, self.current_piece.minoes_positions): if self.can_move(potential_position, self.current_piece.minoes_positions):
if self.current_piece.prelocked: if self.current_piece.prelocked:
@ -301,7 +301,7 @@ class TetrisLogic():
return True return True
else: else:
if ( if (
prelock_on_stuck and not self.current_piece.prelocked prelock and not self.current_piece.prelocked
and movement == Movement.DOWN and movement == Movement.DOWN
): ):
self.current_piece.prelocked = True self.current_piece.prelocked = True
@ -432,7 +432,7 @@ class TetrisLogic():
self.add_to_score(lock_score) self.add_to_score(lock_score)
if self.goal <= 0: if self.goal <= 0:
self.scheduler.stop(self.drop) self.scheduler.stop(self.fall)
self.new_level() self.new_level()
else: else:
self.new_current_piece() self.new_current_piece()
@ -457,7 +457,7 @@ class TetrisLogic():
def pause(self): def pause(self):
self.state = State.PAUSED self.state = State.PAUSED
self.scheduler.stop(self.drop) self.scheduler.stop(self.fall)
self.scheduler.stop(self.lock) self.scheduler.stop(self.lock)
self.scheduler.stop(self.update_time) self.scheduler.stop(self.update_time)
self.pressed_actions = [] self.pressed_actions = []
@ -465,14 +465,14 @@ class TetrisLogic():
def resume(self): def resume(self):
self.state = State.PLAYING self.state = State.PLAYING
self.scheduler.start(self.drop, self.fall_delay) self.scheduler.start(self.fall, self.fall_delay)
if self.current_piece.prelocked: if self.current_piece.prelocked:
self.scheduler.start(self.lock, self.lock_delay) self.scheduler.start(self.lock, self.lock_delay)
self.scheduler.start(self.update_time, 1) self.scheduler.start(self.update_time, 1)
def game_over(self): def game_over(self):
self.state = State.OVER self.state = State.OVER
self.scheduler.stop(self.drop) self.scheduler.stop(self.fall)
self.scheduler.stop(self.update_time) self.scheduler.stop(self.update_time)
self.scheduler.stop(self.repeat_action) self.scheduler.stop(self.repeat_action)
self.save_high_score() self.save_high_score()
@ -485,9 +485,6 @@ class TetrisLogic():
if action in self.autorepeatable_actions: if action in self.autorepeatable_actions:
self.stop_autorepeat() self.stop_autorepeat()
self.pressed_actions.append(action) self.pressed_actions.append(action)
if action == self.drop:
self.scheduler.start(self.repeat_action, AUTOREPEAT_PERIOD)
else:
self.scheduler.start(self.repeat_action, AUTOREPEAT_DELAY) self.scheduler.start(self.repeat_action, AUTOREPEAT_DELAY)
def repeat_action(self): def repeat_action(self):