Le jeu du pendu est un jeu à deux qui consiste à trouver un mot en devinant les lettres qui le composent. Pour ce faire, un premier joueur propose un mot à deviner ensuite, on affiche au deuxième joueur le mot à deviner d’une manière masquée en faisant apparaître la première et dernière lettre du mot et en remplaçant chacune des lettres restantes par un tiret (‘-‘).
Pour deviner le mot, le 2ème joueur annonce une lettre. Si cette lettre fait partie du mot à deviner, on la dévoile en l’affichant à la place du tiret correspondant dans le mot masqué et ceci autant de fois que cette lettre apparaît dans le mot.
Le jeu continue jusqu’à dévoiler toutes les lettres masquées ou atteindre un nombre d’essai égal à la longueur du mot à deviner.
Exécution du programme
1-Initialisation
Entrées :
Mot à deviner (mot
), fourni par le premier joueur.
Nombre d'essais maximal : égal à la longueur du mot à deviner.
essai
: le mot masqué qui est affiché au 2ème joueur, avec la première et la dernière lettre visibles et des tirets ('-') pour les lettres cachées.
2. Création du mot masqué
Afficher le mot masqué avec la première et la dernière lettre visibles, et des tirets pour les autres lettres.
Exemple : Si le mot est "pomme", afficher p---e
.
3. Boucle de jeu
Tant que toutes les lettres ne sont pas dévoilées et qu'il reste des essais :
Affichage du mot masqué (avec les lettres déjà trouvées et des tirets pour les lettres restantes).
Demande au joueur de proposer une lettre (c
).
Vérification de la lettre :
Si la lettre est déjà devinée , ignorer l'entrée et demander une autre lettre.
Si la lettre n'est pas dans le mot, diminuer le nombres d'essais et informer le joueur qu'il a fait une mauvaise tentative.
Si la lettre est dans le mot : Révéler la lettre dans mot
à toutes ses positions.
4. Conditions de fin
Si toutes les lettres du mot sont dévoilées (c'est-à-dire si mot
est identique à mot_deviner
), alors le joueur a gagné.
Si le nombres d'essais = 0 avant que toutes les lettres ne soient dévoilées, le joueur a perdu.
Dans cet algorithme, On va utiliser une fonction et deux procédures:
Algorithme du programme Principal
1 2 3 4 5 |
Algorithme jeu_devinette Debut mot<-saisie_mot() deviner(mot) Fin |
Déclaration des objets
Objet | Type / Nature |
---|---|
mot | chaîne des caractères |
La fonction verif_mot
Cette fonction vérifie si le mot saisi est formé uniquement des lettres.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
fonction verif_mot(ch:chaine):booleen Début i<-0 # Verifier si la chaine est composee uniquement par des lettres Tant que(i<long(ch)) et (('A'<=Majus(ch[i])<='Z')) : i<-i+1 Fin tant que Si (i<long(ch)) alors # si la chaine contient des caracteres non alphabetique Ecrire("la chaine contient des caracteres non alphabetique") retourner Faux Sinon retourner Vrai Fin |
Déclaration des objets
Objet | Type / Nature |
---|---|
i | entier |
La fonction saisie_mot
Cette fonction saisit un mot formé uniquement des lettres.
1 2 3 4 5 6 7 8 9 10 |
fonction saisie_mot():chaine Début Ecrire('donner un mot à deviner: ') Lire(ch) Tant que (verif_mot(ch)=Faux) faire Ecrire('donner un mot à deviner: ') Lire(ch) Fin tant que retourner ch Fin |
Déclaration des objets
Objet | Type / Nature |
---|---|
ch | chaîne des caractères |
La fonction saisie_caractere
Cette fonction retourne un seul caractère saisi par l'utilisateur.
1 2 3 4 5 6 7 8 9 10 |
fonction saisie_caractere():caractere Début Ecrire('donner un caractere:: ') Lire(c) Tant que (long(c)!=1) faire Ecrire('donner un caractere: ') Lire(c) Fin tant que retourner c Fin |
Déclaration des objets
Objet | Type / Nature |
---|---|
c | caractère |
La procédure deviner
Cette procédure consiste à trouver un mot en devinant les lettres qui le composent.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
procedure deviner(ch:chaîne) Début essai<-'' ch1<-ch #apparaitre la premiere et derniere lettre du mot #en remplaçant chacunes des lettres restantes par un tiret ('-') essai<-essai+ch[0] Pour i de 1 à long(ch)-2 faire essai<-essai+'-' Fin pour essai<-essai+ch[len(ch)-1] i<-0 # utiliser i pour preciser le nombre d'essais Tant que (i<long(ch)-1) et (essai!=ch) faire Ecrire(essai) Fin tant que c<-saisie_caractere() #si cette lettre fait partie du mot à deviner Tant que (Pos(ch1,c, 1, long(ch)-1)>=0) et (essai[Pos(ch1,c, 1, long(ch)-1)]='-') faire #Devoiler le carcatere trouve en l’affichant à la place du tiret essai<-essai[Sous_chaine(essai,0,Pos(ch1,c,1, long(ch)-1)]+c+ essai[Sous_chaine(ch,Pos(ch1,c,1, long(ch)-1)+1,long(ch1)] #remplacer le carcatere trouve par - dand ch1 ch1<-Sous_chaine(ch1,0,Pos(ch1,c,1, long(ch)-1)]+'-'+Sous_chaine(ch,Pos(ch1,c,1,long(ch)-1)+1,long(ch1)] i<-i+1 Fin tant que Si (essai=ch) alors Ecrire('Bravo !!! le mot masque est ',ch) Sinon Ecrire('Desole Vous avez perdu') Fin |
Déclaration des objets
Objet | Type / Nature |
---|---|
i | entier |
ch1 | chaîne des caractères |
essai | chaîne des caractères |
c | caractère |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
def verif_mot(ch): i=0 # Verifier si la chaine est composee uniquement par des lettres while(i<len(ch)) and (('A'<=ch[i].upper()<='Z')) : i=i+1 if (i<len(ch)) : # si la chaine contient des caracteres non alphabetique print("la chaine contient des caracteres non alphabetique") return False else : return True # Saisie du message et placer chaque caractere du message dans une case du tableau T def saisie_mot(): ch=input('donner un mot à deviner: ') while verif_mot(ch)==False : ch=input('donner un mot à deviner: ') return ch def saisie_caractere(): c=input('donner un caractere: ') while len(c)!=1 : c=input('donner un caractere: ') return c def deviner(ch): essai='' ch1=ch #apparaitre la premiere et derniere lettre du mot #en remplaçant chacunes des lettres restantes par un tiret ('-') essai=essai+ch[0] for i in range(1,len(ch)-1): essai=essai+'-' essai=essai+ch[len(ch)-1] i=0 # utiliser i pour preciser le nombre d'essais while (i<len(ch)-1) and (essai!=ch): print(essai) c=saisie_caractere() #si cette lettre fait partie du mot à deviner while (ch1.find(c, 1, len(ch)-1)>=0) and (essai[ch1.find(c, 1, len(ch)-1)]=='-'): #Devoiler le carcatere trouve en l’affichant à la place du tiret essai=essai[0:ch1.find(c,1, len(ch)-1)]+c+essai[ch1.find(c,1, len(ch)-1)+1:len(ch1)] #remplacer le carcatere trouve par - dand ch1 ch1=ch1[0:ch1.find(c,1, len(ch)-1)]+'-'+ch[ch1.find(c,1, len(ch)-1)+1:len(ch1)] i=i+1 if (essai==ch): print('Bravo !!! le mot masque est ',ch) else: print('Desole Vous avez perdu') # programme principal mot=saisie_mot() deviner(mot) |
Pour créer une application en Python et Designer QT qui a pour but de trouver un mot en devinant les lettres qui le composent, on va suivre ces étapes:
a- Ouvrez Qt Designer et créez un nouveau fichier de type Main Window.
b- Ajoutez ces widgets:
QLineEdit
nommé 'ch' pour entrer le mot à deviner
QLabel
nommé 'msg' pour afficher des messages d'erreur
QPushButton
nommé 'bt_afficher' pour afficher le mot à deviner
QPushButton
nommé 'bt_recherche' pour lancer la recherche de la lettre dans le mot
QLineEdit
nommé 'c' pour recevoir la caractère
Enregistrez le fichier avec l'extension .ui
, par exemple deviner_mot-interface.ui
.
Voici un exemple de script Python qui utilise l'interface graphique générée par Qt Designer.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
from PyQt5.uic import loadUi from PyQt5 import QtCore, QtGui from PyQt5.QtWidgets import * from PyQt5 import QtCore, QtGui, QtWidgets app = QApplication([]) windows = loadUi ("deviner_mot-interface.ui") essai='' def verif_mot(ch): i=0 # Verifier si la chaine est composee uniquement par des lettres while(i<len(ch)) and (('A'<=ch[i].upper()<='Z')) : i=i+1 if (i<len(ch)) : # si la chaine contient des caracteres non alphabetique windows.msg.setText("la chaine contient des caracteres non alphabetique") return False else : return True def afficher(): global essai windows.msg.clear() ch = windows.ch.text() if verif_mot(ch): #apparaitre la premiere et derniere lettre du mot #en remplaçant chacunes des lettres restantes par un tiret ('-') essai=ch[0] for i in range(1,len(ch)-1): essai=essai+'-' essai=essai+ch[len(ch)-1] windows.msg.setText(essai) def deviner(): global essai ch = windows.ch.text() if verif_mot(ch): ch1=ch c= windows.c.text() if len(c)==1: i=0 while (i<len(ch)-1): windows.msg.setText(essai) while (ch1.find(c, 1, len(ch)-1)>=0) and (essai[ch1.find(c, 1, len(ch)-1)]=='-'): #print(str(ch1.find(c, 1, len(ch)-2))) #Devoiler le carcatere trouve en l’affichant à la place du tiret essai=essai[0:ch1.find(c,1, len(ch)-1)]+c+essai[ch1.find(c,1, len(ch)-1)+1:len(ch1)] #remplacer le carcatere trouve par - dand ch1 ch1=ch1[0:ch1.find(c,1, len(ch)-1)]+'-'+ch[ch1.find(c,1, len(ch)-1)+1:len(ch1)] i=i+1 windows.msg.setText(essai) if (essai==ch): windows.msg.setText('Bravo !!! le mot masque est '+ch) windows.bt_afficher.clicked.connect( afficher ) windows.bt_rechercher.clicked.connect( deviner ) windows.show() app.exec_() |
Exécution du programme
Vous pouvez voir aussi :
La robotique éducative joue un rôle important dans l'éducation des enfants et des jeunes en les aidant à acquérir des compétences en science et technologie.
Dans ce cadre notre site web représente une excellente ressource pour les parents, les enseignants et les enfants qui souhaitent découvrir la robotique.
Zaouiet Kontech-Jemmel-Monastir-Tunisie
+216 92 886 231
medaliprof@gmail.com
Site robotique réalisé par Mohamed Ali-Prof Info