124 lines
3.4 KiB
Python
124 lines
3.4 KiB
Python
import tkinter as tk
|
|
import datetime as dt
|
|
import color
|
|
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)
|
|
win.wm_attributes('-transparentcolor', color.TRANSPARENT)
|
|
|
|
# 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_space = tk.Canvas(win, width = 400, height = 300, bd = 0, highlightthickness = 0, relief = 'ridge', bg = color.LEVEL_1)
|
|
canvas_space.place(x = 2, y = 304)
|
|
canvas_fall = tk.Canvas(win, width = 400, height = 300, bd = 0, highlightthickness = 0, relief = 'ridge', bg = color.LEVEL_1)
|
|
canvas_fall.place(x = 404, y = 304)
|
|
|
|
# Logo
|
|
win.iconbitmap('res/logo/main.ico')
|
|
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 < 5000:
|
|
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()
|
|
|
|
# Main
|
|
print('Bienvenue dans le jeu QuadraLudi')
|
|
main()
|
|
win.mainloop() |