-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.py
104 lines (86 loc) · 3.54 KB
/
main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
#coding: utf-8
import sys
# Inspection de la version de Python (ne tourne seulement avec Python 3.0+)
if sys.version_info < (3, 0):
print("This game can only run with Python 3.0+.")
print("Ce jeu ne peut seulement tourner sous Python 3.0 ou une version supérieure.")
exit(1)
# Inspection des dépendances
# Pour chaque module requis, si ce dernier n'est pas trouvé, un message compréhensif est adressé à l'utilisateur, à la place d'une erreur
# Les modules sont : Tkinter (pour le graphique), pygame.mixer (pour le son), PIL (pour le traitement d'images)
try:
import tkinter as tk
import tkinter.font as font
except:
print("It seems you don't have tkinter installed on your machine. Please install it before running.")
print("On dirait que tkinter n'est pas installé sur votre machine. Merci de l'installer avant de lancer le jeu.")
exit(1)
import utils
try:
import pygame
except:
utils.showMessageDialog("Pygame not installed / Pygame non-installé", "It seems you don't have pygame installed on your machine. Please install it before running.\n" +
"On dirait que pygame n'est pas installé sur votre machine. Merci de l'installer avant de lancer le jeu.")
exit(1)
try:
import PIL
except:
utils.showMessageDialog("PIL not installed / PIL non-installé", "It seems you don't have PIL installed on your machine. Please install it before running.\n" +
"On dirait que PIL n'est pas installé sur votre machine. Merci de l'installer avant de lancer le jeu.")
exit(1)
# Initialise la fenêtre
# Il est nécessaire de créer la fenêtre avant toute chose, puisque lorsque les classes sont importées, elles peuvent charger quelques composants
# noinspection PyProtectedMember
if tk._default_root is None:
tk.Tk()
from guis.mainMenu import MainMenu
from guis import settings, scores
import audio
def main():
"""
Fonction principale (invoquée au lancement)
"""
# noinspection PyProtectedMember
window = tk._default_root #type: tk.Tk
# Affectation du titre
window.title("Racer Vroomer")
# Affectation de l'icône sous Windows
if utils.isWindows():
window.iconbitmap("icon.ico")
# Maximisation de la fenêtre
if utils.isWindows():
window.state("zoomed")
else:
window.attributes("-zoomed", True)
# Résolution de base de 840x420 lorsque la fenêtre n'est pas maximisée
width = 840
height = 420
# Placement de la fenêtre au centre de l'écran (quand non-maximisée)
screenWidth = window.winfo_screenwidth()
screenHeight = window.winfo_screenheight()
window.geometry(str(width) + "x" + str(height) + "+" + str(int((screenWidth - width) / 2)) + "+" + str(int((screenHeight - height) / 2)))
# Quand la touche F11 est pressée, la fenêtre passe en mode plein écran (la touche ne peut être modifiée directement dans le jeu)
def catch_key_event(event):
if window.attributes("-fullscreen"):
window.attributes("-fullscreen", False)
else:
window.attributes("-fullscreen", True)
settings.saveSettings()
window.bind("<KeyPress-F11>", catch_key_event)
# Chargement des paramètres
settings.loadSettings()
# Chargement des scores
scores.loadScores()
# Affichage du menu principal
MainMenu(window)
# Démarrage du processus audio, afin de ne pas interrompre le processus principal
audio.AudioPlayer(window).start()
# Vérification de l'installation de la police
if not "Plantagenet Cherokee" in font.families():
import messages as msgs
utils.showMessageDialog(msgs.FONT_ERROR, msgs.FONT_NOT_FOUND)
# Affichage de la fenêtre et démarrage de la boucle principale
window.mainloop()
# Démarrage du jeu
if __name__ == "__main__" :
main()