AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Fehler (warsch.) eine Abfrage. In Tic Tac Toe KI. HelpPlease
Thema durchsuchen
Ansicht
Themen-Optionen

Fehler (warsch.) eine Abfrage. In Tic Tac Toe KI. HelpPlease

Ein Thema von M4ST3R86 · begonnen am 3. Jul 2004 · letzter Beitrag vom 5. Jul 2004
 
xineohp

Registriert seit: 29. Jan 2004
Ort: Heusenstamm
420 Beiträge
 
Delphi 2005 Professional
 
#4

Re: Fehler (warsch.) eine Abfrage. In Tic Tac Toe KI. HelpPl

  Alt 4. Jul 2004, 12:34
moin,

hier liegt der Hund begraben:

formal:
1. Warum hast du das alles auskommentiert?
2. die markierten end;'s sind zuviel!

logisch:
1. Gameboard ist ein zweidimensionales array auf das mit den Koordinaten[x,y] zugegriffen wird nicht per durchlaufendem Index!
-->Für was hast du die Zählervariable (i) wenn du sie nie einsetzt! Die Schleife "//Kleiner test" führt dreimal exakt die gleichen Abfragen durch! Wenn dann müsste i y heißen und von 0 bis 2 laufen.
-->"//Nochmal ein kleiner test" müsste analog aufgebaut sein, mit x als Laufvariable und y,y+1,y+2


Zitat von M4ST3R86:
Delphi-Quellcode:
//Prüft ob einer der beidem Player gewonnen hat
function TForm1.CheckForWinner( ft : TFieldType ) : boolean;
var
  y,x,i : integer;
begin
  {//Standardgemäß hat mal keiner gewonnen
  result := false;

  //Zähler auf 0
  x := 0;
  y :=0;
  i:=0;

  //Folgende zwei Schleifen könnte man in eine Funktion zusammenfassen

  //Kleiner test
  {while i < 8 do begin
    if ( GameBoard[ y,x ] = ft ) and ( GameBoard[ y,x + 1 ] = ft ) and ( GameBoard[ y,x + 2 ] = ft ) then begin
      result := true;
      break;
    end;
    end;    <--- überflüssig/falsch
    end;    <--- überflüssig/falsch
    inc( i, 3 );
  end;

  //Zähler auf 0
  i := 0;

  //Nochmal ein kleiner test
  while i <> 3 do begin
    if ( GameBoard[ y,x  ] = ft ) and ( GameBoard[ y,x  + 3 ] = ft ) and ( GameBoard[ y,x  + 6 ] = ft ) then begin
      result := true;
      break;
    end;

    inc( i, 1 );
  end; 

  //Diagonale Reihen überpüfen
  if ( GameBoard[ 0,0 ] = ft ) and ( GameBoard[ 1,1 ] = ft ) and ( GameBoard[ 2,2 ] = ft ) then
    result := true;

  //Ebenfalls diagonal
  if ( GameBoard[ 0,2 ] = ft ) and ( GameBoard[ 1,1 ] = ft ) and ( GameBoard[ 2,0 ] = ft ) then
    result := true; }

end;
Peter Enenkel
blubb
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:49 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz