diff --git a/field.py b/field.py index f17813f..7182537 100644 --- a/field.py +++ b/field.py @@ -1,4 +1,5 @@ #!/usr/bin/python +from copy import copy from tetromino import Tetromino @@ -59,7 +60,7 @@ class Field(): def rotate_state(self): self.state = self.rotate_90_degree_anticlckwise(self.state) #self.state = self.matrixflip(self.state, 'v') - print(self.state) + #print(self.state) def get_line_count(self): return self.cleared_rows @@ -148,6 +149,18 @@ class Field(): self._line_clear() return row + + + def predict_gaps_in_next_rotation(self): + tmp_state = copy(self.state) + tmp_state = self.rotate_90_degree_anticlckwise(tmp_state) + for row in range(int(self.HEIGHT/2)): + tmp_state[row] = [' ' for cols in range(Field.WIDTH)] + return sum( + ["".join([row[col] for row in tmp_state]).lstrip().count(' ') + for col in range(Field.WIDTH)]) + + def count_gaps(self): """ Check each column one by one to make sure there are no gaps in the diff --git a/litris.py b/litris.py index 289dc48..73969d4 100644 --- a/litris.py +++ b/litris.py @@ -90,17 +90,18 @@ class Litris(GameBase): self.drop_down() print(self.field) if self.field.get_line_count() >= 6 and self.field.height() <= 2: - self.update_move_mode() - self.field.rotate_state() - #self.update_move_mode() - self.field.reset_half_field() - #field_mem = copy(self.field) - #self.field = copy(self.field_mem) - #self.field_mem = copy(field_mem) + if self.field.predict_gaps_in_next_rotation() <= 6: + self.update_move_mode() + self.field.rotate_state() + #self.update_move_mode() + self.field.reset_half_field() + #field_mem = copy(self.field) + #self.field = copy(self.field_mem) + #self.field_mem = copy(field_mem) - self.field.cleared_rows = 1 + self.field.cleared_rows = 1 - cv.waitKey(200) + cv.waitKey(200) self.stone_id_thread.set_pick_up_status(False)