Einzelnen Beitrag anzeigen

Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Sieger-Prüfung "Vier gewinnt"

  Alt 28. Jun 2004, 23:40
So, ich habe jetzt mal w3seeks methode genommen, scheint mir noch am geschicktesten. ASber irgendwo ist da der Wurm drinne. Er findet nur einen Sieger bei der untersten Reihe bzw. bei der recghtesten Spalte. Ich sehe den Wald vor lauter Bäumen nicht mehr:

Delphi-Quellcode:
function TFourInARow.CheckWinnerPlayerOne: Boolean;
var
  c, r: Integer;
  FourInARow, FourInAColumn, FourInADiagonal: Boolean;
  cnt: Integer;

  function CheckRow(r: Cardinal): Boolean;
  var
    i: Integer;
  begin
    cnt := 0;
    for i := 0 to COLUMNS-1 do
    begin
      if Field[i, r] = 1 then
        Inc(cnt)
    end;
    result := cnt = 4;
  end;

  function CheckColumn(c: Cardinal): Boolean;
  var
    i: Integer;
  begin
    cnt := 0;
    for i := 0 to ROWS-1 do
    begin
      if Field[c, i] = 1 then
        Inc(cnt)
    end;
    result := cnt = 4;
  end;

  function CheckDiagonal: Boolean;
  begin
    result := False;
  end;

begin
  for c := 0 to COLUMNS - 1 do
  begin
    FourInAColumn := CheckColumn(c);
  end;
  for r := 0 to ROWS - 1 do
  begin
    FourInARow := CheckRow(r);
  end;
  FourInADiagonal := CheckDiagonal;
  result := FourInAColumn or FourInARow or FourInADiagonal;
end;
Und wenn man das noch etwas vereinfachen könnte, wäre ich auch glücklich.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat