EDIT: C'est juste mes deux boucles for qui ne servent strictement à rien à part faire n'importe quoi, c'est donc résolu..
Bonjour,
Je découvre Python et j'essaye de me familiariser avec le langage en codant un jeu du morpion avec Pygame.
Pour l'instant je créé la grille, je récupère l'évenement qui correspond au clic de la souris, je regarde où ça se trouve sur ma grille, si c'est libre je regarde quel joueur joue et j'affiche un cercle ou une croix en conséquence
Mais quand je fais tourner le programme il ne fonctionne pas correctement, le premier clic fonctionne bien mais à partir du second clic il met systématiquement un cercle et une croix dans la case au lieu de juste l'un ou autre. Je n'arrive pas à comprendre pourquoi ..
import pygame
pygame.init()
screen = pygame.display.set_mode((900, 900))
clock = pygame.time.Clock()
running = True
#Création de la grille
screen.fill("grey")
pygame.draw.line(screen, "red", (295,0), (295, 900), width=10)
pygame.draw.line(screen, "red", (595,0), (595, 900), width=10)
pygame.draw.line(screen, "red", (0,295), (900, 295), width=10)
pygame.draw.line(screen, "red", (0,595), (900, 595), width=10)
joueur = True
grille = []
for c in range(3):
grille.append([None] * 3)
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
elif event.type == pygame.MOUSEBUTTONDOWN and pygame.mouse.get_pressed()[0]:
x,y = event.pos
x = int(x / 300)
y = int(y / 300)
if grille[x][y] == None:
if joueur == True:
grille[x][y] = "X"
else:
grille[x][y] = "O"
#Affichage de la grille
for i in range(3):
for j in range(3):
if grille[i][j] == "O":
pygame.draw.circle(screen, "green", ((x+1) * 300 - 150, (y+1) * 300 - 150), 100, 10)
elif grille[i][j] == "X":
pygame.draw.line(screen, "blue", (x * 300 + 50 , y * 300 + 50), ((x + 1) * 300 - 50, (y + 1) * 300 - 50), width = 10)
pygame.draw.line(screen, "blue", ((x + 1) * 300 - 50 , y * 300 + 50), ((x * 300 + 50), (y + 1) * 300 - 50), width = 10)
joueur = not joueur
pygame.display.flip()
clock.tick(60) # limits FPS to 60
pygame.quit()
Je vous remercie pour votre aide
- Edité par toto_ina 1 juillet 2024 à 2:22:38
Jeu de morpion avec Pygame: Erreur d'affichage
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.