Projekt Anal´yza a n´avrh
Jan Outrata listopad 2008
Jan Outrata (KI UP)
Projekt - anal´ yza a n´ avrh
listopad 2008
1 / 13
Anal´ yza role: hr´aˇci, obsluha hrac´ı desky, rozhodˇc´ı, manaˇzer hry, technika hr´aˇci: ,,vym´yˇslej´ı” tahy ˇclovˇek poˇc´ıtaˇc – ,,inteligence” pro ,,vymyˇslen´ı” tahu (MiniMax, AlfaBeta) jin´y – napˇr. korespondeˇcn´ı prostˇredn´ık se vzd´alen´ym hr´aˇcem
obsluha hrac´ı desky: prov´adˇen´ı tah˚ u, uchov´av´an´ı stavu hry (stavu desky, historie tah˚ u) rozhodˇc´ı: kontroluje platnost tah˚ u, nab´ız´ı vˇsechny moˇzn´e tahy podle pravidel, jedin´y zn´a pravidla hry! manaˇzer hry: ˇr´ıd´ı pr˚ ubˇeh hry, ˇz´ad´a hr´aˇce o tahy, rozhodˇc´ıho o kontrolu tah˚ u (podle pravidel), obsluhu hry o prov´adˇen´ı tah˚ u, techniku o zobrazen´ı stavu hry technika: UI – zad´an´ı tahu ˇclovˇekem, zobrazen´ı hrac´ı desky, historie hry, vˇsech moˇzn´ych tah˚ u, n´apovˇedy, uloˇzen´ı stavu hry, ovl´ad´an´ı manaˇzera (undo-redo, replay) Jan Outrata (KI UP)
Projekt - anal´ yza a n´ avrh
listopad 2008
2 / 13
N´ avrh Aplikace oddˇelen´ı implementace v´ykonn´e ˇc´asti (logika) od implementace UI ˇc´asti – moˇznost pouˇz´ıt stejnou logiku s r˚ uzn´ym UI (v´ymˇena CLI za GUI) minim´aln´ı rozhran´ı logiky pro UI, ide´alnˇe jeden objekt, v praxi dva (pˇr´ım´y pˇr´ıstup ke stavu hry) ˇz´adn´e rozhran´ı UI pro logiku, tj. u ´pln´a nez´avislost logiky na UI!
Jan Outrata (KI UP)
Projekt - anal´ yza a n´ avrh
listopad 2008
3 / 13
N´ avrh Logika platformovˇe nez´avisl´a implementace, napˇr. formou sd´ılen´e knihovny objekty: abstraktn´ı hr´aˇc, hr´aˇci, deska, rozhodˇc´ı, manaˇzer
Jan Outrata (KI UP)
Projekt - anal´ yza a n´ avrh
listopad 2008
4 / 13
N´ avrh: Logika Abstraktn´ı hr´ aˇ c rozhran´ı obecn´eho hr´aˇce pro vr´acen´ı ,,vymyˇslen´eho” tahu metody: vrat’ tah, vrat’/nastav u ´roveˇ n ,,inteligence” data: u ´roveˇ n ,,inteligence”
Jan Outrata (KI UP)
Projekt - anal´ yza a n´ avrh
listopad 2008
5 / 13
N´ avrh: Logika Hr´ aˇ c konkr´etn´ı hr´aˇc (instance, zdˇedˇen´ı, abstraktn´ıho hr´aˇce), vrac´ı ,,vymyˇslen´y tah” lidsk´y – prostˇredn´ık mezi logikou a ˇclovˇekem poˇc´ıtaˇcov´y – implementace ,,inteligence” (MiniMax, AlfaBeta, pˇr´ıp. abstraktn´ı se zdˇedˇen´ymi) data: reprezentace ohodnocen´ı stavu (pˇr´ıp. abstraktn´ı se zdˇedˇen´ymi), desky, tah˚ u apod., ukazatel na objekt desky
jin´y – pˇred´av´an´ı poˇzadavku vzd´alen´emu hr´aˇci apod.
Jan Outrata (KI UP)
Projekt - anal´ yza a n´ avrh
listopad 2008
6 / 13
N´ avrh: Logika Deska ,,fyzick´e” prov´adˇen´ı tah˚ u (bez kontroly planosti), uchov´an´ı stavu hry (stavu desky, historie tah˚ u) metody: proved’ tah, vem tah zpˇet (undo), vrat’ desku, vrat’ historii tah˚ u, inicializuj desku/historii (do dan´eho stavu) data: reprezentace desky, historie tah˚ u
Jan Outrata (KI UP)
Projekt - anal´ yza a n´ avrh
listopad 2008
7 / 13
N´ avrh: Logika Rozhodˇ c´ı kontroluje platnost tah˚ u, nab´ız´ı vˇsechny platn´e tahy podle pravidlel metody: zkontroluj tah, vrat’ vˇsechny platn´e tahy data: reprezentace pravidel hry, ukazatel na objekt desky
Jan Outrata (KI UP)
Projekt - anal´ yza a n´ avrh
listopad 2008
8 / 13
N´ avrh: Logika Manaˇ zer ˇr´ıd´ı pr˚ ubˇeh hry, ˇz´ad´a hr´aˇce o tahy, rozhodˇc´ıho o kontrolu tah˚ u (podle pravidel), obsluhu hry o prov´adˇen´ı tah˚ u, techniku o zobrazen´ı stavu hry metody: spust’ hru (s inicializac´ı stavu hry a nastaven´ı hr´aˇc˚ u), vrat’ info o nastaven´ı hr´aˇc˚ u a hr´aˇci na tahu, zmˇen ˇ nastaven´ı hr´aˇc˚ u, vem ’ ’ tah zpˇet (undo), znovu proved tah (redo, replay), vrat vˇsechny plan´e tahy (od rozhodˇc´ıho), vrat’ napovˇezen´y tah (od poˇc´ıtaˇcov´eho hr´aˇce), pozastav/rozbˇehni hru data: info o nastaven´ı hr´aˇc˚ u a hr´aˇci na tahu (ukazatele na objekty hr´aˇce), ukazatele na objekty hr´aˇce, desky, rozhodˇc´ıho
Jan Outrata (KI UP)
Projekt - anal´ yza a n´ avrh
listopad 2008
9 / 13
N´ avrh: Logika
Jan Outrata (KI UP)
Projekt - anal´ yza a n´ avrh
listopad 2008
10 / 13
N´ avrh: Logika Sc´ en´ aˇr manaˇzer (v metodˇe spust’ hru): inicializuje hru (stav desky, historie, hr´aˇce na tahu) obsahuje (synchronn´ı) ˇr´ıd´ıc´ı smyˇcku (v samostatn´em vl´aknˇe, kv˚ uli smyˇcce GUI, viz d´ale):
Smyˇ cka hry (v metodˇe spust’ hru objektu Manaˇzer) 1 2
aktualizuje UI – pˇres pomocnou Ud´alost ˇz´ad´a hr´aˇce na tahu o tah (vrat’ tah, v samost. vl´aknˇe) a ˇcek´a na nˇej
4
ˇz´ad´a rozhodˇc´ıho o kontrolu tahu (zkontroluj tah) ˇz´ad´a desku o proveden´ı tahu (proved’ tah)
5
zmˇen´ı hr´aˇce na tahu
3
Jan Outrata (KI UP)
Projekt - anal´ yza a n´ avrh
listopad 2008
11 / 13
N´ avrh: Logika Sc´ en´ aˇr objekt lidsk´eho hr´aˇce ˇcek´a na zad´an´ı tahu z UI – pˇres pomocn´y Slot objekt poˇc´ıtaˇcov´eho hr´aˇce vyvol´a algoritmus ,,inteligence” manaˇzer bˇehem ˇcek´an´ı na tah pˇri (asynchronn´ım) poˇzadavku: pozastaven´ı/rozbˇehnut´ı hry pozastav´ı/rozbˇehne ˇcek´an´ı na tah kter´y zneplatn´ı poˇzadavek tahu (napˇr. spust’ hru, zmˇena nastaven´ı hr´aˇc˚ u, undo-redo), zruˇs´ı ˇcek´an´ı na tah a restartuje smyˇcku
(obecnˇejˇs´ı) varianta: info o hr´aˇci na tahu obsahuje rozhodˇc´ı, kter´y tak´e mˇen´ı hr´aˇce na tahu
Jan Outrata (KI UP)
Projekt - anal´ yza a n´ avrh
listopad 2008
12 / 13
N´ avrh UI m˚ uˇze b´yt platformovˇe z´avisl´e, ale lze i nez´avisl´e (konzole, multiplatformn´ı GUI knihovna, OpenGL, Java Swing apod.) ukl´ad´an´ı a naˇc´ıt´an´ı stavu hry – samostatn´a souˇc´ast, nez´avisl´a na zbytku UI (pro ˇclovˇeka ˇciteln´y form´at, nez´avisl´y na platformˇe, napˇr. TXT, XML) pˇred´av´a tah objektu lidsk´eho hr´aˇce, zobrazuje stav hry z objektu desky (pˇri poˇzadavku aktualiace od manaˇzera), vol´a (uˇzivatelsk´e) funkce objektu manaˇzera (tak´e ˇr´ıd´ı replay) zachycen´ı poˇzadavku aktualizace zobrazen´ı stavu hry od manaˇzera (pˇres pomocnou Ud´alost) – napˇr. testov´an´ı Ud´alosti v Idle funkci data: ukazatele na objekty manaˇzera a desky (popˇr. lidsk´eho hr´aˇce)
GUI knihovny pouˇz´ıvaj´ı ud´alostmi ˇr´ızen´y pˇr´ıstup ke GUI, tzn. maj´ı vlastn´ı smyˇcku zpracov´an´ı ud´alost´ı (zvenˇc´ı i zevnitˇr), tzn. program je ˇr´ızen´y smyˇckou GUI hra je ˇr´ızena smyˇckou manaˇzera! – nez´avisl´a na (smyˇcce) UI, moˇznost v´ıce UI (napˇr. GUI a s´ıt’ov´e) nebo tak´e ˇz´adn´eho UI! Jan Outrata (KI UP)
Projekt - anal´ yza a n´ avrh
listopad 2008
13 / 13