From f32cbb8f2daa4f3c96cd291f8b092053eae93022 Mon Sep 17 00:00:00 2001 From: Thaloria Date: Sun, 30 Jul 2023 00:08:39 +0200 Subject: [PATCH] update litris with board detection --- litris.py | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/litris.py b/litris.py index 6ab3da3..0e09787 100644 --- a/litris.py +++ b/litris.py @@ -1,3 +1,5 @@ +from copy import copy + import cv2 as cv import numpy as np from time import time @@ -26,6 +28,13 @@ class Litris(GameBase): self.move_mode = 1 + self.field_state_storage = { + 1: self.field, + 2: self.field, + 3: self.field, + 4: self.field + } + def assess_playfield_and_make_move(self): last_letter_received = time() while True: @@ -33,6 +42,7 @@ class Litris(GameBase): if (time() - last_letter_received) >= 5: self.field.reset_field() self.field.cleared_rows = 1 + self.move_mode = 1 last_letter_received = time() self.dig_point(1500, 980, 100) if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': @@ -72,12 +82,13 @@ class Litris(GameBase): print(self.field) if self.field.get_line_count() >= 6 and self.field.height() <= 2 and self.field.check_crucial_pos_to_be_free(): if self.field.predict_gaps_in_next_rotation() <= 3: + self.field_state_storage[self.move_mode] = self.field self.update_move_mode() - #self.field.state = self.stone_id_thread.get_current_board_state() self.field.rotate_state() #self.update_move_mode() self.field.reset_half_field() + self.update_field_with_stored_edges() #field_mem = copy(self.field) #self.field = copy(self.field_mem) #self.field_mem = copy(field_mem) @@ -87,8 +98,13 @@ class Litris(GameBase): cv.waitKey(200) self.stone_id_thread.set_pick_up_status(False) - - + def update_field_with_stored_edges(self): + if self.move_mode == 4: + state_copy = copy(self.field_state_storage[1]) + state_copy = state_copy.rotate_90_degree_clckwise() + for i in range(11,20,1): + for e in range(0,2,1): + self.field.state[i][e] = state_copy[i][e] def drop_down(self): if self.move_mode == 1: