diff --git a/__pycache__/Sounds.cpython-39.pyc b/__pycache__/Sounds.cpython-39.pyc new file mode 100644 index 0000000..69d7232 Binary files /dev/null and b/__pycache__/Sounds.cpython-39.pyc differ diff --git a/__pycache__/fast_and_trash.cpython-39.pyc b/__pycache__/fast_and_trash.cpython-39.pyc new file mode 100644 index 0000000..aed60b4 Binary files /dev/null and b/__pycache__/fast_and_trash.cpython-39.pyc differ diff --git a/__pycache__/mouse_engine.cpython-39.pyc b/__pycache__/mouse_engine.cpython-39.pyc new file mode 100644 index 0000000..d8f05e4 Binary files /dev/null and b/__pycache__/mouse_engine.cpython-39.pyc differ diff --git a/assets/save b/assets/save deleted file mode 100644 index bf665f3..0000000 --- a/assets/save +++ /dev/null @@ -1 +0,0 @@ -Yes u found the save file congrats. \ No newline at end of file diff --git a/assets/save.json b/assets/save.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/assets/save.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/assets/textures/load.png b/assets/textures/load.png new file mode 100644 index 0000000..fd813d7 Binary files /dev/null and b/assets/textures/load.png differ diff --git a/assets/textures/load_hover.png b/assets/textures/load_hover.png new file mode 100644 index 0000000..f9f5ff8 Binary files /dev/null and b/assets/textures/load_hover.png differ diff --git a/assets/textures/tutorial/fullscreen.png b/assets/textures/tutorial/fullscreen.png deleted file mode 100644 index 0c0de3c..0000000 Binary files a/assets/textures/tutorial/fullscreen.png and /dev/null differ diff --git a/assets/textures/tutorial/menu_buttons.png b/assets/textures/tutorial/menu_buttons.png deleted file mode 100644 index a4e0fce..0000000 Binary files a/assets/textures/tutorial/menu_buttons.png and /dev/null differ diff --git a/fast_and_trash.py b/fast_and_trash.py index 4a08cbb..3fd8620 100644 --- a/fast_and_trash.py +++ b/fast_and_trash.py @@ -1,3 +1,4 @@ +import json import math import random import pygame @@ -105,13 +106,13 @@ class Game: for circle in self.circles: dist = distance_indicator(circle.center, self.midpoint) angle = find_angle_between_points(circle.center, self.midpoint) - final_value[0] += round(math.cos(angle) * dist, 2) * (circle.radius/20) - final_value[1] += round(math.sin(angle) * dist, 2) * (circle.radius/20) + final_value[0] += round(math.cos(angle) * dist, 2) * (circle.radius / 20) + final_value[1] += round(math.sin(angle) * dist, 2) * (circle.radius / 20) dist = distance_indicator(self.midpoint, [final_value[0] + self.midpoint[0], final_value[1] + self.midpoint[1]]) if dist > self.limit: self.collapse = True - self.alive =False + self.alive = False elif dist > self.limit * 0.6: self.black.color_value.r = round((dist - (self.limit * 0.6)) * (255 / (self.limit * 0.4))) @@ -160,6 +161,44 @@ class Game: circle.center = [self.midpoint[0] + (math.cos(angle) * dist), self.midpoint[1] + (math.sin(angle) * dist)] + # saving & loading + def save(self, path, setup): + + save = {"gravity": setup["gravity"], + "next_circle": self.c_template, + "limit": self.limit, + "points": self.points, + "circles": []} + + for circle in self.circles: + save["circles"].append({"radius": circle.radius, + "center": circle.center, + "color": circle.color, + "color_value": str(circle.color_value)}) + + del save["circles"][0] + + with open(path, "w") as f: + json.dump(save, f, indent=4) + + def load(self, path, setup): + + with open(path, "r") as f: + save = json.load(f) + + setup["gravity"] = save["gravity"] + + self.c_template = save["next_circle"] + + for circle in save["circles"]: + self.circles.append(Circle(circle["radius"], circle["center"], circle["color"], + pygame.Color(eval(circle["color_value"])))) + + self.points = save["points"] + self.limit = save["limit"] + + return setup + class Scroll: def __init__(self, scroll): @@ -203,11 +242,11 @@ class Scroll: def get_colors(): colors = {"red": pygame.Color(255, 0, 0, 125), # weight 16 - "blue": pygame.Color(0, 0, 220, 125), # weight 20 - "green": pygame.Color(0, 220, 0, 125), # weight 20 - "yellow": pygame.Color(252, 239, 56, 125), # weight 22 - "purple": pygame.Color(105, 0, 158, 125), # weight 4 - "smaragd": pygame.Color(0, 214, 168, 125)} # weight 1 + "blue": pygame.Color(0, 0, 220, 125), # weight 20 + "green": pygame.Color(0, 220, 0, 125), # weight 20 + "yellow": pygame.Color(252, 239, 56, 125), # weight 22 + "purple": pygame.Color(105, 0, 158, 125), # weight 4 + "smaragd": pygame.Color(0, 214, 168, 125)} # weight 1 return colors @@ -219,7 +258,7 @@ def get_random_color(): colors = add_to_list("yellow", 18, colors) colors = add_to_list("purple", 4, colors) colors = add_to_list("smaragd", 1, colors) - return colors[random.randint(0, len(colors)-1)] + return colors[random.randint(0, len(colors) - 1)] def get_circle_template(): @@ -267,7 +306,7 @@ def get_circle(color_value, radius): def get_gravity_sur(gravity, limit): - ratio = limit/40 + ratio = limit / 40 sur = pygame.Surface((100, 100)) pygame.draw.circle(sur, (200, 200, 200), [50, 50], 40) pygame.draw.circle(sur, (217, 24, 114), [50 + (gravity[0] / ratio), 50 + (gravity[1] / ratio)], 10) diff --git a/planetio.exe b/planetio.exe index fb20d1f..b2a4117 100644 Binary files a/planetio.exe and b/planetio.exe differ diff --git a/planetio.py b/planetio.py index cfc6886..abcb43a 100644 --- a/planetio.py +++ b/planetio.py @@ -1,4 +1,3 @@ -from fast_and_trash import * from Sounds import * from mouse_engine import * import pygame @@ -16,6 +15,7 @@ tiny_font = pygame.font.SysFont('Comic Sans MS', 20) Window_size = [900, 600] Default_size = Window_size +monitor_size = [pygame.display.Info().current_w, pygame.display.Info().current_h] screen = pygame.display.set_mode(Window_size) display = pygame.Surface((900, 600)) pygame.display.set_caption("Planetio") @@ -44,11 +44,18 @@ def menu(screenX, fs, Win_size): sheets[3].set_colorkey((0, 0, 0)) s_index = 0 + load = [pygame.image.load("assets/textures/load.png").convert(), + pygame.image.load("assets/textures/load_hover.png").convert()] + for item in load: + item.set_colorkey((0, 0, 0)) + l_index = 0 + # values to pass setup = {"rotate": True, "gravity": False, - "cheatsheet": True} + "cheatsheet": True, + "load": False} # mouse @@ -57,17 +64,6 @@ def menu(screenX, fs, Win_size): rotate_color = (0, 0, 0) r_circle_cords = [730, 500] - # checking if tutorial - - file = open("assets/save", "r") - place = file.read() - file.close() - if place == "tutorial": - screenX, fs, Win_size = tutorial(screenX, fs, Win_size) - file = open("assets/save", "w") - file.write("Yes u found the save file congrats.") - file.close() - # game loop while alive: display.fill((255, 255, 255)) @@ -83,10 +79,20 @@ def menu(screenX, fs, Win_size): mouse.update(Win_size, Default_size) # setting actions for buttons + if mouse.in_circle([200, 120], 50): + with open("assets/save.json", "r") as f: + file = json.load(f) + + if file != {}: + setup["load"] = True + sounds["click"].play(0) + screenX, fs, Win_size = run_game(screenX, fs, setup, Win_size) + + setup["load"] = False if mouse.in_circle([450, 300], 50): sounds["click"].play(0) - run_game(screenX, fs, setup, Win_size) + screenX, fs, Win_size = run_game(screenX, fs, setup, Win_size) if mouse.in_circle([700, 500], 20): sounds["click"].play(0) @@ -130,6 +136,11 @@ def menu(screenX, fs, Win_size): else: s_index = 0 + if mouse.in_circle([200, 120], 50): + l_index = 1 + else: + l_index = 0 + if event.type == KEYDOWN: if event.key == K_f: fs = not fs @@ -137,9 +148,9 @@ def menu(screenX, fs, Win_size): Win_size = Default_size screenX = pygame.display.set_mode(Win_size) else: - screenX = pygame.display.set_mode(Win_size, pygame.FULLSCREEN) + screenX = pygame.display.set_mode(monitor_size, pygame.FULLSCREEN) d = pygame.display.get_surface() - Win_size = [d.get_width(), int((d.get_width()*2)/3)] + Win_size = [int((d.get_height() / 2) * 3), d.get_height()] elif event.key == K_ESCAPE: pygame.quit() @@ -164,6 +175,10 @@ def menu(screenX, fs, Win_size): else: display.blit(sheets[0 + (s_index * 2)], [700, 100]) + # load + + display.blit(load[l_index], [140, 60]) + # basic loop config screenX.blit(pygame.transform.scale(display, Win_size), (0, 0)) @@ -200,6 +215,10 @@ def run_game(screenX, fs, setup, Win_size): cheatsheet.set_colorkey((0, 0, 0)) cheatsheet.set_alpha(180) + # if loading + if setup["load"]: + setup = game.load("assets/save.json", setup) + while game.alive: display.fill((255, 255, 255)) @@ -260,6 +279,7 @@ def run_game(screenX, fs, setup, Win_size): for event in pygame.event.get(): if event.type == QUIT: + game.save("assets/save.json", setup) pygame.quit() sys.exit() @@ -304,14 +324,17 @@ def run_game(screenX, fs, setup, Win_size): Win_size = Default_size screenX = pygame.display.set_mode(Win_size) else: - screenX = pygame.display.set_mode(Win_size, pygame.FULLSCREEN) + screenX = pygame.display.set_mode(monitor_size, pygame.FULLSCREEN) d = pygame.display.get_surface() - Win_size = [d.get_width(), int((d.get_width() * 2) / 3)] + Win_size = [int((d.get_height() / 2) * 3), d.get_height()] elif event.key == K_ESCAPE: + game.save("assets/save.json", setup) return screenX, fs, Win_size elif event.key == K_r: + with open("assets/save.json", "w") as f: + json.dump({}, f, indent=4) return screenX, fs, Win_size # managing scroll @@ -352,6 +375,10 @@ def run_game(screenX, fs, setup, Win_size): screenX.blit(pygame.transform.scale(display, Win_size), (0, 0)) pygame.display.update() + # todo save + with open("assets/save.json", "w") as f: + json.dump({}, f, indent=4) + # ending if game.collapse: screenX, fs, Win_size = end(screenX, fs, Win_size, game, "collapse") @@ -416,9 +443,9 @@ def end(screenX, fs, Win_size, game, reason): Win_size = Default_size screenX = pygame.display.set_mode(Win_size) else: - screenX = pygame.display.set_mode(Win_size, pygame.FULLSCREEN) + screenX = pygame.display.set_mode(monitor_size, pygame.FULLSCREEN) d = pygame.display.get_surface() - Win_size = [d.get_width(), int((d.get_width() * 2) / 3)] + Win_size = [int((d.get_height() / 2) * 3), d.get_height()] elif event.key == K_ESCAPE: return screenX, fs, Win_size @@ -441,64 +468,5 @@ def end(screenX, fs, Win_size, game, reason): clock.tick(60) -def tutorial(screenX, fs, Win_size): - menu_buttons = pygame.transform.scale(pygame.image.load("assets/textures/tutorial/menu_buttons.png").convert(), - [400, 400]) - full_s = small_font.render("F = FULLSCREEN", False, (0, 0, 0)) - colorX = (10, 10, 10) - mouse = Mouse([0, 0]) - mouse.update(Win_size, Default_size) - - alive = True - - while alive: - mouse.update(Win_size, Default_size) - - # drawing things - display.fill((255, 255, 255)) - - display.blit(menu_buttons, [50, 40]) - display.blit(full_s, [50, 470]) - - pygame.draw.circle(display, colorX, [700, 300], 40) - - # event loop - - for event in pygame.event.get(): - if event.type == QUIT: - pygame.quit() - sys.exit() - - elif event.type == KEYDOWN: - if event.key == K_f: - fs = not fs - if fs is False: - Win_size = Default_size - screenX = pygame.display.set_mode(Win_size) - else: - screenX = pygame.display.set_mode(Win_size, pygame.FULLSCREEN) - d = pygame.display.get_surface() - Win_size = [d.get_width(), int((d.get_width()*2)/3)] - - elif event.key == K_ESCAPE: - return screenX, fs, Win_size - - elif event.type == MOUSEMOTION: - if mouse.in_circle([700, 300], 40): - colorX = (80, 80, 80) - else: - colorX = (10, 10, 10) - - elif event.type == MOUSEBUTTONDOWN: - if mouse.in_circle([700, 300], 40): - return screenX, fs, Win_size - - # basic loop config - - screenX.blit(pygame.transform.scale(display, Win_size), (0, 0)) - pygame.display.update() - clock.tick(60) - - menu(screen, False, Window_size) # pip install pygame==2.0.0.dev16