![]() |
Re: Fehler (warsch.) eine Abfrage. In Tic Tac Toe KI. HelpPl
ich bekomme dadurch im kompletten code fehler.
Darf ich dir das programm mal schicken? Das du mal drübergucken kannst. Brauche umbedingt hilfe. |
Re: Fehler (warsch.) eine Abfrage. In Tic Tac Toe KI. HelpPl
:hi:
Du musst natürlich dann die ganzen Aufrufe dem entsprechend verändern. Überleg Dir doch nochmals kurz die logik des ganzen... :) mfg Tobias |
Re: Fehler (warsch.) eine Abfrage. In Tic Tac Toe KI. HelpPl
ja klar nur das prob ist ich habe kaum mehr zeit. Muss das mittwoch fertig haben *G* :wall:
Weißt du wie mans verbessern kann? Haste schonmal probiert? |
Re: Fehler (warsch.) eine Abfrage. In Tic Tac Toe KI. HelpPl
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:
- Überall wo du nFieldIdx in x und y umrechnen willst, kannst du diese Methode verwenden:
//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;
Delphi-Quellcode:
- Umgedreht gehts auch:
x := ((nFieldIdx) mod 3);
y := ((nFieldIdx-x) div 3);
Delphi-Quellcode:
- rndIdx wurde in SimpleKI noch nicht initialisiert
nFieldIdx := y*3 + x;
- 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 |
Re: Fehler (warsch.) eine Abfrage. In Tic Tac Toe KI. HelpPl
Also bei deinem code oben meckert er schon da und zwar zu viele parameter. Liegt das an den images oder woran?
Delphi-Quellcode:
if ( CheckForFreeField( x,y {nFieldIdx} ) ) then begin
|
Re: Fehler (warsch.) eine Abfrage. In Tic Tac Toe KI. HelpPl
moin,
du musst natürlich die von Mirilin genannte Version von CheckForFreeField verwenden, nur die erwartet zwei Parameter ... |
Re: Fehler (warsch.) eine Abfrage. In Tic Tac Toe KI. HelpPl
Jetzt habe ich hier bei
if ( not CheckForFreeField( nFieldNum ) ) then begin Label1.Caption := 'Move again'; exit; bei nFieldNum nicht genügend wirkliche parameter. Wieso?
Delphi-Quellcode:
procedure TForm1.ImageK0Click(Sender: TObject);
var nFieldNum : integer; nCurrImg : TImage; begin //Falls der Sender nicht von Typ TImage ist abbrechen if not ( Sender is TImage ) then exit; //Wenn 'bGameOver' auf true gesetzt ist, ebenfalls abbrechen if bGameOver then exit; //Den Sender einer Hilfvariable übergeben nCurrImg := ( Sender as TImage ); //Den Tag (Feldnummer) des Senders einer Hilfvariable übergeben nFieldNum := nCurrImg.Tag; //Überprüfen ob das geklickte Feld frei ist, falls nicht aus der //Funktion springen if ( not CheckForFreeField( nFieldNum ) ) then begin Label1.Caption := 'Move again'; exit; end; |
Re: Fehler (warsch.) eine Abfrage. In Tic Tac Toe KI. HelpPl
das ist doch wohl logisch! die procedure erwartet ja nun zwei Parameter ... ein x für die Spalte und ein y für die Zeile, keinen Index mehr der die Felder einzeln abzählt!
umrechnen mit: Zitat:
|
Re: Fehler (warsch.) eine Abfrage. In Tic Tac Toe KI. HelpPl
ja guck mal in dem code da sin werder x noch y. Also wie sall das gehen?
|
Re: Fehler (warsch.) eine Abfrage. In Tic Tac Toe KI. HelpPl
s.o.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:13 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