def drop_faller(gamestate) -> None: '''drops faller one row if row is empty, faller landed if empty under new faller, else freeze faller''' faller_cells = Helper._get_faller_cells(gamestate) last_faller_cell = faller_cells[2] if Helper._empty_under_cell(gamestate, last_faller_cell): gamestate._last_faller_row += 1 for cell in faller_cells[::-1]: gamestate._board[cell._row+1][cell._col].make_faller_cell(cell._display) cell.make_empty_cell() if Faller._landed(gamestate): Faller._assert_landed_cells(gamestate) else: Faller._freeze_faller(gamestate)
def _landed(gamestate) -> bool: '''returns true if faller landed''' new_last_faller_cell = Helper._get_faller_cells(gamestate)[2] empty_under_cell = Helper._empty_under_cell(gamestate, new_last_faller_cell) return not empty_under_cell