RETROGICIEL
PILE OU FACE
RETROGICIEL
PILE OU FACE
⇩. Présentation
Vous vous trouvez devant un choix difficile, où chaqu'une des deux possibilités présentent des avantages égaux. Le moyen le plus simple de résoudre ce dilemme reste de laisser cette responsabilité au hasard. Pile ou face est un jeu de hasard simple où une pièce de monnaie est lancée en l'air. C'est une méthode rapide et équitable pour prendre des décisions binaires.
Vous n'avez pas de pièce de monnaie sous la main, alors créons rapidement un petit programme simple pour simuler un lancer de pièce virtuelle. Nous obtiendrons un résultat aléatoire, idéal pour nous aider à prendre une décision rapide.
⇩. Consignes
Le programme doit :
attendre que l'utilisateur lance la pièce virtuelle ;
afficher le résultat du tirage (pile ou face) ;
afficher les statistiques de tous les tirages de la session ;
proposer à l'utilisateur de recommencer ou de quitter.
D'abord, faite-le fonctionner. Ensuite, faite-le beau. Enfin, faite-le performant.
Amusez-vous bien !
Télécharger RETROGICIEL - Pile ou face.
Cette présentation nécessite que Python 3 soit installé sur votre machine.
Après avoir téléchargé le fichier Pile ou face.7z, décompressez-le dans le répertoire de votre choix.
Ouvrez le répertoire qui vient d'être créé.
Lancez le fichier Retrogiciel.py.
Cliquez sur l'onglet RUN et testez le programme.
Créez votre propre script dans un des langages proposés ou un autre de votre choix.
Le répertoire contient aussi :
- Python.py, l'exemple en PYTHON sans tkinter ;
- Tkinter.py, l'exemple en PYTHON avec tkinter ;
- Qb84.bas, l'exemple en QBASIC avec qb64 ;
- Bbc.bas, l'exemple en BBC BASIC avec bbc sdl.
# --- Origine Nerd ---
# --- RETROGICIEL - PYTHON ---
# --- Pile ou face ---
# -*- coding: utf-8 -*-
# --- INITIALISATION GÉNÉRALE ---
DCT_Donnees = { "piles" : 0 , "tirages" : 0 }
# --- PRESENTATION ---
print ( "PILE OU FACE" )
klancer = input ( "Appuyez sur entrée pour lancer la pièce ..." )
# --- BOUCLE PRINCIPALE ---
while True :
# --- Tirage aléatoire ---
ktirage = random.choice ( ( "PILE" , "FACE" ) )
# --- Mémorisation et statistique ---
DCT_Donnees [ "tirages" ] += 1
if ktirage == "PILE" : DCT_Donnees [ "piles" ] += 1
kpiles = DCT_Donnees [ "piles" ] / ( DCT_Donnees [ "tirages" ] / 100 )
kfaces = 100 - kpiles
# --- Affichiage des données ---
print ( )
print ( f"Tirages { DCT_Donnees [ 'tirages' ] } : { ktirage }." )
print ( f"Piles : {kpiles:.2f} % - Faces : {kfaces:.2f} %" )
# --- Choix du bouclage du programme ---
kchoix = input ( "Voulez-vous un nouveau lancé (O ou N) ?" )
if kchoix.upper ( ) == "N" : break
# --- FIN DU PROGRAMME ---
print ( "Au revoir" )
# --- Programme : JFB ---
# --- Mai 2025 ---
# --- Fin ---
Pour mieux comprendre l'exemple en PYTHON sans tkinter.
# --- Origine Nerd ---
# --- RETROGICIEL - TKINTER ---
# --- Pile ou face ---
# -*- coding: utf-8 -*-
# --- IMPORTATION DES MODULES ---
# --- Modules de la bibliothèque standard ---
import tkinter
import random
# --- INITIALISATION GÉNÉRALE ---
DCT_Donnees = { "piles" : 0 , "tirages" : 0 }
# --- DÉFINITION DES FONCTIONS PERSONNALISEES ---
def FNC_Lancer ( ) :
BUT_Action [ "state" ] = "disabled"
LAB_Tirage [ "text" ] = ""
LAB_Tirage.update ( )
TKI_Principal.after ( 100 )
ktirage = random.choice ( ( "PILE" , "FACE" ) )
DCT_Donnees [ "tirages" ] += 1
if ktirage == "PILE" : DCT_Donnees [ "piles" ] += 1
kpiles = DCT_Donnees [ "piles" ] / ( DCT_Donnees [ "tirages" ] / 100 )
kfaces = 100 - kpiles
LAB_Tirages [ "text" ] = f"Tirages : { DCT_Donnees [ 'tirages' ] }"
LAB_Tirage [ "text" ] = ktirage
LAB_Piles [ "text" ] = f"Piles : {kpiles:.2f} %"
LAB_Faces [ "text" ] = f"Faces : {kfaces:.2f} %"
BUT_Action [ "state" ] = "active"
# --- CREATION DE L'INTERFACE GRAPHIQUE ---
# --- Création de la fenêtre principale ---
TKI_Principal = tkinter.Tk ( )
TKI_Principal.title ( "RETROGICIEL - Pile ou face" )
# --- Création des controles nommées ---
BUT_Action = tkinter.Button ( TKI_Principal , text = "Lancer" , command = FNC_Lancer )
LAB_Tirage = tkinter.Label ( TKI_Principal , text = "XXXX" , font = (None, 30, "bold") )
LAB_Tirages = tkinter.Label ( TKI_Principal , text = "Tirages : 0" )
LAB_Piles = tkinter.Label ( TKI_Principal , text = "Piles : 00.00 (0%)" )
LAB_Faces = tkinter.Label ( TKI_Principal , text = "Faces : 00.00 (0%)" )
# --- Mise en place des controles (anonymes et nommés) dans la fenêtre principale ---
tkinter.Label (TKI_Principal , text = "PILE OU FACE" ).pack ( )
LAB_Tirages.pack ( )
LAB_Tirage.pack ( )
BUT_Action.pack ( )
LAB_Piles.pack ( )
LAB_Faces.pack ( )
tkinter.Button ( TKI_Principal , text = "Quitter" , command = TKI_Principal.destroy ).pack ( )
# --- DEBUT DU PROGRAMME ---
TKI_Principal.mainloop ( )
# --- Programme : JFB ---
# --- Mai 2025 ---
# --- Fin ---
Pour mieux comprendre l'exemple en PYTHON avec tkinter.
' --- Origine Nerd propose pour ---
' --- RETROGICIEL - QB64 ---
' --- Pile ou face ---
' --- INITIALISATION GENERALE ---
' --- Declarations des variables globales ---
kpiles = 0
ktirages = 0
' --- Initialisation du generateur aleatoire ---
RANDOMIZE TIMER
' --- DEBUT DU PROGRAMME ---
PRINT "PILE OU FACE"
INPUT "Appuyez sur entree pour commencer "; kdepart$
' --- BOUCLE PRINCIPALE ---
DO
' --- Tirage aleatoire ---
ktirage = INT(RND * 10000)
' --- Analyse et traitement du tirage ---
IF ktirage < 5000 THEN ktirage$ = "PILE" ELSE ktirage$ = "FACE"
IF ktirage$ = "PILE" THEN kpiles = kpiles + 1
ktirages = ktirages + 1
kstatistique = kpiles / (ktirages / 100)
kstatistique = INT(kstatistique * 100) / 100
' --- Affichage des resultats ---
PRINT "Tirage"; ktirages; ": "; ktirage$
PRINT "Pile :"; kstatistique; "%."
PRINT "Face :"; 100 - kstatistique; "%."
' --- Bouclage du programme ---
PRINT ""
INPUT "Voulez-vous recommencer [ O ou N ] "; kchoix$
LOOP UNTIL UCASE$(kchoix$) = "N"
' --- FIN DU PROGRAMME ---
PRINT "Au revoir."
END
' --- Programme : JFB ---
' --- Mai 2025 ---
' --- Fin ---
Pour mieux comprendre l'exemple en QB64.
REM --- Origine Nerd propose pour ---
REM --- RETROGICIEL - BBC BASIC ---
REM --- Pile ou face ---
REM --- INITIALISATION GENERALE ---
REM --- Déclarations des variables globales ---
kpiles = 0
ktirages = 0
REM --- DEBUT DU PROGRAMME ---
PRINT "PILE OU FACE."
INPUT "Appuyez sur entree pour commencer " kdepart
REM --- BOUCLE PRINCIPALE ---
REPEAT
REM --- Tirage aleatoire ... ---
ktirage = RND(10000)
REM --- Analyse et traitement du tirage ... ---
IF ktirage < 5000 THEN ktirage$ = "PILE" ELSE ktirage$ = "FACE"
IF ktirage$ = "PILE" THEN kpiles = kpiles + 1
ktirages = ktirages + 1
kstatistique = kpiles / (ktirages / 100)
kstatistique = INT(kstatistique * 100) / 100
REM --- Affichage des resultats ---
PRINT "Tirage"; ktirages; ": "; ktirage$
PRINT "Pile :"; kstatistique; "%."
PRINT "Face :"; 100 - kstatistique; "%."
REM --- Bouclage du programme ---
PRINT ""
INPUT "Voulez-vous recommencer [ O ou N ] "; kchoix$
UNTIL kchoix$ = "N" OR kchoix$ = "n"
REM --- FIN DU PROGRAMME ---
PRINT "Au revoir."
END
REM --- Programme : JFB ---
REM --- Mai 2025 ---
REM --- Fin ---
Pour mieux comprendre l'exemple en BBC BASIC.