Also, ich wüsste jetzt nicht wo man in deiner Funktion einen Rückgabeparameter findet der beinhaltet ob er nun gewonnen hat oder nicht, du überprüfst immer nur das Feld, machst dann aber nix damit. Ich versuche mal deinen Code umzuschreiben.
Flare
//Edit:
habs gerade gefunden dass du doch mitzählst...egal, ich gucks mir trotzdem nochmal genauer an
Ich habe es mal umgeschrieben, es ist ungetestet, da ich keine Lust hatte dazu noch den ganzen Rest zu programmieren
und ich hoffe ich habe es nicht nur vereinfacht oder verschlimmbessert...
Delphi-Quellcode:
function Tform1.gewonnendiagonal(xwert, ywert, richtung: integer): boolean;
var
Count: integer;
begin
Result := false;
Count := 1;
if richtung = 1
then //unten links nach oben rechts
begin
while spielfeld[xwert-1, ywert-1] = anderreihe
do //ans letzte Steinchen setzen
begin
Dec(xwert);
Dec(ywert);
end;
while spielfeld[xwert, ywert] = anderreihe
do //und dann in nur eine Richtung rechnen lassen
begin
Inc(Count);
Inc(xwert);
Inc(ywert);
end;
end;
if richtung = 2
then //unten links nach oben links
begin
while spielfeld[xwert-1, ywert+1] = anderreihe
do //ans letzte Steinchen setzen
begin
Dec(xwert);
Inc(ywert);
end;
while spielfeld[xwert, ywert] = anderreihe
do //und dann in nur eine Richtung rechnen lassen
begin
Inc(Count);
Inc(xwert);
Dec(ywert);
end;
end;
if (Count >= 4)
then Result := True;
end;