Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   TicTacToe (https://www.delphipraxis.net/34897-tictactoe.html)

ferby 29. Nov 2004 20:36


TicTacToe
 
Hi,

Ich möchte TicTacToe Programmieren, so das ein menschlicher Spieler anfängt und der contert.
Kann mir jemand einen Denkanstoß geben wie ich berrechnen/denken muss so das der Computer nie Verlieren kann?
Gibt es da sowas wie eine Formel oder etwas anderes wie ich mathematisch berrechnen kann wo der COmputer hinsetzten muss???

Bin dankebar für jede Hilfe,
Ferby

fkerber 29. Nov 2004 20:39

Re: TicTacToe
 
Hi!

Schonmal die anderen Umsetzungen im FOrum angeschaut?
Hier im Forum suchenTicTacToe


Ciao Frederic

ferby 29. Nov 2004 20:53

Re: TicTacToe
 
Hallo,

Habe jetzt mal geschaut aber immer nur fertige Spiele gefunden, nie das was ich brauch oder mit quelltext.....

jim_raynor 29. Nov 2004 21:02

Re: TicTacToe
 
Ist doch recht simpel.

Versuche immer den ersten Zug in der Mitte zu machen, klappt das nicht nimm eine Ecke. Danach immer nur verhindern, dass eine Reihe geschlossen wird. Sollte eigentlich so klappen.

[edit] Ist der erste Zug in der Mitte, darfst du den zweiten nicht in einer Ecke machen[/edit]

dizzy 29. Nov 2004 21:12

Re: TicTacToe
 
Klappt nicht immer:
(X = Mensch - beginnt)
Code:
+---+---+---+
|   |   |   |
+---+---+---+
|   |   |   |
+---+---+---+
|   |   | X |
+---+---+---+

+---+---+---+
|   |   |   |
+---+---+---+
|   | O |   |
+---+---+---+
|   |   | X |
+---+---+---+

+---+---+---+
| X |   |   |
+---+---+---+
|   | O |   |
+---+---+---+
|   |   | X |
+---+---+---+

+---+---+---+
| X |   |   |
+---+---+---+
|   | O |   |
+---+---+---+
| O |   | X |
+---+---+---+

+---+---+---+
| X |   | X |
+---+---+---+
|   | O |   |
+---+---+---+
| O |   | X |
+---+---+---+
Jetzt hab ich als Mensch 2 Möglichkeiten zu gewinnen -> der PC hat keine Chance mehr. Das lässt sich einzig über einen Spielbaum lösen, und als Stichwort sei das Min(i)-Max-Prinzip genannt. Damit hab ich auch schon ein TTT bauen müssen ;). (Aber ganz perfekt (genau in dieser Spielsituation) hats auch net geklappt, da ich einen bööösen Patzer drin hab :?)

Gruss,
Fabian

jim_raynor 29. Nov 2004 21:31

Re: TicTacToe
 
Deshalb ja mein Edit ;) Dann klappt es!

GTA-Place 29. Nov 2004 22:30

Re: TicTacToe
 
Ist das nicht ein Trick, gegen den sogar der Computer machtlos ist?

dizzy 29. Nov 2004 22:36

Re: TicTacToe
 
Nein, TTT lässt sich immer so spielen dass ein Unentschieden raus kommt (bei 2 "perfekten" Gegnern). Das hat man irgendwann mal glaube ich sogar mathem. bewiesen. Einen Link kann ich dir jetzt aber leider nicht anbieten - hat uns mal ein Prof so mitgeteilt.

Der PC im obigen Beispiel darf, wie schon richtig bemerkt, im 4. Bild keine Ecke belegen. Dann siehts zumindest bei dieser Speilweise gut aus.

\\edit: Der "Trick" darf also erst garnicht möglich werden. Daher muss ihn ein Algorithmus quasi "vorhersehen", und das kann er z.B. mit einem Spielbaum im Grunde. (Schach spielt ein PC auch mit Spielbäumen nach Mini-Max-Prinzip, bzw. eher Alpha-Beta-Pruning, welches eine Verbesserung von Mini-Max ist.)

Nonsense 29. Nov 2004 22:38

Re: TicTacToe
 
http://www.delphiforfun.com/Programs...oc_machine.htm :wink:


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:13 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