Partage
  • Partager sur Facebook
  • Partager sur Twitter

Jeu de morpion avec Pygame: Erreur d'affichage

Sujet résolu
    1 juillet 2024 à 0:05:43

    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

    • Partager sur Facebook
    • Partager sur Twitter

    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é.
    • Editeur
    • Markdown