Echanges autour d'EduPython.
Vous n'êtes pas identifié(e).
Pages : 1
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
Bonjour,
Désolé, j'ai laissé passer ce message. Est-il toujours d'actualité ?
VM
En ligne
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
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
En ligne
Pages : 1