Un générateur de nombres aléatoires pour l'euro-millions.
J'avais encore envie de jouer avec les nombres aléatoires suite au pipotron et en même temps de découvrir les fonctions "repeat" et "until" parfaites pour ce programme.
Source / Exemple :
{===============================================================================
Code source : BEAUMONT Christophe
Version : 1.0.0
Date : 21 Mars 2010
Micro-projet 06 : C'est le micro-projet 05 "Pipotron 1.2.1" qui m'a donné envie
de continuer à travailler avec les nombres aléatoires. Voici donc un générateur
de nombres pour l'euro-millions. Volontairement fait pour un seul tirage, à vous
de l'améliorer si vous voulez une version pour une grille complète.
Retrouvez ce source sur mon site "www.delphinautes.fr"
===============================================================================}
unit f_main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, pngimage, ExtCtrls, StdCtrls, ShellAPI, Math;
type
TMain = class(TForm)
Cadre: TBevel;
BouleN1: TImage;
BouleN2: TImage;
BouleN3: TImage;
BouleN4: TImage;
BouleN5: TImage;
BouleC1: TImage;
BouleC2: TImage;
BtnTirage: TButton;
Url: TLabel;
Numero1: TLabel;
Numero2: TLabel;
Numero3: TLabel;
Numero4: TLabel;
Numero5: TLabel;
Numero6: TLabel;
Numero7: TLabel;
procedure FormCreate(Sender: TObject);
procedure UrlMouseEnter(Sender: TObject);
procedure UrlMouseLeave(Sender: TObject);
procedure UrlClick(Sender: TObject);
procedure BtnTirageClick(Sender: TObject);
private
{ Déclarations privées }
public
{ Déclarations publiques }
end;
var
Main: TMain;
implementation
{$R *.dfm}
procedure TMain.BtnTirageClick(Sender: TObject);
// On travaille sur des valeurs inférieures à 255 donc "byte" suffit.
var Num : array[1..7] of byte;
Temp : byte;
I : Integer;
begin
// On va traiter les 5 numéros normaux ( 1 à 5 )
for I := 1 to 5 do
begin
// Pour permettre au numéro du tirage précédent de ressortir à la même place
num[i] := 0;
// On tire un numéro compris entre 1 et 50
repeat Temp := RandomRange(1,50);
// On vérifie si le numéro n'a pas déjà été tiré sinon on refait un tirage
until ((Temp<>Num[1]) and (Temp<>Num[2]) and (Temp<>Num[3]) and (Temp<>Num[4]) and (Temp<>Num[5]));
// On sauvegarde la valeur tirée
Num[i] := Temp;
end;
// On va traiter les 2 numéros complémentaires ( 6 et 7 )
for I := 6 to 7 do
begin
// Pour permettre au numéro du tirage précédent de ressortir à la même place
num[i] := 0;
// On tire un numéro compris entre 1 et 9
repeat Temp := RandomRange(1,9);
// On vérifie qu'il n'a pas déjà été tiré
until ((Temp<>Num[6]) and (Temp<>Num[7]));
// On sauvegarde la valeur tirée
Num[i] := Temp;
end;
// On affiche le numéro 1
Numero1.Caption := IntToStr(Num[1]);
// On affiche le numéro 2
Numero2.Caption := IntToStr(Num[2]);
// On affiche le numéro 3
Numero3.Caption := IntToStr(Num[3]);
// On affiche le numéro 4
Numero4.Caption := IntToStr(Num[4]);
// On affiche le numéro 5
Numero5.Caption := IntToStr(Num[5]);
// On affiche le numéro complémentaire 1
Numero6.Caption := IntToStr(Num[6]);
// On affiche le numéro complémentaire 2
Numero7.Caption := IntToStr(Num[7]);
end;
procedure TMain.FormCreate(Sender: TObject);
begin
// Initialise le générateur de nombre aléatoire, à faire avant d'utiliser RandomRange
Randomize;
end;
procedure TMain.UrlMouseEnter(Sender: TObject);
begin
// Souligne l'adresse lorsque le pointeur de souris passe dessus
Url.Font.Style := [fsUnderline];
// Et change le pointeur de souris
Cursor := crHandPoint;
end;
procedure TMain.UrlMouseLeave(Sender: TObject);
begin
// Retire le soulignement lorsque le pointeur n'est plus dessus
Url.Font.Style := [];
// Et remet le curseur par défaut
Cursor := crDefault;
end;
procedure TMain.UrlClick(Sender: TObject);
begin
// Lance le navigateur par défaut sur mon site
ShellExecute(Handle,'Open','http://www.delphinautes.fr',nil,nil,SW_SHOWDEFAULT)
end;
end.
Conclusion :
Je m'amuse de plus en plus sur delphi, à m'en faire oublier la programmation sur Amiga ;)
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.