Einzelnen Beitrag anzeigen

Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#18

Re: Reversi-Probleme mit Funktionen

  Alt 15. Aug 2005, 17:28
dann helf ich dir hier mal mit n bisschen code auf die sprünge

Delphi-Quellcode:
function pruefen(x,y,dx,dy:integer):integer; //pruefen ist eigentlich nur ein wrapper für die drei richtigen prüffunktionen
var
begin
if x=dx then //wenn es senkrecht ist
 result:=processvertical(x,y,dy)
else if y=dy then // wenn es waagerecht ist
 result:=processhorizontical(x,dx,y)
else //wenn es diagonal ist
 result:=processdiagonal(x,y,dx,dy);
end;

function processvertical(x,y,dy:integer):integer;
var i:integer;
    count:integer;
    encplayer:integer; //farbe des eingeschlossenen
begin
sort(y,dy); //stellt sicher, dass es von oben nach unten geht - selber machen ;)

if not (feld[x,y]=feld[x,dy]) then //der erste stein muss die selbe farbe haben wie der letzte
 begin
  result:=-1; //Fehler!
  exit; //Abbruch!
 end
else
 begin
  if feld[x,y]=GRÜN then encplayer:=ROT
  else if feld[x,y]=ROT then encplayer:=GRÜN;
  else //wenn das feld leer ist
   begin
    result:=-1;
    exit;
   end;
 end;

count:=0; //initialisieren

for i := y+1 to dy-1 do //ersten und letzten stein auslassen
 begin
  if feld[x,i]=encplayer then count:=count+1;
  else
   begin
    result:=-2; //Kein fehler, aber keine geschlossene reihe
    exit;
   end;
 end;

result:=count;
end;

Es würde jetzt bereits schon fast (*) für senkrechte reihen funktionieren, unter der bedingungen, dass auch die einschließenden Steine in den bereich einbezogen werden.

Rückgabewerte:
>= 0: Menge der eingeschlossenen Steine
-1: Fehler
-2: Reihe unterbrochen

Den Rest solltest du selber schaffen

(*): sort fehlt. es sollte so definiert sein: procedure sort(var i,k:integer); PS: zeig mal istspielfeld
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat