Simulation de plusieurs tirages du jeu de joker (lotto)

0/5 (8 avis)

Vue 9 955 fois - Téléchargée 446 fois

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 / 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

Codes Sources

A voir également

Ajouter un commentaire Commentaires
bad_dark_spirit Messages postés 13 Date d'inscription dimanche 10 décembre 2006 Statut Membre Dernière intervention 28 juin 2010 10
7 janv. 2009 à 09:42
Ah oui juste, ça n'est pas toi qui joue, c'est l'ordinateur qui prend un nombre aléatoire pour toi. Merci de la précision :)
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 14
7 janv. 2009 à 09:16
@bad_dark_spirit:
oui, il y a aussi un joker en France, mais il est totalement aléatoire..
bad_dark_spirit Messages postés 13 Date d'inscription dimanche 10 décembre 2006 Statut Membre Dernière intervention 28 juin 2010 10
7 janv. 2009 à 08:05
Il y a bien un joker au lotto français non ? Ça n'est pas le même système.
Enfin soit, le programme démontre juste le fait qu'il est rare de gagner des cents et des milles, et la source apporte l'utilisation d'un timer entre autres.

Et je ne connaissais pas ces gens qui gagnent à tous les coups... Ils font comment ? Ils appellent des divinités locales ? Ils sont autorisés à jouer ? :o)
offlake Messages postés 190 Date d'inscription mercredi 3 septembre 2008 Statut Membre Dernière intervention 17 janvier 2009
7 janv. 2009 à 07:42
la Loterie Belge C'est Connue par Sa Chance de gagner a tous les Coups
Donc je vais Changer de Loterie avec la Loterie Belge
BY OFFLAKE
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
7 janv. 2009 à 00:43
En Belgique, c'est Nat. Loterij qui gagne à tous les coups (une cousine du nord)...
Afficher les 8 commentaires

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.