Einzelnen Beitrag anzeigen

scp

Registriert seit: 31. Okt 2003
1.120 Beiträge
 
Delphi 7 Personal
 
#14

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

  Alt 4. Jul 2004, 23:58
Also, ich habe jetzt eine komplett lauffähige Version. Da ich aber hier nich einfach was abliefern will, sondern auch ein bißchen zum selber nachdenken anregen will, hier ein paar Tips.
SetField sieht jetzt so aus, CheckForFreeField wie oben:
Delphi-Quellcode:
//Setzt das Spielfeld 'nFieldIdx' auf den wert 'fieldType' und weist 'img' das passende Bild zu
procedure TForm1.SetField( img : TImage; nFieldIdx : integer; fieldType : TFieldType );
var x,y : integer;
begin
  x := ((nFieldIdx) mod 3);
  y := ((nFieldIdx-x) div 3);

  //Ist das Feld 'nFieldIdx' noch frei?
  if ( CheckForFreeField( x,y {nFieldIdx} ) ) then begin
    //Setzt das Feld 'nFieldIdx' auf den Wert 'fieldType'
    GameBoard[ x,y ] := fieldType;

    //Je nach 'fieldType' das passende Bild an 'img' übergeben
    case fieldType of
      ftX : img.Picture.Assign( ImageX.Picture );
      ftO : img.Picture.Assign( ImageO.Picture );
    end;
  end;
end;
- Überall wo du nFieldIdx in x und y umrechnen willst, kannst du diese Methode verwenden:
Delphi-Quellcode:
  x := ((nFieldIdx) mod 3);
  y := ((nFieldIdx-x) div 3);
- Umgedreht gehts auch:
nFieldIdx := y*3 + x; - rndIdx wurde in SimpleKI noch nicht initialisiert
- statt random (2) musst du random (3) verwenden, da die 2er-Felder sonst nie von der KI benutzt werden und es deshalb zu einer bösen Endlosschleife kommt
  Mit Zitat antworten Zitat