Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
|
Re: 4-gewinnt Gewinn Überprüfung
19. Aug 2009, 12:15
Also ich hab' das damals so gemacht:
Delphi-Quellcode:
function TAboutForm.CheckForVictory(Col, Row: Integer): Boolean;
begin
Result := False;
// Prüfung auf waagerechte Reihe nach rechts
if (Col + 3 in [0..6]) and (Row + 0 in [0..4]) and
(Felder[Col + 1, Row + 0].Tag = CurrPlayer) and
(Felder[Col + 2, Row + 0].Tag = CurrPlayer) and
(Felder[Col + 3, Row + 0].Tag = CurrPlayer) then
begin
// Gewonnen
Result := True;
Exit;
end;
// Prüfung auf schräge Reihe nach rechts unten
if (Col + 3 in [0..6]) and (Row + 3 in [0..4]) and
(Felder[Col + 1, Row + 1].Tag = CurrPlayer) and
(Felder[Col + 2, Row + 2].Tag = CurrPlayer) and
(Felder[Col + 3, Row + 3].Tag = CurrPlayer) then
begin
// Gewonnen
Result := True;
Exit;
end;
// Prüfung auf senkrechte Reihe nach unten
if (Col + 0 in [0..6]) and (Row + 3 in [0..4]) and
(Felder[Col + 0, Row + 1].Tag = CurrPlayer) and
(Felder[Col + 0, Row + 2].Tag = CurrPlayer) and
(Felder[Col + 0, Row + 3].Tag = CurrPlayer) then
begin
// Gewonnen
Result := True;
Exit;
end;
// Prüfung auf schräge Reihe nach links unten
if (Col - 3 in [0..6]) and (Row + 3 in [0..4]) and
(Felder[Col - 1, Row + 1].Tag = CurrPlayer) and
(Felder[Col - 2, Row + 2].Tag = CurrPlayer) and
(Felder[Col - 3, Row + 3].Tag = CurrPlayer) then
begin
// Gewonnen
Result := True;
Exit;
end;
end;
Und für jedes Feld aufgerufen
|
|
Zitat
|