Jeu morpion qui ne fonctionne pas

SERGENTJOHN117 -  
 SERGENTJOHN117 -
Bonjour,
Voici mon code python pour mon morpion:

grille={}
finish_test=True
pionjoueur1=0
pionjoueur2=0
verif_X_variable=1
verif_O_variable=1
case=grille.keys()
def morpion():
    joueur1()
    if verif_X_variable==0:
        joueur1()
    else:
        if pionjoueur1==0:
            grille[0]='X'
        elif pionjoueur1==1:
            grille[1]='X'
        elif pionjoueur1==2:
            grille[2]='X'
        elif pionjoueur1==3:
            grille[3]='X'
        elif pionjoueur1==4:
            grille[4]='X'
        elif pionjoueur1==5:
            grille[5]='X'
        elif pionjoueur1==6:
            grille[6]='X'
        elif pionjoueur1==7:
            grille[7]='X'
        elif pionjoueur1==8:
            grille[8]='X'
        print(grille)
    joueur2()
    if verif_O_variable==0:
        joueur2()
    else:
        if pionjoueur2==0:
            grille[0]='O'
        elif pionjoueur2==1:
            grille[1]='O'
        elif pionjoueur2==2:
            grille[2]='O'
        elif pionjoueur2==3:
            grille[3]='O'
        elif pionjoueur2==4:
            grille[4]='O'
        elif pionjoueur2==5:
            grille[5]='O'
        elif pionjoueur2==6:
            grille[6]='O'
        elif pionjoueur2==7:
            grille[7]='O'
        elif pionjoueur2==8:
            grille[8]='O'
        print(grille)
        
def finish():
    finish_test=True
    try:
        if grille[0]=='X' and grille[1]=='X' and grille[2]=='X' or grille[2]=='X' and grille[5]=='X' and grille[8]=='X' or grille[8]=='X' and grille[7]=='X' and grille[6]=='X' or grille[6]=='X' and grille[3]=='X' and grille[0]=='X' or grille[2]=='X' and grille[4]=='X' and grille[6]=='X' or grille[8]=='X' and grille[4]=='X' and grille[0]=='X' or grille[1]=='X' and grille[4]=='X' and grille[7]=='X' or grille[3]=='X' and grille[4]=='X' and grille[5]=='X':
            print('Le joueur 1 a gagné!!!!')
            finish_test=False
        elif grille[0]=='O' and grille[1]=='O' and grille[2]=='O' or grille[2]=='O' and grille[5]=='O' and grille[8]=='O' or grille[8]=='O' and grille[7]=='O' and grille[6]=='O' or grille[6]=='O' and grille[3]=='O' and grille[0]=='O' or grille[2]=='O' and grille[4]=='O' and grille[6]=='O' or grille[8]=='O' and grille[4]=='O' and grille[0]=='O' or grille[1]=='O' and grille[4]=='O' and grille[7]=='O' or grille[3]=='O' and grille[4]=='O' and grille[5]=='O':
            print('Le joueur 2 a gagné!!!!')
            finish_test=False
        else:
            print('Egalité')
    except KeyError:
        game()
        
def game():
    while finish_test==True:
        morpion()
        finish()
        if finish_test:
            break
    print('La partie est terminé')
    
def joueur1():
    pionjoueur1=int(input())
    verif_X()
        
def joueur2():
    pionjoueur2=int(input())
    verif_O()
        
def verif_X():
    if pionjoueur1 in case:
        print('Il y a déjà un pion sur cette case, veuillez rejouez')
        verif_X_variable=0
    else:
        verif_X_variable=1
        
        
def verif_O():
    if pionjoueur2 in case:
        print('Il y a déjà un pion sur cette case, veuillez rejouez')
        verif_O_variable=0
    else:
        verif_O_variable=1

game()





Et mon problème c'est que quand je le lance mon dictionnaire se crée mais avec q'une clé et valeur et me dit que la clé que j'ai taper existe déjà et recrée un dictionnaire avec la valeur du joueur 2 et même si je change de valeur il m'affiche toujours la même clé. Je ne comprends où est le problème je vous remercie d'avance pour votre aide.

Configuration: Windows / Chrome 77.0.3865.120


EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.
A voir également:

1 réponse

khrug
 
Bonsoir.

Il y a beaucoup trop de problèmes dans ton code pour que ça puisse fonctionner sans revoir un tas de choses.

La 1ère chose que je te conseille de faire, est d'ouvrir une documentation ou un tutoriel sur python et de revoir la notion de portée des variables.
0
SERGENTJOHN117
 
Merci pour la réponse, je vais essayer mais est-ce que tu pourrais m'aider sur le fait de comment faire pour ajouter une valeur à un dictionnaire seulement si la clé utilisé n'existe pas déjà c'est ce que j'ai essayer de faire mais ça ne marche pas du tout, merci d'avance pour ton aide
0
khrug
 
Bonjour.

Cela se teste avec in.

>>> dico = dict(a=5, b=6)
>>> for k, v in (('a', 7), ('c', 10)):
...     if k not in dico: dico[k] = v
... 
>>> dico
{'a': 5, 'b': 6, 'c': 10}


Mais quel intérêt dans un jeu de morpion ?
Une grille, c'est 9 cases, donc une liste, laquelle doit être initialisée au départ du jeu, et au fur et à mesure de l'avancement du jeu, les valeurs de cette liste doivent être changées jusqu'à obtenir une liste remplies de X et O
0
SERGENTJOHN117
 
Merci pour ton aide précieuse
0