Einzelnen Beitrag anzeigen

Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Schulprojekt Kniffel ! 3/4 Pasch und Full house

  Alt 10. Jun 2011, 14:04
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;
  Mit Zitat antworten Zitat