AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Fehler in der KI (Tic Tac Toe)?Bitte schnell helfen.
Thema durchsuchen
Ansicht
Themen-Optionen

Fehler in der KI (Tic Tac Toe)?Bitte schnell helfen.

Ein Thema von M4ST3R86 · begonnen am 7. Jul 2004
Antwort Antwort
M4ST3R86

Registriert seit: 1. Mai 2004
23 Beiträge
 
#1

Fehler in der KI (Tic Tac Toe)?Bitte schnell helfen.

  Alt 7. Jul 2004, 08:56
neBitte helft mir schnell. noch heute morgen habe keine zeit mehr. Unten hängt das komplette programm an.

achso es Gameboard ist ein 2d Array vom typ tFieldtype :
TFieldType = ( ftNone, ftX, ftO,ftH );
GameBoard : array[ 0..2,0..2 ] of TFieldType;


Hier die set field die unten vorkommt

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
  TagToCoordinates( nFieldIdx, x, y );

  //Ist das Feld 'nFieldIdx' noch frei?
  if ( CheckForFreeField( x, y ) ) 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;

Hier ist der eigentliche problemfall
Delphi-Quellcode:
procedure GodlikeKIGo;

begin
// Schräg ziehen
  if (TForm1.CheckForFreeField() = 8) and not(
        (GameBoard[0, 0] = 0) and
        (GameBoard[0, 2] = 0) and
        (GameBoard[2, 0] = 0) and
        (GameBoard[2, 2] = 0)) then
  begin
    if GameBoard[0, 0] = 1 then
      SetField[2, 2].Caption := ftO
    else if GameBoard[0, 2] = 1 then
      SetField[2, 0].Caption := ftO
    else if GameBoard[2, 0] = 1 then
      SetField[0, 2].Caption := ftO
    else if GameBoard[2, 2] = 1 then
      SetField[0, 0].Caption := ftO;
    exit;
  end;

  // Ecke ziehen
  if (GameBoard[0, 0] = 0) or
          (GameBoard[0, 2] = 0) or
          (GameBoard[2, 0] = 0) or
          (GameBoard[2, 2] = 0) then
  begin
    if GameBoard[0, 0] = 0 then
      SetField[0, 0].Caption := ftO
    else if GameBoard[0, 2] = 0 then
      SetField[0, 2].Caption := ftO
    else if GameBoard[2, 0] = 0 then
      SetField[2, 0].Caption := ftO
    else
      SetField[2, 2].Caption := ftO;
  end
  // Mitte ziehen
  else if GameBoard[1, 1] = 0 then
    SetField[1, 1].Caption := ftO
  // Kante ziehen
  else
if GameBoard[1, 1] = 0 then
    SetField[2, 2].Caption := ftO

    SimpleKI;
end;
 end.
Angehängte Dateien
Dateityp: rar prog_121.rar (551,5 KB, 13x aufgerufen)
  Mit Zitat antworten Zitat
Antwort Antwort


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 00:45 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz