Salut, je suis en école d'ingénieur et on nous a donné un projet de jeu à réaliser en python sauf que c'est 1000x trop chaud par rapport à ce qu'on nous apprend en cours. Est ce que il y aurait un mec chaud en python ou qui a déjà fait ce projet qui pourrait nous aider? Je met en pj les consignes et voici le code qu'on a pour l'instant :

Escat Game.pdf


Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
import tkinter as tk
import random
 
Sg = 0
Sc = 0
 
# Taille du plateau
TAILLE = 11
TAILLE_CASE = 50
MARGE = 50
 
# Dictionnaires pour stocker les rectangles et les textes
cases = {}
textes = {}
 
# Création de la fenêtre
fenetre = tk.Tk()
fenetre.title("Escat Game")
 
# Création du canevas
largeur = MARGE + TAILLE * TAILLE_CASE
hauteur = MARGE + TAILLE * TAILLE_CASE + 100  # espace en dessous pour les scores
canvas = tk.Canvas(fenetre, width=largeur, height=hauteur)
canvas.pack()
 
# Création du cadre pour les infos joueurs
cadre_info = tk.Frame(fenetre)
cadre_info.pack(pady=10)
 
# Création score
label_score_chat = tk.Label(cadre_info, text=f"Score Chats : {Sc}", font=("Arial", 12))
label_score_chat.pack()
 
label_score_gardiens = tk.Label(cadre_info, text=f"Score Gardiens : {Sg}", font=("Arial", 12))
label_score_gardiens.pack()
 
 
 
# Fonction pour vérifier si une case est vide
def vide(ligne, colonne):
    ligne_idx = ligne - 1
    colonne_idx = ord(colonne.upper()) - ord('A')
    return textes[(ligne_idx, colonne_idx)] is None
 
# Nouvelle version de pos_robot
def pos_robot(nombre):
    essais_max = 500  # Pour éviter une boucle infinie
    essais = 0
    positions_placees = 0
 
    while positions_placees < nombre and essais < essais_max:
        ligne = random.randint(1, 11)
        colonne = chr(random.randint(ord('A'), ord('K')))
 
        if vide(ligne, colonne):  # Vérifie si la case est vide
            position(ligne, colonne, 'R')  # Place le robot
            positions_placees += 1  # Incrémente le compteur
        essais += 1  # Évite une boucle infinie
 
# Lettres colonnes (A à K)
for col in range(TAILLE):
    lettre = chr(ord('A') + col)
    x = MARGE + col * TAILLE_CASE + TAILLE_CASE // 2
    canvas.create_text(x, MARGE // 2, text=lettre, font=("Arial", 16, "bold"))
 
# Chiffres lignes (1 à 11)
for lig in range(TAILLE):
    y = MARGE + lig * TAILLE_CASE + TAILLE_CASE // 2
    canvas.create_text(MARGE // 2, y, text=str(lig + 1), font=("Arial", 16, "bold"))
 
# Création des cases vides
for i in range(TAILLE):
    for j in range(TAILLE):
        x1 = MARGE + j * TAILLE_CASE
        y1 = MARGE + i * TAILLE_CASE
        x2 = x1 + TAILLE_CASE
        y2 = y1 + TAILLE_CASE
        rect = canvas.create_rectangle(x1, y1, x2, y2, fill="white", outline="black")
        cases[(i, j)] = rect
        textes[(i, j)] = None  # Pas encore de texte dans la case
 
# Fonction pour modifier une case (ligne: 1-11, colonne: 'A'-'K')
def position(ligne, colonne, nouveau_texte):
    ligne_idx = ligne - 1
    colonne_idx = ord(colonne.upper()) - ord('A')
 
    if 0 <= ligne_idx < TAILLE and 0 <= colonne_idx < TAILLE:
        x = MARGE + colonne_idx * TAILLE_CASE + TAILLE_CASE // 2
        y = MARGE + ligne_idx * TAILLE_CASE + TAILLE_CASE // 2
 
        # Supprimer ancien texte si présent
        if textes[(ligne_idx, colonne_idx)] is not None:
            canvas.delete(textes[(ligne_idx, colonne_idx)])
 
        # Ajouter le nouveau texte
        textes[(ligne_idx, colonne_idx)] = canvas.create_text(
            x, y, text=nouveau_texte, font=("Arial", 20, "bold")
        )
 
# Demande des pseudos dans la console
joueur1 = input("Quel est le pseudo du joueur 1 ? ")
joueur2 = input("Quel est le pseudo du joueur 2 ? ")
print(joueur1)
print(joueur2)
 
# Affichage dans l'interface
label_joueur1 = tk.Label(cadre_info, text=f"Équipe Chats : {joueur1} - Score : 0", font=("Arial", 12))
label_joueur1.pack()
 
label_joueur2 = tk.Label(cadre_info, text=f"Équipe Gardiens : {joueur2} - Score : 0", font=("Arial", 12))
label_joueur2.pack()
 
 
# Positions Chats
position(11, 'D', 'C1')
position(11, 'E', 'C2')
position(11, 'F', 'C3')
position(11, 'G', 'C4')
position(11, 'H', 'C5')
position(10, 'D', 'C6')
position(10, 'E', 'C7')
position(10, 'F', 'C8')
position(10, 'G', 'C9')
position(10, 'H', 'C10')
position(9, 'E', 'C11')
position(9, 'F', 'C12')
position(9, 'G', 'C13')
position(8, 'F', 'Ç')
 
 
# Position Gardiens
position(2, 'C', 'W')
position(2, 'I', 'W')
 
# Position Sorties
position(1, 'F', 'S')
position(5, 'A', 'S')
position(5, 'K', 'S')
 
# Position Bassin
position(3, 'E', 'O')
position(3, 'F', 'O')
position(3, 'G', 'O')
position(4, 'E', 'O')
position(4, 'F', 'O')
position(4, 'G', 'O')
 
# Position Robot           
pos_robot(9)
 
# Mise à jour du score
def actu_scores():
    label_score_chat.config(text=f"Score Chats : {Sc}")
    label_score_gardiens.config(text=f"Score Gardiens : {Sg}")
 
 
fenetre.mainloop()