Forum EduPython

Echanges autour d'EduPython.

Vous n'êtes pas identifié(e).

#1 2018-04-04 06:30:54

Marine14
Membre
Inscription : 2018-04-02
Messages : 2

Tic Tac Toe fin programme

Bonjour, on fait avec une amie un tic tac toe sur edupython pour notre projet ISN pour le bac.
On aurait besoin d'aide sur la dernière fonction, qui s'appelle test_gagnant. Celle-ci permettrait de vérifier quand un joueur gagne et arrêter la partie. On a mis les combinaisons gagnantes avec les positions mais on ne sait pas quoi et comment les utiliser dans la fonction.
voila notre programme:

# coding: utf-8
import numpy as np


continuer=1

tableau = np.array([[1,2,3],[4,5,6],[7,8,9]]) #on a importé une liste pour faire un tableau, et numéroté les cases pour que le joueur indique ses positions
print(tableau)

combinaisons_gagnantes= ([1,5,9],[3,5,7],[1,2,3],[1,4,7],[7,8,9],[3,6,9],[2,5,8],[4,5,6]) #si un joueur fait ces combinaisons, alors il a gagné


def choose_number(): #fonction permettant de choisir un nombre et ne pas "planter" le programme si ce n'est pas un nombre entre 1 et 9 ou des lettres
    n=input("Entrer un nombre entre 1 et 9")
    try:
        n=int(n)
        if n>0 and n<10:
            if tableau[(n-1)//3][(n-1)%3]==10 or tableau[(n-1)//3][(n-1)%3]==20: #raccourcissement de la position dans le tableau
                print("Déjà pris, choisis une autre case")
                return choose_number()
            else :
                return n
        else:
            print("Pas entre 1 et 9")
            return choose_number()
    except:
        print("Ce n'est pas un entier")
        return choose_number()




def placer1(n):
    global tableau  #global pour pouvoir utiliser tableau dans la fonction
    tableau[(n-1)//3][(n-1)%3]=10 #division pour déterminer les positions



def placer2(n):
    global tableau
    tableau[(n-1)//3][(n-1)%3]=20


while continuer==1:  #faire tourner les fonctions tant qu'une combinaison gagnante n'est pas atteinte
    placer1(choose_number())
    test_gagnant() #fonction pour arreter le jeu si une combibnaison est atteinte
    print(tableau)
    placer2(choose_number())
    test_gagnant()
    print(tableau)

def test_gagnant(n):
    if

On bloque ici,
merci à vous

Hors ligne

#2 2018-04-19 15:19:03

magicvinni
Administrateur
Inscription : 2017-12-22
Messages : 300

Re : Tic Tac Toe fin programme

Bonjour,

      Désolé, j'ai laissé passer ce message. Est-il toujours d'actualité ?

VM

Hors ligne

#3 2018-05-03 16:43:57

Marine14
Membre
Inscription : 2018-04-02
Messages : 2

Re : Tic Tac Toe fin programme

Bonjour,
Oui il est toujours d'actualité.
Il nous manque juste une fonction ou des codes afin de déterminer le match nul, et que lorsque le nombre de coup soit égal ou dépasse 9, le jeu s'arrête. On a fait quelques modifications également dans le programme, je vous le colle ci-dessous:

def placer(n,j):
    global tableau 
    global compteur
    if compteur<9:
        tableau[(n-1)//3][(n-1)%3]=j 
        compteur=compteur+1
        print("Le nombre de coups est de ",compteur)



def test_gagnant(j): 
    global tableau
    global continuer
    if tableau[0][0]==tableau[0][1]==tableau[0][2] or tableau[0][1]==tableau[1][1]==tableau[1][2] or tableau[0][2]==tableau[1][1]==tableau[2][0]  or tableau[0][0]==tableau[1][0]==tableau[2][0]  or tableau[1][0]==tableau[1][1]==tableau[1][2] or tableau[2][0]==tableau[2][1]==tableau[2][2] or tableau[0][1]==tableau[1][1]==tableau[2][1] or tableau[0][0]==tableau[1][1]==tableau[2][2]: #combinaisons gagnantes

        return 'oui'
    else :
        return 'non'
while continuer==1: 
    placer(choisir_nombre(),10)
    print(tableau)
    if test_gagnant(10)=='oui':
        print("Le joueur 1 a gagné")
        break


    else:
            placer(choisir_nombre(),20)
            print(tableau)
            if test_gagnant(20)=='oui':
                print("Le joueur 2 a gagné")
                continuer=0 

    if compteur==9:
        continuer=0

On ne sait pas comment arrêter, malgré beaucoup d'essais avec une fonction ou non.
Merci d'avance,
Bonne soirée

Hors ligne

#4 2018-05-07 16:05:36

magicvinni
Administrateur
Inscription : 2017-12-22
Messages : 300

Re : Tic Tac Toe fin programme

Bonjour,

    Je pense qu'avec les lignes 34 et 35, lorsque compteur vaut 9, le programme s’arrête ? Et si personne n'a gagné (avec votre fonction test_gagnant) alors il suffit d'écrire "Match nul", non ?

VM

Hors ligne

Pied de page des forums