Jeu devinette du numéro de téléphone – Bac Pratique 2014 [ Algorithme + Python ]

Algo et Python 19-08-24
43 0

Travail demandé

Voulant participer au jeu HHCASH, un élève a décidé de s’entraîner en essayant de deviner des numéros de téléphone. Ainsi, il souhaite s’exercer sur une application qui propose un numéro de téléphone TEL obtenu par la concaténation de 8 chiffres aléatoires ; l’élève, qui a le rôle de joueur, essaiera de deviner le numéro en question en proposant à chaque fois une chaine de 8 chiffres P. L’application génère un tableau G de 8 cases qui sera affiché lors de chaque essai afin de guider le joueur sur son prochain essai et ce de la manière suivante :

- La case i de G contient 0 si le chiffre P[i] de la proposition ne figure pas dans le numéro TEL.

- La case i de G contient 1 si le chiffre P[i] figure dans le numéro TEL et il est bien placé.

- La case i de G contient 2 si le chiffre P[i] figure dans le numéro TEL mais il est mal placé.

Le jeu se termine lorsque le joueur devine le numéro proposé par l’application (TEL = P) ou lorsque le nombre d’essais atteint 6.

Exemple :  L’application a proposé aléatoirement le numéro TEL = ‘’51784218’’ (c’est la concaténation de 8 chiffres aléatoires)

(Description d’un essai)

Le joueur propose la chaîne de 8 chiffres P=’49167813’

Le tableau généré est le suivant :

G :

2 0 2 0 2 2 1 0

Explication :

G[1] contient 2 car le chiffre ‘’4’’ de P (P[1]) existe dans TEL mais il n’est pas bien placé

G[2] contient 0 car le chiffre ‘’9’’ de P (P[2]) n’existe pas dans TEL

G[7] contient 1 car le chiffre ‘’1’’ de P (P[7]) existe dans TEL et il est bien placé

A la fin du jeu, l’un de ces 2 messages sera affiché :

- Bravo, vous avez deviné le numéro de téléphone

- Désolé, le numéro de téléphone à deviner était 51784218

Solution Algorithmique

Voici le principe de l'algorithme pour le jeu de devinette de numéro de téléphone :

1- Génération du numéro de téléphone (TEL)

Générer un numéro de téléphone TEL composé de 8 chiffres aléatoires. Chaque chiffre est compris entre 0 et 9.

Stocker TEL pour le comparer aux propositions du joueur.

2- Initialisation du jeu

Définir un compteur d'essais, initialisé à 0.

Définir un nombre maximum d'essais, par exemple 6.

3- Boucle de jeu

Tant que le joueur n'a pas deviné le numéro (c'est-à-dire P != TEL) et que le nombre d'essais est inférieur au maximum autorisé :

1. Lecture de la proposition (P) : Demander au joueur de proposer une chaîne de 8 chiffres.

2. Initialisation du tableau de guidage (G) : Créer un tableau G de 8 cases, initialement rempli de zéros.

3. Comparaison des chiffres :

Pour chaque position i de 0 à 7 :

Si le chiffre proposé P[i] est égal à TEL[i], alors G[i] = 1.

Si le chiffre proposé P[i] est différent de TEL[i], mais qu'il figure ailleurs dans TEL, alors G[i] = 2.

Si le chiffre proposé P[i] n'existe pas dans TEL, alors G[i] = 0.

4- Affichage du tableau G : Afficher le tableau G pour indiquer au joueur les indices sur sa proposition.

5- Incrémentation du compteur d'essais : Augmenter le compteur d'essais de 1.

4. Terminaison du jeu

Le jeu se termine si l'une des conditions suivantes est remplie :

Le joueur a deviné le numéro (P == TEL). Afficher un message de victoire.

Le joueur atteint le nombre maximum d'essais sans deviner le numéro. Afficher un message de défaite, ainsi que le numéro TEL caché.

Dans cet algorithme, On va utiliser trois fonctions et deux procédures :

La fonction verif_tel

Cette fonction vérifie si le numéro saisi est composé de huit chiffres.

Déclaration des objets

Objet

Type / Nature

i

entier

La fonction saisie

Cette fonction saisit un numéro de téléphone formé de huit chiffres.

Déclaration des objets

Objet

Type / Nature

ch

chaine des caracteres

La fonction proposer_numero

Cette fonction génère un numéro de téléphone TEL composé de 8 chiffres aléatoires.

Déclaration des objets

Objet

Type / Nature

tel

chaine des caracteres

i

entier

chiffre

entier

c

caractere

La procédure afficher

Cette procédure affiche le tableau G contenant le résultat de la comparaison entre le numéro de téléphone et le numéro saisi par le joueur.

Déclaration des objets

Objet

Type / Nature

i

entier

La procédure jeu

Cette procédure va exécuter le jeu.

Déclaration des objets

Objet

Type / Nature

essai

entier

i

entier

j

entier

tel

chaine des caracteres

tel1

chaine des caracteres

p

chaine des caracteres

g

tableau de 30 entiers

Solution en Python

Exécution du programme

Solution en Python et Designer QT

Pour créer une application en Python pour deviner des numéros de téléphone  en utilisant Qt Designer pour l'interface graphique, suivez ces étapes :

1- Créer l'interface graphique avec Qt Designer

a- Ouvrez Qt Designer et créez un nouveau fichier de type Main Window.

b- Ajoutez ces widgets:

QLineEdit nommé 'p' pour entrer un numéro de téléphone formé de 8 chiffres.

QPushButton nommé 'test_bt' pour exécuter le module jeu.

QLabel nommé 'msg' pour afficher un message d'erreur et le résultat de la recherche du numéro de téléphone.

Enregistrez le fichier avec l'extension .ui, par exemple jeu-telephone-interface.ui.

2- Créer le script Python pour l'application

Voici un exemple de script Python qui utilise l'interface graphique générée par Qt Designer.

Exécution du programme

0 commentaire

laisser un commentaire

Veuillez noter s'il vous plaît*

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Passion de robotique

Atelier robotique

Construction des robots

Bras robotique

Maison intelligente

But de ce site web

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.

Coordonnées

Zaouiet Kontech-Jemmel-Monastir-Tunisie

+216 92 886 231

medaliprof@gmail.com

Photos des articles

Site robotique réalisé par Mohamed Ali-Prof Info