Implémenter les fonctions d'aide restantes
Ensuite, implémentez les fonctions d'aide restantes : dessiner_symboles()
, est_plateau_rempli()
, est_gagnant()
, faire_coup()
, coup_joueur()
, coup_ia()
, vérifier_fin_partie()
, dessiner_gagnant()
, dessiner_bouton_reset()
et réinitialiser_partie()
.
## Fonctions d'aide
def dessiner_symboles():
for x in range(3):
for y in range(3):
symbole = plateau[x][y]
if symbole == SYMBOLE_JOUEUR:
couleur = COULEUR_JOUEUR
elif symbole == SYMBOLE_IA:
couleur = COULEUR_IA
else:
couleur = COULEUR_VIDE
if symbole!= "":
pygame.draw.circle(
win,
couleur,
(x * TAILLE_CELLULE + TAILLE_CELLULE // 2, y * TAILLE_CELLULE + TAILLE_CELLULE // 2),
TAILLE_CELLULE // 2 - 10,
2,
)
def est_plateau_rempli():
for ligne in plateau:
if "" in ligne:
return False
return True
def est_gagnant(symbole):
for ligne in plateau:
if all(cellule == symbole for cellule in ligne):
return True
for colonne in range(3):
if all(plateau[row][colonne] == symbole for row in range(3)):
return True
if all(plateau[i][i] == symbole for i in range(3)):
return True
if all(plateau[i][2 - i] == symbole for i in range(3)):
return True
return False
def faire_coup(x, y, symbole):
if plateau[x][y] == "":
plateau[x][y] = symbole
return True
return False
def coup_joueur():
global tour
pos_souris = pygame.mouse.get_pos()
cellule_x = pos_souris[0] // TAILLE_CELLULE
cellule_y = pos_souris[1] // TAILLE_CELLULE
if faire_coup(cellule_x, cellule_y, SYMBOLE_JOUEUR):
tour = "ia"
def coup_ia():
global tour
cellules_vides = []
for x in range(3):
for y in range(3):
if plateau[x][y] == "":
cellules_vides.append((x, y))
if cellules_vides:
x, y = random.choice(cellules_vides)
faire_coup(x, y, SYMBOLE_IA)
tour = "joueur"
def vérifier_fin_partie():
global partie_terminee, gagnant
if est_gagnant(SYMBOLE_JOUEUR):
partie_terminee = True
return "joueur"
elif est_gagnant(SYMBOLE_IA):
partie_terminee = True
return "ia"
elif est_plateau_rempli():
partie_terminee = True
return "égalité"
return None
def dessiner_gagnant():
police = pygame.font.Font(None, 50)
if gagnant == "joueur":
texte = police.render("Le joueur gagne!", True, COULEUR_JOUEUR)
elif gagnant == "ia":
texte = police.render("L'IA gagne!", True, COULEUR_IA)
else:
texte = police.render("Match nul!", True, (255, 255, 255))
rect_texte = texte.get_rect(center=(LARGEUR // 2, HAUTEUR // 3))
win.blit(texte, rect_texte)
def dessiner_bouton_reset():
pygame.draw.rect(win, COULEUR_BOUTON, reset_button_rect)
texte_bouton = BUTTON_FONT.render("Réinitialiser", True, COULEUR_TEXTE_BOUTON)
rect_texte_bouton = texte_bouton.get_rect(center=reset_button_rect.center)
win.blit(texte_bouton, rect_texte_bouton)
def réinitialiser_partie():
global plateau, tour, partie_terminee, gagnant
plateau = [["" for _ in range(3)] for _ in range(3)]
tour = "joueur"
partie_terminee = False
gagnant = None
Dans le code ci-dessus, la fonction dessiner_symboles()
dessinera les symboles sur le plateau. La fonction est_plateau_rempli()
vérifiera si le plateau est rempli. La fonction est_gagnant()
vérifiera si le symbole donné a gagné la partie. La fonction faire_coup()
effectuera un coup sur le plateau. La fonction coup_joueur()
gérera le coup du joueur. La fonction coup_ia()
gérera le coup de l'IA. La fonction vérifier_fin_partie()
vérifiera si la partie est terminée. La fonction dessiner_gagnant()
dessinera le message du gagnant. La fonction dessiner_bouton_reset()
dessinera le bouton de réinitialisation. La fonction réinitialiser_partie()
réinitialisera le jeu.