Die Labels müssen auch vor jedem Würfeln am Anfang gelöscht werden, da sonst der Wert vom letzten Würfeln stehen bleibt, wenn eine Augenzahl nicht gewürfelt wird (weil die Labels ja nur in case aktualisiert werden).
Es wäre aber sinnvoller das mit einem Array und FindComponent zu machen anstatt die Labels direkt anzusprechen...
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
WurfListe: array[1..6] of Integer;
WurfAnzahl, i, AktuellerWert: Integer;
begin
WurfAnzahl := StrToInt(Edit1.Text);
// Anzahl der gewünschten Würfe
for i := 1 to 6 do
begin
WurfListe[i] := 0;
// Anzahl zunächst jeweils 0 bei jeder Augenzahl
TLabel(FindComponent('Label' + IntToStr(15 + i))).Caption := '0';
// Die Labels auf 0 als Startwert setzen.
// Wenn sonst nämlich eine Augenzahl gar nicht vorkommt bleibt der Wert
// vom vorherigen Würfeln drin... ;-)
end;
Randomize;
for i := 1 to WurfAnzahl do
begin
AktuellerWert := Random(6) + 1;
// Zufallswert holen
Inc(WurfListe[AktuellerWert]);
// Im Array bei der entsprechenden Augenzahl 1 hinzufügen
TLabel(FindComponent('Label' + IntToStr(15 + AktuellerWert))).Caption :=
IntToStr(WurfListe[AktuellerWert]);
// Und den Label (16 bis 21) aktualisieren
end;
end;