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