Bonjour,

Je ne comprend pas le problème avec mon script. Quand je le lance un simple écran noir apparaît, j'ai fait ce code sur PyCharm.
Si vous avez des solution je suis vraiment preneur.

Le but est qu'un bot fasse du morpion pour après lui faire apprendre grâce au machine Learning ou autre mais ça c'est pour après déjà il faudrait que l'interface du morpion marche.

Voici tout le code que j'ai pour l'instant (j'utilise pygame comme bibliothèque)

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