Accueil > > > SIMULATION DE PLUSIEURS TIRAGES DU JEU DE JOKER (LOTTO)
SIMULATION DE PLUSIEURS TIRAGES DU JEU DE JOKER (LOTTO)
Information sur la source
Description
Voici donc un programme qui fait plusieurs tirage du jeu de joker et nous affiche les dépenses, les gains et les bénéfices. On doit simplement entrer ce qu'on veut jouer, puis on donne un intervalle entre deux tirages en ms, et le programme fait les tirages aléatoirement et nous affiche nos résultats. On a donc deux champs à remplir, puis on clique sur "valider" pour lancer le programme, que l'on peut stopper à tout moment grâce au bouton "pause". Ce qu'on retrouve dans cette source : - Création de fonction - Création de procédure - Gestion d'un timer - utilisation de la fonction random - structure conditionnel - utilisation de la fonction val Cette source apporte donc les connaissances ci-dessus, et le programme en lui-même démontre qu'il est rare de gagner à un tel jeu.
Source
- {=======================================================================
- Fichier : unit1.pas
- Auteur : Stéphane Haimet
- Crée le 05/01/2009
- Modifié le 05/01/2009
-
- Description : Simulateur de gain au jeu du joker, Simplement pour
- la demonstration du fait qu'on n'est rarement gagnant.
- =======================================================================}
-
- unit Unit1;
-
- interface
-
- uses
- Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
- Dialogs, StdCtrls, Buttons, ExtCtrls;
-
- type
- TfJoker = class(TForm)
- GroupBox1: TGroupBox;
- eJeu1: TEdit;
- eJeu2: TEdit;
- eJeu3: TEdit;
- eJeu4: TEdit;
- eJeu5: TEdit;
- eJeu6: TEdit;
- eJeu7: TEdit;
- GroupBox2: TGroupBox;
- eTirage1: TEdit;
- eTirage2: TEdit;
- eTirage3: TEdit;
- eTirage4: TEdit;
- eTirage5: TEdit;
- eTirage6: TEdit;
- eTirage7: TEdit;
- GroupBox3: TGroupBox;
- Label2: TLabel;
- eCorrect: TEdit;
- Label3: TLabel;
- eGains: TEdit;
- GroupBox4: TGroupBox;
- Label6: TLabel;
- eDepenses: TEdit;
- Label7: TLabel;
- eGainTot: TEdit;
- GroupBox5: TGroupBox;
- lBenefice: TLabel;
- GroupBox6: TGroupBox;
- bValider: TBitBtn;
- bPause: TBitBtn;
- bFerer: TBitBtn;
- Label4: TLabel;
- Label5: TLabel;
- Edit2: TEdit;
- eNombre: TEdit;
- eInterval: TEdit;
- Timer1: TTimer;
- procedure tirer();
- function verifierEntrees():boolean;
- procedure FormCreate(Sender: TObject);
- procedure bValiderClick(Sender: TObject);
- procedure bPauseClick(Sender: TObject);
- private
- { Déclarations privées }
- public
- { Déclarations publiques }
- end;
-
- var
- fJoker: TfJoker;
- var depense: integer;
- var gainTot,benefice: real;
-
-
- implementation
- {$R *.dfm}
-
-
- //Procédure "tirer()" qui va faire le plus gros du boulot
- procedure TfJoker.tirer();
- var i: integer;
- begin
- depense := depense+1;
- i := 0;
-
- //TRANSFERT DES NBRES JOUE DANS LES EDITS
- eJeu1.Text := eNombre.Text[1];
- eJeu2.Text := eNombre.Text[2];
- eJeu3.Text := eNombre.Text[3];
- eJeu4.Text := eNombre.Text[4];
- eJeu5.Text := eNombre.Text[5];
- eJeu6.Text := eNombre.Text[6];
- eJeu7.Text := eNombre.Text[7];
-
- //TIRAGE ALEATOIRE, on tire nos 7 numéros et on les affiche
- randomize;
- eTirage1.text := inttostr(random(9)+1);
- eTirage2.text := inttostr(random(9)+1);
- eTirage3.text := inttostr(random(9)+1);
- eTirage4.text := inttostr(random(9)+1);
- eTirage5.text := inttostr(random(9)+1);
- eTirage6.text := inttostr(random(9)+1);
- eTirage7.text := inttostr(random(9)+1);
-
- //COMPARAISON : si le premier chiffre est bon, on passe au suivant, ...
- if (eJeu7.Text = eTirage7.Text) then
- begin
- i := i+1;
- if (eJeu6.Text = eTirage6.Text) then
- begin
- i := i+1;
- if (eJeu5.Text = eTirage5.Text) then
- begin
- i := i+1;
- if (eJeu4.Text = eTirage4.Text) then
- begin
- i := i+1;
- if (eJeu3.Text = eTirage3.Text) then
- begin
- i := i+1;
- if (eJeu2.Text = eTirage2.Text) then
- begin
- i := i+1;
- if (eJeu1.Text = eTirage1.Text) then
- begin
- i := i+1;
- end;
- end;
- end;
- end;
- end;
- end;
- end;
-
- //On note le nombre de chiffre correct
- eCorrect.text := floattostr(i);
-
- //On regarde le total des gains pour ce tirage :
- case i of
- 0 : eGains.Text := '0';
- 1 : eGains.Text := '2,50';
- 2 : eGains.Text := '10';
- 3 : eGains.Text := '50';
- 4 : eGains.Text := '500';
- 5 : eGains.Text := '5000';
- 6 : eGains.Text := '50000';
- 7 : eGains.Text := '1000000';
- end;
- //On calcul le total des gains
- gainTot := gainTot+strtofloat(eGains.Text);
-
- //On affiche les dépenses, et le gain total, on calcul le bénéfice
- eDepenses.text := inttostr(depense);
- eGainTot.text := floattostr(gainTot);
- benefice := gainTot-depense;
-
- //On affiche le bénéfice en vert si c'est positif, en rouge sinon
- if(benefice >= 0) then
- lBenefice.Font.Color := clGreen
- else
- lBenefice.Font.Color := clRed;
-
- lBenefice.Caption := '¤ ' + floattostr(benefice);
-
- end;
-
-
- //Fonction qui vérifie nos deux édits au moment où on clique sur "valider"
- function TfJoker.verifierEntrees(): boolean;
- var x, err, x2, err2 : integer;
- begin
- val(eNombre.text,x,err);
- val(eInterval.text,x2,err2);
-
- //Vérification de la longueur de la chaine entrée pour le jeu
- if(length(eNombre.Text) < 7) then
- result := true
- //On regarde si on n'a pas de champs vides
- else if ((eNombre.text = '') OR (eInterval.text = '')) then
- result := true
- //On regarde si eNombre est un entier
- else if (err <> 0) then
- result := true
- //On regarde si eInterval est un entier
- else if (err2 <> 0) then
- result := true
- else
- result := false; //pas d'erreur ici
- end;
-
-
- //Quand on clique sur le bouton "pause" on désactive le timer
- procedure TfJoker.bPauseClick(Sender: TObject);
- begin
- Timer1.Enabled := false;
- bValider.Enabled := true;
- end;
-
-
- //Quand on clique sur le bouton valider
- procedure TfJoker.bValiderClick(Sender: TObject);
- var erreur : boolean;
- begin
- //On regarde si on n'a pas d'erreur grâce à notre fonction
- erreur := verifierEntrees();
-
- //Si on n'a aucune erreur :
- if(not erreur) then
- begin
- //on desactive le bouton valider, on active le timer, et on défini l'interval
- bValider.Enabled := false;
- Timer1.Enabled := true;
- Timer1.Interval := strtoint(eInterval.Text);
- tirer();
- end
- //Sinon on affiche un message d'erreur
- else
- messagedlg('Erreur dans les champs à remplir', mtWarning, [mbOK], 0);
- end;
-
-
- //A la création de l'application, toutes les variables globales à 0
- procedure TfJoker.FormCreate(Sender: TObject);
- begin
- depense := 0;
- gainTot := 0;
- benefice := 0;
- Timer1.Enabled := false;
- bValider.Enabled := true;
- end;
-
- end.
{=======================================================================
Fichier : unit1.pas
Auteur : Stéphane Haimet
Crée le 05/01/2009
Modifié le 05/01/2009
Description : Simulateur de gain au jeu du joker, Simplement pour
la demonstration du fait qu'on n'est rarement gagnant.
=======================================================================}
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ExtCtrls;
type
TfJoker = class(TForm)
GroupBox1: TGroupBox;
eJeu1: TEdit;
eJeu2: TEdit;
eJeu3: TEdit;
eJeu4: TEdit;
eJeu5: TEdit;
eJeu6: TEdit;
eJeu7: TEdit;
GroupBox2: TGroupBox;
eTirage1: TEdit;
eTirage2: TEdit;
eTirage3: TEdit;
eTirage4: TEdit;
eTirage5: TEdit;
eTirage6: TEdit;
eTirage7: TEdit;
GroupBox3: TGroupBox;
Label2: TLabel;
eCorrect: TEdit;
Label3: TLabel;
eGains: TEdit;
GroupBox4: TGroupBox;
Label6: TLabel;
eDepenses: TEdit;
Label7: TLabel;
eGainTot: TEdit;
GroupBox5: TGroupBox;
lBenefice: TLabel;
GroupBox6: TGroupBox;
bValider: TBitBtn;
bPause: TBitBtn;
bFerer: TBitBtn;
Label4: TLabel;
Label5: TLabel;
Edit2: TEdit;
eNombre: TEdit;
eInterval: TEdit;
Timer1: TTimer;
procedure tirer();
function verifierEntrees():boolean;
procedure FormCreate(Sender: TObject);
procedure bValiderClick(Sender: TObject);
procedure bPauseClick(Sender: TObject);
private
{ Déclarations privées }
public
{ Déclarations publiques }
end;
var
fJoker: TfJoker;
var depense: integer;
var gainTot,benefice: real;
implementation
{$R *.dfm}
//Procédure "tirer()" qui va faire le plus gros du boulot
procedure TfJoker.tirer();
var i: integer;
begin
depense := depense+1;
i := 0;
//TRANSFERT DES NBRES JOUE DANS LES EDITS
eJeu1.Text := eNombre.Text[1];
eJeu2.Text := eNombre.Text[2];
eJeu3.Text := eNombre.Text[3];
eJeu4.Text := eNombre.Text[4];
eJeu5.Text := eNombre.Text[5];
eJeu6.Text := eNombre.Text[6];
eJeu7.Text := eNombre.Text[7];
//TIRAGE ALEATOIRE, on tire nos 7 numéros et on les affiche
randomize;
eTirage1.text := inttostr(random(9)+1);
eTirage2.text := inttostr(random(9)+1);
eTirage3.text := inttostr(random(9)+1);
eTirage4.text := inttostr(random(9)+1);
eTirage5.text := inttostr(random(9)+1);
eTirage6.text := inttostr(random(9)+1);
eTirage7.text := inttostr(random(9)+1);
//COMPARAISON : si le premier chiffre est bon, on passe au suivant, ...
if (eJeu7.Text = eTirage7.Text) then
begin
i := i+1;
if (eJeu6.Text = eTirage6.Text) then
begin
i := i+1;
if (eJeu5.Text = eTirage5.Text) then
begin
i := i+1;
if (eJeu4.Text = eTirage4.Text) then
begin
i := i+1;
if (eJeu3.Text = eTirage3.Text) then
begin
i := i+1;
if (eJeu2.Text = eTirage2.Text) then
begin
i := i+1;
if (eJeu1.Text = eTirage1.Text) then
begin
i := i+1;
end;
end;
end;
end;
end;
end;
end;
//On note le nombre de chiffre correct
eCorrect.text := floattostr(i);
//On regarde le total des gains pour ce tirage :
case i of
0 : eGains.Text := '0';
1 : eGains.Text := '2,50';
2 : eGains.Text := '10';
3 : eGains.Text := '50';
4 : eGains.Text := '500';
5 : eGains.Text := '5000';
6 : eGains.Text := '50000';
7 : eGains.Text := '1000000';
end;
//On calcul le total des gains
gainTot := gainTot+strtofloat(eGains.Text);
//On affiche les dépenses, et le gain total, on calcul le bénéfice
eDepenses.text := inttostr(depense);
eGainTot.text := floattostr(gainTot);
benefice := gainTot-depense;
//On affiche le bénéfice en vert si c'est positif, en rouge sinon
if(benefice >= 0) then
lBenefice.Font.Color := clGreen
else
lBenefice.Font.Color := clRed;
lBenefice.Caption := '¤ ' + floattostr(benefice);
end;
//Fonction qui vérifie nos deux édits au moment où on clique sur "valider"
function TfJoker.verifierEntrees(): boolean;
var x, err, x2, err2 : integer;
begin
val(eNombre.text,x,err);
val(eInterval.text,x2,err2);
//Vérification de la longueur de la chaine entrée pour le jeu
if(length(eNombre.Text) < 7) then
result := true
//On regarde si on n'a pas de champs vides
else if ((eNombre.text = '') OR (eInterval.text = '')) then
result := true
//On regarde si eNombre est un entier
else if (err <> 0) then
result := true
//On regarde si eInterval est un entier
else if (err2 <> 0) then
result := true
else
result := false; //pas d'erreur ici
end;
//Quand on clique sur le bouton "pause" on désactive le timer
procedure TfJoker.bPauseClick(Sender: TObject);
begin
Timer1.Enabled := false;
bValider.Enabled := true;
end;
//Quand on clique sur le bouton valider
procedure TfJoker.bValiderClick(Sender: TObject);
var erreur : boolean;
begin
//On regarde si on n'a pas d'erreur grâce à notre fonction
erreur := verifierEntrees();
//Si on n'a aucune erreur :
if(not erreur) then
begin
//on desactive le bouton valider, on active le timer, et on défini l'interval
bValider.Enabled := false;
Timer1.Enabled := true;
Timer1.Interval := strtoint(eInterval.Text);
tirer();
end
//Sinon on affiche un message d'erreur
else
messagedlg('Erreur dans les champs à remplir', mtWarning, [mbOK], 0);
end;
//A la création de l'application, toutes les variables globales à 0
procedure TfJoker.FormCreate(Sender: TObject);
begin
depense := 0;
gainTot := 0;
benefice := 0;
Timer1.Enabled := false;
bValider.Enabled := true;
end;
end.
Conclusion
Enjoy
Historique
- 06 janvier 2009 15:00:17 :
- Suppression d'éléments inutiles dans le zip
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
help!!!!!svp les best en delphi :) [ par eedy31 ]
j'ai un gro pblém : je debute en delphi et il me fo du temps pour apprendre!!!ET le pblém c'est que mon père monopolise le PC avec son jeu(atlantis3..
Jeu avec le source [ par Synthox ]
Si ca vous dis de faire un jeu de carte, je vous met mes sources en telechargement sur mon site, il contiens aussi un fichier RES avec les cartes de t
Un TIMER plus précis... [ par DAR ]
Je cherche un timer beaucoup plus précis que celui livré avec Delphi.Il me faut une précision de l'ordre de la micro seconde.Merci à ceux qui pourront
Comment faire les menus d'un jeu en Delphi ?! Vite ça presse ! [ par Gropoli ]
Je suis entrain de faire un jeu de type wargame en delphi et je me demande comment je dois faire les menus du jeu : menu principal (nouveau jeu, optio
Comment faire les menus d'un jeu en Delphi ?! Vite ça presse ! [ par Gropoli ]
Je suis entrain de faire un jeu de type wargame en delphi et je me demande comment je dois faire les menus du jeu : menu principal (nouveau jeu, optio
Simulation de touche [ par Amadeus ]
Comment faire pour simuler l'appuie sur une touche, par exemple faire croire au prog que la touche Echap a été enfoncé.merci d'avance
mowack v1.0 : simulation de vie de créatures aquatiques [ par sebrs1 ]
salut à tous,voici ma nouvelle crétion, mowack, des créatures aquatiques qui doivent se reproduire, manger, se battre entre especes (bon sa c'est pas
Recherche de code pour jeu d'enregistrement [ par clemot ]
Salut je recherche un exemple ou des exemples de code pourun jeu d'enregistrement à partir de TDBCtrlGrid et de stringgrid pouyr enregistrer des donn
Jeu de strategie avec directdraw [ par sebrs1 ]
Tout d'abord, je vais vous expliquer ce que je veux fairec'est tout simple (enfin, simple a comprendre mais pas a faire)je voudrais faire un truc genr
simulation et files d'attentes [ par ryadus ]
je voudrai des informrations concernant les files d'attente et la simulation: exemple: etude de temps d'arret dans un carrefourmerci
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Forum
RE : PAINTBOXRE : PAINTBOX par fodhel
Cliquez pour lire la suite par fodhel
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|