Registriert seit: 8. Dez 2002
Ort: Berlin
131 Beiträge
Delphi 7 Personal
|
Re: Sieger-Prüfung "Vier gewinnt"
29. Jun 2004, 23:22
Also ich würde erstmal einen Ein-Dimensionalen Array anlegen. D.h. das Zeile für Zeile nacheinander gespeichert und durch z.B. eine 0 getrennt wird (wichtig für die Erkennung, ob Rand des Spielfeldes erreicht ist). Dann kann man recht einfach prüfen ob gewonnen wurde, z.B. Bei einem 5x5 grossen Spielfeld die diagonale Prüfung:
-> Wenn Feld[Pos]+Feld[Pos+6]+Feld[Pos+12]+Feld[Pos+18] = 4 Gewonnen!
Code:
var Field: Array[0..63] of Byte;
...
function Test4win(Player, X, Y: Byte): Boolean;
Function RevTest(Player, Pos, Step: Integer): Byte;
Begin
If (Field[Pos]=Player) Then RevTest:=RevTest(Player, Pos+Step, Step)+1
Else RevTest:=0;
End;
Begin
If (RevTest(Player, Y*8+X, 1) + RevTest(Player, Y*8+X, -1) -1>= 4) or
(RevTest(Player, Y*8+X, 8) + RevTest(Player, Y*8+X, -8) -1>= 4) or
(RevTest(Player, Y*8+X, 7) + RevTest(Player, Y*8+X, -7) -1>= 4) or
(RevTest(Player, Y*8+X, 9) + RevTest(Player, Y*8+X, -9) -1>= 4) Then Test4win:=true
Else Test4win:=false;
End;
|
|
Zitat
|