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
| import pygame
# Initialisation de Pygame
pygame.init()
# Définition des couleurs
BLACK = (0, 0, 0)
WHITE = (255, 255, 255)
# Définition de la taille de la fenêtre
WINDOW_SIZE = (500, 500)
# Définition de la police de caractères
FONT = pygame.font.Font(None, 50)
# Création de la fenêtre
screen = pygame.display.set_mode(WINDOW_SIZE)
pygame.display.set_caption("Morpion")
# Initialisation de la matrice du jeu
game_matrix = [['', '', ''], ['', '', ''], ['', '', '']]
# Définition du joueur courant
player = 'X'
# Définition de l'état du tour de jeu
player_turn = True
# Fonction pour dessiner la grille
def draw_grid():
# Dessiner les lignes verticales
pygame.draw.line(screen, BLACK, (166, 0), (166, 500), 5)
pygame.draw.line(screen, BLACK, (332, 0), (332, 500), 5)
# Dessiner les lignes horizontales
pygame.draw.line(screen, BLACK, (0, 166), (500, 166), 5)
pygame.draw.line(screen, BLACK, (0, 332), (500, 332), 5)
# Fonction pour dessiner une croix ou un rond
def draw_XO(row, col):
# Calculer les coordonnées du centre de la case
x = col * 166 + 83
y = row * 166 + 83
# Dessiner une croix ou un rond en fonction du joueur courant
if player == 'X':
pygame.draw.line(screen, BLACK, (x - 50, y - 50), (x + 50, y + 50), 5)
pygame.draw.line(screen, BLACK, (x + 50, y - 50), (x - 50, y + 50), 5)
else:
pygame.draw.circle(screen, BLACK, (x, y), 50, 5)
# Fonction pour vérifier si le jeu est terminé
def check_game_over():
global running, winner
if player_turn:
for event in pygame.event.get():
if event.type == pygame.MOUSEBUTTONDOWN:
# Récupérer la position de la souris
pos = pygame.mouse.get_pos()
row = pos[1] // 166
col = pos[0] // 166
# Vérifier si la case est vide
if game_matrix[row][col] == '':
# Marquer la case avec le symbole du joueur
game_matrix[row][col] = player
# Vérifier s'il y a un gagnant
if check_win():
winner = player
print(f"Le joueur {winner} a gagné !")
running = False
# Changer de joueur
player = 'O' if player == 'X' else 'X'
player_turn = False
# Fonction pour vérifier s'il y a un gagnant
def check_win():
# Vérifier les lignes
for row in range(3):
if game_matrix[row][0] == game_matrix[row][1] == game_matrix[row][2] != '':
return True
# Vérifier les colonnes
for col in range(3):
if game_matrix[0][col] == game_matrix[1][col] == game_matrix[2][col] != '':
return True
# Vérifier les diagonales
if game_matrix[0][0] == game_matrix[1][1] == game_matrix[2][2] != '':
return True
if game_matrix[0][2] == game_matrix[1][1] == game_matrix[2][0] != '':
return True
# Aucun gagnant
return False
# Boucle principale du jeu
winner = None
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
elif event.type == pygame.MOUSEBUTTONDOWN:
if player_turn:
# Récupérer la position de la souris
pos = pygame.mouse.get_pos()
row = pos[1] // 166
col = pos[0] // 166
# Vérifier si la case est vide
if game_matrix[row][col] == '':
# Marquer la case avec le symbole du joueur
game_matrix[row][col] = player
# Vérifier s'il y a un gagnant
if check_win():
winner = player
print(f"Le joueur {winner} a gagné !")
running = False
# Changer de joueur
player = 'O' if player == 'X' else 'X'
player_turn = False
# Appel de la fonction pour vérifier si le jeu est terminé
check_game_over()
# Dessiner le symbole sur la grille
draw_grid()
draw_XO(row, col)
# Mettre à jour l'affichage
pygame.display.update()
# Si le jeu est terminé, afficher le message de fin
if winner:
font = pygame.font.Font(None, 36)
text = font.render(f"Le joueur {winner} a gagné !", True, BLACK)
text_rect = text.get_rect(center=(screen.get_width() // 2, screen.get_height() // 2))
screen.blit(text, text_rect)
pygame.display.flip()
pygame.time.delay(3000) # Attendre 3 secondes avant de fermer la fenêtre
running = False
# Quitter Pygame
pygame.quit() |
Partager