Morpion débile

Soyez le premier à donner votre avis sur cette source.

Snippet vu 5 483 fois - Téléchargée 15 fois

Contenu du snippet

petit jeu sympa! contre un autre joueur
sauf que je n'arrive pas a faire changer de joueur
une fois je joue ensuite l'adversaire joue et le problème c'est que l'adversaire continue de jouer tout seul§

Source / Exemple :


import string

# place le symbole du joueur sur la case demandée et retourne
# la valeur de tour (inchangée sauf si la case demandée
# est remplie)
def placer(tour, nom_j1, nom_j2):
    global A1, A2, A3, B1, B2, B3
    global C1, C2, C3, case_remplie

    # on regarde c'est le tour de quel joueur.
    if tour%2 == 0:
        symbole = "X"
        nom = nom_j1
    else :
        symbole = "O"
        nom = nom_j2
        
    texte = nom + ", où voulez vous placer (ex: A1) : "
    case = input(texte)
    case = case.upper()

    # on place le symbole à la case demandée
    if case == "A1" and A1 == " ":
        A1 = symbole
        case_remplie += 1
    elif case == "A2" and A2 == " ":
        A2 = symbole
        case_remplie += 1
    elif case == "A3" and A3 == " ":
        A3 = symbole
        case_remplie += 1
    elif case == "B1" and B1 == " ":
        B1 = symbole
        case_remplie += 1
    elif case == "B2" and B2 == " ":
        B2 = symbole
        case_remplie += 1
    elif case == "B3" and B3 == " ":
        B3 = symbole
        case_remplie += 1
    elif case == "C1" and C1 == " ":
        C1 = symbole
        case_remplie += 1
    elif case == "C2" and C2 == " ":
        C2 = symbole
        case_remplie += 1
    elif case == "C3" and C3 == " ":
        C3 = symbole
        case_remplie += 1
    else :
        print ('la case est déjà remplie, ou vous n avez pas tapez une case valide.')
# affiche le morpion

def affichage(A1,A2,A3,B1,B2,B3,C1,C2,C3):
    print ('\n  A   B   C')
    print ('########################')
    print ('#",A1,"|",B1,"|",C1,"# 1')
    print ('#------+------+--------#')
    print ('#",A2,"|",B2,"|",C2,"# 2')
    print ('#------+------+--------#')
    print ('#",A3,"|",B3,"|",C3,"# 3')
    print ('#############\n')

# vérifie si 3 symboles identiques sont alignés
# et modifie "fini" si c'est le cas.
def verification(A1,A2,A3,B1,B2,B3,C1,C2,C3, nom_j1, nom_j2):
    global fini
    if ((A1 == A2 and A1 == A3) or (A1 == B1 and A1 == C1) or (A1 == B2 and A1 == C3)) and A1 != " ":
        if A1 == "X":
            print ('Bravo", nom_j1, "vous avez gagné')
        else :
            print ('Bravo", nom_j2, "vous avez gagné')
        fini = True
    elif ((B1 == B2 and B2 == B3) or (A2 == B2 and B2 == C2) or (A3 == B2 and B2 == C1)) and B2 != " ":
        if B2 == "X":
            print ('Bravo", nom_j1, "vous avez gagné')
        else :
            print ('Bravo", nom_j2, "vous avez gagné')
        fini = True
    elif ((C1 == C3 and C2 == C3) or (A3 == C3 and B3 == C3)) and C3 != " ":
        if C3 == "X":
            print ('Bravo", nom_j1, "vous avez gagné')
        else :
            print ('Bravo", nom_j2, "vous avez gagné')
        fini = True

tour_joueur = 0
fini = False
A1, A2, A3 = " ", " ", " "
B1, B2, B3 = " ", " ", " "
C1, C2, C3 = " ", " ", " "
case_remplie = 0
nom_joueur1 = input("entrez le nom du 1er joueur, vous aurez les X: ")
nom_joueur2 = input("entrez le nom du 2eme joueur, vous aurez les O: ")

affichage(A1,A2,A3,B1,B2,B3,C1,C2,C3)
while not fini :
    tour_joueur = placer(tour_joueur, nom_joueur1, nom_joueur2)
    tour_joueur = +1
    affichage(A1,A2,A3,B1,B2,B3,C1,C2,C3)
    verification(A1,A2,A3,B1,B2,B3,C1,C2,C3, nom_joueur1, nom_joueur2)
    if case_remplie == 9 and not fini:
        print ('match nul')
        fini = True

Conclusion :


voila

A voir également

Ajouter un commentaire

Commentaires

khaleid
Messages postés
39
Date d'inscription
mercredi 4 juillet 2001
Statut
Membre
Dernière intervention
8 avril 2014

merçi pour le partage
je vous remercie de votre aide j'aimerais aussi faire une interface graphiqua avec tkinter sur laquelle je peux placer mes ronds et mes crois au fur et a mesure que le jeu avance mais étant donné que je commence depuis bientôt deux ou trois semaines la programmation je ne sais pas trop par ou commencer et surtout comment commencer!
Mints
Messages postés
69
Date d'inscription
mercredi 1 novembre 2000
Statut
Membre
Dernière intervention
1 juin 2018
6
Salut algerie91, t'as fait 2 erreurs qui te permettent pas de changer de joueur :

- tour_joueur = placer(tour_joueur, nom_joueur1, nom_joueur2) : là tu remplace la valeur actuelle de 'tour_joueur' par la valeur de retour d'une fonction qui ne renvoie rien par défaut. Donc tour_joueur passe à None après cette ligne.Donc met simplement placer(tour_joueur, nom_joueur1, nom_joueur2).
- tour_joueur = +1 : là tu affecte la valeur +1 dans tour_joueur après chaque appel de 'placer()', donc tu force le joueur 2 à joueur indéfiniment.Donc à remplacer par tour_joueur += 1.

Dernière chose :
- 'Bravo", nom_j1, "vous avez gagné' à remplacer par 'Bravo', nom_j1, 'vous avez gagné' .

Cordialement. Mints.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.