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 / Exemple :
{=======================================================================
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
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.