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.