Aller au contenu

Morpion en python


loriss

Messages recommandés

Invité riad**
Invités, Posté(e)
Invité riad**
Invité riad** Invités 0 message
Posté(e)
il y a 6 minutes, loriss a dit :

@riad**

 

voici ce que elle me renvoie:

line 20, in affichegrille print((nSym(val[0][0])), end='') TypeError: 'int' object is not subscriptable

Surement parce que tu n'as pas encore corrigé changegrille, regarde ma réponse en haut.

Lien à poster
Partager sur d’autres sites

Annonces
Maintenant
Membre, 22ans Posté(e)
loriss Membre 54 messages
Baby Forumeur‚ 22ans‚
Posté(e)

grille=[[0,0,0],[0,0,0],[0,0,0]]

def changegrille(i,j,val):
    grille [j]=val

def nSym(nb):
  if nb==0:
    return(' ')
  if nb==1:
    return('X')
  if nb==2:
    return('O')

def affichegrille(val):
    print("     1)  2)  3)")
    print("   -------------")
    print("A)", end='')
    print((" | "), end='')
    print((nSym(val[0][0])), end='')
    print((" | "), end='')
    print((nSym(val[0][1])), end='')
    print((" | "), end='')
    print((nSym(val[0][2])), end='')
    print(" | ")
    print("   -------------")
    print("B)", end='')
    print((" | "), end='')
    print((nSym(val[1][0])), end='')
    print((" | "), end='')
    print((nSym(val[1][1])), end='')
    print((" | "), end='')
    print((nSym(val[1][2])), end='')
    print(" | ")
    print("   -------------")
    print("C)", end='')
    print((" | "), end='')
    print((nSym(val[2][0])), end='')
    print((" | "), end='')
    print((nSym(val[2][1])), end='')
    print((" | "), end='')
    print((nSym(val[2][2])), end='')
    print(" | ")
    print("   -------------")


def testV():
    return grille[0][0]==grille[1][0]==grille[2][0] or grille[0][1]==grille[1][1]==grille[2][1] or grille[0][2]==grille[1][2]==grille[2][2]
def testH():
    return grille[0][0]==grille[0][1]==grille[0][2] or grille[1][0]==grille[1][1]==grille[1][2] or grille[2][0]==grille[2][1]==grille[2][2]
def testD():
    return ((grille[0][0]==grille[1][1] and grille[1][1]==grille[2][2] and grille[0][0]!=" ") or (grille[0][2]==grille[1][1] and grille[1][1]==grille[2][0] and grille[0][2]!=" "))

import random
symboles = 1,2
joueur= random.randint(1,2)

def changeJoueur():
  global joueur
  if joueur==1:
    joueur=2
  else:
    joueur=1

def joue():
  while testV()==True or testH()== True :
    affichegrille(grille)
    i = input("tu veux jouer sur quelle ligne : ")
    j = int(input("tu veux jouer sur quelle colonne : "))
    i=ord(i)-65
    j=j-1
    if grille[j]==0:
      changegrille(i,j,joueur)
      print(testH())
      print(testV())
      affichegrille(grille)
      changeJoueur()
  changeJoueur()
  print("Victoire du joueur " + str(joueur))


joue()


oui je n'ai plus d'erreur

j'ai print mes fonctions pour voir et elle fonctionne bien ,mais quand elle me renvoie flase le programme continue

Lien à poster
Partager sur d’autres sites

Membre, 22ans Posté(e)
loriss Membre 54 messages
Baby Forumeur‚ 22ans‚
Posté(e)

avec des recherche j'ai réussi

grille=[[0,0,0],[0,0,0],[0,0,0]]

def changegrille(i,j,val):
    grille [j]=val

def nSym(nb):
  if nb==0:
    return(' ')
  if nb==1:
    return('X')
  if nb==2:
    return('O')

def affichegrille(val):
    print("     1)  2)  3)")
    print("   -------------")
    print("A)", end='')
    print((" | "), end='')
    print((nSym(val[0][0])), end='')
    print((" | "), end='')
    print((nSym(val[0][1])), end='')
    print((" | "), end='')
    print((nSym(val[0][2])), end='')
    print(" | ")
    print("   -------------")
    print("B)", end='')
    print((" | "), end='')
    print((nSym(val[1][0])), end='')
    print((" | "), end='')
    print((nSym(val[1][1])), end='')
    print((" | "), end='')
    print((nSym(val[1][2])), end='')
    print(" | ")
    print("   -------------")
    print("C)", end='')
    print((" | "), end='')
    print((nSym(val[2][0])), end='')
    print((" | "), end='')
    print((nSym(val[2][1])), end='')
    print((" | "), end='')
    print((nSym(val[2][2])), end='')
    print(" | ")
    print("   -------------")


