update litris with board detection

This commit is contained in:
2023-07-30 14:28:15 +02:00
parent ab0def9115
commit cadcfe8103

View File

@@ -27,6 +27,7 @@ class Litris(GameBase):
self.stone_id_thread = NewStoneID() self.stone_id_thread = NewStoneID()
self.move_mode = 1 self.move_mode = 1
self.moved_around_full = False
self.field_state_storage = { self.field_state_storage = {
1: self.field, 1: self.field,
@@ -35,14 +36,18 @@ class Litris(GameBase):
4: self.field 4: self.field
} }
def reset(self):
self.field.reset_field()
self.field.cleared_rows = 1
self.move_mode = 1
self.moved_around_full = False
def assess_playfield_and_make_move(self): def assess_playfield_and_make_move(self):
last_letter_received = time() last_letter_received = time()
while True: while True:
if self.stone_id_thread.get_pick_up_status() == False: if self.stone_id_thread.get_pick_up_status() == False:
if (time() - last_letter_received) >= 5: if (time() - last_letter_received) >= 5:
self.field.reset_field() self.reset()
self.field.cleared_rows = 1
self.move_mode = 1
last_letter_received = time() last_letter_received = time()
self.dig_point(1500, 980, 100) self.dig_point(1500, 980, 100)
if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused':
@@ -99,11 +104,27 @@ class Litris(GameBase):
self.stone_id_thread.set_pick_up_status(False) self.stone_id_thread.set_pick_up_status(False)
def update_field_with_stored_edges(self): def update_field_with_stored_edges(self):
if self.move_mode == 4: if self.move_mode == 1 and self.moved_around_full:
state_copy = Field.rotate_90_degree_clckwise(copy(self.field_state_storage[2].state))
for i in range(11,20,1):
for e in range(0,2,1):
self.field.state[i][e] = state_copy[i][e]
elif self.move_mode == 2 and self.moved_around_full:
state_copy = Field.rotate_90_degree_clckwise(copy(self.field_state_storage[3].state))
for i in range(11,20,1):
for e in range(0,2,1):
self.field.state[i][e] = state_copy[i][e]
elif self.move_mode == 3 and self.moved_around_full:
state_copy = Field.rotate_90_degree_clckwise(copy(self.field_state_storage[4].state))
for i in range(11, 20, 1):
for e in range(0, 2, 1):
self.field.state[i][e] = state_copy[i][e]
elif self.move_mode == 4:
state_copy = Field.rotate_90_degree_clckwise(copy(self.field_state_storage[1].state)) state_copy = Field.rotate_90_degree_clckwise(copy(self.field_state_storage[1].state))
for i in range(11,20,1): for i in range(11,20,1):
for e in range(0,2,1): for e in range(0,2,1):
self.field.state[i][e] = state_copy[i][e] self.field.state[i][e] = state_copy[i][e]
self.moved_around_full = True
def drop_down(self): def drop_down(self):
if self.move_mode == 1: if self.move_mode == 1: