Einzelnen Beitrag anzeigen

Schilly

Registriert seit: 10. Dez 2008
Ort: Nähe Bremen
16 Beiträge
 
#1

Undefinierter Bezeichner: 'sign' - warum?

  Alt 16. Dez 2008, 14:25
Hi, ich versuch mich grad für den Anfang an minesweeper. Bei den Buttons handelt es sich um ein zweidimensionales Array of TSpeedButton, und in der Eigenschaft Tag soll jeweils die Anzahl der Minen um dieses Feld herum bzw. der Wert 10 für den Fall, das da eine Mine ist, gespeichert werden. Aber das ist eig. auch egal -hier mal mein Code dafür:

Delphi-Quellcode:
var
  feld: array of array of TSpeedButton;

...

procedure minenumfeld(X,Y : integer) : integer;
var r : integer;
begin
  if feld[X,Y].tag < 10 then begin
    r := 0;
    if X > 0 then begin
      r := r + Sign(feld[X-1,Y].tag -10) +1;
      if Y > 0 then r := r + Sign(feld[X-1,Y-1].tag -10) +1;
      if Y < high(feld[1]) then r := r + Sign(feld[X-1,Y+1].tag -10) +1;
    end;
    if Y > 0 then r := r + Sign(feld[X,Y-1].tag -10) +1;
    if Y < high(feld[1]) then r := r + Sign(feld[X,Y+1].tag -10) +1;
    if X < high(feld) then begin
      r := r + Sign(feld[X+1,Y].tag -10) +1;
      if Y > 0 then r := r + Sign(feld[X+1,Y-1].tag -10) +1;
      if Y < high(feld[1]) then r := r + Sign(feld[X+1,Y+1].tag -10) +1;
    end;
  feld[X,Y].tag := r;
  end;
end;
Also mit der Sign-Funktion will ich so etwas wie
 if Y > 0 then if feld[X,Y-1].tag = 10 then r := r+1; umgehen, weil ich das für zu kompliziert und nicht schön genug erachte. Und mit Sign sollte es theoretisch gehen...

Die ganzen Ifs mit Y > 0 und so sollen verhindern dass er nach dem Index -1 oder high(feld)+1 sucht.

Naja jetzt zu meinem ursprünglichen Problem: er erkennt die Sign-Funktion nicht! Was hab ich falsch gemacht??

Und wo ihr euch das grad schonmal durchlest: gibt es eventuell noch ne bessere Möglichkeit als mit Sign?

Vielen Dank im Vorraus!
  Mit Zitat antworten Zitat