Jeux morpion en python avec la POO

Fermé
ilyan92 Messages postés 6 Date d'inscription mercredi 29 septembre 2021 Statut Membre Dernière intervention 30 septembre 2021 - Modifié le 30 sept. 2021 à 00:04
shanks_91 Messages postés 1 Date d'inscription mercredi 19 janvier 2022 Statut Membre Dernière intervention 19 janvier 2022 - 19 janv. 2022 à 14:43
Bonjour, pour coder un programme pour le jeux morpion, je dois suivre des instructions d'un exo et je me retrouve tjts avec des bug, si qlq peut m'aider , cis joint l'exercice et ma solution ratée :

Exercice: Morpion

Définir une classe Case qui contient un seul attribut occupe. Cet attribut prendra automatiquement la valeur ' ' lors de l'instanciation.

Définir dans la classe Case une méthode jouer1 qui donnera la valeur 'X' à l'attribut occupe si la case n'est pas occupée.

Définir dans la classe Case une méthode jouer2 qui donnera la valeur 'O' à l'attribut occupe si la case n'est pas occupée.

Définir une classe Terrain qui compte deux attributs : grille et tour. L'attribut grille est une liste à 9 éléments de type Case. L'attribut tour est un entier qui vaut 1 si c'est au tour du joueur 1 de jouer et 2 si c'est au tour du joueur 2. L'attribut tour sera automatiquement initialisé avec la valeur 1.

Définir dans la classe Terrain la méthode __str__ qui permettra d'utiliser la fonction printsur des objets de cette classe. La fonction print devra afficher dans une première ligne le contenu des cases 0 à 2, puis dans une deuxième ligne le contenu des cases 3 à 5 et enfin dans une troisième ligne le contenu des cases 6 à 8. Les cases seront séparées par le caractère '|' et chaque ligne se terminera par le caractère \n qui correspond au caractère de fin de ligne.

Définir dans la classe Terrain une méthode jouer qui prendra en paramètre un entier allant de 0 à 8. En fonction du joueur à qui il est le tour de jouer, cette méthode fera appel aux méthodes jouer1 ou jouer2 de la case correspondant à l'entier passé en paramètre. Il faudra ensuite modifier la valeur de l'attribut tour pour que le prochain joueur puisse jouer.




class Case:
    def __init (self,occupe=''):
        self.occupe=""
        
    def jouer1 (self):
        if Case[occupe]=" " :
            occupe="X"
    def jouer2 (self):
        if Case[occupe]=" " :
            occupe="0"                 
    class Terrian:
    def __init__(self ,grille,tour):
        self.grille=list(range(9))
        self.tour=tour
        
    if tour==1:
        print("c'est au tour du joueur 1 de jouer")
    if tour ==0:
        print("c'est au tour du joueur 2 de jouer")
        
        
    def __str__(self):
        for i in range(3):
            return self.." | ".__str__() +str(grille[i+3]), end='')  
            print("     0)  1)  2)")
        for i in range(3,6):
            print(" | "+str(grille[i+3]), end='')  
            print("     0)  1)  2)")   
        for i in range(6,9):
            print(" | "+str(grille[i+3]), end='')  
           

    def jouer (self, i in[0:8]):


Edit: correction des balises de code

Configuration: Windows / Firefox 92.0

6 réponses

yg_be Messages postés 22717 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 22 avril 2024 1 474
30 sept. 2021 à 10:40
bonjour,
quel est le soucis avec ta solution?
0