Hvað er það nákvæmlega sem þú skilur ekki varðandi útfærsluna?
Ef það er t.d. hvernig þú byggir upp ákvarðanatréð, þá er það c.a. svona:
class Node {
Node *pChild1; // Bendir á fyrsta barnið.
// Það bendir síðan á barn 2 (systkyni), sem bendir svo á barn 3 o.s.frv.
Node *pSibling; // Næsta systkyni
int iScore; // Stig sem fást fyrir að leika þennan leik
int iMove; // Á hvaða reit var leikið (0-8)
/* Frekari upplýsingar sem þú vilt geyma... */
/* Aðgerðir sem þú vilt geta framkvæmt, svo sem að bæta við systkyni og bæta við barni... */
}
Node *Tree = new Node;
Þetta er sem sagt einfalt tré sem lítur ca. svona út:
Tree
|
Child 1 - Child 2 - Child 3 - ... - Child 9
| |
| Child 1 - Child 2 - ... - Child 8
Child 1 - Child 2 - Child 3 - ... - Child 8
|
...
Þar sem borðið er ekki nema 3x3, þá eru bara 9 mögulegir leikir í fyrsta leik (ef tölvan byrjar). Í öðrum leik eru þá 8 mögulegir leikir (fyrir hvern af þessum 9), síðan 7 o.s.frv.
Ef þú síðan lætur hverja grein í trénu innihalda þann leik sem myndaði greinina, þá þarftu ekki að mynda tréð nema einu sinni og getur síðan prjónað við það eftir því sem líður á leikinn (nema þú myndir allt tréð strax, sem ég veit ekki hvort er raunhæft. Það má vel vera að það sé hægt með svona lítinn leik).
Skemmtileg viðbót við þetta er síðan að láta forritið smám saman læra þá leiki sem leiða til vinnings og geyma í e-s konar gagnagrunni. Smám saman verður þá forritið ósigrandi :)
Vona að ég hafi hitt á rétt atriði sem þú vissir ekki - annars var þetta allt víst til lítils.
Eitt er samt víst - nú fer ég heim að gera XogO leik :D