def testV():
    return grille[0][0]==grille[1][0]==grille[2][0] or grille[0][1]==grille[1][1]==grille[2][1] or grille[0][2]==grille[1][2]==grille[2][2]
def testH():
    return grille[0][0]==grille[0][1]==grille[0][2] or grille[1][0]==grille[1][1]==grille[1][2] or grille[2][0]==grille[2][1]==grille[2][2]
def testD():
    return grille[0][0]==grille[1][1]==grille[2][2] or grille[0][2]==grille[1][1]==grille[2][0]

import random
symboles = 1,2
joueur= random.randint(1,2)

def changeJoueur():
  global joueur
  if joueur==1:
    joueur=2
  else:
    joueur=1

def joue():
  while testH()==True & testV()==True & testD()==True:
    affichegrille(grille)
    i = input("tu veux jouer sur quelle ligne : ")
    j = int(input("tu veux jouer sur quelle colonne : "))
    i=ord(i)-65
    j=j-1
    if grille[j]==0:
      changegrille(i,j,joueur)
      print(testD())
      affichegrille(grille)
      changeJoueur()
  changeJoueur()
  print("Victoire du joueur " + str(joueur))


joue()


mais la fonction pour les diagonales ne fonctionne pas, pouvez vous m'aider à comprendre

Lien à poster
Partager sur d’autres sites

Invité riad**
Invités, Posté(e)
Invité riad**
Invité riad** Invités 0 message
Posté(e)

@loriss

grille=[[0,0,0],[0,0,0],[0,0,0]]

def changegrille(i,j,val):
    grille [j]=val

>>> changegrille(1,0,5)
>>> grille
[5, [0, 0, 0], [0, 0, 0]]

Tu vois l'erreur maintenant?

Lien à poster
Partager sur d’autres sites

Membre, 22ans Posté(e)
loriss Membre 54 messages
Baby Forumeur‚ 22ans‚
Posté(e)

mais quand j'enlève je reçois un message d'erreur

non désolé je comprend toujours pas @riad**

Lien à poster
Partager sur d’autres sites

Invité riad**
Invités, Posté(e)
Invité riad**
Invité riad** Invités 0 message
Posté(e)
il y a 13 minutes, loriss a dit :

mais quand j'enlève je reçois un message d'erreur

 

non désolé je comprend toujours pas @riad**

 

Si tu fais  :

grille [j]=val

Tu vas remplacer la liste [0,0,0] par val qui est int, remarque que changegrille prenne trois paramètre, i, j et val, mais tu n'as pas utilisé le paramètre i

il faut écrire :

grille[i][j] = val

 

Lien à poster
Partager sur d’autres sites

Membre, 22ans Posté(e)
loriss Membre 54 messages
Baby Forumeur‚ 22ans‚
Posté(e)

le paramètre ne s'affiche pas quand j'envoie un mess mais je l'ai bien mis.......... en remplaçant par val il me dis NameError: name 'val' is not defined

Lien à poster
Partager sur d’autres sites

Invité riad**
Invités, Posté(e)
Invité riad**
Invité riad** Invités 0 message
Posté(e)
il y a 3 minutes, loriss a dit :

le paramètre ne s'affiche pas quand j'envoie un mess mais je l'ai bien mis.......... en remplaçant par val il me dis NameError: name 'val' is not defined

Envoie le message d'erreur au complet ou fait une capture d'écran.

Lien à poster
Partager sur d’autres sites

Membre, 22ans Posté(e)
loriss Membre 54 messages
Baby Forumeur‚ 22ans‚
Posté(e)

oui il y a eu un quiproquo 

j'avais bien écrit dès le début c juste que je n'arrive pas à l'écrire en message

mon programme fonctionne c'est les fonctions test() que je n'arrive pas à programmer

@riad**

Lien à poster
Partager sur d’autres sites

Annonces
Maintenant

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×