Einzelnen Beitrag anzeigen

Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#16

Re: Sieger-Prüfung "Vier gewinnt"

  Alt 29. Jun 2004, 00:49
SO! Jetzt aber. Das Problem war, dass die Schleife immer bis zum Ende durchlief. Daher fand sie auch NUR Siegbedingungen im letzten Durchgang. Lösung: Ein nicht so schönes, aber wirkungsvoll angebrachtes "exit".

Delphi-Quellcode:
  function CheckRows: Boolean;
  var
    c, r: Integer;
  begin
    for r := 0 to ROWS-1 do
    begin
      cnt := 0;
      for c := 0 to COLUMNS-1 do
      begin
        if Field[c, r] <> 1 then cnt := 0
        else inc(cnt);
        if cnt = 4 then
        begin
          result := true;
          exit;
        end; // if cnt=4
      end; // for c...
    end; // for r...
    result := false;
  end; // CheckRows
(Getestet!)

Für CheckColumns einfach die beiden Schleifenköpfe gegeneinander austauschen, und für Diagonal reicht mein Hirnschmalz heute auch net mehr
btw: für ein CheckRows waren die Schleifen ohnehin schon falsch herum verschachtelt! Eigentlich war's schon die CheckColumns .
btw2: das "exit" könnte man jetzt noch umgehen, in dem man das ganze in repeat-until-Schleifen packt, und bei cnt=4 nen Flag setzt. Ist aber imho in diesem Fall nicht viel leichter lesbar, und zu dem weniger performant.

n8i,
dizzy
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat