Files
Quadraludi/main.py
2019-03-19 09:12:52 +01:00

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()