Problèmes jeu du morpion
slash91257
-
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour à tous, j'ai un devoir à faire en python dans lequel je dois programmer le jeu du morpion, cependant, après avoir tester toutes les fonction sauf les fonctions unePartie et jouer qui marchent et qui résoudent les exemples donnés sans aucun soucis, une fois que je reprend mon programme et que j'enlève le module doctest pour mettre le module tictac, rien ne sa passe quand j'exécute ma fonction, quelqu'un pourrait-il m'aider ? Merci d'avance pour votre temps.
from tictac import * def affichePlateau(plateau): '''parametre: - plateau est un tableau 2D 3 x3 contenant les caracteres '#',ou 'X' ou 'O' resultat : - aucun affiche le plateau de jeu dans la console sous la forme d'un tableau 3x3 ''' for ligne in plateau: for element in ligne: print(element," ",end='') print() #-------------------------------------------------------------------------- def alignementLigne(plateau,numLigne): '''parametres: - plateau est un tableau 2D 3 x3 contenant les caracteres '#',ou 'X' ou 'O' - numLigne est le numero de la ligne 0,1 ou 2 resultat: - le booleen True si la ligne de numero numLigne contient 3 'X' ou 3 'O',False sinon >>> alignementLigne([[ '#','#','O'],['X','X','X'],['#','O','O']],1) True >>> alignementLigne([[ '#','#','O'],['X','X','#'],['#','O','O']],1) False ''' if plateau[numLigne][0] == '#': return False else: elt = plateau[numLigne][0] for i in range(1,3): if plateau[numLigne][i] != elt: return False return True #-------------------------------------------------------------------------- def alignementColonne(plateau,numColonne): '''parametres: - plateau est un tableau 2D 3 x3 contenant les caracteres '#',ou 'X' ou 'O' - numColonne est le numero de la colonne 0,1 ou 2 Resultat: - le booleen True si la colonne de numero numColonne contient 3 'X' ou 3 'O',False sinon >>> alignementColonne([[ '#','#','O'],['X','X','O'],['#','O','O']],2) True >>> alignementColonne([[ '#','#','O'],['X','X','#'],['#','O','O']],1) False >>> alignementColonne([[ '#','O','#'],['#','#','#'],['#','X','X']],1) False ''' if plateau[0][numColonne] == '#': return False else: elt = plateau[0][numColonne] for i in range(1,3): if plateau[i][numColonne] != elt: return False return True #-------------------------------------------------------------------------- def alignementDiagonale1(plateau): '''parametre: - plateau est un tableau 2D 3x3 contenant les caracteres '#',ou 'X' ou 'O' resultat: le booleen True s'il y a un alignement dans la diagonale qui va en haut a gauche jusqu'en bas a droite,False sinon >>> alignementDiagonale1([[ 'O','#','#'],['X','O','#'],['X','#','O']]) True >>> alignementDiagonale1([[ 'X','#','#'],['X','O','#'],['X','#','O']]) False ''' if plateau[0][0] == '#': return False else: elt = plateau[0][0] if plateau[1][1] == elt: if plateau[2][2] == elt: return True else: return False #-------------------------------------------------------------------------- def alignementDiagonale2(plateau): '''parametre: - plateau est un tableau 2D 3x3 contenant les caractères '#',ou 'X' ou 'O' resultat: le booleen True s'il y a un alignement la diagonale qui va en bas a gauche jusqu'en haut a droite,False sinon >>> alignementDiagonale2([[ '#','#','O'],['X','O','#'],['O','#','X']]) True >>> alignementDiagonale2([[ 'X','#','#'],['X','O','#'],['X','#','O']]) False ''' if plateau[2][0] == '#': return False else: elt = plateau[2][0] if plateau[1][1] == elt: if plateau[0][2] == elt: return True else: return False #-------------------------------------------------------------------------- def alignementLignes(plateau): '''parametre: - plateau est un tableau 2D 3x3 contenant les caracteres '#',ou 'X' ou 'O' resultat: le booleen True s'il y a un alignement dans une des trois lignes,False sinon >>> alignementLignes([[ 'X','#','O'],['X','X','O'],['O','O','X']]) False >>> alignementLignes([[ '#','#','O'],['X','O','#'],['O','O','O']]) True ''' return alignementLigne(plateau,0) or alignementLigne(plateau,1) or alignementLigne(plateau,2) #-------------------------------------------------------------------------- def alignementColonnes(plateau): '''parametre: - plateau est un tableau 2D 3x3 contenant les caracteres '#',ou 'X' ou 'O' resultat: le booleen True s'il y a un alignement dans une des trois colonnes,False sinon >>> alignementColonnes([[ 'X','#','O'],['X','X','O'],['X','O','X']]) True >>> alignementColonnes([[ '#','#','O'],['X','O','#'],['O','O','O']]) False ''' return alignementColonne(plateau,0) or alignementColonne(plateau,1) or alignementColonne(plateau,2) #-------------------------------------------------------------------------- def alignementDiagonales(plateau): '''parametre: - plateau est un tableau 2D 3x3 contenant les caracteres '#',ou 'X' ou 'O' resultat: le booleen True s'il y a un alignement dans une des deux diagonales,False sinon >>> alignementDiagonales([[ 'X','#','O'],['X','X','O'],['X','O','X']]) True >>> alignementDiagonales([[ '#','#','O'],['X','O','#'],['X','O','O']]) False ''' return alignementDiagonale1(plateau) or alignementDiagonale2(plateau) #-------------------------------------------------------------------------- def alignement(plateau): '''parametre: - plateau est un tableau 2D 3x3 contenant les caracteres '#',ou 'X' ou 'O' resultat: le booleen True s'il y a un alignement dans une des trois lignes ou une des trois colonnes ou une des deux diagonales, False sinon >>> alignement([[ 'X','#','O'],['X','X','O'],['X','O','X']]) True >>> alignement([[ '#','#','O'],['X','O','#'],['X','O','O']]) False ''' return alignementLignes(plateau) or alignementColonnes(plateau) or alignementDiagonales(plateau) #-------------------------------------------------------------------------- def sontValides(plateau,x,y): '''parametres: - plateau est un tableau 2D 3x3 contenant les caractères '#',ou 'X' ou 'O' - x est un entier - y est un entier resultat: le booleen True si x et y sont des entiers compris entre 0 et 2 et si plateau[x][y] est egal au caractere #,False sinon >>> sontValides([[ 'X','#','O'],['X','X','O'],['X','O','X']],2,3) False >>> sontValides([[ '#','#','O'],['X','X','#'],['O','X','O']],0,0) True ''' if x<= 2 and x>= 0: if y<= 2 and y>= 0: if plateau[x][y] == '#': return True return False #-------------------------------------------------------------------------- def estValide(car,numJoueur): '''parametres: - car est un caractere entre par l'utilisateur au clavier - numJoueur est une variable interne egale a 0 ou 1 resultat: Le booleen True si le caractere correspond au joueur, False sinon >>> estValide('Z',0) False >>> estValide('X',0) True >>> estValide('O',0) False >>> estValide('O',1) True ''' if numJoueur == 0: if car == 'X': return True elif numJoueur == 1: if car == 'O': return True return False #-------------------------------------------------------------------------- def partieEstFinie(plateau,nbCoups): '''parametres: - plateau est un tableau 2D 3x3 contenant les caracteres '#',ou 'X' ou 'O' - nbCoups est un entier (variable interne) resultat: Le booleen True si la partie est finie quand nbCoups est egal a 9 soit il y a un alignement dans le plateau,False sinon >>> partieEstFinie([[ 'X','#','O'],['X','X','O'],['X','O','X']],6) True >>> partieEstFinie([[ '#','#','O'],['X','X','#'],['O','X','O']],6) False >>> partieEstFinie([[ 'X','O','X'],['X','O','O'],['O','X','X']],9) True ''' return (nbCoups == 9) or alignement(plateau) #-------------------------------------------------------------------------- def jouer(plateau,numJoueur): '''parametres: - plateau est un tableau 2D 3x3 contenant les caracteres '#',ou 'X' ou 'O' - numJoueur est le numero du joueur (variable interne) resultat: -aucun (None) jouer consiste pour le joueur numJoueur de placer dans le plateau en un endroit de son choix le caractere correspondant a son numero ''' saisieValide=False while(not(saisieValide)): lig,col = input("NumLigne,NumColonne ? --> ") x=int(lig) y=int(col) saisieValide= sontValides(plateau,x,y) if not(saisieValide): print("mauvais numero") saisieValide=False while(not(saisieValide)): car = input("Entrez votre caractère --> ") saisieValide= estValide(car,numJoueur) if not(saisieValide): print("mauvais caracteres") plateau[x][y] = car #-------------------------------------------------------------------------- def unePartie(plateau): '''parametres: - plateau est un tableau 2D 3x3 contenant le caractere '#' au debut resultat: - aucun Durant une partie les joueurs jouent chacun son tour Au premier Joueur qui joue 'X' est associe le numero 0 Au deuxieme Joueur qui joue 'O' est associe le numero 1 ''' numJoueur=0 nbCoups=0 while(not(partieEstFinie(plateau,nbCoups))): if numJoueur==0 : print("X joue:......") else: print("O joue :.....") jouer(plateau,numJoueur) affichePlateau(plateau) nbCoups = nbCoups+1 print("nbCoups =",nbCoups) numJoueur=(numJoueur+1)%2 if alignement(plateau): if numJoueur ==0: print("Le joueur O a gagne") else : print("Le joueur X a gagne") else : print ("match nul ")
Configuration: Windows / Chrome 78.0.3904.97
A voir également:
- Problèmes jeu du morpion
- 94 jeu - Télécharger - Puzzle & Réflexion
- 94 degrés jeu - Télécharger - Divers Jeux
- Jeu du pendu - Télécharger - Vie quotidienne
- Jeu zuma - Télécharger - Jeux vidéo
- Logo jeu - Télécharger - Jeux vidéo
1 réponse
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour, comment exécutes-tu ta fonction?