Пример #1
0
 def _freeze_faller(gamestate) -> None:
     '''freezes faller, changes cell attributes and checks gameover'''
     faller_cells = Helper._get_faller_cells(gamestate)
     for cell in faller_cells:
         cell.make_frozen_cell(cell._display)
     Match.match_cells(gamestate)
     if not Match.matches(gamestate):
         Helper.check_game_over(gamestate)
     Faller._faller_gone(gamestate)
Пример #2
0
 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)
Пример #3
0
 def move_faller(gamestate, direction: int) -> None:
     '''moves faller left or right'''
     faller_cells = Helper._get_faller_cells(gamestate)
     bot_cell = faller_cells[2]
     if Faller._faller_can_move(gamestate, bot_cell, direction):
         if direction == MOVE_RIGHT:
             gamestate._faller_col += 1
         else:
             gamestate._faller_col -= 1
         for cell in faller_cells[::-1]:
             gamestate._board[cell._row][gamestate._faller_col].make_faller_cell(cell._display)
             cell.make_empty_cell()
         if Faller._landed(gamestate):
             Faller._assert_landed_cells(gamestate)
Пример #4
0
 def rotate_faller(gamestate) -> None:
     '''rotates the faller in place'''
     faller_cells = Helper._get_faller_cells(gamestate)
     top_cell_color = faller_cells[0]._display
     top_cell_row = faller_cells[0]._row
     mid_cell_row = faller_cells[1]._row
     mid_cell_color = faller_cells[1]._display
     bot_cell_color = faller_cells[2]._display
     bot_cell_row = faller_cells[2]._row
     if Faller._landed(gamestate):
         gamestate._board[bot_cell_row][gamestate._faller_col].make_landed_cell(top_cell_color)
         gamestate._board[mid_cell_row][gamestate._faller_col].make_landed_cell(bot_cell_color)
         gamestate._board[top_cell_row][gamestate._faller_col].make_landed_cell(mid_cell_color)
     else:
         gamestate._board[bot_cell_row][gamestate._faller_col].make_faller_cell(top_cell_color)
         gamestate._board[mid_cell_row][gamestate._faller_col].make_faller_cell(bot_cell_color)
         gamestate._board[top_cell_row][gamestate._faller_col].make_faller_cell(mid_cell_color)
Пример #5
0
 def _draw_faller_cells(self) -> None:
     '''draws all faller cells'''
     faller_cells = Helper._get_faller_cells(self._state)
     for cell in faller_cells:
         self._place_cell_in_board(cell)
Пример #6
0
 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
Пример #7
0
 def _assert_landed_cells(gamestate) -> None:
     '''changes cell attributes to landed'''
     faller_cells = Helper._get_faller_cells(gamestate)
     for cell in faller_cells:
         cell.make_landed_cell(cell._display)