Hej Leute,
ich habe Vier Gewinnt programmiert, bin fast fertig, aber habe ein Problem bei der Gewinnfunktion! Waagerechte und senkrechte Reihen werden erkannt, aber keine diagonalen. Für die Diagonalen habe ich extra eine Prozedur geschrieben, schaut euch die bitte mal und schreibt wo der Fehler liegt.
Delphi-Quellcode:
function Tform1.gewonnendiagonal(xwert, ywert, richtung: integer): boolean;
var
Count, aktufarb, xcase, ycase: integer;
begin
if richtung = 1
then //unten links nach oben rechts
begin
Count := 1;
xcase := xwert + 1;
ycase := ywert + 1;
aktufarb := spielfeld[xcase, ycase];
while (aktufarb = anderreihe)
do
begin
Inc(Count);
Inc(xcase);
Inc(ycase);
aktufarb := spielfeld[xcase, ycase];
end;
xcase := xwert - 1;
ycase := ywert - 1;
while (aktufarb = anderreihe)
do
begin
Inc(Count);
Dec(xcase);
Dec(ycase);
aktufarb := spielfeld[xcase, ycase];
end;
end;
if richtung = 2
then //unten rechts nach oben links
begin
Count := 1;
xcase := xwert + 1;
ycase := ywert - 1;
aktufarb := spielfeld[xcase, ycase];
while (aktufarb = anderreihe)
do
begin
Inc(Count);
Inc(xcase);
Dec(ycase);
aktufarb := spielfeld[xcase, ycase];
end;
xcase := xwert - 1;
ycase := ywert + 1;
while (aktufarb = anderreihe)
do
begin
Inc(Count);
Dec(xcase);
Inc(ycase);
aktufarb := spielfeld[xcase, ycase];
end;
end;
if (Count >= 4)
then
Result := True;
end;
Ich bedanke mich!!
Übrigens: Wenn das alles totaler Mist ist, bin ich für neue Ansätze für eine solche Gewinnfunktion dankbar ))
Gruß
DelphiDieter!