elukjanovica 2024-03-01 18:34:30 +02:00
parent e17db93158
commit 4c0f817be3
4 changed files with 37 additions and 24 deletions

3
.vscode/settings.json vendored 100644
View File

@ -0,0 +1,3 @@
{
"python.analysis.typeCheckingMode": "off"
}

54
main.py
View File

@ -540,9 +540,9 @@ def move_pieces(clicked_row, clicked_col):
puzzle_matrix[min(clicked_row, zero_row):max(clicked_row, zero_row) + 1, clicked_col] = np.roll(pieces_to_move, 1)
elif direction == "up":
puzzle_matrix[min(clicked_row, zero_row):max(clicked_row, zero_row) + 1, clicked_col] = np.roll(pieces_to_move, -1)[:pieces_to_move.shape[0]]
save_puzzle_state()
update_directions()
return pieces_to_move.any()
def update_directions():
@ -746,17 +746,22 @@ else:
ver1_layer = sprite_sheet.get_sprite((399, 156), WIDTH, HEIGHT, transparent)
ver2_layer = sprite_sheet.get_sprite((798, 156), WIDTH, HEIGHT, transparent)
path_components = puzzle_data[f'current {puzzle_version}']['selected_image'].split('/')[2:]
current_data = storage["albums"][path_components[0]]
for component in path_components[1:]:
current_data = current_data[component]
def load_data():
path_components = puzzle_data[f'current {puzzle_version}']['selected_image'].split('/')[2:]
current_data = storage["albums"][path_components[0]]
for component in path_components[1:]:
current_data = current_data[component]
completed = current_data[1]
not_shuffled = current_data[2]
timer_text = current_data[5]
current_timer_text = timer_text
displayed_current_moves = current_data[6]
current_moves = 0
completed = current_data[1]
not_shuffled = current_data[2]
timer_text = current_data[5]
current_timer_text = timer_text
current_moves = current_data[6]
return completed, not_shuffled, timer_text, current_timer_text, displayed_current_moves, current_moves
completed, not_shuffled, timer_text, current_timer_text, displayed_current_moves, current_moves = load_data()
if completed:
state_button = finished_button
@ -832,7 +837,7 @@ def data_check(current_mode):
current_buttons = menu_buttons
background_image = ver1_layer
elif current_mode == "settings":
elif current_mode == "settings" or current_mode == "stats" or current_mode == "info":
current_buttons = settings_buttons
background_image = ver1_layer
@ -853,13 +858,14 @@ dragging = False
can_move = False
start_pos = (0, 0)
pressed_button = None
clicked_piece = False
# Select mode
clicked_image = False
image_display = None
clicked = None
# Puzzle-related stuff
last_shuffle_time = 0
user_win = False
moved = None
# Timer-related stuff
timer_running = False
timer_start_time = 0
@ -898,8 +904,7 @@ while run:
for event in pygame.event.get():
if event.type == pygame.QUIT or event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE:
if current_mode == "game": #is this needed?
save_puzzle_state()
save_puzzle_state()
update_puzzle_data(completed, not_shuffled, current_timer_text, current_moves, real_time)
reload_chosen()
run = False
@ -910,8 +915,14 @@ while run:
clicked_image_rect = ImageRender.image_save(selected_album, current_img)
clicked_image = clicked_image_rect.collidepoint(event.pos)
if clicked_image:
clicked = True
current_mode = "game"
update_puzzle_data(completed, not_shuffled, current_timer_text, current_moves, real_time)
print(current_timer_text)
completed, not_shuffled, timer_text, current_timer_text, displayed_current_moves, current_moves = load_data()
print(current_timer_text)
shuffle_pieces(puzzle_pieces)
clicked = None
last_click_time = pygame.time.get_ticks()
if to_left_button.is_hovered(event.pos):
@ -950,7 +961,6 @@ while run:
elif event.type == pygame.MOUSEBUTTONUP:
dragging = False
pressed_button = None
clicked_piece = False
can_move = False
elif event.type == pygame.MOUSEBUTTONDOWN and current_mode == "settings":
@ -999,13 +1009,13 @@ while run:
clicked_row, clicked_col = (mouse_y - non_movable_area.y) // cell_size, (mouse_x - non_movable_area.x) // cell_size
if 0 <= clicked_row < len(puzzle_matrix) and 0 <= clicked_col < len(puzzle_matrix[0]):
if puzzle_matrix[clicked_row, clicked_col]:
user_win = True
current_moves += 1
move_pieces(clicked_row, clicked_col)
clicked_piece = True
if settings_data["sound"]["on"] is True and clicked_piece is True:
print("clicked")
if puzzle_matrix[clicked_row, clicked_col] and clicked is None:
moved = move_pieces(clicked_row, clicked_col)
print(current_mode, clicked)
if settings_data["sound"]["on"] is True and moved is not None:
current_moves += 1
user_win = True
print("clicked:", current_moves)
play_sound()
if pressed_button == hint_button:

View File

@ -5,7 +5,7 @@
0,
0,
0,
1094,
16,
"00:00:11",
"00:00:11",
16

View File

@ -1 +1 @@
{"puzzle 4x4": [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 0]], "puzzle 3x3": [[1, 2, 3], [4, 5, 6], [7, 8, 0]], "current 4x4": {"matrix": [[4, 9, 7, 0], [13, 1, 8, 3], [2, 12, 5, 11], [15, 14, 6, 10]], "selected_image": "images/albums/Original images/1.png"}, "current 3x3": {"matrix": [[3, 6, 7], [5, 4, 1], [0, 8, 2]], "selected_image": "/images/albums/Birds/1.png"}}
{"puzzle 4x4": [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 0]], "puzzle 3x3": [[1, 2, 3], [4, 5, 6], [7, 8, 0]], "current 4x4": {"matrix": [[12, 15, 10, 4], [14, 11, 9, 5], [2, 6, 1, 0], [7, 8, 3, 13]], "selected_image": "images/albums/Original images/3.png"}, "current 3x3": {"matrix": [[3, 6, 7], [5, 4, 1], [0, 8, 2]], "selected_image": "/images/albums/Birds/1.png"}}