Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   TicTacToe mit mittlerer KI und für 1vs1 (https://www.delphipraxis.net/55052-tictactoe-mit-mittlerer-ki-und-fuer-1vs1.html)

zerodivide 25. Okt 2005 09:53

Re: TicTacToe mit mittlerer KI und für 1vs1
 
TicTacToe müsste sich relativ schnell durchrechnen lassen.

Es sollte also möglich sein ein Bewertungsschema für einen Zug einzuführen.

erster Vorschlag:

Für jedes noch zur Verfügung stehende Feld prüfen:
sofortige Gewinnchance +3
Gewinnchance im nächsten Zug +1
Vereitelung einer gegnerischen Gewinnchance +2

Aus den Feldern mit der höchsten Punktzahl zufällig eins wählen.

Greetz

ferby 2. Nov 2005 14:35

Re: TicTacToe mit mittlerer KI und für 1vs1
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

ich habe die KI jetzt ein weinig überarbeitet,
es ist jetzt möglich zwischen der alten KI (KI Leicht) und zwischen meiner neuen KI (KI Schwer) zu wählen,
eigentlich sollte es jetzt unmöglich sein gegen die KI Schwer zu gewinnen,
ihr könnt es mal ausprobieren.




Bin für positive und negative kritik offen,

ferby

faux 2. Nov 2005 15:42

Re: TicTacToe mit mittlerer KI und für 1vs1
 
Hallo!
Ja, das hast du super gemacht! Jetzt kann man wirklich nur noch durch ein Unentschieden einer Niederlage entgehen. :D
Jetzt würde mich der Quellcode interessieren. Hast du einfach alle Möglichkeiten aufgelistet (wie oben) oder hast du eine Function, die erkennt, wo der Stein am passendsten wäre?

Grüße
Faux

ferby 2. Nov 2005 16:13

Re: TicTacToe mit mittlerer KI und für 1vs1
 
Hallo,

Eigentlich war das schon mit dem Auflisten von vorher total dum,

ich habe nur ein wenig Quelltext hinzugefügt und zwar in der procedure KI_Zug

Delphi-Quellcode:
  // ZUG 3 oder höher
  if (zug>2) and (KI_schwer.checked) then
  begin
    for i:=1 to 2 do
    begin
      KI_S2(1,2,3,i);
      KI_S2(4,5,6,i);
      KI_S2(7,8,9,i);
      KI_S2(1,4,7,i);
      KI_S2(2,5,8,i);
      KI_S2(3,6,9,i);
      KI_S2(3,5,7,i);
      KI_S2(1,5,9,i);
    end;
  end;
wobei KI_S2 das ist:

Delphi-Quellcode:
procedure KI_S2(a,b,c,wert:byte);
begin
  if (feldwert[a]=wert) and (feldwert[b]=wert) and (feldwert[c]=0) then wahl:=c;
  if (feldwert[b]=wert) and (feldwert[c]=wert) and (feldwert[a]=0) then wahl:=a;
  if (feldwert[c]=wert) and (feldwert[a]=wert) and (feldwert[b]=0) then wahl:=b;
end;

Im Prinzip könnte ich sogar den ganzen zug eins und zwei Weglasen (also die ganze KI besteht nur noch aus dem was ich jetzt hinzugefügt habe), und sie wäre noch immer fast unbesiegbar.


Ferby

Thorben77 2. Nov 2005 16:19

Re: TicTacToe mit mittlerer KI und für 1vs1
 
Ganz nett :thumb:

Aber häng die Echse nochmal an den ersten Beitrag an, die meisten Leute werden wohl nicht erst runterscrollen und gucken ob da noch eine ist.

robinWie 11. Nov 2005 14:42

Re: TicTacToe mit mittlerer KI und für 1vs1
 
Schönes Teil!
Ich hab auch mal versucht ein TicTacToe zu progen, aber manchmal hat der Computer zwei kreise gemacht. Und die KI war so gut das es unmöglich den zu besiegen :mrgreen:

zecke 11. Nov 2005 14:49

Re: TicTacToe mit mittlerer KI und für 1vs1
 
Ich gewinn nur -.- das ist seltsam.

Ich setze oben links, Computer immer in die Mitte, ich unten rechts, er oben mitte, ich unten mitte, er mitte links, ich unten rechts und habe damit 3 -.- (also die Version 2.20)

Aber eigentlich is das Spiel witzlos, wenn zwei "Könner" gegeneinander spielen, trotzdem schön umgesetzt :thumb:

Edit: Ich korrigiere: Nicht immer, aber so in Circa 90% der Fälle gewinnt man so, auch spiegelverkehrt macht er mit.

Maximus 11. Nov 2005 15:03

Re: TicTacToe mit mittlerer KI und für 1vs1
 
@Zecke vielleicht solltest du die KI auch auf schwer stellen ;) - Dann funktioniert das nicht mehr ^^

MFG
Maximus

zecke 11. Nov 2005 15:06

Re: TicTacToe mit mittlerer KI und für 1vs1
 
Ah Du Fuchs Du :mrgreen: (Ja ich gebe zu, ich habe das Menu strikt missachtet ;))


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:33 Uhr.
Seite 2 von 2     12   

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