Haben in der Mittagspause auch mal gekniffelt. Wenn du die Ergebnisse der 5 Würfel in einem array speicherst wird’s leichter. Wenn du dieses array sortierst, wird’s noch leichter.
Delphi-Quellcode:
type
TWuerfel = array [1..5] of integer;
Delphi-Quellcode:
function Sortiere (const W: TWuerfel): TWuerfel;
var
I, J, T: integer;
begin
Result:= W;
for I:= 1 to 4 do
for J:= I+1 to 5 do
if Result[I] > Result[J] then
begin
T:= Result[I];
Result[I]:= Result[J];
Result[J]:= T;
end;
end;
function Chance (const W: TWuerfel): integer;
var
I: integer;
begin
Result:= 0;
for I:= 1 to 5 do
Inc(Result, W[I]);
end;
function Dreierpasch (const W: TWuerfel): integer;
var
I, N: integer;
S: TWuerfel;
begin
S:= Sortiere(W);
Result:= 0;
N:= 0;
for I:= 1 to 2 do
if S[I] = S[I+1] then Inc(N);
if N = 2 then Result:= Chance(W);
N:= 0;
for I:= 2 to 3 do
if S[I] = S[I+1] then Inc(N);
if N = 2 then Result:= Chance(W);
N:= 0;
for I:= 3 to 4 do
if S[I] = S[I+1] then Inc(N);
if N = 2 then Result:= Chance(W);
end;
function FullHouse (const W: TWuerfel): integer;
var
I, N: integer;
S: TWuerfel;
begin
S:= Sortiere(W);
Result:= 0;
N:= 0;
for I:= 1 to 2 do
if S[I] = S[I+1] then Inc(N);
if N = 2 then
if S[4] = S[5] then Result:= 25;
N:= 0;
for I:= 3 to 4 do
if S[I] = S[I+1] then Inc(N);
if N = 2 then
if S[1] = S[2] then Result:= 25;
end;
function KleineStrasse (const W: TWuerfel): integer;
var
I, N: integer;
S: TWuerfel;
begin
Result:= 0;
S:= Sortiere(W);
N:= 0;
for I:= 1 to 3 do
if S[I+1] = S[I]+1 then Inc(N);
if N = 3 then Result:= 30;
N:= 0;
for I:= 2 to 4 do
if S[I+1] = S[I]+1 then Inc(N);
if N = 3 then Result:= 30;
end;