Programmer le jeu Sudoku
jason
-
trifou -
trifou -
Bonjour,
Voici un exercice ou on demande de compléter le programme. J''ai commencé mais je suis bloqué. Quelqu'un(e) peut il m'aider svp?
On va programmer le jeu Sudoku (https://fr.wikipedia.org/wiki/Sudoku). Vous devez donc compléter le programme pour ce jeu. Une partie de programme vous est donnée dans deux fichiers: D4Q3.py et jeuSudoku.py (que vous devez compléter). Ne modifier pas les prototypes des fonctions. Vous devez implémenter les fonctions pour ce jeu. Un exemple d’exécution du jeu est donnéé à la fin de ce document.
Le programme principal contrôle le jeu (il est déjà donné). Au début un menu de 3 choix est affiché à l’utilisateur. Ensuite, il demande à l’utilisateur d’entrée son choix. On suppose que l’utilisateur va entrer exactement le bon choix (un choix entre 1 et 3) donc la validité du choix n’est pas vérifiée. Le choix 1 : il réinitialise la grille de Sudoku par la matrice donné dans le programme principal . Par la suite, le jeu commence en suivant les mêmes étapes que le choix 2. Le choix 2 : le jeu commence. Il affiche la grille à l’écran et puis demander à l’utilisateur d’entrer la case à jouer (il doit entrer le numéro de la ligne, de la colonne et le nombre qu’il veut ajouter). Si la case à jouer est correcte (une case valide), alors il faut afficher le message Bravo !!. Sinon, le message Echec sera affiché. Si la case est déjà remplie ou si la grille de Sudoku est pleine, il affiche le message approprié à l’utilisateur. Le choix 3 : Le jeu s’arrête. Le message Au revoir ! est affiché.
Afin de bien contrôler le jeu, il faut implémenter les fonctions suivantes : AfficherGrille() : permet d’afficher une grille Sudoku sous format d’une matrice 9x9. VerifierLigne() : permet de vérifier si le nombre à ajouter existe déjà sur la ligne. VerifierCol() : permet de vérifier si le nombre à ajouter existe déjà sur la colonne. VerifierSousGrille() : permet de vérifier si le nombre à ajouter existe déjà sur la sous grille où l’ajout sera fait. VerifierCase() : vérifier si une case est valide c.-à-d. le nombre à ajouter n’existe pas ni sur la ligne, ni sur la colonne, ni sur la sous-grille. VerifierGagner() : vérifier si la grille est complète c.-à-d. il n’y a aucun case nul. Dans ce cas, la fonction retourne True. Jouer() : ajouter une case dans la grille de Sudoku seulement si la case est valide. Notez que: 1) Après chaque choix de menu, on réaffiche la grille après modification (s’il en y a) et le menu avec les options et redemande à l’utilisateur d’entrer de nouveau un entre choix jusqu’à que l’utilisateur choisi l’option 3 ou la grille est complétée. 2) La case à ajouter est demandé à l’utilisateur avec input(). On ne vérifie pas la validité de ces entrés (on suppose que l’utilisateur il va entrer toujours un nombre entre 1 et 9 et un numéro de ligne et numéro de colonne entre 0 et 8). 3) Les fonctions verifierLigne(), verifierCol(), verifierSousGrille() retournent True si le nombre n’existe pas sur la ligne ou la colonne ou la sous-grille.
Annexe – exemple jeu
Menu: 1- Commencer un nouveau jeu. 2- Continuer le jeu. 3- Quitter le jeu.
SVP entrez votre choix (1, 2 ou 3): 1
5 3 8 6 9 1 0 4 7 7 4 6 5 3 2 8 1 9 1 9 2 7 8 4 3 5 6 8 7 1 2 6 3 4 9 5 3 2 9 4 5 7 1 6 8 4 6 5 9 1 8 7 2 3 6 1 4 3 7 9 5 8 2 9 8 3 1 2 5 6 7 4 2 5 0 8 4 6 9 3 1
Entrez votre choix de case ligne: 0
Entrez votre choix de case col: 6
Entrez votre choix de case num: 2
Bravo!!
5 3 8 6 9 1 2 4 7 7 4 6 5 3 2 8 1 9 1 9 2 7 8 4 3 5 6 8 7 1 2 6 3 4 9 5 3 2 9 4 5 7 1 6 8 4 6 5 9 1 8 7 2 3 6 1 4 3 7 9 5 8 2 9 8 3 1 2 5 6 7 4 2 5 0 8 4 6 9 3 1
Menu: 1- Commencer un nouveau jeu. 2- Continuer le jeu. 3- Quitter le jeu. SVP entrez votre choix (1, 2 ou 3): 2
5 3 8 6 9 1 2 4 7 7 4 6 5 3 2 8 1 9 1 9 2 7 8 4 3 5 6 8 7 1 2 6 3 4 9 5 3 2 9 4 5 7 1 6 8 4 6 5 9 1 8 7 2 3 6 1 4 3 7 9 5 8 2 9 8 3 1 2 5 6 7 4 2 5 0 8 4 6 9 3 1 Entrez votre choix de case ligne: 1
Entrez votre choix de case col: 2
Entrez votre choix de case num: 7
Case déjà remplie !!
Voici le code en question:
Voici un exercice ou on demande de compléter le programme. J''ai commencé mais je suis bloqué. Quelqu'un(e) peut il m'aider svp?
On va programmer le jeu Sudoku (https://fr.wikipedia.org/wiki/Sudoku). Vous devez donc compléter le programme pour ce jeu. Une partie de programme vous est donnée dans deux fichiers: D4Q3.py et jeuSudoku.py (que vous devez compléter). Ne modifier pas les prototypes des fonctions. Vous devez implémenter les fonctions pour ce jeu. Un exemple d’exécution du jeu est donnéé à la fin de ce document.
Le programme principal contrôle le jeu (il est déjà donné). Au début un menu de 3 choix est affiché à l’utilisateur. Ensuite, il demande à l’utilisateur d’entrée son choix. On suppose que l’utilisateur va entrer exactement le bon choix (un choix entre 1 et 3) donc la validité du choix n’est pas vérifiée. Le choix 1 : il réinitialise la grille de Sudoku par la matrice donné dans le programme principal . Par la suite, le jeu commence en suivant les mêmes étapes que le choix 2. Le choix 2 : le jeu commence. Il affiche la grille à l’écran et puis demander à l’utilisateur d’entrer la case à jouer (il doit entrer le numéro de la ligne, de la colonne et le nombre qu’il veut ajouter). Si la case à jouer est correcte (une case valide), alors il faut afficher le message Bravo !!. Sinon, le message Echec sera affiché. Si la case est déjà remplie ou si la grille de Sudoku est pleine, il affiche le message approprié à l’utilisateur. Le choix 3 : Le jeu s’arrête. Le message Au revoir ! est affiché.
Afin de bien contrôler le jeu, il faut implémenter les fonctions suivantes : AfficherGrille() : permet d’afficher une grille Sudoku sous format d’une matrice 9x9. VerifierLigne() : permet de vérifier si le nombre à ajouter existe déjà sur la ligne. VerifierCol() : permet de vérifier si le nombre à ajouter existe déjà sur la colonne. VerifierSousGrille() : permet de vérifier si le nombre à ajouter existe déjà sur la sous grille où l’ajout sera fait. VerifierCase() : vérifier si une case est valide c.-à-d. le nombre à ajouter n’existe pas ni sur la ligne, ni sur la colonne, ni sur la sous-grille. VerifierGagner() : vérifier si la grille est complète c.-à-d. il n’y a aucun case nul. Dans ce cas, la fonction retourne True. Jouer() : ajouter une case dans la grille de Sudoku seulement si la case est valide. Notez que: 1) Après chaque choix de menu, on réaffiche la grille après modification (s’il en y a) et le menu avec les options et redemande à l’utilisateur d’entrer de nouveau un entre choix jusqu’à que l’utilisateur choisi l’option 3 ou la grille est complétée. 2) La case à ajouter est demandé à l’utilisateur avec input(). On ne vérifie pas la validité de ces entrés (on suppose que l’utilisateur il va entrer toujours un nombre entre 1 et 9 et un numéro de ligne et numéro de colonne entre 0 et 8). 3) Les fonctions verifierLigne(), verifierCol(), verifierSousGrille() retournent True si le nombre n’existe pas sur la ligne ou la colonne ou la sous-grille.
Annexe – exemple jeu
Menu: 1- Commencer un nouveau jeu. 2- Continuer le jeu. 3- Quitter le jeu.
SVP entrez votre choix (1, 2 ou 3): 1
5 3 8 6 9 1 0 4 7 7 4 6 5 3 2 8 1 9 1 9 2 7 8 4 3 5 6 8 7 1 2 6 3 4 9 5 3 2 9 4 5 7 1 6 8 4 6 5 9 1 8 7 2 3 6 1 4 3 7 9 5 8 2 9 8 3 1 2 5 6 7 4 2 5 0 8 4 6 9 3 1
Entrez votre choix de case ligne: 0
Entrez votre choix de case col: 6
Entrez votre choix de case num: 2
Bravo!!
5 3 8 6 9 1 2 4 7 7 4 6 5 3 2 8 1 9 1 9 2 7 8 4 3 5 6 8 7 1 2 6 3 4 9 5 3 2 9 4 5 7 1 6 8 4 6 5 9 1 8 7 2 3 6 1 4 3 7 9 5 8 2 9 8 3 1 2 5 6 7 4 2 5 0 8 4 6 9 3 1
Menu: 1- Commencer un nouveau jeu. 2- Continuer le jeu. 3- Quitter le jeu. SVP entrez votre choix (1, 2 ou 3): 2
5 3 8 6 9 1 2 4 7 7 4 6 5 3 2 8 1 9 1 9 2 7 8 4 3 5 6 8 7 1 2 6 3 4 9 5 3 2 9 4 5 7 1 6 8 4 6 5 9 1 8 7 2 3 6 1 4 3 7 9 5 8 2 9 8 3 1 2 5 6 7 4 2 5 0 8 4 6 9 3 1 Entrez votre choix de case ligne: 1
Entrez votre choix de case col: 2
Entrez votre choix de case num: 7
Case déjà remplie !!
Voici le code en question:
from jeuSudoku import * def afficherGrille(grille): ''' (list) -> None Affiche le grille de jeu Sudoku Preconditions: grille est une reference a une matrice 9x9 qui contient déja des nombres de 1 à 9 ''' print(" ", end="") col = 0 while col < len(grille): print(col, end=" ") col += 1 print() row = 0 while row < len(grille): print(row, end="") col = 0 while col < len(grille[row]): print(" ", grille[row][col], end="") col += 1 print() row += 1 def jouer(grille, row, col, num): ''' (list, int, int, int) -> Bool Jouer une étape de jeu Sudoku Preconditions: grille est une réference sur une liste de 9x9 contient seulement des nombres grille est modifié (un element est ajouté dans la grille) si la case est valide est correcte. ''' # A COMPLETER # Créer le tableau de jeu (9 x 9) grille = [[5, 3, 8, 6, 9, 1, 0, 4, 7], [7, 4, 6, 0, 3, 2, 8, 1, 9], [1, 9, 2, 0, 8, 4, 3, 5, 6], [8, 7, 1, 2, 6, 3, 4, 9, 5], [3, 2, 9, 4, 5, 7, 1, 6, 8], [4, 6, 5, 9, 1, 8, 7, 2, 3], [0, 0, 4, 3, 7, 9, 5, 8, 2], [9, 8, 3, 1, 0, 5, 6, 7, 4], [2, 5, 0, 8, 4, 6, 9, 3, 1]] # la seule matrice utilisé dans le programme. print("Menu: 1- Commencer un nouveau jeu.") print(" ", "2- Continuer le jeu.") print(" ", "3- Quitter le jeu.") choix = int(input("SVP entrez votre choix: 1, 2 ou 3: ")) while choix < 3 and choix > 0: if choix == 1: # Créer le tableau de jeu (9 x 9) grille = [[5, 3, 8, 6, 9, 1, 0, 4, 7], [7, 4, 6, 5, 3, 2, 8, 1, 9], [1, 9, 2, 7, 8, 4, 3, 5, 6], [8, 7, 1, 2, 6, 3, 4, 9, 5], [3, 2, 9, 4, 5, 7, 1, 6, 8], [4, 6, 5, 9, 1, 8, 7, 2, 3], [6, 1, 4, 3, 7, 9, 5, 8, 2], [9, 8, 3, 1, 2, 5, 6, 7, 4], [2, 5, 0, 8, 4, 6, 9, 3, 1]] # la seule matrice utilisé dans le programme. afficherGrille(grille) row = int(input("entrez votre choix de case ligne ")) col = int(input("entrez votre choix de case col ")) num = int(input("entrez votre choix de case num ")) if grille[row][col] == 0: ajout = jouer(grille, row, col, num) if ajout == True: print("Bravo!!") else: print("Echec :(") else: print("Case deja rempli") afficherGrille(grille) if verifierGagner(grille) == True: print("Bravo!! Vous avez gagne") choix = -1 else: print("Menu: 1- Commencer un nouveau jeu.") print(" ", "2- Continuer le jeu.") print(" ", "3- Quitter le jeu.") choix = int(input("SVP entrez votre choix: 1, 2 ou 3: ")) if choix==3: print("Au revoir") def verifierLigne(grille, row, num): ''' (list, int, int) -> Bool Vérifier si la case à ajouter n'existe pas sur la ligne. Preconditions: grille est une reference a une matrice 9x9 qui contient déja des nombres de 1 à 9 ''' for i in range(0,9): if(grille[row][i]==num): return False break return true def verifierCol(grille, col, num): ''' (list, int, int) -> Bool Vérifier si la case à ajouter n'existe pas sur la colonne. Preconditions: grille est une reference a une matrice 9x9 qui contient déja des nombres de 1 à 9 ''' for i in range(0,9): if(grille[i][col]==num): return False break return True def verifierSousGrille(grille, row, col, num): ''' (list, int, int) -> Bool Vérifier si la case à ajouter n'existe pas sur la sous-grille. Preconditions: grille est une reference a une matrice 9x9 qui contient déja des nombres de 1 à 9 ''' # A COMPLETER def verifierGagner(grille): '''(list) -> bool * Preconditions: grille est une reference a une matrice 9x9 qui contient de nombres de 1 à 9 * Verifie si la grille est completement remplie. ''' # A COMPLETER def verifierValide(grille, row, col, num): ''' (list, int, int, int) -> bool * verifie si le nombre proposé est bon sur la ligne et colonne et la sous-grille donné en parametre. * Preconditions: tab est une reference a une matrice 9 x 9 qui contient des chiffres entre 1 et 9 ''' # A COMPLETER
Configuration: Windows / Edge 18.17763
A voir également:
- Programmer le jeu Sudoku
- 94 jeu - Télécharger - Puzzle & Réflexion
- Programmer sms - Guide
- 94 degrés jeu - Télécharger - Divers Jeux
- Jeu zuma - Télécharger - Jeux vidéo
- Programmer mail gmail - Guide
1 réponse
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour,
cela ne t'aidera pas si nous faisons l'exercice à ta place.
as-tu une question?
cela ne t'aidera pas si nous faisons l'exercice à ta place.
as-tu une question?
tu as bien une petite idée d'où vient le problème, non? à quelle ligne devrait s'afficher "bravo"? dans quel cas "bravo" s'affiche-t'il?
il est souvent utile d'ajouter des pour comprendre le comportement du programme.