Simulation de plusieurs tirages du jeu de joker (lotto)

Soyez le premier à donner votre avis sur cette source.

Vue 9 271 fois - Téléchargée 419 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
Messages postés
13
Date d'inscription
dimanche 10 décembre 2006
Statut
Membre
Dernière intervention
28 juin 2010
8
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 :)
Messages postés
4719
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
1 février 2021
14
@bad_dark_spirit:
oui, il y a aussi un joker en France, mais il est totalement aléatoire..
Messages postés
13
Date d'inscription
dimanche 10 décembre 2006
Statut
Membre
Dernière intervention
28 juin 2010
8
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)
Messages postés
190
Date d'inscription
mercredi 3 septembre 2008
Statut
Membre
Dernière intervention
17 janvier 2009

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
Messages postés
2527
Date d'inscription
jeudi 15 janvier 2004
Statut
Membre
Dernière intervention
16 octobre 2019
17
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.