import tkinter as tk import datetime as dt import color import sys from game import fall, osu, pong, space from PIL import Image, ImageTk from time import sleep from tkinter import messagebox win = tk.Tk() win['bg'] = color.LEVEL_9 win.title('Quadraludi') win.geometry('806x606') win.resizable(False, False) # Res image_center = ImageTk.PhotoImage(Image.open('res/logo/main.png')) # Time time = None delta = None tick = 0 score = tk.IntVar(win, 0) # Difficulty difficulty = 1.0 MAX_DIFFICULTY = 3.0 DIFFICULTY_STEP = (MAX_DIFFICULTY - difficulty) / 5000 # End _end = False def loop(deltaTime): global time, delta, tick, score, difficulty # Check end if (_end): return # Start delta = dt.datetime.now() deltatime = (delta - time).microseconds * 1e-6 # Loop if tick > 2: fall.loop(deltatime, difficulty, end) osu.loop(deltatime, difficulty, end) pong.loop(deltatime, difficulty, end) space.loop(deltatime, difficulty, end) # Step tick tick += 1 score.set(int(tick / 5)) # Step difficulty if difficulty < MAX_DIFFICULTY: difficulty += DIFFICULTY_STEP elif difficulty > MAX_DIFFICULTY: difficulty = MAX_DIFFICULTY # End time = delta win.after(int(1000 / 60), lambda: loop(deltaTime)) def main(): global time, delta # Create Canvas canvas_pong = tk.Canvas(win, width = 400, height = 300, bd = 0, highlightthickness = 0, relief = 'ridge', bg = color.LEVEL_1) canvas_pong.place(x = 2, y = 2) canvas_osu = tk.Canvas(win, width = 400, height = 300, bd = 0, highlightthickness = 0, relief = 'ridge', bg = color.LEVEL_1) canvas_osu.place(x = 404, y = 2) canvas_fall = tk.Canvas(win, width = 400, height = 300, bd = 0, highlightthickness = 0, relief = 'ridge', bg = color.LEVEL_1) canvas_fall.place(x = 2, y = 304) canvas_space = tk.Canvas(win, width = 400, height = 300, bd = 0, highlightthickness = 0, relief = 'ridge', bg = color.LEVEL_1) canvas_space.place(x = 404, y = 304) # Logo if sys.platform.startswith('win'): win.iconbitmap('res/logo/icon.ico') else: logo = tk.PhotoImage('res/logo/icon.png') win.tk.call('wm', 'iconphoto', win._w, logo) tk.Label(win, image = image_center, bg = color.LEVEL_1).place(x = 401 - 32, y = 301 - 32) # Score tk.Label(win, textvariable = score, bg = color.LEVEL_1, fg = color.BROWN, font = (None, 12)).place(x = 2, y = 2) # Ini fall.main(canvas_fall) osu.main(canvas_osu) pong.main(canvas_pong) space.main(canvas_space) # Loop delta = dt.datetime.now() time = dt.datetime.now() loop(1000 / 60) def getMessage(score): if score < 200: return 'Vous ferez peut être mieux la prochaine fois...' elif score < 400: return 'Un bon début !' elif score < 600: return 'Pas mal, mais vous ne pouvez faire quatre choses à la fois???' elif score < 800: return 'Bien, la maitrise vient avec le temps' elif score < 1000: return 'Bien joué, vous approchez de la difficulté maximum' elif score < 2000: return "Splendide, vous n\'avez plus qu'à attendre l'éternité" else: return "Ce jeu n'a plus aucun secrets pour vous !" def end(): global _end _end = True messagebox.showinfo('Perdu', f'Votre score est de {score.get()} points\n{getMessage(score.get())}') # Terminate win.destroy() sys.exit(0) # Main print('Bienvenue dans le jeu QuadraLudi') main() win.mainloop()