Einzelnen Beitrag anzeigen

mexman

Registriert seit: 19. Apr 2009
3 Beiträge
 
Turbo Delphi für Win32
 
#1

gewinnüberprüfung diagonalen vier gewinnt

  Alt 23. Mai 2009, 13:12
Hey Leute,

um die Diagonalen auf eine "Viererreihe" zu überprüfen habe ich mir (für von links unten nach rechts oben) folgendes ausgedacht:

Delphi-Quellcode:
function gewinnabfrage_diagonale(spielfeld:tspielfeld;m,n:integer):boolean;
var
p,rot,gelb:integer;
begin
for p:=1 to 5 do
if (m<7) and (n>0) then //damit das array nicht verlassen wird (spielfeld[1..7,1..6])
if spielfeld[m,n] = spielfeld[m+1,n-1] then
  begin
  inc(m);
  dec(n);
  if spielfeld[m,n]<>'Xthen if spielfeld[m,n]='Rthen
    begin
    inc(rot);
    gelb:=0;
    if rot=4 then result:=true;
    end
  else
    begin
    inc(gelb);
    rot:=0;
    if gelb=4 then result:=true;
    end
  end
else
  if (rot=3) and (spielfeld[m,n]='R') then result:=true
  else
  if (gelb=3) and (spielfeld[m,n]='G') then result:=true
  else
    begin
    inc(m);
    inc(n);
    gelb:=0;
    rot:=0;
    end;
end;

function gewinnabfrage(spielfeld:tspielfeld):boolean;
var x,y:integer;
begin
//hier stehen die gewinnabfragen für die spalten und zeilen

for x:= 1 to 4 do
if gewinnabfrage_diagonale(spielfeld,x,6)=true then result:=true;

for y:=6 downto 4 do
if gewinnabfrage_diagonale(spielfeld,1,y)=true then result:=true;
end;

Einige Diagonalen werden bereits erkannt, es handelt sich bei den erkannten Diagonalen um diese, die ihren "Fußpunkt" auf der untersten Reihe haben. Diagonalen, die sozusagen in der Luft hängen, werden nicht erkannt.
Mit dem Debugger habe ich den Fheler nicht gefunden.

Kann mir vllt. jmd sagen, wo der Fehler steckt?
Ich wäre sehr dankbar!

mexman
  Mit Zitat antworten Zitat