Hier ist der Code!
Delphi-Quellcode:
unit Wuerfel;
interface
uses
SysUtils, Classes;
type
TWuerfelEvent =
procedure(
var Wert: int64)
of object;
TWuerfel =
class(TComponent)
private
FAnzahlWuerfel: Word;
FAnzahlSeiten: Word;
FBonus: Integer;
FWert: Int64;
FNegativeWerte: Boolean;
FOnWuerfeln: Twuerfelevent;
{ Private-Deklarationen }
protected
{ Protected-Deklarationen }
public
function GetZufallsWert: int64;
//constructor Create(AOwner: TComponent); override;
{ Public-Deklarationen }
published
property AnzahlWuerfel: Word
read FAnzahlWuerfel
write FAnzahlWuerfel;
property AnzahlSeiten: Word
read FAnzahlSeiten
write FAnzahlSeiten;
property Bonus: Integer
read FBonus
write FBonus;
property NegativeWerte: boolean
read FNegativeWerte
write FnegativeWerte;
property OnWuerfeln: TWuerfelevent
read FonWuerfeln
write FonWuerfeln;
{ Published-Deklarationen }
end;
procedure Register;
implementation
{
constructor Twuerfel.Create(AOwner: TComponent);
begin
randomize;
end;
}
function Twuerfel.GetZufallsWert: int64;
var i: word;
a: int64;
begin
Fwert := 0;
if FAnzahlWuerfel > 0
then
for i := 1
to FAnzahlWuerfel
do
begin
a := (random(FAnzahlSeiten)+Fbonus+1);
if (FNegativeWerte = false)
and (a < 0)
then
a:=0;
Fwert := Fwert+a;
end;
if Assigned(OnWuerfeln)
then
OnWuerfeln(Fwert);
result := Fwert;
end;
procedure Register;
begin
RegisterComponents('
Beispiele', [TWuerfel]);
end;
end.
Zuhause funzt das, aber auf der Arbeit nicht, der sagt "Ruft sich selbst auf"