elukjanovica 2024-02-29 18:03:36 +02:00
parent 65dac764b6
commit c032d57c0f
5 changed files with 56 additions and 26 deletions

27
TODO 100644
View File

@ -0,0 +1,27 @@
TODO main:
[x] fix image loading from last album
[ ] add settings - move pieses = slow/normal/fast/instant
[ ] fix quick game window moving thing
[x] fix image choosing
[ ] add proper image loading from storage
[ ] add small notes on button hover
[ ] add functionality in select and menu mode
[ ] add settings, info and stats with full functionality
[ ] optimise code as possible
[ ] add splash screen
[ ] add keybinds
TODO additional:
[ ] ability to control over image cropping
[ ] ability to change keybinds
[ ] more games, puzzle?
TODO maybe? (but not really):
[ ] hiding or replacing a player's mouse with a modified one
[ ] interactive objects and dialogs
[ ] creating and using animations using sprites, special effects
[ ] different game modes - sort puzzle in time, player vs player
[ ] hardware support (midi keyboard or controller)

21
main.py
View File

@ -21,6 +21,9 @@ PUZZLE_FILE = "main_puzzle.json"
SETTINGS_FILE = "main_settings.json"
STATS_FILE = "main_stats.json"
black = (0, 0, 0)
white = (255, 255, 255)
# Data loading and saving
@ -52,16 +55,16 @@ if settings_data["style"] == STYLE_CHOICES[0]:
FONT = FONTS[0]
STYLE_PATH = "1_"
text_color = (1, 35, 61)
oposite_color = (255, 255, 255)
oposite_color = white
elif settings_data["style"] == STYLE_CHOICES[1]:
FONT = FONTS[1]
STYLE_PATH = "2_"
text_color = (255, 255, 255)
text_color = white
oposite_color = (70, 35, 0)
else:
FONT = FONTS[2]
STYLE_PATH = "3_"
text_color = (255, 255, 255)
text_color = white
oposite_color = text_color
if settings_data["size"] == SIZE_CHOICES[0]:
@ -76,7 +79,7 @@ if settings_data["size"] == SIZE_CHOICES[0]:
puzzle_size = (128, 128)
non_movable_area = pygame.Rect(8, 19, 128, 128)
timer_area = pygame.Rect(22, 1, 55, 12)
win_area = pygame.Rect(55, 70, 55, 12)
win_area = pygame.Rect(128//2+10, 128//2+14, 128, 128)
size = [20, 25, 100, 15]
cons = [15, 195, 12, 3, 9]
scaled_size = (18, 21, 108, 108)
@ -118,7 +121,7 @@ else:
scaled_size = (43, 48, 310, 310)
area = (197, 390)
puzzle_version = settings_data["grid"]
puzzle_version = settings_data["grid"]
# Seting screen and other stuff
programIcon = pygame.image.load('icon.png')
@ -584,7 +587,7 @@ def save_puzzle_state():
def update_puzzle_data(completed, sorted, current_time, current_moves, real_time):
path_components = puzzle_data[f'current {puzzle_version}']['selected_image'].split('/')[2:]
current_data = storage[path_components[0]]
current_data = storage["albums"][path_components[0]]
for component in path_components[1:]:
if component in current_data:
current_data = current_data[component]
@ -606,7 +609,7 @@ def update_puzzle_data(completed, sorted, current_time, current_moves, real_time
current_data = [initial_chosen, initial_completed, initial_sorted, initial_moves, formatted_time, current_time, current_moves]
print(current_data)
storage[path_components[0]][path_components[1]][path_components[2]] = current_data
storage["albums"][path_components[0]][path_components[1]] = current_data
with open(DATA_FILE, 'w') as data_file:
data_file.write(json.dumps(storage, indent=3))
@ -765,7 +768,7 @@ else:
path_components = puzzle_data[f'current {puzzle_version}']['selected_image'].split('/')[2:]
print(path_components)
# why there was an error some time ago?
current_data = storage[path_components[0]]
current_data = storage["albums"][path_components[0]]
for component in path_components[1:]:
current_data = current_data[component]
@ -1034,7 +1037,7 @@ while run:
print(alpha)
screen.blit(surface, (non_movable_area.x, non_movable_area.y))
render_text("You win !!", (win_area.x, win_area.y), screen, (255, 255, 255, text_alpha))
render_text("You win !!", (win_area.x, win_area.y), screen, (255, 255, 255, text_alpha), True)
if pygame.time.get_ticks() < fade_in_end_time:
alpha += fade_in_speed

View File

@ -3,12 +3,12 @@
"Original images": {
"1.png": [
0,
0,
0,
0,
1,
1,
26,
"00:00:00",
"00:00:00",
0
26
],
"2.png": [
0,
@ -94,13 +94,13 @@
},
"Birds": {
"1.png": [
0,
0,
0,
0,
1,
1,
1,
4,
"00:00:00",
"00:00:00",
0
2
],
"2.png": [
0,
@ -113,12 +113,12 @@
],
"3.png": [
0,
0,
0,
0,
"00:00:01",
"00:00:01",
0
1,
1,
56,
"00:00:02",
"00:00:02",
20
]
}
}

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": [[6, 8, 0, 12], [1, 11, 13, 15], [5, 7, 14, 4], [2, 9, 10, 3]], "selected_image": "/images/albums/Birds/3.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": [[6, 7, 2, 0], [12, 14, 1, 13], [11, 4, 9, 10], [3, 15, 5, 8]], "selected_image": "images/albums/Birds/1.png"}, "current 3x3": {"matrix": [[3, 6, 7], [5, 4, 1], [0, 8, 2]], "selected_image": "/images/albums/Birds/1.png"}}

View File

@ -1,5 +1,5 @@
{
"size": "big" ,
"size": "small" ,
"style": "classic",
"grid": "4x4",
"gui color": [0, 0],