From 3066aed59e9240f788f343f594211be9bfff1b1a Mon Sep 17 00:00:00 2001 From: bugston Date: Tue, 2 Jul 2024 12:53:04 +0300 Subject: [PATCH 01/10] seems like its working, still needs more testing --- main.py | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/main.py b/main.py index 0695e94..e3c1728 100644 --- a/main.py +++ b/main.py @@ -436,26 +436,26 @@ def find_line_in_direction( if adjacent_image in (current_image, UNIQUE_BUTT): current_line.add((x, y)) print( - f'curentimag{current_image}andajacentimag{adjacent_image}', + f'curentimg{current_image}ajacentimg{adjacent_image}', ) print('------------------------------') # if the color is unique but the adjacent is not -# elif current_image == UNIQUE_BUTT and adjacent_image == "assets/green.png": -# current_line.add((x, y)) # have to indentify what color the -# adjacent_image is so it removes only that color -# elif current_image == UNIQUE_BUTT and adjacent_image == "assets/pink.png": -# current_line.add((x, y)) -# elif current_image == UNIQUE_BUTT and adjacent_image == "assets/blue.png": -# current_line.add((x, y)) -# elif current_image == UNIQUE_BUTT and adjacent_image == "assets/yellow.png": -# current_line.add((x, y)) -# elif current_image == UNIQUE_BUTT and adjacent_image == "assets/turquoise.png": -# current_line.add((x, y)) -# elif current_image == UNIQUE_BUTT and adjacent_image == "assets/purple.png": -# current_line.add((x, y)) -# elif current_image == UNIQUE_BUTT and adjacent_image == "assets/orange.png": -# current_line.add((x, y)) + elif current_image == UNIQUE_BUTT and adjacent_image == 'assets/green.png': + current_line.add((x, y)) # have to indentify what color the + # adjacent_image is so it removes only that color + elif current_image == UNIQUE_BUTT and adjacent_image == 'assets/pink.png': + current_line.add((x, y)) + elif current_image == UNIQUE_BUTT and adjacent_image == 'assets/blue.png': + current_line.add((x, y)) + elif current_image == UNIQUE_BUTT and adjacent_image == 'assets/yellow.png': + current_line.add((x, y)) + elif current_image == UNIQUE_BUTT and adjacent_image == 'assets/turquoise.png': + current_line.add((x, y)) + elif current_image == UNIQUE_BUTT and adjacent_image == 'assets/purple.png': + current_line.add((x, y)) + elif current_image == UNIQUE_BUTT and adjacent_image == 'assets/orange.png': + current_line.add((x, y)) # print(f"Added ({x}, {y}) to current_line; unique image matched with {adjacent_image}") # print('------------------------------') From 6f071a6184c32ac3e321fbae4cb0a1971b2f8bda Mon Sep 17 00:00:00 2001 From: bugston Date: Tue, 2 Jul 2024 15:48:02 +0300 Subject: [PATCH 02/10] if unique is placed next to 4 or more green and one pink on other side all disapears --- main.py | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/main.py b/main.py index e3c1728..912d090 100644 --- a/main.py +++ b/main.py @@ -441,7 +441,7 @@ def find_line_in_direction( print('------------------------------') # if the color is unique but the adjacent is not - elif current_image == UNIQUE_BUTT and adjacent_image == 'assets/green.png': + if current_image == UNIQUE_BUTT and adjacent_image == 'assets/green.png': current_line.add((x, y)) # have to indentify what color the # adjacent_image is so it removes only that color elif current_image == UNIQUE_BUTT and adjacent_image == 'assets/pink.png': @@ -457,11 +457,6 @@ def find_line_in_direction( elif current_image == UNIQUE_BUTT and adjacent_image == 'assets/orange.png': current_line.add((x, y)) -# print(f"Added ({x}, {y}) to current_line; unique image matched with {adjacent_image}") -# print('------------------------------') -# elif current_image == UNIQUE_BUTT and adjacent_image == current_image: -# current_line.add((x, y)) # problem potentioly here - def is_within_bounds(self, x, y): return 0 <= x < 9 and 0 <= y < 9 From 63492ad87c606ecffc53ee7183f328b9c1dc5536 Mon Sep 17 00:00:00 2001 From: bugston Date: Tue, 2 Jul 2024 19:26:51 +0300 Subject: [PATCH 03/10] in progress --- main.py | 68 +++++++++++++++++++++++++++++++++++++++------------------ 1 file changed, 47 insertions(+), 21 deletions(-) diff --git a/main.py b/main.py index 912d090..5a4bb0d 100644 --- a/main.py +++ b/main.py @@ -402,7 +402,8 @@ def find_line_in_direction( x, y = row, col dir_x, dir_y = direction previous_image = None - while True: + run = True + while run: x += dir_x y += dir_y if not self.is_within_bounds(x, y): @@ -417,6 +418,7 @@ def find_line_in_direction( if not previous_image and adjacent_image != UNIQUE_BUTT: previous_image = adjacent_image + # print(f'Set previous_image to {previous_image}') # print('------------------------------') if previous_image and adjacent_image not in ( @@ -433,30 +435,54 @@ def find_line_in_direction( # of line of same color nothing happens # if you stack 4 unique and 1 color the or 5 unique they disapear - if adjacent_image in (current_image, UNIQUE_BUTT): - current_line.add((x, y)) - print( - f'curentimg{current_image}ajacentimg{adjacent_image}', - ) - print('------------------------------') - -# if the color is unique but the adjacent is not - if current_image == UNIQUE_BUTT and adjacent_image == 'assets/green.png': - current_line.add((x, y)) # have to indentify what color the - # adjacent_image is so it removes only that color - elif current_image == UNIQUE_BUTT and adjacent_image == 'assets/pink.png': + # if adjacent_image in (current_image, UNIQUE_BUTT): + # current_line.add((x, y)) + if current_image == 'assets/green.png' and (adjacent_image == 'assets/green.png' or adjacent_image == UNIQUE_BUTT): current_line.add((x, y)) - elif current_image == UNIQUE_BUTT and adjacent_image == 'assets/blue.png': + print('current green to green or unique') + elif current_image == UNIQUE_BUTT and adjacent_image == 'assets/green.png': + if (x, y) in current_line in adjacent_image: + current_line.add((x, y)) + + # elif current_image == UNIQUE_BUTT and adjacent_image != 'assets/green.png': + # if (x, y) in current_line in adjacent_image: + # current_line.add((x, y)) + # if (x, y) in current_line in adjacent_image == UNIQUE_BUTT: + # current_line.add((x, y)) + + if current_image == 'assets/pink.png' and (adjacent_image == 'assets/pink.png' or adjacent_image == UNIQUE_BUTT): + run = True current_line.add((x, y)) - elif current_image == UNIQUE_BUTT and adjacent_image == 'assets/yellow.png': - current_line.add((x, y)) - elif current_image == UNIQUE_BUTT and adjacent_image == 'assets/turquoise.png': - current_line.add((x, y)) - elif current_image == UNIQUE_BUTT and adjacent_image == 'assets/purple.png': - current_line.add((x, y)) - elif current_image == UNIQUE_BUTT and adjacent_image == 'assets/orange.png': + elif current_image == UNIQUE_BUTT and adjacent_image == 'assets/pink.png': current_line.add((x, y)) + # elif current_image == UNIQUE_BUTT and adjacent_image != 'assets/pink.png': + # continue + +# if the color is unique but the adjacent is not + # elif current_image == UNIQUE_BUTT and adjacent_image == 'assets/green.png': + # current_line.add((x, y)) # have to indentify what color the + # # adjacent_image is so it removes only that color + + # elif current_image == UNIQUE_BUTT and adjacent_image == 'assets/pink.png': + # if (x, y) in current_line in adjacent_image: + # current_line.add((x, y)) + # if (x, y) in current_line in adjacent_image == UNIQUE_BUTT: + # current_line.add((x, y)) + # elif current_image == UNIQUE_BUTT and adjacent_image == 'assets/pink.png': + + # current_line.add((x, y)) + + # elif current_image == UNIQUE_BUTT and adjacent_image == 'assets/blue.png': + # current_line.add((x, y)) + # elif current_image == UNIQUE_BUTT and adjacent_image == 'assets/yellow.png': + # current_line.add((x, y)) + # elif current_image == UNIQUE_BUTT and adjacent_image == 'assets/turquoise.png': + # current_line.add((x, y)) + # elif current_image == UNIQUE_BUTT and adjacent_image == 'assets/purple.png': + # current_line.add((x, y)) + # elif current_image == UNIQUE_BUTT and adjacent_image == 'assets/orange.png': + # current_line.add((x, y)) def is_within_bounds(self, x, y): return 0 <= x < 9 and 0 <= y < 9 From c45d58e29ea40b0eb81948df6a6ec1f466a23342 Mon Sep 17 00:00:00 2001 From: bugston Date: Fri, 5 Jul 2024 10:52:19 +0300 Subject: [PATCH 04/10] resolved issues from sorcery and few minor changes --- main.py | 13 ++++++++----- save_load_exit.py | 2 +- score_manager.py | 26 +++++++++++++++----------- 3 files changed, 24 insertions(+), 17 deletions(-) diff --git a/main.py b/main.py index 5a4bb0d..53eb4b0 100644 --- a/main.py +++ b/main.py @@ -55,9 +55,11 @@ def __init__(self, **kwargs): self.score_manager = ScoreManager(self) self.func_manager = FuncManager(self) self.func_manager.load_game_state() - self.no_path_sound = SoundLoader.load('assets/no path.wav') self.is_moving = False - + try: + self.no_path_sound = SoundLoader.load('assets/no path.wav') + except Exception: + return None self.right_wide = 0.11 self.left_wide = 0.36 self.top_height = 0.77 @@ -86,11 +88,11 @@ def __init__(self, **kwargs): # self.top_height += diff / 1000 # self.bottom_height += diff / 1000 - def build_grid_layout(self): + def build_grid_layout(self, cols=9, rows=9, spacing=16): self.grid_layout = GridLayout( - cols=9, rows=9, + cols=cols, rows=rows, size_hint=(1.0, 1.0), - spacing=16, + spacing=spacing, ) for row in range(9): for col in range(9): @@ -483,6 +485,7 @@ def find_line_in_direction( # current_line.add((x, y)) # elif current_image == UNIQUE_BUTT and adjacent_image == 'assets/orange.png': # current_line.add((x, y)) + def is_within_bounds(self, x, y): return 0 <= x < 9 and 0 <= y < 9 diff --git a/save_load_exit.py b/save_load_exit.py index cff6ce3..db84fb7 100644 --- a/save_load_exit.py +++ b/save_load_exit.py @@ -26,7 +26,7 @@ def create_initial_score_file(self): file.write(f'{set()}\n') file.write(f'{[[0] * 9 for _ in range(9)]}\n') file.write(f'{[[None] * 9 for _ in range(9)]}\n') - file.write(f'{0}\n') + file.write(f'0\n') def apply_game_state(self): self.game.score_manager.update_score_label() diff --git a/score_manager.py b/score_manager.py index 49678d4..094c630 100644 --- a/score_manager.py +++ b/score_manager.py @@ -25,16 +25,21 @@ def score_check_button(self): return self.sc_button def score_check(self, _): + scores = self.read_scores_from_file() + self.setup_overlay(scores) + + def read_scores_from_file(self): scores = [] + try: + with open(self.score_file) as file: + lines = file.readlines() + if len(lines) >= 5: + scores = [int(score) for score in lines[4].strip().split(',')] + except FileNotFoundError as e: + return e + return scores - with open(self.score_file) as file: - lines = file.readlines() - if len(lines) >= 5: - scores = [int(score) for score in lines[4].strip().split(',')] - if scores[0] == 0: - print('no score yet') - # if no file is found maybe we should, - # no highscores yet, get to aligning! + def setup_overlay(self, scores): if self.game.overlay is None: self.game.overlay = Widget() with self.game.overlay.canvas: @@ -43,7 +48,7 @@ def score_check(self, _): pos=self.game.root.pos, size=self.game.root.size, ) - pos_text = (f'Position left: {len(self.game.pos_set)}') + pos_text = f'Position left: {len(self.game.pos_set)}' pos_label = Label( text=pos_text, font_size=40, @@ -51,8 +56,7 @@ def score_check(self, _): pos=(self.game.root.width * 0.4, self.game.root.height * 0.1), ) score_text = '\n'.join( - f'{i + 1}. {score}' for i, - score in enumerate(scores) + f'{i + 1}. {score}' for i, score in enumerate(scores) ) scores_label = Label( text=score_text, From 970350fce7ff698cc4ab18ae9315b3e3c79e9316 Mon Sep 17 00:00:00 2001 From: bugston Date: Mon, 8 Jul 2024 10:42:17 +0300 Subject: [PATCH 05/10] tried to apply the logic provided from our friend, faild in my attempt, but got an idea --- main.py | 169 ++++++++++++++++++---------------------------- save_load_exit.py | 2 +- score_manager.py | 5 +- 3 files changed, 71 insertions(+), 105 deletions(-) diff --git a/main.py b/main.py index 53eb4b0..4b06953 100644 --- a/main.py +++ b/main.py @@ -25,11 +25,11 @@ IMAGE_LIST = [ 'assets/pink.png', 'assets/green.png', - # 'assets/blue.png', - # 'assets/yellow.png', - # 'assets/turquoise.png', - # 'assets/orange.png', - # 'assets/purple.png', + 'assets/blue.png', + 'assets/yellow.png', + 'assets/turquoise.png', + 'assets/orange.png', + 'assets/purple.png', UNIQUE_BUTT, ] @@ -78,15 +78,15 @@ def __init__(self, **kwargs): # self.bottom_height = 1.0 # algorytm for dynamic scaling - # def window_size(self, instance, width, height): - # if width > height: - # diff = width - height - # self.right_wide += diff / 1000 - # self.left_wide += diff / 1000 - # if height > width: - # diff = height - width - # self.top_height += diff / 1000 - # self.bottom_height += diff / 1000 + def window_size(self, instance, width, height): + if width > 1200: + diff = width - height + self.right_wide += diff / 1000 + self.left_wide += diff / 1000 + if height > width: + diff = height - width + self.top_height += diff / 1000 + self.bottom_height += diff / 1000 def build_grid_layout(self, cols=9, rows=9, spacing=16): self.grid_layout = GridLayout( @@ -385,14 +385,21 @@ def find_adjacent_lines(self, row, col): (-1, 0), (0, -1), (-1, -1), (-1, 1), ] current_image = self.get_button_at(row, col).background_normal - adjacent_lines = {i: {(row, col)} for i in range(4)} + adjacent_lines = set() for i, direction in enumerate(directions): - self.find_line_in_direction( - adjacent_lines[i % 4], - direction, row, col, - current_image, + current_line = self.find_line_in_direction( + set(), direction, row, col, current_image, ) + if len(current_line) >= 5: + adjacent_lines.update(current_line) return adjacent_lines + # maybe we should take all adjacent lines into account and than + # start checking each one and what it contains + # for example we have a 2 horizontal lines + # firs one is just 3 blue, we leave it + # second one is 4 blue 1 unique and 3 green, we count + # which color has the most adjacent to unique and that determines + # what part of the line is to be removed def find_line_in_direction( self, @@ -405,97 +412,53 @@ def find_line_in_direction( dir_x, dir_y = direction previous_image = None run = True + line_in_dir = [] + while run: - x += dir_x - y += dir_y - if not self.is_within_bounds(x, y): - break - adjacent_button = self.get_button_at(x, y) - adjacent_image = adjacent_button.background_normal - if adjacent_image == '': - break - # every line has one color, that is the first not unique - # compares one by one if its the - # same or unique and if not then break - - if not previous_image and adjacent_image != UNIQUE_BUTT: - previous_image = adjacent_image - - # print(f'Set previous_image to {previous_image}') - # print('------------------------------') - if previous_image and adjacent_image not in ( - previous_image, UNIQUE_BUTT, - ): - # print(f'image {adjacent_image} not matching previous_image') - # print(f'{previous_image} or unique {UNIQUE_BUTT}') - # print('------------------------------') + if self.is_within_bounds(x, y): + adjacent_button = self.get_button_at(x, y) + adjacent_image = adjacent_button.background_normal + if adjacent_image == '': + break + + if not previous_image and adjacent_image != UNIQUE_BUTT: + previous_image = adjacent_image + + if previous_image and adjacent_image not in (previous_image, UNIQUE_BUTT): + break + + line_in_dir.append((x, y)) + + if current_image == UNIQUE_BUTT: + if len(line_in_dir) >= 5: + current_line.update(line_in_dir) + else: + if adjacent_image == current_image or adjacent_image == UNIQUE_BUTT: + current_line.add((x, y)) + else: + if len(line_in_dir) >= 5: + current_line.update(line_in_dir) + break + + x += dir_x + y += dir_y + else: break -# you you stack color to a line of same color or -# line with same color +unique they disapear -# but if you stack unique in middle or end -# of line of same color nothing happens -# if you stack 4 unique and 1 color the or 5 unique they disapear - - # if adjacent_image in (current_image, UNIQUE_BUTT): - # current_line.add((x, y)) - if current_image == 'assets/green.png' and (adjacent_image == 'assets/green.png' or adjacent_image == UNIQUE_BUTT): - current_line.add((x, y)) - print('current green to green or unique') - elif current_image == UNIQUE_BUTT and adjacent_image == 'assets/green.png': - if (x, y) in current_line in adjacent_image: - current_line.add((x, y)) - - # elif current_image == UNIQUE_BUTT and adjacent_image != 'assets/green.png': - # if (x, y) in current_line in adjacent_image: - # current_line.add((x, y)) - # if (x, y) in current_line in adjacent_image == UNIQUE_BUTT: - # current_line.add((x, y)) - - if current_image == 'assets/pink.png' and (adjacent_image == 'assets/pink.png' or adjacent_image == UNIQUE_BUTT): - run = True - current_line.add((x, y)) - elif current_image == UNIQUE_BUTT and adjacent_image == 'assets/pink.png': - current_line.add((x, y)) - # elif current_image == UNIQUE_BUTT and adjacent_image != 'assets/pink.png': - # continue - - -# if the color is unique but the adjacent is not - # elif current_image == UNIQUE_BUTT and adjacent_image == 'assets/green.png': - # current_line.add((x, y)) # have to indentify what color the - # # adjacent_image is so it removes only that color - - # elif current_image == UNIQUE_BUTT and adjacent_image == 'assets/pink.png': - # if (x, y) in current_line in adjacent_image: - # current_line.add((x, y)) - # if (x, y) in current_line in adjacent_image == UNIQUE_BUTT: - # current_line.add((x, y)) - # elif current_image == UNIQUE_BUTT and adjacent_image == 'assets/pink.png': - - # current_line.add((x, y)) - - # elif current_image == UNIQUE_BUTT and adjacent_image == 'assets/blue.png': - # current_line.add((x, y)) - # elif current_image == UNIQUE_BUTT and adjacent_image == 'assets/yellow.png': - # current_line.add((x, y)) - # elif current_image == UNIQUE_BUTT and adjacent_image == 'assets/turquoise.png': - # current_line.add((x, y)) - # elif current_image == UNIQUE_BUTT and adjacent_image == 'assets/purple.png': - # current_line.add((x, y)) - # elif current_image == UNIQUE_BUTT and adjacent_image == 'assets/orange.png': - # current_line.add((x, y)) + if len(current_line) >= 5: + return current_line + else: + return set() def is_within_bounds(self, x, y): return 0 <= x < 9 and 0 <= y < 9 def check_length_remove_square(self, lines): - variable = len(self.pos_set) - for line in lines.values(): - if len(line) >= 5: - self.spawn = False - self.remove_line(line) - self.score_manager.score += (len(self.pos_set) - variable) + initial_length = len(self.pos_set) + if lines: + self.spawn = False + self.remove_line(lines) + self.score_manager.score += (initial_length - len(self.pos_set)) self.score_manager.update_score_label() def remove_line(self, line): @@ -572,7 +535,7 @@ def build(self): middle_layout = BoxLayout(orientation='horizontal') predicted_layout = self.build_predicted_layout() - middle_layout.add_widget(predicted_layout) + middle_layout.add_widget(predicted_layout, (self.top_height, 1.0)) grid_layout = self.build_grid_layout() middle_layout.add_widget(grid_layout) right_layout = self.build_placeholder_layout( diff --git a/save_load_exit.py b/save_load_exit.py index db84fb7..05f850f 100644 --- a/save_load_exit.py +++ b/save_load_exit.py @@ -26,7 +26,7 @@ def create_initial_score_file(self): file.write(f'{set()}\n') file.write(f'{[[0] * 9 for _ in range(9)]}\n') file.write(f'{[[None] * 9 for _ in range(9)]}\n') - file.write(f'0\n') + file.write('0') def apply_game_state(self): self.game.score_manager.update_score_label() diff --git a/score_manager.py b/score_manager.py index 094c630..117d264 100644 --- a/score_manager.py +++ b/score_manager.py @@ -34,7 +34,10 @@ def read_scores_from_file(self): with open(self.score_file) as file: lines = file.readlines() if len(lines) >= 5: - scores = [int(score) for score in lines[4].strip().split(',')] + scores = [ + int(score) + for score in lines[4].strip().split(',') + ] except FileNotFoundError as e: return e return scores From ebdee44daa108a72016de64c387afd023a9aacdd Mon Sep 17 00:00:00 2001 From: bugston Date: Mon, 8 Jul 2024 13:16:28 +0300 Subject: [PATCH 06/10] it no longer removes lines of different colors but when i line of a five or more is created and complete with a unique button it removes ONLY 5 of the side of the line which contains more of the given color --- handle_lines.py | 67 ++++++++++++++++++++++++++++++++++++++++ main.py | 82 +++++++------------------------------------------ 2 files changed, 78 insertions(+), 71 deletions(-) create mode 100644 handle_lines.py diff --git a/handle_lines.py b/handle_lines.py new file mode 100644 index 0000000..566753e --- /dev/null +++ b/handle_lines.py @@ -0,0 +1,67 @@ +class ColorButtonManager: + def __init__(self, app): + self.app = app + self.UNIQUE_BUTT = 'assets/crown.png' + + def find_adjacent_lines(self, row, col): + directions = [ + (1, 0), (0, 1), (1, 1), (1, -1), + (-1, 0), (0, -1), (-1, -1), (-1, 1), + ] + current_image = self.app.get_button_at(row, col).background_normal + adjacent_lines = set() + for direction in directions: + current_line = self.find_line_in_direction( + set(), direction, row, col, current_image, + ) + if len(current_line) >= 5: + adjacent_lines.update(current_line) + return adjacent_lines + + def find_line_in_direction(self, current_line, direction, row, col, current_image): + x, y = row, col + dir_x, dir_y = direction + previous_image = None + run = True + line_in_dir = [] + + while run: + if self.app.is_within_bounds(x, y): + adjacent_button = self.app.get_button_at(x, y) + adjacent_image = adjacent_button.background_normal + if adjacent_image == '': + break + + if not previous_image and adjacent_image != self.UNIQUE_BUTT: + previous_image = adjacent_image + + if previous_image and adjacent_image not in (previous_image, self.UNIQUE_BUTT): + break + + line_in_dir.append((x, y)) + + if current_image == self.UNIQUE_BUTT: + if len(line_in_dir) >= 5: + current_line.update(line_in_dir) + else: + if adjacent_image == current_image or adjacent_image == self.UNIQUE_BUTT: + current_line.add((x, y)) + else: + if len(line_in_dir) >= 5: + current_line.update(line_in_dir) + break + + x += dir_x + y += dir_y + else: + break + + if len(current_line) >= 5: + return current_line + else: + return set() + + def remove_line(self, line): + for x, y in line: + if self.app.is_within_bounds(x, y): + self.app.clear_button(x, y) diff --git a/main.py b/main.py index 4b06953..eefb839 100644 --- a/main.py +++ b/main.py @@ -17,6 +17,7 @@ from kivy.uix.widget import Widget from astar import astar +from handle_lines import ColorButtonManager from save_load_exit import FuncManager from score_manager import ScoreManager UNIQUE_BUTT = 'assets/crown.png' @@ -25,11 +26,11 @@ IMAGE_LIST = [ 'assets/pink.png', 'assets/green.png', - 'assets/blue.png', - 'assets/yellow.png', - 'assets/turquoise.png', - 'assets/orange.png', - 'assets/purple.png', + # 'assets/blue.png', + # 'assets/yellow.png', + # 'assets/turquoise.png', + # 'assets/orange.png', + # 'assets/purple.png', UNIQUE_BUTT, ] @@ -56,6 +57,7 @@ def __init__(self, **kwargs): self.func_manager = FuncManager(self) self.func_manager.load_game_state() self.is_moving = False + self.handle_lines = ColorButtonManager(self) try: self.no_path_sound = SoundLoader.load('assets/no path.wav') except Exception: @@ -246,7 +248,7 @@ def clear_last_button(self): def handle_reached_destination(self): start = self.selected_button[1], self.selected_button[2] self.update_logical_grid(self.path[-1][0], self.path[-1][1], start) - adjacent_lines = self.find_adjacent_lines( + adjacent_lines = self.handle_lines.find_adjacent_lines( self.path[-1][0], self.path[-1][1], ) @@ -254,6 +256,7 @@ def handle_reached_destination(self): self.check_length_remove_square(adjacent_lines) self.enable_grid_buttons() self.is_moving = False + self.check_length_remove_square(adjacent_lines) def get_button_at(self, row, col): return self.grid_layout.children[9 * (8 - row) + (8 - col)] @@ -376,23 +379,9 @@ def update_grid_with_new_images(self, cords, images): self.pos_set.remove(cord) self.logical_grid[cord[0]][cord[1]] = 1 self.check_length_remove_square( - self.find_adjacent_lines(row, col), + self.handle_lines.find_adjacent_lines(row, col), ) - def find_adjacent_lines(self, row, col): - directions = [ - (1, 0), (0, 1), (1, 1), (1, -1), - (-1, 0), (0, -1), (-1, -1), (-1, 1), - ] - current_image = self.get_button_at(row, col).background_normal - adjacent_lines = set() - for i, direction in enumerate(directions): - current_line = self.find_line_in_direction( - set(), direction, row, col, current_image, - ) - if len(current_line) >= 5: - adjacent_lines.update(current_line) - return adjacent_lines # maybe we should take all adjacent lines into account and than # start checking each one and what it contains # for example we have a 2 horizontal lines @@ -401,55 +390,6 @@ def find_adjacent_lines(self, row, col): # which color has the most adjacent to unique and that determines # what part of the line is to be removed - def find_line_in_direction( - self, - current_line, - direction, - row, col, - current_image, - ): - x, y = row, col - dir_x, dir_y = direction - previous_image = None - run = True - line_in_dir = [] - - while run: - if self.is_within_bounds(x, y): - adjacent_button = self.get_button_at(x, y) - adjacent_image = adjacent_button.background_normal - if adjacent_image == '': - break - - if not previous_image and adjacent_image != UNIQUE_BUTT: - previous_image = adjacent_image - - if previous_image and adjacent_image not in (previous_image, UNIQUE_BUTT): - break - - line_in_dir.append((x, y)) - - if current_image == UNIQUE_BUTT: - if len(line_in_dir) >= 5: - current_line.update(line_in_dir) - else: - if adjacent_image == current_image or adjacent_image == UNIQUE_BUTT: - current_line.add((x, y)) - else: - if len(line_in_dir) >= 5: - current_line.update(line_in_dir) - break - - x += dir_x - y += dir_y - else: - break - - if len(current_line) >= 5: - return current_line - else: - return set() - def is_within_bounds(self, x, y): return 0 <= x < 9 and 0 <= y < 9 @@ -457,7 +397,7 @@ def check_length_remove_square(self, lines): initial_length = len(self.pos_set) if lines: self.spawn = False - self.remove_line(lines) + self.handle_lines.remove_line(lines) self.score_manager.score += (initial_length - len(self.pos_set)) self.score_manager.update_score_label() From 1ab24df85ff3d2ab394eea19fbe4e0fe9e2daef0 Mon Sep 17 00:00:00 2001 From: bugston Date: Mon, 8 Jul 2024 14:55:07 +0300 Subject: [PATCH 07/10] added find adjacent lines in assign_random_imgae_to_button so the method is called one more time to see if the line is longer than 5 --- handle_lines.py | 14 ++++++++++---- main.py | 1 + 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/handle_lines.py b/handle_lines.py index 566753e..6b9f7d5 100644 --- a/handle_lines.py +++ b/handle_lines.py @@ -15,6 +15,7 @@ def find_adjacent_lines(self, row, col): set(), direction, row, col, current_image, ) if len(current_line) >= 5: + print(f'if len(current_line) >= 5: {current_line}') adjacent_lines.update(current_line) return adjacent_lines @@ -26,6 +27,7 @@ def find_line_in_direction(self, current_line, direction, row, col, current_imag line_in_dir = [] while run: + if self.app.is_within_bounds(x, y): adjacent_button = self.app.get_button_at(x, y) adjacent_image = adjacent_button.background_normal @@ -39,16 +41,20 @@ def find_line_in_direction(self, current_line, direction, row, col, current_imag break line_in_dir.append((x, y)) + print('--------------------') + print(f'line_in_dir.append((x, y)) {line_in_dir}') + print(f'{current_image}, {adjacent_image}') + print('--------------------') if current_image == self.UNIQUE_BUTT: - if len(line_in_dir) >= 5: - current_line.update(line_in_dir) + # if len(line_in_dir) >= 5: + current_line.update(line_in_dir) else: if adjacent_image == current_image or adjacent_image == self.UNIQUE_BUTT: current_line.add((x, y)) else: - if len(line_in_dir) >= 5: - current_line.update(line_in_dir) + # if len(line_in_dir) >= 5: + current_line.update(line_in_dir) break x += dir_x diff --git a/main.py b/main.py index eefb839..2bbffb5 100644 --- a/main.py +++ b/main.py @@ -284,6 +284,7 @@ def assign_random_images_to_buttons(self): images = [img.source for img in self.button_layout.children] self.update_button_layout_images() self.update_grid_with_new_images(cords, images) + self.handle_lines.find_adjacent_lines(cords[0][0], cords[0][1]) def gameover(self): print('Game Over') From 9a7861d9ec44fd15035f4ab81969a99a28ff961d Mon Sep 17 00:00:00 2001 From: bugston Date: Mon, 8 Jul 2024 16:05:13 +0300 Subject: [PATCH 08/10] only same color disapears on a line and only if buttons are adjacent or unique, issue to resolve when unique button is current button line dosnt disapear --- handle_lines.py | 83 +++++++++++++++++++++---------------------------- main.py | 21 ++++++------- 2 files changed, 46 insertions(+), 58 deletions(-) diff --git a/handle_lines.py b/handle_lines.py index 6b9f7d5..3495c47 100644 --- a/handle_lines.py +++ b/handle_lines.py @@ -6,68 +6,57 @@ def __init__(self, app): def find_adjacent_lines(self, row, col): directions = [ (1, 0), (0, 1), (1, 1), (1, -1), - (-1, 0), (0, -1), (-1, -1), (-1, 1), ] current_image = self.app.get_button_at(row, col).background_normal adjacent_lines = set() for direction in directions: - current_line = self.find_line_in_direction( - set(), direction, row, col, current_image, - ) - if len(current_line) >= 5: - print(f'if len(current_line) >= 5: {current_line}') - adjacent_lines.update(current_line) + line = self.find_full_line(direction, row, col, current_image) + if len(line) >= 5: + adjacent_lines.update(line) return adjacent_lines - def find_line_in_direction(self, current_line, direction, row, col, current_image): + def find_full_line(self, direction, row, col, current_image): + line1 = self.find_line_in_direction(direction, row, col, current_image) + line2 = self.find_line_in_direction( + (-direction[0], -direction[1]), row, col, current_image, + ) + full_line = line1.union(line2) + full_line.add((row, col)) + return full_line + + def find_line_in_direction(self, direction, row, col, current_image): x, y = row, col dir_x, dir_y = direction - previous_image = None - run = True - line_in_dir = [] - - while run: - + line_in_dir = set() + while True: + x += dir_x + y += dir_y if self.app.is_within_bounds(x, y): adjacent_button = self.app.get_button_at(x, y) adjacent_image = adjacent_button.background_normal - if adjacent_image == '': - break - - if not previous_image and adjacent_image != self.UNIQUE_BUTT: - previous_image = adjacent_image - if previous_image and adjacent_image not in (previous_image, self.UNIQUE_BUTT): + if adjacent_image == '' or (adjacent_image != current_image and adjacent_image != self.UNIQUE_BUTT): break - - line_in_dir.append((x, y)) - print('--------------------') - print(f'line_in_dir.append((x, y)) {line_in_dir}') - print(f'{current_image}, {adjacent_image}') - print('--------------------') - - if current_image == self.UNIQUE_BUTT: - # if len(line_in_dir) >= 5: - current_line.update(line_in_dir) - else: - if adjacent_image == current_image or adjacent_image == self.UNIQUE_BUTT: - current_line.add((x, y)) - else: - # if len(line_in_dir) >= 5: - current_line.update(line_in_dir) - break - - x += dir_x - y += dir_y + elif adjacent_image == current_image or adjacent_image == self.UNIQUE_BUTT: + line_in_dir.add((x, y)) else: break - - if len(current_line) >= 5: - return current_line - else: - return set() + return line_in_dir def remove_line(self, line): + total_lines_to_remove = set() for x, y in line: - if self.app.is_within_bounds(x, y): - self.app.clear_button(x, y) + lines = self.find_adjacent_lines(x, y) + if len(lines) >= 5: + total_lines_to_remove.update(lines) + if len(total_lines_to_remove) >= 5: + for x, y in total_lines_to_remove: + if self.app.is_within_bounds(x, y): + self.app.clear_button(x, y) + + def remove_lines_if_unique(self, row, col): + current_image = self.app.get_button_at(row, col).background_normal + if current_image == self.UNIQUE_BUTT: + lines = self.find_adjacent_lines(row, col) + if len(lines) >= 5: + self.remove_line(lines) diff --git a/main.py b/main.py index 2bbffb5..fc8c993 100644 --- a/main.py +++ b/main.py @@ -248,10 +248,9 @@ def clear_last_button(self): def handle_reached_destination(self): start = self.selected_button[1], self.selected_button[2] self.update_logical_grid(self.path[-1][0], self.path[-1][1], start) - adjacent_lines = self.handle_lines.find_adjacent_lines( - self.path[-1][0], - self.path[-1][1], - ) + row, col = self.path[-1][0], self.path[-1][1] + self.handle_lines.remove_lines_if_unique(row, col) + adjacent_lines = self.handle_lines.find_adjacent_lines(row, col) if adjacent_lines: self.check_length_remove_square(adjacent_lines) self.enable_grid_buttons() @@ -284,7 +283,7 @@ def assign_random_images_to_buttons(self): images = [img.source for img in self.button_layout.children] self.update_button_layout_images() self.update_grid_with_new_images(cords, images) - self.handle_lines.find_adjacent_lines(cords[0][0], cords[0][1]) + # self.handle_lines.find_adjacent_lines(cords[0][0], cords[0][1]) def gameover(self): print('Game Over') @@ -402,12 +401,12 @@ def check_length_remove_square(self, lines): self.score_manager.score += (initial_length - len(self.pos_set)) self.score_manager.update_score_label() - def remove_line(self, line): - for x, y in line: - if self.is_within_bounds(x, y): - button_index = 9 * (8 - x) + (8 - y) - if button_index < len(self.grid_layout.children): - self.clear_button(x, y) + # def remove_line(self, line): + # for x, y in line: + # if self.is_within_bounds(x, y): + # button_index = 9 * (8 - x) + (8 - y) + # if button_index < len(self.grid_layout.children): + # self.clear_button(x, y) def clear_button(self, x, y): self.get_button_at(x, y).background_normal = '' From c3b9bbfb12d431caef84aab327a5858f06ef3f8e Mon Sep 17 00:00:00 2001 From: bugston Date: Mon, 8 Jul 2024 17:21:24 +0300 Subject: [PATCH 09/10] removed img --- assets/boardcm.jpg | Bin 1088470 -> 0 bytes assets/mp.png | Bin 256 -> 0 bytes assets/trans.png | Bin 675 -> 0 bytes assets/unique.png | Bin 434 -> 0 bytes 4 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 assets/boardcm.jpg delete mode 100644 assets/mp.png delete mode 100644 assets/trans.png delete mode 100644 assets/unique.png diff --git a/assets/boardcm.jpg b/assets/boardcm.jpg deleted file mode 100644 index 103d8bdcac54c8dd08815378a296d3c55b29e911..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1088470 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

M3_QN@dh8|K>!3m00is=g!1n6mEecd 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 VVj@Xt3K~`x%!M9!AbUU}`ELiog_!^V diff --git a/assets/mp.png b/assets/mp.png deleted file mode 100644 index 7e8a46617de53d6e140a6ba2d0df03f5d1697ce3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 256 zcmeAS@N?(olHy`uVBq!ia0vp^Mj*_=1|;R|J2nC-#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>1s;*b3=DinK$vl=HlH+5aH^+^V@QVc+gpx&%?bhzfw$tiRoNdW=STc6CiE^@e5JXP=Nob5S_e)Xu=9sMw&US+Ag_7UmphBjS( QKnF5-y85}Sb4q9e0JZE}rvLx| diff --git a/assets/trans.png b/assets/trans.png deleted file mode 100644 index ea8d9ce02fa8f55b25164ee61c8ca3e498f497cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 675 zcmeAS@N?(olHy`uVBq!ia0vp^Mj*_=1|;R|J2nC-#^NA%Cx&(BWL`2bFvWVhIEG|6 zzn$TqEgUFv^!)6TDwExU7I8c}bgTDhXjbx>BTFu&sCLLZzW6RMz4WEuoi6QiJ#H?x z&*_&;7D_K(v3i$?%MpunDQTb9xfH0ENW5d#%->f0e&_c&_aF229MG&hqWO_A_es6- z%FYa>E};wV-hmrdrkYN?a#1tuii-&A?5HqdPuaPP+y3swblT?>{S^&yT;Z z<*K=V{L9}hZ%t;;Rq z2YPN!nIvbXyzaGK@8K713cF^VzsZp%Cw2QaM>E6C9Iz?Z?t}8wlWO;agKJQ@z2bTyBPVM~U%I?1(Y}d@QK5bT=InA}F z<4A!;jo&0Q&A#;(Q?+(#3g+qBqE`k}|f mU}xcnK9iljg-K(-HvewC$GH965`SQ-WAJqKb6Mw<&;$U3ATneC diff --git a/assets/unique.png b/assets/unique.png deleted file mode 100644 index 08d922dfa3203611734265c6767496409b9b45ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 434 zcmV;j0ZsmiP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!~g&e!~vBn4jTXf0Y^zhK~!i%?V3vt zgD?yQX)D2{SaL89#*$0Hrp0MoxltR^d|#@JWUyGh!Okw1`$1PR^E|8fRXr<(C5X3) ztm~>fe3oU=-ILcuYLXzPY0}-3s#i%c1Z~VCYneo0Vaw_X$ivnu=5%rNDx*L zQvxl##Cf$4!%M6p$P+M$a@Y}o6Y2Y2)vrK__y{n?MR)>IV&8Y&xl>HU3@`ci-9`}+ zTTq%t6%#r8+qOyB$SUF*5Pl*q0evJ0$cgw+JN^;;bL c$r Date: Tue, 9 Jul 2024 17:12:35 +0300 Subject: [PATCH 10/10] in progress --- handle_lines.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/handle_lines.py b/handle_lines.py index 3495c47..d4c0663 100644 --- a/handle_lines.py +++ b/handle_lines.py @@ -55,8 +55,19 @@ def remove_line(self, line): self.app.clear_button(x, y) def remove_lines_if_unique(self, row, col): - current_image = self.app.get_button_at(row, col).background_normal + current_button = self.app.get_button_at(row, col) + current_image = current_button.background_normal + print(f'Current Image: {current_image}') + print(row, col) if current_image == self.UNIQUE_BUTT: lines = self.find_adjacent_lines(row, col) + print(f'Adjacent Lines: {lines}') + # it fails to add the lines and never + # reaches 5 or more to sent to remove_lines if len(lines) >= 5: + print('Removing lines...') self.remove_line(lines) + else: + print('Not enough lines to remove.') + else: + print('Not a unique button.')