Einzelnen Beitrag anzeigen

Benutzerbild von NicNacMan
NicNacMan

Registriert seit: 28. Mai 2004
Ort: Hamburg
98 Beiträge
 
Delphi 2005 Personal
 
#2

Re: Reversi-Probleme mit Funktionen

  Alt 13. Aug 2005, 16:23
hi,

ich würde in der function pruefen als erstes mal x mit dx bzw y mit dy vergleichen,
um raus zu bekommen, ob du die waagerechten, horizontalen oder diagonalen überprüfen musst.
dann natürlich die randwerte, also den ersten und letzten stein.

und an der spielfeldClick procedure würde ich auch nochmal was verändern.
Delphi-Quellcode:
if feld[spielfeld.Col, spielfeld.Row]=1 then // wieso 1, nimm doch rot
  begin
    dransein:=1; // bringt zwischen case dransein of rot: begin ... end; end; auch nicht sehr viel, wenn die konstante rot = 1 ist.
    feld[spielfeld.Col, spielfeld.Row]:=1; // is doch überflüssig
  end;
damit wäre dann die ganze abfrage mehr oder weniger überflüssig.
da das auch noch für den fall, dass dransein = blau ist vorkam,
konnte man den code deutlich vereinfachen.

statt deinen 28 zeilen wären es so nur 11;
Delphi-Quellcode:
if (feld[spielfeld.Col, spielfeld.Row] = 0) then
  begin
    feld[spielfeld.Col, spielfeld.Row] := dransein;
    case dransein of
      rot : dransein := blau;
      blau: dransein := rot;
    end;
    spielfeld.Refresh;
  end
else if (feld[spielfeld.Col, spielfeld.Row] <> dransein) then
  Application.MessageBox('Das Feld ist schon belegt!', 'Fehler');
The Double-Crunch-Peanuts!
SwapIt:
  Mit Zitat antworten Zitat