Mal so hingeworfen, analog zu meinem vorherigen Post....
Wenn jemand einen (Denk)-Fehler sieht, schreien:
Delphi-Quellcode:
var
TotalPoints : Integer = 0 ;
Wuerfel : array[1..6] of Byte ;
procedure WuerfelnUndAuswerten();
var
FPanel : TPanel ;
FValue : Integer ;
FPaschCount : Integer ;
FStrassenCount : Integer ;
FStrassenString : string ;
i: Integer ;
begin
// Erstmal würfeln
TotalPoints := 0 ;
Randomize() ;
for i := Low(Wuerfel) to High(Wuerfel) do
begin
Wuerfel[i] := 0 ;
FPanel := TPanel(FindComponent('Panel'+IntToStr(i))) ;
FPanel.Caption := IntToStr(Random(6)+1) ;
end;
// Einzelne Punkte für Augen auswerten und Anzahl gleicher Würfel erhöhen
for i := Low(Wuerfel) to High(Wuerfel) do
begin
FPanel := TPanel(FindComponent('Panel'+IntToStr(i))) ;
FValue := StrToInt(FPanel.Caption) ;
// Würfel-Array-Index für den gewürfelten Wert erhöhen
Inc(Wuerfel[FValue]) ;
// Punkte für 1 und 5 hinzufügen
case FValue of
1: TotalPoints := TotalPoints + 100 ;
5: TotalPoints := TotalPoints + 50 ;
end;
end;
// Auswertung von 3er-Päschen und Strassen
FStrassenCount := 0 ;
FPaschCount := 0 ;
for i := Low(Wuerfel) to High(Wuerfel) do
begin
// 3er-Päsche auswerten und Puntke hinzufügen
// ((Anzahl Würfel div 3) * Augenzahl) * 100
FValue := (((Wuerfel[i] div 3) * i) * 100) ;
TotalPoints := TotalPoints + FValue ;
if (FValue > 0) then FPaschCount := FPaschCount + (Wuerfel[i] div 3);
// Wenn der Wert > 0 ist, den "Strassenzähler" eins hochsetzen, ansonsten annullieren
if (Wuerfel[i] = 0) then
FStrassenCount := 0
else
Inc(FStrassenCount) ;
end;
// Strassen / Kniffel auswerten
case FStrassenCount of
4:
begin
FStrassenString := 'kleine Strasse' ;
TotalPoints := TotalPoints + 2000 ;
end;
5:
begin
FStrassenString := 'grosse Strasse' ;
TotalPoints := TotalPoints + 2000 ;
end;
6:
begin
FStrassenString := 'Kniffel!' ;
end;
else
FStrassenString := 'keine' ;
end;
Label1.Caption := 'Punkte: ' + IntToStr(TotalPoints) ;
Label2.Caption := 'Anzahl 3er-Päsche: ' + IntToStr(FPaschCount) ;
Label3.Caption := 'Strasse: ' + FStrassenString ;
end;
Natürlich kann man das im späteren Verlauf eleganter machen, ohne Panel-Caption-Umwandlungen, also dass du zuerst rein rechnerisch würfelst und dann erst am Schluss das ganze in die
GUI jagst, aber das ist dir überlassen
Soll ja erstmal nur ein Denkanstoss sein und ich bin von deinem Ausgangspunkt ausgegangen: 6 Zahlen als Captions auf den Panels
Edit: Projekt angehängt