Hallo!
Ich bin dabei ein VierGewinnt zu programmieren, Delphi ist ziemliches Neuland für mich.
Ich hänge bei der Gewinnprüfung. Diese habe ich mal konzipiert und theoretisch dürfte sie (wenn ich keinen Denkfehler gemacht habe) auch funktionieren. Tut sie aber nicht. Nun glaube ich, dass es an Fehlern in der If-then-else Verschachtelung liegt.
Hier mal der Code:
Delphi-Quellcode:
//======================================================
// Gewinnüberprüfung
//======================================================
procedure TVierGewinnt.GewinnPruefung(GSpalte, GZeile: Integer);
var
x, y, durchlauf: Integer;
gewonnen: boolean;
begin
for durchlauf := 0 to 3 do
begin
x := 0;
y := 0;
case durchlauf of
0: begin
x := 1;
y := 0;
end;
1: begin
x := 0;
y := 1;
end;
2: begin
x := 1;
y := -1;
end;
3: begin
x := -1;
y := -1;
end;
end;
if Feld[GSpalte + 1 * x, GZeile + 1 * y] = Spieler then
if Feld[GSpalte + 2 * x, GZeile + 2 * y] = Spieler then
if Feld[GSpalte + 3 * x, GZeile + 3 * y] = Spieler then
begin
gewonnen := true;
end
else
if Feld[GSpalte - 1 * x, GZeile - 1 * y] = Spieler then
begin
gewonnen := true;
end
else
if Feld[GSpalte - 1 * x, GZeile - 1 * y] = Spieler then
if Feld[GSpalte - 2 * x, GZeile - 2 * y] = Spieler then
begin
gewonnen := true;
end
else
if Feld[GSpalte - 1 * x, GZeile - 1 * y] = Spieler then
if Feld[GSpalte - 2 * x, GZeile - 2 * y] = Spieler then
if Feld[GSpalte - 3 * x, GZeile - 3 * y] = Spieler then
begin
gewonnen := true;
end;
if gewonnen = true then
begin
ShowMessage('Spieler '+IntToStr(Spieler)+' hat gewonnen!');
// FreeAndNil(PaintBox1);
FreeAndNil(VierGewinnt);
gewonnen := false;
end;
end;
end;
//======================================================
//======================================================
Ich weiß nicht genau ob ihr da meine Gedankengänge nachvollziehen könnt, das Prog hab ich nochmal im Anhang. Jedenfalls glaube ich, dass eben hier irgendwo der wurm drin ist, eine Abfrage in die Falsche geht und dadurch irgendwas schiefgelaufen ist. Merkmal ist, dass nur die vertikale gewinnprüfung funktioniert.