moin,
hier liegt der Hund begraben:
formal:
1. Warum hast du das alles auskommentiert?
2. die markierten end;'s sind zuviel!
logisch:
1. Gameboard ist ein zweidimensionales array auf das mit den Koordinaten[x,y] zugegriffen wird nicht per durchlaufendem Index!
-->Für was hast du die Zählervariable (i) wenn du sie nie einsetzt! Die Schleife "//Kleiner test" führt dreimal exakt die gleichen Abfragen durch! Wenn dann müsste i y heißen und von 0 bis 2 laufen.
-->"//Nochmal ein kleiner test" müsste analog aufgebaut sein, mit x als Laufvariable und y,y+1,y+2
Zitat von
M4ST3R86:
Delphi-Quellcode:
//Prüft ob einer der beidem Player gewonnen hat
function TForm1.CheckForWinner( ft : TFieldType ) : boolean;
var
y,x,i : integer;
begin
{//Standardgemäß hat mal keiner gewonnen
result := false;
//Zähler auf 0
x := 0;
y :=0;
i:=0;
//Folgende zwei Schleifen könnte man in eine Funktion zusammenfassen
//Kleiner test
{while i < 8 do begin
if ( GameBoard[ y,x ] = ft ) and ( GameBoard[ y,x + 1 ] = ft ) and ( GameBoard[ y,x + 2 ] = ft ) then begin
result := true;
break;
end;
end; <--- überflüssig/falsch
end; <--- überflüssig/falsch
inc( i, 3 );
end;
//Zähler auf 0
i := 0;
//Nochmal ein kleiner test
while i <> 3 do begin
if ( GameBoard[ y,x ] = ft ) and ( GameBoard[ y,x + 3 ] = ft ) and ( GameBoard[ y,x + 6 ] = ft ) then begin
result := true;
break;
end;
inc( i, 1 );
end;
//Diagonale Reihen überpüfen
if ( GameBoard[ 0,0 ] = ft ) and ( GameBoard[ 1,1 ] = ft ) and ( GameBoard[ 2,2 ] = ft ) then
result := true;
//Ebenfalls diagonal
if ( GameBoard[ 0,2 ] = ft ) and ( GameBoard[ 1,1 ] = ft ) and ( GameBoard[ 2,0 ] = ft ) then
result := true; }
end;