VYSOK ´
E U ˇ
CEN´I TECHNICK ´
E V BRN ˇ
E
BRNO UNIVERSITY OF TECHNOLOGYFAKULTA INFORMA ˇ
CN´ICH TECHNOLOGI´I
´
USTAV INTELIGENTN´ICH SYST ´
EM ˚
U
FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF INTELLIGENT SYSTEMSMANA ˇ
ZER STOLN´ICH DESKOV ´
YCH HER
BAKAL ´
A ˇ
RSK ´
A PR ´
ACE
BACHELOR’S THESIS
AUTOR PR ´
ACE
JI ˇ
R´I KUS ´
AK
AUTHOR
VYSOK ´
E U ˇ
CEN´I TECHNICK ´
E V BRN ˇ
E
BRNO UNIVERSITY OF TECHNOLOGY
FAKULTA INFORMA ˇ
CN´ICH TECHNOLOGI´I
´
USTAV INTELIGENTN´ICH SYST ´
EM ˚
U
FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF INTELLIGENT SYSTEMSMANA ˇ
ZER STOLN´ICH DESKOV ´
YCH HER
MANAGER FOR BOARD GAMESBAKAL ´
A ˇ
RSK ´
A PR ´
ACE
BACHELOR’S THESIS
AUTOR PR ´
ACE
JI ˇ
R´I KUS ´
AK
AUTHOR
VEDOUC´I PR ´
ACE
Ing. JAROSLAV ROZMAN
SUPERVISOR
Zad´
an´ı bakal´
aˇrsk´e pr´
ace
Manaˇ
zer stoln´ıch deskov´
ych her
Manager for Board Games
Vedouc´ı:
Rozman Jaroslav, Ing., UITS FIT VUT Oponent:
Jurka Pavel, Ing., UITS FIT VUT Pˇrihl´aˇsen:
Kus´ak Jiˇr´ı Zad´an´ı:
1. Sezn´amit se s nejˇcastˇejˇs´ımi hrami (piˇskvorky, reversi, d´ama, ˇsachy, GO). 2. Navrhnout program pro ˇr´ızen´ı hry dvou program˚u proti sobˇe.
3. Navrˇzen´y program implementovat vˇcetnˇe grafick´eho uˇzivatelsk´eho rozhran´ı. 4. Zhodnotit dosaˇzen´e v´ysledky.
Kategorie:
Umˇel´a inteligence Literatura:
Licenˇcn´ı smlouva
Licenˇcn´ı smlouva je uloˇzena v archivu Fakulty informaˇcn´ıch technologi´ı Vysok´eho uˇcen´ı technick´eho v Brnˇe.
Abstrakt
Hlavn´ım c´ılem pr´ace je navrˇzen´ı a realizace aplikace pro ˇr´ızen´ı dvou program˚u (hr´aˇc˚u) proti sobˇe. Z poˇc´atku v textu pojedn´av´am obecnˇeji o deskov´ych hr´ach (zvl´aˇstˇe jejich pravidlech) a syst´emech hodnocen´ı v´ykonnosti hr´aˇc˚u. Po tomto bloku n´asleduje kr´atk´e zhodnocen´ı aktu´aln´ıho stavu zpracov´avan´e problematiky. Stˇeˇzejn´ı ˇc´ast´ı pr´ace je ale popis n´avrhu a re-alizace vytvoˇren´e aplikace. Nato je uveden struˇcn´y popis ovl´ad´an´ı aplikace. V z´avˇeru jsou zhodnoceny dosaˇzen´e v´ysledky a naˇcrtnuty moˇzn´e dalˇs´ı smˇery v´yvoje programu.
Kl´ıˇcov´
a slova
manaˇzer, deskov´e hry, ˇsachy, d´ama, reversi, piˇskvorky, Go, C#, .NET, umˇel´a inteligence, ELO
Abstract
The main goal of this work is to design and realize an application for managing two programs playing against each other. At the beginning I’m discussing board games (especially their rules) and player’s skill rating systems. Then there is short analysis of the actual situation in this area. Fundamental part of the work is the description of the designing and realization of the manager. After that there is short description how to control the application. In the end I’m evaluating achieved results and proposing additional directions for the program development.
Keywords
Manager, Board Games, Chess, Checkers, Reversi, Gomoku, Go, C#, .NET, Artificial In-telligence, ELO
Citace
Manaˇzer stoln´ıch deskov´
ych her
Prohl´
aˇsen´ı
Prohlaˇsuji, ˇze jsem tuto bakal´aˇrskou pr´aci vypracoval samostatnˇe pod veden´ım pana Ing. Jaroslava Rozmana. Uvedl jsem vˇsechny liter´arn´ı prameny a publikace, ze kter´ych jsem ˇ cerpal. . . . . Jiˇr´ı Kus´ak 12. kvˇetna 2007
Podˇekov´
an´ı
Chtˇel bych podˇekovat vedouc´ımu pr´ace, Ing. Jaroslavu Rozmanovi, za inspiraci a spolehliv´e veden´ı. Rovnˇeˇz bych chtˇel ocenit jeho pˇr´ıstup k vz´ajemn´e spolupr´aci.
c
Jiˇr´ı Kus´ak, 2007.
Tato pr´ace vznikla jako ˇskoln´ı d´ılo na Vysok´em uˇcen´ı technick´em v Brnˇe, Fakultˇe in-formaˇcn´ıch technologi´ı. Pr´ace je chr´anˇena autorsk´ym z´akonem a jej´ı uˇzit´ı bez udˇelen´ı opr´avnˇen´ı autorem je nez´akonn´e, s v´yjimkou z´akonem definovan´ych pˇr´ıpad˚u.
Obsah
1 Uvod´ 3 2 Deskov´e hry 4 2.1 Historie her . . . 4 2.2 Dˇelen´ı her . . . 4 2.3 Pravidla . . . 5 2.3.1 Reversi . . . 5 2.3.2 ˇSachy . . . 6 2.3.3 D´ama . . . 7 2.3.4 Gomoku . . . 8 2.3.5 Go . . . 8 2.4 Hr´aˇci. . . 82.5 Poˇc´ıtaˇcov´e hran´ı . . . 8
3 Turnaje a hodnot´ıc´ı syst´emy 9 3.1 Syst´em ELO . . . 9
3.1.1 Matematick´e detaily . . . 10
3.2 Turnaje . . . 11
4 Souˇcasn´y stav problematiky 12 4.1 Brainy . . . 12
4.2 Rozhran´ı. . . 13
4.3 Komunikace . . . 13
4.4 Manaˇzery, GUI . . . 13
4.5 Turnaje . . . 14
5 N´avrh aplikace 15 5.1 Funkˇcnost programu . . . 15
5.2 Komunikace . . . 16 5.3 Turnaj . . . 18 5.4 Z´aznamy her . . . 18 5.5 N´apovˇeda . . . 19 5.6 GUI . . . 19 6 Realizace 20 6.1 Brain . . . 20 6.2 Datov´e struktury . . . 20
6.3.1 Komunikace . . . 22
6.3.2 Z´aznamy her . . . 22
6.3.3 N´apovˇeda . . . 23
6.3.4 Turnaj . . . 23
6.4 Pozn´amky . . . 24
7 Ovl´ad´an´ı programu 25 7.1 Samostatn´a hra . . . 25
7.2 Turnaj . . . 26
7.3 Z´aznamy her . . . 26
Kapitola 1
´
Uvod
Soupeˇren´ı na poli deskov´ych her m´a velmi dlouhou tradici. Jde nejˇcastˇeji o souboje dvou lid´ı, ale st´ale ˇcastˇeji m˚uˇzete zachytit zpr´avu o hˇre ˇclovˇeka proti poˇc´ıtaˇci nebo dokonce poˇc´ıtaˇc˚u proti sobˇe. Pr´avˇe posledn´ı zmiˇnovan´a moˇznost je pˇredmˇetem z´ajmu t´eto pr´ace. Inspirac´ı pro vznik t´eto pr´ace byla aktivita Gomocup, o kter´e se v´ıce dozv´ıte na webov´e adrese [3].
Ofici´aln´ı zad´an´ı pr´ace znˇelo:
1. Sezn´amit se s nejˇcastˇejˇs´ımi hrami (piˇskvorky, reversi, d´ama, ˇsachy, GO). 2. Navrhnout program pro ˇr´ızen´ı hry dvou program˚u proti sobˇe.
3. Navrˇzen´y program implementovat vˇcetnˇe grafick´eho uˇzivatelsk´eho rozhran´ı. 4. Zhodnotit dosaˇzen´e v´ysledky.
K tˇemto ofici´aln´ım poˇzadavk˚um se pak pˇrid´avaj´ı m´e osobn´ı c´ıle, kter´ych bych chtˇel dos´ahnout ˇreˇsen´ım projektu. Jde pˇredevˇs´ım o sezn´amen´ı se s programovac´ım jazykem C# a platformou .NET.
V n´asleduj´ıc´ı kapitole se nach´az´ı obecn´e pojedn´an´ı o deskov´ych hr´ach. Jde pˇredevˇs´ım o pravidla jednotliv´ych her, ale najdete tam i kr´atk´y pohled do historie, informace o dˇelen´ı her a poˇc´ıtaˇcov´em hran´ı. Ve tˇret´ı kapitole je nˇeco m´alo o turnaj´ıch, ale pˇredevˇs´ım se zde nal´ez´a detailn´ı rozbor syst´emu hodnocen´ı v´ykonnosti hr´aˇc˚u ELO. N´asleduje kapitola, kde se zab´yv´am souˇcasn´ym stavem v oblasti hran´ı deskov´ych her na poˇc´ıtaˇci.
D´ale je pak kapitola zab´yvaj´ıc´ı se popisem n´avrhu aplikace. Zde m˚uˇzete naj´ıt, jak´e vlastnosti by mˇel manaˇzer splˇnovat a jak´e funkce by mˇel m´ıt. Zde jsou n´avrhy ˇreˇsen´ı, kter´e byly n´aslednˇe v programu realizov´any. Najdete tu volby pouˇzit´ych technologi´ı a jejich zd˚uvodnˇen´ı. V dalˇs´ı kapitole pak je vlastn´ı technick´y popis ˇreˇsen´ı.
Osm´a kapitola pak obsahuje popis ovl´ad´an´ı programu, vˇcetnˇe ilustraˇcn´ıch obr´azk˚u. V z´avˇeru pak hodnot´ım dosaˇzen´e v´ysledky a navrhuji smˇery, kter´ymi by se mohl ub´ırat dalˇs´ı v´yvoj aplikace.
Kapitola 2
Deskov´
e hry
Deskov´e hry jsou takov´e hry, kter´e se hraj´ı s hern´ımi kameny nebo jin´ymi figurami, jeˇz se umist’uj´ı na (pˇremist’uj´ı po, odeb´ıraj´ı z) hern´ı desku. Tato deska b´yv´a velice ˇcasto jedno-znaˇcnˇe d´ana a pro konkr´etn´ı hru vytvarov´ana. Nˇekter´e hrac´ı desky jsou velice jednoduch´e (za vˇsechny uved’me tˇreba ˇsachovnici), nˇekter´e jsou naopak velmi komplikovan´e a rozs´ahl´e (toto se t´yk´a pˇredevˇs´ım novˇejˇs´ıch her, pˇr´ıkladem mohou b´yt tˇreba Osadn´ıci z Katanu). V t´eto pr´aci se vˇsak zab´yv´am jen klasick´ym´ı deskov´ymi hrami (pr´avˇe do t´eto kategorii spadaj´ı Go, gomoku, ˇsachy, d´ama a reversi), proto je n´asleduj´ıc´ı pojedn´an´ı zamˇeˇreno pr´avˇe na tyto hry.
2.1
Historie her
Zm´ınku o deskov´ych hr´ach m˚uˇzeme nal´ezt jiˇz u nejstarˇs´ıch civilizac´ı. Moˇzn´a nejstarˇs´ı des-kovou hrou je Senet. Je to egyptsk´a hra datovan´a do obdob´ı 3500 pˇr.n.l. Velmi star´a je i hra Go, kter´a vznikla v ˇC´ınˇe a prvn´ı zm´ınka o n´ı je ze 6.stolet´ı pˇr.n.l., gomoku je pak jeˇstˇe mladˇs´ı.
ˇ
Sachy, tak, jak je dnes zn´ame, se objevily aˇz v 15.stolet´ı n.l. Pˇresto (nebo moˇzn´a i kv˚uli tomu), ˇze je tato hra relativnˇe mlad´a, z´ıskala si vysokou popularitu a v souˇcasn´e dobˇe patˇr´ı mezi nejpopul´arnˇejˇs´ı deskov´e hry. Zjednoduˇsenou verz´ı ˇsach˚u je pak d´ama, kter´a se hraje na stejn´e hern´ı desce, avˇsak s jin´ymi pravidly (o pravidlech jednotliv´ych her se jeˇstˇe zm´ın´ım). Nejmladˇs´ı hrou z mnou zpracov´avan´e pˇetice je reversi. ˇCasto se m˚uˇzete tak´e setkat s oznaˇcen´ım Othello. Ostatnˇe fakt, ˇze jedna konkr´etn´ı hra je zn´ama pod nˇekolika n´azvy nen´ı nijak ojedinˇel´y. Hra reversi p˚uvodnˇe vznikla v Anglii na konci 19.stolet´ı, ovˇsem jej´ı souˇcasn´a pravidla byla vyhl´aˇsena aˇz v roce 1970 a to pr´avˇe pod n´azvem Othello.
2.2
Dˇ
elen´ı her
Deskov´e hry m˚uˇzeme dˇelit podle nˇekolika krit´eri´ı. Jedn´ım ze samozˇrejm´ych je poˇcet hr´aˇc˚u. Vˇetˇsina tradiˇcn´ıch deskov´ych her je pro dva hr´aˇce – vzpomeˇnme jiˇz zm´ınˇen´e Go, ˇsachy, d´amu, reversi, ale tˇreba i backgammon nebo Stratego. Naopak novˇejˇs´ı hry (ˇcasto nezaloˇzen´e na principu abstrakce) b´yvaj´ı pro v´ıce neˇz dva hr´aˇce - pˇr´ıkladem mohou b´yt tˇreba hry ”nˇemeck´eho typu“, kter´e jsou v souˇcasnosti velice obl´ıben´e. (Jsou v´ıce strategicky zamˇeˇren´e, ale ne natolik, aby to br´anilo m´enˇe strategicky zaloˇzen´ym hr´aˇc˚um v jejich hran´ı, obvykle jsou stˇrednˇe ˇcasovˇe n´aroˇcn´e – jejich partie nejsou z nejkratˇs´ıch, nejsou ani ne´unosnˇe dlouh´e a jako z´aklad, na kter´em stav´ı, si berou nˇejak´y aspekt re´aln´eho ˇzivota, takˇze nevyˇzaduj´ı
nijak zvl´aˇst’ vysokou ´uroveˇn abstrakce.) Z´astupci tohoto proudu deskov´ych her jsou tˇreba Osadn´ıc´ı z Katanu nebo Carcassonne.
Jin´ym moˇzn´ym dˇelen´ım je rozdˇelen´ı her na ty, kter´e jsou postaveny na prvku n´ahody a na ty, jeˇz jsou zaloˇzeny na ˇcistˇe strategick´ych principech. Hry zaloˇzen´e na n´ahodˇe jsou popul´arn´ı pˇredevˇs´ım u dˇet´ı. Takov´eto hry maj´ı pˇredevˇs´ım funkci z´abavnou a soutˇeˇzn´ı sloˇzka je aˇz druhoˇrad´a. Nicm´enˇe neplat´ı to zcela stoprocentnˇe - v´yjimkou mohou b´yt jiˇz zm´ınˇen´ı Osadn´ıci z Katanu. V t´eto hˇre je sice vˇse podˇr´ızeno n´ahodˇe (pˇridˇelov´an´ı surovin z´avis´ı na hodu ˇsestistˇennou kostkou), ale strategick´a sloˇzka je tak´e velice d˚uleˇzit´a.
Vyˇsˇs´ı oblibu u dospˇel´e ˇc´asti hr´aˇcsk´e populace si vˇsak z´ıskaly hry, kter´e neponech´avaj´ı ˇ
z´adn´y nebo jen minim´aln´ı pod´ıl n´ahodˇe. U takov´ych her je moˇzno plnˇe vyuˇz´ıt strategick´y potenci´al dan´eho hr´aˇce, aniˇz by byl jakkoliv sr´aˇzen prvkem n´ahody. Do t´eto kategorie tak´e spadaj´ı hry, pro kter´e je manaˇzer navrhov´an a jejichˇz zpracov´an´ı m´a znaˇcnou tradici v oboru umˇel´e inteligence.
Pro ´uplnost jeˇstˇe uvedu dˇelen´ı na hry, kter´e stav´ı na re´aln´em z´akladu a hry abstraktn´ı. Do t´e prvn´ı kategorie patˇr´ı kupˇr´ıkladu hra Monopoly, kter´a je z prostˇred´ı obchodu s nemo-vitostmi. Mnou zpracov´avan´e hry patˇr´ı do kategorie druh´e a to konkr´etnˇe do jej´ı podoblasti her strategick´ych. Do t´eto kategorie ale taky spadaj´ı hry se slovy (tˇreba Scrabble) a kv´ızov´e hry.
Pokud se o tˇechto vˇecech chcete dozvˇedˇet v´ıce, doporuˇcuji anglick´y materi´al [14], ze kter´eho jsem ˇcerpal i j´a.
2.3
Pravidla
Pravidla vˇetˇsiny zde zpracov´avan´ych her jsou velice dobˇre zn´ama i ˇsirok´e veˇrejnosti, pˇresto zde nˇekter´a z´akladn´ı (nebo naopak nˇekter´a nezn´am´a ˇci nedodrˇzovan´a) pravidla uvedu. Podrobn´e sezn´amen´ı s pravidly je ostatnˇe nutnou podm´ınkou k ´uspˇeˇsn´e realizaci tohoto projektu. Jen pokud jste si dokonale vˇedomi vˇsech pravidel dan´e hry a jajich d˚usledk˚u, m˚uˇzete vytvoˇrit program, kter´y se bude chovat spr´avnˇe.
2.3.1 Reversi
Reversi se tradiˇcnˇe hraje na desce o velikosti 8x8 pol´ı. Takovou desku si m˚uˇzete prohl´ednout napˇr´ıklad zde [18] nebo na obr´azku 7.1. Na zaˇc´atku partie se na hrac´ı desku poloˇz´ı ˇctyˇri kameny, jak je zn´azornˇeno na v´yˇse uveden´e webov´e adrese. Nˇekdy se ale hraje i na desce menˇs´ı o rozmˇerech 6x6 nebo na desce vˇetˇs´ı o rozmˇerech 10x10. Realizovan´y program poˇc´ıt´a jen s velikost´ı 8x8, pˇri troˇse ´usil´ı a pr´ace by ˇsel rozˇs´ıˇrit i o podporu pro hrac´ı pole jin´ych velikost´ı.
Hra se hraje s 64 kameny, kter´e jsou z jedn´e strany ˇcern´e a z druh´e b´ıl´e (za pˇredpokladu, ˇ
ze barvy hr´aˇc˚u jsou pr´avˇe tyto, coˇz je tradiˇcn´ı pˇr´ıstup, kter´y je v m´em programu zachov´an). Zaˇc´ın´a ˇcern´y hr´aˇc (toto pravidlo nen´ı ovˇsem v programu dodrˇzeno a to proto, aby se mohli hr´aˇc´ı stˇr´ıdat pˇri zaˇc´ın´an´ı, aniˇz by mˇenili svou identitu), hr´aˇci se pˇri taz´ıch stˇr´ıdaj´ı v s´erii tah˚u. Kaˇzd´y tah mus´ı splˇnovat tato kriteria:
• Hr´aˇc, kter´y je na tahu, um´ıst´ı nov´y k´amen sv´e barvy tak, aby t´ımto tahem zajal minim´alnˇe jeden k´amen spoupeˇre.
• Zajet´ım se mysl´ı obestoupen´ı soupeˇrov´ych kamen˚u kameny vlastn´ı barvy a jejich n´asledn´e otoˇcen´ı na druhou stranu (budou tedy m´ıt barvu hr´aˇce, kter´y zajet´ı prov´ad´ı).
• Toto zaj´ım´an´ı se prov´ad´ı ve vˇsech smˇerech, tedy svisle, vodorovnˇe i diagon´alnˇe. A to ve vˇsech smˇerech z´aroveˇn.
• Pokud hr´aˇc nem˚uˇze prov´est ˇz´adn´y tah podle pravidel, vzd´a se tahu. • Pokud hr´aˇc naopak m˚uˇze prov´est tah podle pravidel, prov´est jej mus´ı.
Hra konˇc´ı poloˇzen´ım vˇsech 64 kamen˚u na hrac´ı plochu. V´ıtˇez´ı hr´aˇc, kter´y m´a na desce v´ıce kamen˚u.
Pokud m´ate z´ajem o ofici´aln´ı ˇcesk´e znˇen´ı pravidel, mohu doporuˇcit [7]. Z tohoto zdroje jsem ˇcerpal informace i j´a.
2.3.2 ˇSachy
ˇ
Sachy se hraj´ı na ˇsachovnici o velikosti 8x8 pol´ı, pole maj´ı stˇr´ıdavˇe svˇetlou a tmavou barvu. ˇSachovnice i se z´akladn´ım postaven´ım figur je uk´az´ana na obr´azku 7.4na stranˇe28. Nebudu zde popisovat, jak vypadaj´ı figury, to si ostatnˇe m˚uˇzete prohl´ednou zde [11] spolu se spoustou dalˇs´ıch informac´ı o ˇsachu (str´anky jsou v angliˇctinˇe).
C´ılem hry je ohrozit soupeˇrova kr´ale takov´ym zp˚usobem, aby protihr´aˇc nemohl prov´est ˇ
z´adn´y tah, kter´ym by tuto hrozbu odvr´atil. Hr´aˇc, kter´y tohoto doc´ıl´ı dal mat soupeˇri a vyhr´av´a hru.
Striktnˇe podle pravidel zaˇc´ın´a vˇzdy b´ıl´y hr´aˇc, ale jak jiˇz bylo zm´ınˇeno v´yˇse toto pravidlo nen´ı v programu dodrˇzeno z d˚uvodu zachov´an´ı identity hr´aˇce. Pak se hr´aˇci v taz´ıch stˇr´ıdaj´ı, v kaˇzd´em tahu hr´aˇc pˇrem´ıst´ı jednu svoji figuru. Pravidla pro povolen´e tahy jsou zde:
• Figuru nelze pˇrem´ıstit na pozici, kde jiˇz m´a hr´aˇc jinou svoji figuru. Pˇrem´ıstit ji lze jen na voln´e pole nebo na pole obsazen´e protihr´aˇcem (v tomto pˇr´ıpadˇe prov´ad´ı takzvan´e bran´ı a odstran´ı soupeˇrovu figuru ze ˇsachovnice).
• D´amu lze pˇrem´ıstit na kter´ekoliv pole v ˇradˇe, ve sloupci nebo v ´uhlopˇr´ıˇcce. Nesm´ı vˇsak pˇreskoˇcit ˇz´adnou figuru (to plat´ı i pro ostatn´ı figury s v´yjimkou konˇe).
• Stˇrelce je moˇzno pˇresunout jen po ´uhlopˇr´ıˇcce.
• Tah vˇeˇz´ı se prov´ad´ı jen ve sloupci nebo v ˇradˇe, na kter´ych stoj´ı.
• K˚uˇn (jezdec) se pohybuje dvˇe pole ve sloupci nebo ˇradˇe, na kter´ych stoj´ı, a pak jedno pole doleva ˇci doprava ze smˇeru pohybu. Jezdec pˇreskakuje figury v cestˇe.
• Pro pˇeˇsce plat´ı hned nˇekolik pravidel:
1. M˚uˇze se posunout dopˇredu o jedno pole, pokud nen´ı obsazeno. 2. Ze sv´e startovn´ı pozice je moˇzno prov´est i tah dopˇredu o dvˇe pole.
3. M˚uˇze se pohnout i o jedno pole dopˇredu ve smˇeru ´uhlopˇr´ıˇcn´em, pokud je na nˇem figura soupeˇre a t´ım ji br´at.
4. M˚uˇze tak´e prov´est takzvan´e bran´ı mimochodem, kdy bere soupeˇrova pˇeˇsce, kter´y provedl tah o dvˇe pole a prvn´ı z nich bylo ohroˇzov´ano t´ımto pˇeˇscem. Takov´y tah je moˇzn´e prov´est jen tˇesnˇe po onom tahu soupeˇre.
5. Pokud se pˇeˇsec sv´ym pohybem dostane aˇz do nejvzd´alenˇejˇs´ı ˇrady, promˇen´ı se v d´amu, vˇeˇz, strelce nebo jezdce.
• Kr´al m˚uˇze jet o jedno pole ve vˇsech smˇerech, pokud ono pole nen´ı ohroˇzov´ano soupeˇrem. Alternativnˇe m˚uˇze prov´est takzvanou roˇs´adu (v´ıce se o t´eto moˇznosti m˚uˇzete dozvˇedˇet zde [5]). Kr´al je v ˇsachu, jestliˇze je ohroˇzov´an alespoˇn jednou fi-gurou protihr´aˇce.
• Hr´aˇc nesm´ı prov´est tah, kter´ym by vystavil sv´eho kr´ale ˇsachu.
Partie konˇc´ı bud’ v´ıtˇezstv´ım hr´aˇce, kter´y dal mat, nebo m˚uˇze skonˇcit nerozhodnˇe. Ne-rozhodn´a je pokud hr´aˇc na tahu nem˚uˇze prov´est tah podle pravidel (situace se naz´yv´a pat ). Partie m˚uˇze b´yt nerozhodn´a, pokud posledn´ıch 50 tah˚u nebyl br´an ˇz´adn´y k´amen a souˇcasnˇe nebylo taˇzeno pˇeˇscem.
Na webov´e str´ance s ofici´aln´ımi pravidly ˇsachu (naleznete zde [5]) jsou zm´ınˇena jeˇstˇe jin´a pravidla, kter´a jsou ovˇsem aplikovateln´a pouze na lidsk´e hr´aˇce. Pro hru dvou program˚u nemaj´ı v´yznam.
2.3.3 D´ama
Hned na ´uvod je tˇreba zm´ınit, ˇze pravidla d´amy se v jednotliv´ych zem´ıch liˇs´ı. Zde uveden´a pravidla jsou pravidla takzvan´e ˇcesk´e d´amy. Tˇemito pravidly se tak´e ˇr´ıd´ı navrˇzen´y program. Hra se hraje na ˇsachovnici o velikosti 8x8 pol´ı podobnˇe jako ˇsachy. Deska m´a i stejn´e znaˇcen´ı. Mal´e vyjasnˇen´ı pojm˚u: d´ama se hraje se dvˇema typy figur – kameny a d´amami. K´amen se st´av´a d´amou, jakmile dos´ahne nejvzd´alenejˇs´ı ˇrady.
Ani u t´eto hry nen´ı dodrˇzeno pravidlo zaˇc´ınaj´ıc´ıho hr´aˇce. Pro pohyb figur plat´ı n´ asle-duj´ıc´ı pravidla:
• Vˇsechny figury se pohybuj´ı jen po diagon´al´ach.
• K´amen se pohybuje jen vpˇred po diagon´ale na voln´e sousedn´ı pole.
• D´ama se pohybuje po diagon´ale libovolnˇe. Libovolnˇe daleko a libovoln´ym smˇerem. • K´amen prov´ad´ı bran´ı, jestliˇze je pˇred n´ım k´amen ciz´ı barvy a za t´ımto kamenem voln´e
pole. Pokud je za t´ımto voln´ym polem dalˇs´ı k´amen soupeˇre, opakuje se bran´ı. To m˚uˇze pokraˇcovat tak dlouho, neˇz se k´amen ocitne v posledn´ı ˇradˇe.
• Pokud se k´amen ocitne v posledn´ı ˇradˇe, st´av´a se d´amou a tah konˇc´ı.
• D´ama prov´ad´ı bran´ı, pokud je na stejn´e diagon´ale jako figura soupeˇre a za n´ı alespoˇn jedno voln´e pole.
• Zabran´e figury se odstraˇnuj´ı z desky. • ˇZ´adn´a figura nem˚uˇze b´yt br´ana dvakr´at.
• Bran´ı figur je povinn´e. Pokud hr´aˇc m˚uˇze bran´ı prov´est, mus´ı jej uskuteˇcnit.
• Plat´ı taky pravidlo o pˇrednosti bran´ı d´amou. Pokud m´a hr´aˇc moˇznost prov´est bran´ı d´amou a souˇcasnˇe kamenem, mus´ı jej prov´est d´amou.
Podrobnˇejˇs´ı pravidla naleznete na tomto webu [6]. Nach´az´ı se tam i pravidla takzvan´e mezin´arodn´ı d´amy. Pˇri dalˇs´ım moˇzn´em v´yvoji programu by jistˇe nebylo ˇspatn´e rozˇs´ıˇrit jej o moˇznost hr´at tuto verzi d´amy.
2.3.4 Gomoku
Hra je v ˇcesk´em prostˇred´ı zn´ama sp´ıˇse pod n´azvem piˇskvorky a hraje se vetˇsinou na ˇ
ctvereˇckovan´em pap´ıˇre pouze s tuˇzkou. Pravidla jsou velice jednoduch´a. C´ılem hry je vy-tvoˇrit na hrac´ı ploˇse souvislou ˇradu pˇeti vlastn´ıch kamen˚u (tˇemito
”kameny“ jsou vˇetˇsinou koleˇcka a kˇr´ıˇzky) a to ve vˇsech smˇerech (horizont´alnˇe, vertik´alnˇe i diagon´alnˇe). Podrobn´a pravidla i s rozborem hry naleznete napˇr´ıklad zde [15].
2.3.5 Go
Pravidla hry Go jsou ponˇekud sloˇzitˇejˇs´ı neˇz u pˇredchoz´ıch her a k jejich pochopen´ı jsou nutn´e zejm´ena diagramy zn´azorˇnuj´ıc´ı r˚uzn´e hern´ı situace. Takov´e vysvˇetlen´ı by bylo prostorovˇe n´aroˇcn´e, proto V´as odk´aˇzi na internetov´e str´anky [10] a [20], kde naleznete vˇsechny potˇrebn´e informace.
2.4
Hr´
aˇ
ci
Ve standardn´ım ch´ap´an´ı deskov´ych her si ˇclovˇek jistˇe pˇredstav´ı jin´e dva lidi sed´ıc´ı u hrac´ı desky a hraj´ıc´ı nˇejakou hru. Z pohledu umˇel´e inteligence je hr´aˇcem poˇc´ıtaˇcov´y program (ne-mus´ı j´ıt vˇzdy o samostatnou aplikaci, m˚uˇze se jednat kupˇr´ıkladu o nˇejak´y skript v urˇcit´em jazyce), kter´y komunikuje s jin´ym podobn´ym programem. Pˇredstavu, jak takov´y brain (program ˇr´ızen´y umˇelou inteligenc´ı, kter´y hraje urˇcitou hru; tento n´azev bude d´ale v tomto v´yznamu pouˇz´ıv´an a lze jej nal´ezt v cizojazyˇcn´e literatuˇre, kter´a se t´ımto zab´yv´a) vypad´a m˚uˇzete z´ıskat po pˇreˇcten´ı sekce 4.1.
2.5
Poˇ
c´ıtaˇ
cov´
e hran´ı
Poˇc´ıtaˇcov´e hran´ı je jiˇz pomˇernˇe star´a z´aleˇzitost a existuje velmi mnoho postup˚u a metod jeˇz se zde vyuˇz´ıvaj´ı. Nˇekter´e jednoduch´e hry jsou v dneˇsn´ı dobˇe (dostatek v´ypoˇcetn´ıho v´ykonu) ˇreˇsiteln´e pomoc´ı pomˇernˇe snadn´ych metod, kter´e ale s re´aln´ym myˇslen´ım nemaj´ı mnoho spoleˇcn´eho. Jde hlavnˇe o prohled´av´an´ı stavov´eho prostoru. Pouˇz´ıvaj´ı se takov´e metody jako mini-max nebo alfa-beta.
Tyto techniky mohou ale v rozumn´em ˇcase funguvat jen v pˇr´ıpadˇe, ˇze prohled´avan´y stavov´y prostor nen´ı pˇr´ıliˇs velk´y. Dobˇre se proto hod´ı pro ˇsachy, d´amu nebo reversi. Pokud se hra hraje na vetˇs´ı desce (kupˇr´ıkladu standardn´ı Go na desce o velikosti 19x19 pol´ı), roste velikost stavov´eho prostoru znaˇcnou rychlost´ı. V tˇechto pˇr´ıpadech je nutn´e pouˇz´ıt jin´e, pokroˇcilejˇs´ı techniky.
Prvn´ım krokem b´yv´a zaveden´ı urˇcit´ych heuristik s c´ılem omezit poˇcet moˇznost´ı k pro-hled´av´an´ı. D´ale se zde uplatˇnuj´ı postupy jako hled´an´ı vzor˚u nebo zaˇclenˇen´ı nˇejak´e zna-lostn´ı b´aze. Trochu jin´ym pˇr´ıstupem je aplikov´an´ı metody Monte-Carlo. Doch´az´ı i k uˇzit´ı prostˇredk˚u strojov´eho uˇcen´ı – uplatn´ı se zde neuronov´e s´ıtˇe a genetick´e algoritmy.
Jin´ym probl´emem je v˚ubec nalezen´ı dostateˇcnˇe kvalitn´ı vyhodnocovac´ı funkce, tedy funkce pro ohodnocen´ı vhodnosti tahu. Nˇekdy je takov´a funkce zˇrejm´a (napˇr. u hry reversi), v jin´ych pˇr´ıpadech bylo tˇreba intenzivn´ıho testov´an´ı. Nˇekde nen´ı optim´aln´ı funkce zn´ama ani dnes (Go).
Zat´ımco nˇekter´e hry se z hlediska umˇel´e inteligence povaˇzuj´ı za kompletnˇe vyˇreˇsen´e, jin´e zat´ım odol´avaj´ı – pˇredevˇs´ım zm´ınˇen´e Go.
Kapitola 3
Turnaje a hodnot´ıc´ı syst´
emy
Abychom mohli nˇejak´ym zp˚usobem mˇeˇrit v´ykonnost jednotliv´ych hr´aˇc˚u, mus´ıme si stanovit nˇejak´y hodnot´ıc´ı syst´em. Existuje velmi mnoho r˚uzn´ych hodnot´ıc´ıch syst´em˚u, kter´e jsou pouˇz´ıv´any r˚uzn´ymi organizacemi k r˚uzn´ym ´uˇcel˚um. T´emˇeˇr kaˇzd´a v´yznamn´a sportovn´ı or-ganizace provozuje sv˚uj vlastn´ı syst´em hodnocen´ı. Jmenuji napˇr´ıklad syst´em, kter´y pouˇz´ıv´a organizace FIFA, nebo syst´em provozovan´y profesion´aln´ı tenisovou organizac´ı ATP.
Nejpopul´arnˇejˇs´ı a tak´e nejv´ıce oceˇnovan´e syst´emy jsou dnes ty, jeˇz nˇejak´ym zp˚usobem stavˇej´ı na syst´emu ELO. Tento syst´em bude podrobnˇeji pops´an v n´asleduj´ıc´ı kapitole. Vy-lepˇsen´ı pr´avˇe tohoto syst´emu profesorem Markem Glickmanem pak vznikly syst´emy Glicko a Glicko-2, kter´e ho rozˇs´ıˇrily o promˇennou, kter´a mˇeˇr´ı spolehlivost hodnocen´ı. V´ıce je ro-zeb´ırat nebudu, dalˇs´ı informace m˚uˇzete z´ıskat na t´eto str´ance [16]. Jin´ym syst´emem, kter´y stav´ı na ELO, je TrueSkill. Tento syst´em byl navrˇzen spoleˇcnost´ı Microsoft pro jeho sluˇzbu Xbox Live a i jeho z´akladem je syst´em ELO. Snaˇz´ı se o to, aby se daly rychle identifikovat hr´aˇcovy schopnosti (v nˇekter´ych pˇr´ıpadech jen bˇehem 3-6 z´apas˚u) a pak jeho schopnosti n´aleˇzitˇe monitorovat. Pro v´ıce informac´ı navˇstivte tuto str´anku [9].
3.1
Syst´
em ELO
Hodnot´ıc´ı syst´em ELO byl navrˇzen Arpadem Elem, americk´ym profesorem fyziky poch´ aze-j´ıc´ım z Mad’arska. N´azev syst´emu je tedy odvozen od jm´ena jeho tv˚urce. Ten byl nespokojen s tehdejˇs´ım hodnot´ıc´ım syst´emem, kter´y pouˇz´ıvala ˇsachov´a organizace USCF (United States Chess Federation), a proto navrhl sv˚uj syst´em, kter´y se snaˇzil nedostatky pˇredchoz´ıho syst´emu ˇreˇsit.
Syst´em je zaloˇzen na statistick´em z´akladu (narozd´ıl od sv´eho pˇredch˚udce, kter´y byl zaloˇzen na syst´emu odmˇen). Syst´em zaloˇzen´y na principu odmˇen hr´aˇce odmˇeˇnuje za kaˇzdou v´yhru, rem´ızu nebo prohru udˇelen´ım bod˚u, kter´e se n´aslednˇe pˇriˇctou k jejich aktu´aln´ımu bodov´emu hodnocen´ı. Celkov´e bodov´e hodnocen´ı nen´ı poˇc´ıt´ano od zaˇc´atku kari´ery dan´eho hr´aˇce, ale m´a jist´e ˇcasov´e omezen´ı (napˇr´ıklad hodnocen´ı organizace FIFA je v souˇcasn´e dobˇe prov´adˇeno za obdob´ı uplynul´ych ˇctyˇr let).
Profesor Elo navrhl syst´em, kter´y se snaˇz´ı hodnotit skuteˇcn´e schopnosti hr´aˇce. Usuzoval, ˇ
ze v´ykonnost hr´aˇce se ˇr´ıd´ı norm´aln´ım rozdˇelen´ım a zmˇena v´ykonnosti prob´ıh´a jen velmi pomalu. V ˇsachu (stejnˇe jako v jin´ych hr´ach a sportech) je vˇsak obt´ıˇzn´e nˇejak´ym zp˚usobem urˇcit pˇr´ımo hr´aˇcovu v´ykonnost, stejnˇe mus´ı b´yt pouˇzito hodnocen´ı odv´ıjej´ıc´ı se od v´yher, proher a rem´ız.
pak daj´ı pochopit dalˇs´ı fakta. Pˇredpokl´adejme, ˇze spolu hraj´ı dva hr´aˇci nestejn´e v´ykonnosti. Jestliˇze vyhraje silnˇejˇs´ı (ten, kter´y mˇel pˇred z´apasem vyˇsˇs´ı hodnocen´ı), pak se nov´e hodno-cen´ı hr´aˇc˚u pˇr´ıliˇs nezmˇen´ı. Silnˇejˇs´ı hr´aˇc sice m˚uˇze z´ıskat p´ar bod˚u hodnocen´ı nav´ıc (stejnˇe jako slabˇs´ı p´ar bod˚u ztratit; to z´avis´ı na rozd´ılu p˚uvodn´ıch hodnocen´ı), ale bude to zmˇena sp´ıˇse kosmetick´a.
Jestliˇze ale silnˇejˇs´ı hr´aˇc prohraje, pak je jeho souˇcasn´e hodnocen´ı povaˇzov´ano za nad-hodnocen´e a on ztrat´ı relativnˇe v´ıce bod˚u neˇz kolik by z´ıskal v pˇr´ıpadˇe v´yhry. Podobnˇe slabˇs´ı hr´aˇc v pˇr´ıpadˇe v´yhry z´ısk´a relativnˇe vysok´y poˇcet bod˚u, protoˇze je zˇrejmˇe jeho hodnocen´ı niˇzˇs´ı neˇz by odpov´ıdalo skuteˇcnosti. Tento syst´em ohodnocen´ı vych´az´ı z pˇredpokladu, ˇze hr´aˇc, kter´y vyhr´al by mˇel m´ıt vyˇsˇs´ı hodnocen´ı neˇz hr´aˇc, kter´y prohr´al. Pokud tomu tak nen´ı, upravuj´ı se hodnocen´ı hr´aˇc˚u patˇriˇcn´ym smˇerem, jak bylo vysvˇetleno.
K aplikov´an´ı bodov´ych pˇr´ır˚ustk˚u a ztr´at m˚uˇze b´yt pˇrikroˇceno po kaˇzd´em hodnocen´em z´apase nebo m˚uˇze b´yt prov´adˇeno v pˇredem stanoven´ych ˇcasov´ych intervalech, pˇr´ıpadnˇe po jist´ych ud´alostech.
Syst´em samozˇrejmˇe nen´ı ide´aln´ı a, jak bylo zm´ınˇeno v´yˇse, existuj´ı i jeho vylepˇsen´e varianty. Pˇrin´aˇs´ı napˇr´ıklad nˇekter´e nechtˇen´e soci´aln´ı faktory, kter´e se ale t´ykaj´ı pˇredevˇs´ım lidsk´ych hr´aˇc˚u. Jelikoˇz je z glob´aln´ıho pohledu na vˇec tento syst´em pomˇernˇe pˇresn´y a splˇnuje i jin´e poˇzadavky (jako je relativn´ı jednoduchost a n´azornost), byl vybr´an i pro hodnocen´ı brain˚u v realizovan´em programu.
3.1.1 Matematick´e detaily
Jiˇz bylo zm´ınˇeno v´yˇse, ˇze v´ykonnost nelze mˇeˇrit absolutnˇe. Kaˇzd´e hodnocen´ı m´a v´yznam jen v porovn´an´ı s jin´ym. Parametry a konstanty si proto m˚uˇzeme libovolnˇe zvolit. U syst´emu ELO, kter´y je pouˇz´ıv´an organizac´ı FIDE (F´ed´eration Internationale des ´Echecs), jsou na-staveny tak, aby hr´aˇc, kter´y m´a o 200 bod˚u vyˇsˇs´ı hodnocen´ı neˇz protihr´aˇc, mˇel oˇcek´avanou pravdˇepodobnost v´yhry 0,75 %. V realizovan´em programu jsou tyto parametry nastaveny obdobnˇe.
Fungov´an´ı cel´eho syst´emu je n´asleduj´ıc´ı:
1. Pro kaˇzd´eho hr´aˇce se vypoˇcte oˇcek´avan´y v´ysledek z´apasu podle n´asleduj´ıc´ıho vzorce:
H
o=
1
1 + 10
HB−HA400(3.1)
• Ho. . . oˇcek´avan´y v´ysledek
• HA. . . p˚uvodn´ı ELO hodnocen´ı hr´aˇce
• HB. . . p˚uvodn´ı ELO hodnocen´ı protihr´aˇce
2. Re´aln´y v´ysledek hry je 1 pro v´yhru, 0,5 pro rem´ızu a 0 pro prohru. 3. Nov´e ELO hodnocen´ı se pak vypoˇcte podle tohoto vzorce:
H
n= H
A+ K ∗ (H
s− H
o)
(3.2)
• Hn. . . nov´e hodnocen´ı
• HA. . . p˚uvodn´ı hodnocen´ı
• Hs. . . skuteˇcn´y v´ysledek
• Ho. . . oˇcek´avan´y v´ysledek
Zb´yv´a jeˇstˇe osvˇetlit parametr K, naz´yvan´y faktor zmˇeny. V´ıme, ˇze hodnoty oˇcek´avan´eho v´ysledku Ho a skuteˇcn´eho v´ysledku Hs se pohybuj´ı v rozmez´ı 0 aˇz 1, a proto koeficient K
urˇcuje maxim´aln´ı moˇzn´y pˇr´ır˚ustek nebo ´ubytek bod˚u po jednom z´apase. Tento koeficient b´yv´a nˇekdy r˚uzn´y pro nov´aˇcky (hr´aˇci, kteˇr´ı odehr´ali m´enˇe z´apas˚u neˇz je stanoven´y limit), nˇekdy se mˇen´ı podle aktu´aln´ı hodnoty ELO kaˇzd´eho hr´aˇce. ˇZ´adn´e takov´e modifikace koefi-cientu ve sv´em programu neprov´ad´ım (specifikaci m´ych nastaven´ı syst´emu se doˇctete v ˇc´asti 5.3).
Nov´e ELO hodnocen´ı m˚uˇze b´yt poˇc´ıt´ano po kaˇzd´em z´apase zvl´aˇst’, coˇz je ale tˇreba pˇri turnaj´ıch diskutabiln´ı a nepˇr´ıliˇs spravedliv´e. Proto je moˇzn´e aktualizaci hodnocen´ı prov´est aˇz po odehr´an´ı vˇsech her turnaje. V takov´em pˇr´ıpadˇe se seˇctou oˇcek´avan´e v´ysledky (stejnˇe tak i ty re´aln´e) a daj´ı tak jednu hodnotu, kter´a se pak dosad´ı do rovnice3.2. Nov´e hodnocen´ı je pak vypoˇcteno standardn´ım zp˚usobem. Tento zp˚usob hodnocen´ı ostatnˇe pouˇz´ıv´am ve sv´em programu.
Syst´em ELO m˚uˇze b´yt aplikov´an na vˇsechny hry a sporty, ve kter´ych jsou moˇzn´ymi v´ysledky v´yhra, prohra nebo rem´ıza. Detailn´ı informace m˚uˇzete naj´ıt na webu [12].
3.2
Turnaje
Turnajov´a kl´an´ı pˇredstavuj´ı vˇzdycky moˇznost zahr´at si s kvalitn´ımi hr´aˇci a otestovat svoje schopnosti. Toto plat´ı pro lidsk´e hr´aˇce i pro poˇc´ıtaˇcov´e programy (potaˇzmo jejich tv˚urce). Rovnˇeˇz je to pˇr´ıleˇzitost posunout se v pˇr´ıpadˇe ´uspˇeˇsn´ych her znaˇcnˇe vzh˚uru na ˇzebˇr´ıˇcku.
Syst´emy, jak´ymi je moˇzn´e organizovat turnaj jsou jistˇe vˇseobecnˇe zn´am´e. Jen pro pˇrehled nˇekter´e uvedu:
• Kaˇzd´y s kaˇzd´ym – asi nejspravedlivˇejˇs´ı syst´em • Na jednu por´aˇzku – taky naz´yvan´y K.O.
• Na dvˇe por´aˇzky – kaˇzd´y z´apas se hraje na dvˇe v´ıtˇezn´e hry • ˇSv´ycarsk´y syst´em – specifick´y syst´em, lze zn´at z ˇsachu
Vzhledem k tomu, ˇze turnaj se odehr´av´a na poˇc´ıtaˇci, kde je moˇzn´e hr´at nˇekolik z´apas˚u paralelnˇe a rychlost hran´ı z´apas˚u b´yv´a u brain˚u zpravidla drasticky vyˇsˇs´ı neˇz u lidsk´ych hr´aˇc˚u, je nejrozumnˇejˇs´ı volbou syst´em kaˇzd´y s kaˇzd´ym. Jeho nev´yhodou je velk´y poˇcet z´apas˚u, kter´e je nutn´e odehr´at, ale to pˇri poˇc´ıtaˇcov´em zpracov´an´ı nen´ı na pˇrek´aˇzku.
V´yˇse zm´ınˇen´y pˇrehled byl pˇrevzat z webu [2]. Poˇr´ad´an´ı turnaj˚u umˇel´ych inteligenc´ı v hran´ı deskov´ych her je pomˇernˇe pˇekn´ym zvykem a nˇeco v´ıce se o tomto m˚uˇzete doˇc´ıst v sekci4.5.
Kapitola 4
Souˇ
casn´
y stav problematiky
Souˇcasn´y stav na poli umˇel´ych inteligenc´ı hraj´ıc´ıch nˇejakou deskovou hru je velice r˚uznorod´y. Pro kaˇzdou hru existuj´ı programy, kter´e zpravidla umoˇzˇnuj´ı hru ˇclovˇeka proti umˇel´e inte-ligenci (brainu), kter´a se za on´ım programem skr´yv´a. Nˇekdy tyto programy tak´e umoˇzˇnuj´ı spojen´ı s manaˇzerem (program, kter´y umoˇzˇnuje hran´ı dvou brain˚u proti sobˇe, obvykle po-skytuje grafick´y v´ystup z takov´e hry) nebo s jin´ym kompatibiln´ım programem. Existuje nˇekolik r˚uzn´ych zp˚usob˚u realizace vz´ajemn´e komunikace, nˇekter´e jsou jedineˇcn´e (defacto jsou vym´yˇsleny v r´amci aktivity jednoho autora), nˇekter´e se snaˇz´ı poskytnout robustnˇejˇs´ı a univerz´alnˇejˇs´ı ˇreˇsen´ı.
4.1
Brainy
Z pohledu ˇreˇsen´ı projektu nen´ı nijak z´asadn´ı m´ıt pˇrehled o vˇsemoˇzn´ych programech, kter´e byly kdy vytvoˇreny pro hran´ı nˇejak´e deskov´e hry, pˇresto je zaj´ımav´e sledovat, jak´e programy a kdy byly vytv´aˇreny, jak´e byly jejich moˇznosti a proveden´ı.
Seznam progr´amk˚u, kter´e hraj´ı reversi (tak´e zn´amo pod n´azvem Othello, jak bylo zm´ınˇeno v´yˇse) m˚uˇzete nal´ezt napˇr´ıklad zde [8]. Na str´ance naleznete mnoho takov´ych pro-gram˚u. Nejnovˇejˇs´ı jsou sice skoro pˇet let star´e, ale pro pˇredstavu to staˇc´ı. Je vidˇet, ˇze se tvorbou takov´eho programu zab´yvali a zab´yvaj´ı r˚uzn´ı autoˇri po cel´em svˇetˇe jiˇz pomˇernˇe dlouhou dobu. Pˇrev´aˇznˇe se jedn´a o amat´ersk´e pr´ace nebo ˇskoln´ı v´ytvory. (Takov´a je ostatnˇe situace u kaˇzd´e zde zm´ınˇen´e hry.) M˚uˇzeme tam nal´ezt textov´e programy pˇrev´aˇznˇe pro operaˇcn´ı syst´em DOS, ale i pro starˇs´ı syst´emy a platformy. Stejnˇe tam tam jsou programy novˇejˇs´ı s ´uˇceln´ym grafick´ym uˇzivatelsk´ym rozhran´ım, pracuj´ıc´ı pod syst´emem Windows nebo na poˇc´ıtaˇc´ıch Mac.
Moˇzn´a nejzn´amˇejˇs´ım reversi programem je Logistello (ofici´aln´ı str´anku naleznete zde [1]). Jedn´a se o velmi sofistikovan´y software, kter´y proˇsel dlouh´ym v´yvojem, ale d´ale jiˇz nen´ı intenzivnˇe vyv´ıjen a jeho zdrojov´y k´od je volnˇe k dispozici. Kaˇzd´y z´ajemce o tuto problema-tiku m´a moˇznost do tohoto k´odu nahl´ednout a nechat se inspirovat. Program komunikuje bud’ prosˇrednictv´ım souborov´eho syst´emu, nebo prostˇrednictv´ım socket˚u a protokolu IOS, kter´y je ale v souˇcasn´e dobˇe jiˇz zastaral´y.
ˇ
Sachy jsou hra popul´arnˇejˇs´ı, takˇze jste o nˇejak´em poˇc´ıtaˇci hraj´ıc´ım ˇsachy urˇcitˇe museli slyˇset (kupˇr´ıkladu Deep Blue). Seznam takov´ych program˚u a stroj˚u naleznete na webu [19]. Nejsilnˇejˇs´ı ˇsachov´e programy jiˇz por´aˇzej´ı lidsk´e ˇsachov´e velmistry, takˇze v´ykonnost tˇechto program˚u je zjevnˇe velk´a. To ovˇsem nebr´an´ı hran´ı dvou program˚u proti sobˇe, zvl´aˇstˇe na amat´ersk´e ´urovni. V ˇsachov´em odvˇetv´ı vznikaj´ı i velice profesion´aln´ı programy s
propraco-van´ym grafick´ym rozhran´ım, kter´e tˇreba umoˇzˇnuj´ı nahr´av´an´ı r˚uzn´ych brain˚u.
D´ama m´a v oblasti umˇel´e inteligence podstatnˇe menˇs´ı popularitu, pˇresto i zde existuje nˇekolik velmi kvalitn´ıch program˚u. Na webu [13] v sekci Non-human players naleznete jejich seznam a odkazy na dalˇs´ı informace.
Piˇskvorky (v origin´ale Gomoku) se z pohledu umˇel´e inteligence povaˇzuj´ı na ploˇse 15x15 za vyˇreˇsen´e, proto je z´ajem o nˇe z profesion´aln´ıho hlediska velmi slab´y. Na amat´ersk´e ´
urovni ale jist´y z´ajem nal´ezt m˚uˇzeme. Za zm´ınku napˇr´ıklad stoj´ı aktivita zm´ınˇen´a na tˇechto str´ank´ach [3], kter´a byla ostatnˇe jist´ym vzorem i pro tvorbu tohoto programu. V sekci download naleznete celou ˇradu takov´ych program˚u ke staˇzen´ı.
Situace u hry Go je podobn´a jako u pˇredchoz´ıch her, nicm´enˇe hra samotn´a je pro poˇc´ıtaˇcov´e zpracov´an´ı pomˇernˇe n´aroˇcn´a a ´uspˇeˇsnˇe odol´av´a metodˇe brut´aln´ı s´ıly, kter´a je napˇr´ıklad velmi ´uspˇeˇsn´a u ˇsachu. Nˇekter´e z tˇechto probl´em˚u jsem jiˇz rozvedl v sekci 2.5. Seznam takov´ych program˚u naleznete napˇr´ıklad na webu [17].
4.2
Rozhran´ı
Zde nen´ı m´ınˇeno rozhran´ı komunikace s jin´ymi brainy (toto je rozebr´ano v n´asleduj´ıc´ı sekci), ale rozhran´ı komunikace s uˇzivatelem. Nˇekter´e brainy jsou zabaleny do vlastn´ıho programu, kter´y je urˇcen pro hran´ı s lidsk´ym oponentem. Takov´e programy maj´ı (zvl´astˇe v dneˇsn´ı dobˇe) velice ˇcasto propracovan´e grafick´e uˇzivatelsk´e rozhran´ı. Pouze starˇs´ı programy tohoto typu jsou zaloˇzeny textovˇe.
Nˇekter´e brainy jsou ale urˇceny ˇcistˇe k hran´ı proti jin´ym podobn´ym brain˚um a jsou obvykle tvoˇreny jen mysl´ıc´ım j´adrem a komunikaˇcn´ım rozhran´ım.
4.3
Komunikace
Jak jste se mohli pˇresvˇedˇcit v sekci 4.1, existuje opravdu velk´e mnoˇzstv´ı brain˚u, kter´e komunikuj´ı r˚uzn´ymi zp˚usoby. Objevuje se zde pˇredevˇs´ım komunikace prostˇrednictv´ım sou-borov´eho syst´emu a prostˇrednictv´ım socket˚u, ale lze nal´ezt i komunikaci skrze roury (angl. pipes).
V posledn´ı dobˇe se v´ıce prosazuje komunikace pomoc´ı socket˚u (nebo jin´y zp˚usob s´ıt’ov´e komunikace). Tento zp˚usob je zˇrejmˇe nejpruˇznˇejˇs´ı a poskytuje nejvˇetˇs´ı funkˇcnost. Lze takto komunikovat lok´alnˇe i ˇs´ıt’ovˇe stejn´ym zp˚usobem. I z tˇechto d˚uvod˚u byl tento zp˚usob vybr´an pro tento projekt.
4.4
Manaˇ
zery, GUI
Pro ˇradu her existuj´ı programy, kter´e samy o sobˇe neobsahuj´ı ˇz´adnou umˇelou inteligenci, ale umoˇzˇnuj´ı graficky zn´azorˇnovat pr˚ubˇeh z´apasu. Vˇetˇsinou tak´e umoˇzˇnuj´ı hry zaznamen´avat a n´aslednˇe opakovanˇe pˇrehr´avat. (Ostatnˇe pro nˇekter´e hry existuj´ı z´aznamy her v nˇekter´em z hern´ıch form´at˚u – tˇreba SGF (Smart Game Format) – volnˇe ke staˇzen´ı.) Takov´ym pro-gram˚um m˚uˇzeme ˇr´ıkat manaˇzery.
4.5
Turnaje
I pro umˇel´e inteligence se poˇr´adaj´ı turnaje. Prostˇrednictv´ım sv´ych brain˚u vlastnˇe soutˇeˇz´ı jejich autoˇri a proto turnajov´a kl´an´ı neztr´acej´ı soutˇeˇziv´y charakter. S organizov´an´ım tur-naj˚u pro poˇc´ıtaˇcov´e programy se m˚uˇzeme setkat ˇc´ım d´al ˇcastˇeji. Dokonce existuje ud´alost nazvan´a Computer Olympiad (v´ıce se m˚uˇzete doˇc´ıst zde [4]).
Takov´e turnaje se ale poˇr´adaj´ı ˇcastˇeji a existuje jich cel´a ˇrada. Nˇekter´e maj´ı opravdu me-zin´arodn´ı jm´eno, nˇekter´e tak zn´am´e nejsou. Souvis´ı to i s hrou, ve kter´e je turnaj poˇr´ad´an. ˇ
Sachov´e turnaje maj´ı znaˇcnˇe vˇetˇs´ı popularitu i obsazovanost neˇz turnaje v piˇskvork´ach. O tom, ˇze existuj´ı i mal´e a mezin´arodnˇe t´emˇeˇr nezn´am´e turnaje, svˇedˇc´ı mimo jin´e i exis-tence jiˇz zm´ınˇen´eho Gomocupu, jehoˇz str´anky m˚uˇzete nal´ezt zde [3]. Pr´avˇe pro poˇr´ad´an´ı podobn´eho turnaje by mohla b´yt urˇcena mnou navrˇzen´a aplikace.
Kapitola 5
N´
avrh aplikace
Kdyˇz jsme se sezn´amili se vˇsemi d˚uleˇzit´ymi fakty a ujasnili jsme si vˇsechny poˇzadavky na vytv´aˇrenou aplikaci, m˚uˇzeme se pustit do jej´ıho podrobnˇejˇs´ıho n´avrhu.
Prvn´ı d˚uleˇzitou volbou, od kter´e se dalˇs´ı odv´ıjej´ı, je volba operaˇcn´ıho syst´emu, pod kter´ym aplikace pobˇeˇz´ı. Byl zvolen syst´em Windows vzhledem k jeho rozˇs´ıˇrenosti (a tedy vyˇsˇs´ı koncentraci amat´ersk´ych brain˚u) a s pˇrihl´ednut´ım k tomu, ˇze spˇr´atelen´y projekt (ba-kal´aˇrsk´a pr´ace Tom´aˇse Labaje – Reversi) je tak´e pod t´ımto syst´emem. Svou roli hr´aly i osobn´ı c´ıle, kter´e jsou pops´any v ´uvodu. V dneˇsn´ı dobˇe je preferovan´ym zp˚usobem v´yvoje aplikac´ı pod Windows tvorba pomoc´ı tzv. .NET frameworku. Takovou volbu jsem zvolil i j´a. Volba programovac´ıho jazyka padla na C#.
Ze zad´an´ı na prvn´ı pohled jasnˇe vypl´yv´a jedin´a funkˇcnost: tou je ˇr´ızen´ı dvou program˚u. Pˇri bliˇzˇs´ım pohledu na probl´em (a pˇrihl´ednut´ı k prostudovan´ym materi´al˚um) by vˇsak mˇela obsahovat jeˇstˇe minim´alnˇe dva dalˇs´ı funkˇcn´ı celky. Moˇznost zaznamen´avat hran´a utk´an´ı (a moˇznost jejich n´asledn´eho pˇrehr´av´an´ı) a nˇejakou podporu pro organizaci turnaje. Sa-mozˇrejmost´ı pak je n´apovˇeda pˇr´ımo v programu.
Hned na ´uvod kapitoly bych chtˇel ˇr´ıct, ˇze aplikace byla realizov´ana podle n´avrhu. V n´asleduj´ıc´ı kapitole –6 – uvedu jen nˇekter´e technick´e detaily a pozn´amky.
5.1
Funkˇ
cnost programu
Z´akladn´ı funkˇcn´ı celky jiˇz byly nast´ınˇeny, je ˇcas je postupnˇe probrat trochu v´ıce do hloubky. Podrobn´e informace o n´avrhu komunikaˇcn´ıho rozhran´ı, z´aznam˚u her, turnajov´e podpory, GUI (grafick´e uˇzivatelsk´e rozhran´ı) a n´apovˇedy se doˇctete v n´asleduj´ıc´ıch sekc´ıch. Zde uv´ad´ım n´avrh ˇc´asti, t´ykaj´ıc´ı se samotn´eho zobrazov´an´ı a ovl´ad´an´ı pr˚ubˇehu hry.
Tady by se mˇely objevil n´asleduj´ıc´ı prvky: zobrazen´ı hrac´ı plochy, vyb´ır´an´ı brain˚u, kteˇr´ı budou hr´at partii, informace o brainech a jejich hˇre, moˇznosti nastaven´ı hry a panel s ovl´ad´an´ım. Vzhledem k faktu, ˇze hry si jsou navz´ajem velice podobn´e, mˇelo by GUI t´eto ˇ
c´asti vypadat jednotnˇe pro vˇsechny hry (v´ıce v sekci 5.6).
Zobrazen´ı desky s prob´ıhaj´ıc´ı hrou je jednoznaˇcn´e, nebudu d´ale rozepisovat. Vybr´an´ı brainu se prov´ad´ı tlaˇc´ıtkem, po jehoˇz stisknut´ı se objev´ı nab´ıdka s moˇznostmi (lok´aln´ı x na s´ıti, vybr´an´ı souboru, zvolen´ı portu apod.).
Informace o brainu by mˇely obsahovat: n´azev, barvu, za kterou hraje, poˇcet v´yher, proher a rem´ız, aktu´aln´ı poˇcet bod˚u v prob´ıhaj´ıc´ı hˇre (pouze u nˇekter´ych her), informaci o taz´ıch, zobrazen´ı d´elky trv´an´ı tahu.
zvl´aˇst’ startovat), moˇznost volby stˇr´ıd´an´ı se v zaˇc´ın´an´ı, nastavem´ı maxim´aln´ı povolen´e d´elky tahu. D´ale by mohlo obsahovat moˇznost stanovit konstantn´ı d´elku tahu (tahy by se prov´adˇely v pˇredem nastaven´ych intervalech nez´avisle na d´elce tah˚u brain˚u) a pˇr´ıpadnˇe zobrazen´ı nˇejak´ych statistik po skonˇcen´ı hry.
Panel s ovl´ad´an´ım by mˇel b´yt sp´ıˇse jednoduch´y, postaˇc´ı tlaˇc´ıtka pro start hry, jej´ı pozastaven´ı a okamˇzit´e ukonˇcen´ı.
5.2
Komunikace
Jako prosˇredek realizace komunikace byly vybr´any sockety. Jedn´a se o zp˚usob s´ıt’ov´e komu-nikace. V´yhody byly pops´any v sekci4.3. Komunikace prob´ıh´a prostˇrednictv´ım architektury TCP/IP, je tedy zajiˇstˇeno spolehliv´e doruˇcov´an´ı zas´ılan´ych zpr´av.
Program je navrˇzen tak, aby umoˇzˇnoval nˇekolik vz´ajemnˇe hran´ych utk´an´ı (napˇr´ıklad reversi a z´aroveˇn ˇsachy). To je umoˇznˇeno multi-vl´aknov´ym zpracov´an´ım. Sch´ema navrˇzen´e komunikace vid´ıte na obr´azku 5.1.
' & $ % Manaˇzer ' & $ % Brain 1 > = ' & $ % Brain 2 ' & $ % Brain N Z Z Z Z Z Z Z Z Z Z } Z Z Z Z Z Z Z Z ZZ~ q q q
Obr´azek 5.1: Sch´ema komunikace manaˇzeru s brainy
Z obr´azku je zˇrejm´e, ˇze veˇsker´a komunikace prob´ıh´a prostˇrednictv´ım manaˇzeru, brainy navz´ajem pˇr´ımo v˚ubec nekomunikuj´ı. Z pohledu s´ıt’ov´eho se manaˇzer chov´a jako klient, brainy jako servery. Manaˇzer je inicializ´atorem – pos´ıl´a dotazy, brainy odpov´ıdaj´ı.
Aby se brainy s manaˇzerem domluvily, je nutn´e ustanovit nˇejak´y komunikaˇcn´ı protokol – sadu pˇr´ıkaz˚u a reakc´ı na nˇe. Bylo moˇzn´e zvolit nˇejak´y z jiˇz pouˇz´ıvan´ych, nebo vymyslet vlastn´ı (pˇr´ıpadnˇe kombinaci tˇechto pˇr´ıstup˚u). S ohledem na to, ˇze existuj´ı r˚uzn´e protokoly pro r˚uzn´e hry, bylo pˇristoupeno k vymyˇslen´ı vlastn´ıho protokolu. Pˇrid´an´ı podpory jin´eho protokolu by se ovˇsem dalo pomˇernˇe lehce realizovat a je to rozhodnˇe oblast, kterou by se mohl dalˇs´ı moˇzn´y v´yvoj aplikace ub´ırat.
Vytvoˇren´y protokol se skl´ad´a z nˇekolika pˇr´ıkaz˚u a ozn´amen´ı a patˇriˇcn´ych reakc´ı na nˇe. Jejich seznam:
• hello msg – Dotaz m´a urˇcit, zda je brain pˇripraven komunikovat, v budoucnu zam´ y-ˇsleno vyuˇz´ıt k zjist’ov´an´ı odezvy. Jedinou moˇznou odpovˇed´ı je hello ok. Pokud brain odpov´ı jinak, povaˇzuje se to za selh´an´ı komunikace.
• com msg – Zjiˇst’uje maxim´aln´ı podporovanou verzi komunikaˇcn´ıho protokolu. Manaˇzer by mˇel podporovat i starˇs´ı verze protokolu, dokud nedojde k nˇejak´e nekompatibiln´ı zmˇenˇe. Brain odpov´ı verz´ı, kterou pouˇz´ıv´a – poˇsle napˇr´ıklad com 0.1. Pokud verze podporov´ana nen´ı, manaˇzer ukonˇc´ı komunikaci.
• game [hra] – M´a zjistit, zda brain hraje konkr´etn´ı hru. Nyn´ı podporovan´e hry jsou: reversi, chess, checkers, gomoku, go. Odpovˇed’ od braina m˚uˇze b´yt bud’ kladn´a (game ok), nebo z´aporn´a (game failed).
• board [velikost] – Nastavuje velikost hern´ı desky (pos´ıl´a se i v pˇr´ıpadˇe, ˇze je moˇzn´a jen jedna velikost). Parametrem je jedno cel´e ˇc´ıslo, zpr´ava tedy m˚uˇze vypadat napˇr. takto: board 8. Pokud brain danou velikost podporuje, poˇsle odpovˇed’ board ok, v opaˇcn´em pˇr´ıpadˇe board failed. Jak´akoliv jin´a odpovˇed’ neˇz board ok je ale stejnˇe povaˇzov´ana za selh´an´ı.
• player [barva] – Nastavuje identitu brainu, tedy za jakou barvu bude hr´at. Moˇzn´e varianty: white, black, cross, round (posledn´ı dvˇe zm´ınˇen´e plat´ı pro piˇskvorky). Ak-ceptov´an´ı brain provede zasl´an´ım odpovˇedi player ok, jin´a odpovˇed’ je povaˇzov´ana za selh´an´ı.
• name msg – Poˇzadavek na n´azev brainu. Brain odpov´ıd´a ve form´atu name [jmeno], tedy tˇreba name brain_hulu_0.6.20. Toto jm´eno pak textovˇe identifikuje brain. • timeout [ˇcas] – Nastavuje maxim´aln´ı moˇznou dobu pro odpovˇed’. Parametrem je
pˇrirozen´e ˇc´ıslo vˇetˇs´ı neˇz nula pˇredstavuj´ıc´ı d´elku timeoutu v sekund´ach. Brain neod-pov´ıd´a, bere vˇsak timeout navˇedom´ı.
• move [tah] – Tato zpr´ava oznamuje brainu tah oponenta. Kaˇzd´a hra m´a jin´e form´ a-tov´an´ı tahu (tyto form´aty uv´ad´ım za t´ımto seznamem), pro reversi je to napˇr´ıklad move F4. Zpr´ava move start m´a speci´aln´ı charakter, oznamuje zaˇc´atek z´apasu a tedy to, ˇze m´a brain prov´est prvn´ı tah. Standardn´ı odpovˇed´ı brainu je jin´a move zpr´ava, tentokr´at s parametrem sv´eho tahu. M˚uˇze vˇsak odpovˇedˇet i zpr´avou forfeit, kter´a znamen´a, ˇze se vzd´av´a tahu. Posl´an´ı jin´ych odpovˇed´ı neˇz tˇechto (pˇr´ıpadnˇe jeˇstˇe end – zat´ım bez vyuˇzit´ı) m´a za n´asledek selh´an´ı komunikace a konec hry.
• new game – Informace o zaˇc´atku nov´e hry. Pokud jiˇz nˇejak´a hra prob´ıh´a, je ukonˇcena. Brain neodpov´ıd´a, ale je povinen resetovat sv˚uj stav (pˇredevˇs´ım hrac´ı plochu) do poˇc´ateˇcn´ı pozice pro hru.
• end game – Ukonˇcuje hru. Pˇri norm´aln´ı hˇre nem´a smysl. Pouˇz´ıv´a se jen pro testovac´ı ´
uˇcely. Brain neodpov´ıd´a, ukonˇc´ı vˇsak hran´ı hry (bez toho, aby resetoval sv˚uj stav). • quit msg – Oznamuje ukonˇcen´ı komunikace. Brain neodpov´ıd´a, program braina se
ukonˇc´ı. Pokud bˇeˇz´ı brain jako s´ıt’ov´a sluˇzba, ukonˇc´ı se pouze komunikace s manaˇzerem. Zde n´asleduj´ı form´aty parametru zpr´avy move:
• Reversi: X0 – za X se dosad´ı velk´a p´ısmena A-H, za 0 ˇc´ıslice od 1 do 8. Pˇr´ıklad: F4. • ˇSachy: X0FY1 – za X se dosad´ı velk´a p´ısmena A-H, za 0 ˇc´ıslice od 1 do 8, Y a 1 jsou
na tom stejnˇe. X0 oznaˇcuje pole, ze kter´eho se t´ahne, Y1 pole, na kter´e se t´ahne. F oznaˇcuje figuru, kterou se t´ahne (anglick´e znaˇcky K, Q, R, B, N, P). Existuj´ı ale dvˇe
• D´ama: X0[oddelovaˇc]Y1*{[oddelovaˇc]Z2} – X0, Y1 a Z2 maj´ı stejn´y v´yznam jako u pˇredchoz´ıch her, oznaˇcuj´ı postupnˇe pole, na kter´a se t´ahne. Oddˇelovaˇcem m˚uˇze b´yt bud’ - (oznaˇcuje prost´y tah), nebo x (oznaˇcuje sk´ak´an´ı). Pˇr´ıklady: B6-A5, E3xG5xE7. • Piˇskvorky: X0 – za X se dosad´ı velk´a p´ısmena A-O, za 0 ˇc´ıslice od 1 do 15. Pˇr´ıklad:
K2.
• Go: X0 – za X se dosad´ı velk´a p´ısmena A-S, za 0 ˇc´ıslice od 1 do 19. Pˇr´ıklad: H7. Takov´ato pravidla pomˇernˇe jasnou formou definuj´ı, jak´a krit´eria by mˇel kompatibiln´ı brain splˇnovat, aby mohl bez probl´em˚u hr´at z´apasy prostˇrednictv´ım manaˇzeru.
5.3
Turnaj
Co se t´yk´a podpory pro poˇr´ad´an´ı turnaj˚u, ta by v programu mˇela b´yt urˇcitˇe zahrnuta. GUI by mˇelo obsahovat seznam brain˚u v turnaji, tlaˇc´ıtka pro pˇrid´an´ı dalˇs´ıho a odebr´an´ı oznaˇcen´eho brainu, nastaven´ı parametr˚u turnaje, panel s ovl´ad´an´ım, statistick´e a pˇrehledov´e informace.
Seznam brain˚u bude obsahovat jejich n´azvy. Pod n´ım budou obˇe tlaˇc´ıtka pro manipulaci se seznamem. Pˇrid´av´an´ı brain˚u otevˇre okno obdobn´e jako v pˇr´ıpadˇe norm´aln´ıho v´ybˇeru brainu. Druh´e tlaˇc´ıtko odebere aktu´alnˇe oznaˇcen´y brain ze seznamu.
V nastaven´ı turnaje jsou dvˇe z´akladn´ı poloˇzky: hra a turnajov´y m´od. Ze seznamu pod-porovan´ych her si uˇzivatel vybere poˇzadovanou; v´ybˇer m´odu turnaje se tak´e provede ze seznamu podporovan´ych syst´em˚u. Syst´emy, kter´e by mˇely b´yt podporov´any, jsou zm´ınˇeny v sekci3.2. Pˇrednastaven´e m´ody maj´ı pevnˇe nastaven´e parametry (poˇcet her v r´amci z´apasu, stˇr´ıd´an´ı zaˇc´atk˚u, timeout . . . ), ale mˇelo by b´yt umoˇznˇeno i zad´an´ı jin´ych hodnot.
Panel s ovl´ad´an´ım by mˇel umoˇznit, podobnˇe jako norm´aln´ı hra, odstartov´an´ı, poza-staven´ı a ukonˇcen´ı turnaje. Pˇrehledov´e informace o turnaji jsou pˇredstavov´any tabulkou z´apas˚u. Po odehr´an´ı kaˇzd´eho z´apasu, se zde objev´ı jeho v´ysledek, takˇze uˇzivatel vˇzdy v´ı, kde se turnaj nach´az´ı. Po ukonˇcen´ı cel´eho turnaje se zobraz´ı statictick´e informace a aktuali-zuje se ELO (pokud toto nebylo vypnuto). Statistika obsahuje seznam brain˚u s informacemi o jejich um´ıstˇen´ı a poˇctu z´ıskan´ych bod˚u.
K zjiˇst’ov´an´ı v´ykonnosti jednotliv´ych brain˚u slouˇz´ı jejich hodnocen´ı v r´amci syst´emu ELO. Kaˇzd´y brain m´a sv´e hodnocen´ı, kter´e ud´av´a, jak je v´ykonn´y (nov´aˇck˚um je udˇeleno ELO 2000). Syst´em hodnocen´ı je detailnˇe pops´an v sekci3.1. Pˇri turnaj´ıch (a pr´avˇe jen pˇri nich) se toto hodnocen´ı m˚uˇze mˇenit. Hodnocen´ı se uchov´avaj´ı v souboru elo.xml v adres´aˇri programu. Pro uchov´av´an´ı informac´ı byla tedy zvolena technologie XML a vyuˇz´ıv´a se i pro ukl´ad´an´ı nastaven´ı programu ˇci z´aznam˚u her.
5.4
Z´
aznamy her
Zaznamen´av´an´ı prob´ıhaj´ıc´ı hry a n´asledn´e umoˇznˇen´ı jej´ı archivace pro budouc´ı pˇrehr´av´an´ı by v manaˇzeru tak´e nemˇelo chybˇet. Nejdˇr´ıve ke GUI: okno by mˇelo obsahovat seznam uloˇzen´ych z´aznam˚u (nejl´epe tˇr´ıdˇen´y podle her) a moˇznost pˇrehr´at vybran´y z´aznam. Po oznaˇcen´ı z´aznamu se zobraz´ı z´akladn´ı informace o zaznamenan´e hˇre – n´azvy brain˚u, ˇcas zaˇc´atku hran´ı. D´ale by rozhran´ı mohlo umoˇznit vyhled´av´an´ı z´aznam˚u podle r˚uzn´ych krit´eri´ı a v´ybˇer adres´aˇre se z´aznamy.
Z´aznamy budou ukl´ad´any ve form´atu XML. Volba na tuto technologii padla, protoˇze se jedn´a o modern´ı a ˇsiroce podporovanou z´aleˇzitost, soubory jsou lehce zpracovateln´e jak
poˇc´ıtaˇcem, tak ˇclovˇekem (jedn´a se o form´at ˇciteln´y pro ˇclovˇeka). Uk´azku takov´eho souboru se z´aznamem m˚uˇzete vidˇet v ˇc´asti6.3.2.
5.5
N´
apovˇ
eda
N´apovˇeda pˇr´ımo v programu patˇr´ı ke kaˇzd´e sluˇsn´e aplikaci. Zde bude realizov´ana prostˇ red-nictv´ım internetov´eho prohl´ıˇzeˇce zabudovan´eho pˇr´ımo do programu. Mˇela by obsahovat sekci s pravidly jednotliv´ych her (pˇr´ıpadnˇe odkazy na pravidla na internetu), informace o ovl´ad´an´ı a nastaven´ı programu, seznam verz´ı a s t´ım spojen´y v´yˇcet proveden´ych ´uprav programu.
Realizace n´apovˇedy pomoc´ı dokument˚u v jazyce HTML m´a tu hlavn´ı v´yhodu, ˇze se d´a snadno pouˇz´ıt i jinde (na webov´ych str´ank´ach, pˇrev´est do form´atu PDF). Autor tak m˚uˇze ps´at jen jedny dokumenty a m´a zajiˇstˇen relativnˇe stejn´y vzhled a stejn´y obsah na vˇsech m´ıstech, kde je n´apovˇeda prezentov´ana. Dalˇs´ı v´yhoda spoˇc´ıv´a v tom, ˇze z n´apovˇedy je moˇzno odkazovat i extern´ı internetov´e zdroje.
5.6
GUI
Vˇetˇsina poˇzadavk˚u na GUI jiˇz byla zm´ınˇena v pˇredchoz´ıch sekc´ıch, zde jiˇz uvedu jen n´avrh celkov´eho vzhledu aplikace. V oknˇe aplikace by se mˇely nal´ezat dvˇe liˇsty (na jedn´e pˇrep´ın´an´ı jednotliv´ych her a turnaje, na druh´e ostatn´ı volby) a panel s vlastn´ım obsahem. Tento n´avrh je schematicky zn´azornˇen na obr´azku5.2. V´yslednou podobu aplikace si m˚uˇzete prohl´ednout v kapitole7.
Titulek okna
Liˇsta s dalˇs´ımi volbami Panel s vlastn´ım obsahem
Liˇsta s pˇrep´ın´an´ım her
Kapitola 6
Realizace
Tato kapitola neobsahuje popis funkˇcnosti programu, toto najdete v kapitole pˇredchoz´ı. Zde se zab´yv´am vlastn´ım technick´ym zpracov´an´ım aplikace, a to jen pˇrehledovˇe se zd˚uraznˇen´ım podstatn´ych prvk˚u. Kompletn´ı technick´a dokumentace by zabrala mnohem v´ıce prostoru neˇz by bylo vhodn´e. Z´ajemce si m˚uˇze prohl´ednout pˇr´ımo zdrojov´y k´od programu, kter´y je snad dostateˇcnˇe komentovan´y a pˇrehledn´y.
Program byl vytvoˇren v jazyce C# na platfornˇe .NET. Jedn´a se o okenn´ı aplikaci ˇr´ızenou ud´alostmi. Vyuˇz´ıv´a standardn´ıch tˇr´ıd a jmenn´ych prostor˚u, kter´e poskytuje plat-forma .NET. Bylo vˇsak nutn´e vytvoˇrit nˇekolik programovˇe specifick´ych tˇr´ıd, aby tak byla cel´a realizace v´ıce objektov´a.
6.1
Brain
Jelikoˇz se jedn´a o zcela nov´e ˇreˇsen´ı probl´emu, nebylo moˇzn´e pouˇz´ıt pro testov´an´ı ˇz´adn´y jiˇz existuj´ıc´ı brain. Z tohoto d˚uvodu jsem naprogramoval aplikaci, kter´a by mohla s manaˇzerem komunikovat. Jedn´a se o velmi prostou aplikaci, kter´a slouˇz´ı jen k ovˇeˇrov´an´ı spr´avnosti zvolen´ych ˇreˇsen´ı.
Program hraje hru reversi, coˇz je stˇeˇzejn´ı hra, na kter´e byly odzkouˇseny vˇsechny pouˇzit´e postupy. V´ıce v sekci 6.4. Brain umoˇzˇnuje jak lok´aln´ı spuˇstˇen´ı (s parametrem portu, na kter´em bude naslouchat), tak je moˇzn´e jej spustit nˇekde na s´ıti a zaˇc´ıt naslouch´an´ı ruˇcnˇe. Je moˇzn´e zobrazit historii komunikace a nastavit d´elku tahu; tedy funkce d˚uleˇzit´e pro testov´an´ı.
Moˇzn´e tahy ohodnocuje podle poˇctu zab´ıran´ych kamen˚u. N´ahodnˇe zvol´ı mezi dvˇema tahy, kter´e jsou z tohoto hlediska nejv´yhodnˇejˇs´ı. Rozhodnˇe to nen´ı d˚ustojn´y algoritmus pro hran´ı t´eto hry, ale pro poˇzadovan´e ´uˇcely to postaˇcuje.
6.2
Datov´
e struktury
Byly navrˇzeny a vytvoˇreny ˇctyˇri nov´e tˇr´ıdy tak, aby poskytovaly potˇrebn´e datov´e sloˇzky a poˇzadovanou funkˇcnost. Jsou to: tˇr´ıda Brain, zajiˇst’uj´ıc´ı komunikaci a uchov´avaj´ıc´ı ne-zbytn´e informace o brainu a jeho hˇre; tˇr´ıda Move pˇredstavuj´ıc´ı tah; tˇr´ıda Replay, ve kter´e jsou uchov´av´ana data potˇrebn´a pro z´aznam hry a nakonec tˇr´ıda Game poskytuj´ıc´ı potˇrebn´e informace o pr´avˇe hran´e partii. Jejich veˇrejn´e vlastnosti a metody jsou zde:
class Game {
public Int32 GamesToPlay; public Int32 GamesPlayed; public Int32 OnTheMove; public Double MoveTimeout; public bool AlternateStarts; public DateTime MatchStart; public string LastMove;
public DateTime MoveStartTime; public int[,] Board;
public Replay Replay; public int GameType;
public Game(Int32 gtp, Int32 otm, Double mto, bool alter, int[,] brd, int gametype);
public string Info(); }
class Move {
public Int32 Player; public string Move;
public TimeSpan MoveTime;
public Move(Int32 pla, string tah, TimeSpan mt) }
class Replay {
public string Player1; public string Player2; public DateTime TimeStart; public List<Move> ListOfMoves; public string GameType;
public Int32 BoardDimensions; public int Winner;
public Replay(string p1, string p2, DateTime ts, string gt, Int32 bd); }
class Brain {
public IPAddress Ip; public int Port;
public string FileName; public NetworkStream Stream; public bool Connected;
public string CurrMove; public string PrevMove; public Int32 Wins; public Int32 Loses; public Int32 Ties; public Int32 MoveTime; public Int32 AvgTime; public Int32 CurrPoints; public string Name;
public Brain(string ho, int po); public Brain();
public bool Connect(); public string RecvMsg();
public void SendMsg(string msg); }
Mysl´ım, ˇze dalˇs´ı popis tˇechto tˇr´ıd jiˇz nen´ı nutn´y, vlastnosti i metody jsou pojmenov´any tak, ˇze je jejich ´uˇcel zˇrejm´y.
6.3
Popis ˇ
reˇ
sen´ı
V t´eto ˇc´asti pop´ıˇsi realizaci nejd˚uleˇzitˇejˇs´ıch prvk˚u programu. Zm´ın´ım se jen o ˇreˇsen´ı d˚ u-leˇzit´ych ˇc´ast´ı programu. Spoustu pr´ace zabrala tvorba GUI a programov´an´ı reakc´ı na vy-vol´avan´e ud´alosti, coˇz je ale pˇrirozen´e a nen´ı tˇreba toto nijak zvl´aˇst’ popisovat.
6.3.1 Komunikace
Nejpodstatnˇejˇs´ı a nejv´ıce komplikovanou souˇc´ast´ı programu je zajiˇstˇen´ı funkˇcn´ı komunikace. S´ıt’ov´a komunikace (neust´al´a ˇcek´an´ı na odpovˇedi serveru – brainu) jsou blokuj´ıc´ı operace. Bylo tud´ıˇz nutn´e tuto komunikaci um´ıstit do vlastn´ıch vl´aken, aby bylo v˚ubec moˇzn´e ro-zumnˇe pracovat s GUI aplikace. Tato vl´akna jsou vytv´aˇrena tˇr´ıdou BackgroundWorker.
Vlastn´ı komunikace je zaˇr´ızena pomoc´ı tˇr´ıd TcpClient, StreamReader a StreamWriter. Prvn´ı ustav´ı spojen´ı s brainem, dalˇs´ı dvˇe slouˇz´ı ke ˇcten´ı a z´apisu zpr´av. Pˇr´ıjem a odes´ıl´an´ı zpr´av je ale zajiˇstˇeno metodami RecvMsg a SendMsg tˇr´ıdy Brain, kter´e v sobˇe zapouzdˇruj´ı tak´e oˇsetˇren´ı v´yjimek, kter´e mohou nastat pˇri s´ıt’ov´e komunikaci.
Pr˚ubˇeh hry z pohledu komunikace pak vypad´a n´asledovnˇe: manaˇzer postupnˇe kontaktuje oba brainy a zjist´ı informace nutn´e pro pokraˇcov´an´ı ve hˇre (dotazy hello, com, game, board, name a player); nastav´ı a odstartuje partii (pˇr´ıkazy timeout, new game); n´asleduje dotaz move pro zaˇc´ınaj´ıc´ı brain. Jakmile doraz´ı odpovˇed’, je provedena kontrola, zda je tah povolen a kontrola konce hry. Pokud je tah povolen a hra pokraˇcuje, manaˇzer opˇet poˇsle dotaz move (tentokr´at druh´emu hr´aˇci) a tento cyklus se opakuje aˇz do konce partie.
6.3.2 Z´aznamy her
Jakmile hra skonˇc´ı je o n´ı uloˇzen z´aznam. Strukturu takov´eho z´aznamu je uvedena n´ıˇze. K ukl´ad´an´ı veˇsker´ych dat byla zvolena technologie XML. Z´aznamy se ukl´adaj´ı do sloˇzky replays v adres´aˇri programu.
K reprezentaci z´aznamu slouˇz´ı tˇr´ıda Replay. K vytvoˇren´ı instance doch´az´ı hned po zah´ajen´ı hry, postupnˇe se do n´ı pˇrid´avaj´ı prov´adˇen´e tahy. Po skonˇcen´ı hry je tam zazna-men´an v´ıtˇez a sk´ore (pokud je pˇri hˇre uˇz´ıv´ano). N´aslednˇe se z´aznam uloˇz´ı s patˇriˇcn´ym pojmenov´an´ım (n´azev obsahuje jm´ena obou brain˚u a ˇcas zah´ajen´ı hry) do souborov´eho syst´emu.
K ukl´ad´an´ı slouˇz´ı tˇr´ıdy XmlDocument, XmlNode, XmlElement a XmlTextWriter. Prvn´ı je takovou pamˇet’ovou reprezentac´ı souboru XML, dalˇs´ı dvˇe jsou prvky vkl´adan´e do onoho dokumentu. Posledn´ı tˇr´ıda poskytuje prostˇredek z´apisu na diskov´y prostor.
K zobrazen´ı z´aznam˚u v GUI aplikace slouˇz´ı tˇr´ıda TreeView, kter´a poskytuje potˇrebnou funkˇcnost. Pˇri oznaˇcen´ı nˇejak´eho z´aznamu v tomto seznamu dojde k naˇcten´ı d˚uleˇzit´ych informac´ı a jejich zobrazen´ı (pˇr´ıklad m˚uˇzete vidˇet na obr´azku 7.3 na stranˇe 28). Jeˇstˇe uvedu uk´azku onoho XML souboru se z´aznamem:
<?xml version=’’1.0’’?> <Replay> <GameType>reversi</GameType> <BoardDimensions>8</BoardDimensions> <StartTime>4.5.2007 17:15</StartTime> <Player1>brain_hulu_0.6.20</Player1> <Player2>brain_hulu_0.6.20</Player2> <Winner>Player 1</Winner> <Score p1= "38\ p2="26\ /> <ListOfMoves> <Move player= "1\ time="00:00:01.4062500\>D6</Move> <Move player= "2\ time="00:00:01.3281250\>E6</Move> <Move player= "1\ time="00:00:00.3125000\>F6</Move> ... <Move player= "2\ time="00:00:00.1562500\>forfeit</Move> <Move player= "1\ time="00:00:00.2968750\>B1</Move> <Move player= "2\ time="00:00:00.3125000\>H1</Move> <Move player= "1\ time="00:00:00.3125000\>H8</Move> </ListOfMoves> </Replay>
Uveden´a uk´azka pˇredstavuje ˇc´ast skuteˇcn´eho z´aznamu hry a lze si z n´ı udˇelat pˇredstavu, co v takov´em z´aznamu m˚uˇzete nal´ezt. Rovnˇeˇz je zˇrejm´e, ˇze z´aznam nen´ı nijak sv´az´an jen s t´ımto konkr´etn´ım manaˇzerem, lze lehce udˇelat jin´y zobrazovaˇc z´aznam˚u, je dokonce snadno ˇ
citeln´y a srozumiteln´y pro ˇclovˇeka.
6.3.3 N´apovˇeda
Vˇetˇsina podstatn´eho v souvislosti s n´apovˇedou byla jiˇz zm´ınˇena v sekci5.5. Technicky nejde o nijak sloˇzitou z´aleˇzitost. Platforma .NET poskytuje tˇr´ıdu WebBrowser, kter´a obstar´av´a veˇskerou funkˇcnost. Pro snadnˇejˇs´ı navigaci byla pˇrid´ana tlaˇc´ıtka Vpˇred a Zpˇet. Pro potˇreby t´eto n´apovˇedy to t´emˇeˇr nebylo nutn´e, ale uˇzivatel je na takov´e moˇznosti zvykl´y ze sv´e pr´ace s klasick´ymi webov´ymi prohl´ıˇzeˇci.
6.3.4 Turnaj
norm´aln´ım zp˚usobem, jak je pops´ano o tˇri podsekce v´yˇse.
Takov´e ˇreˇsen´ı je samozˇrejmˇe zcela pˇrijateln´e, ale zejm´ena z ˇcasov´eho hlediska nen´ı op-tim´aln´ı. Pˇri velk´em poˇctu brain˚u v turnaji by se dal celkov´y ˇcas hran´ı turnaje znaˇcnˇe zkr´atit, kdyby se nˇekter´e z´apasy hr´aly paralelnˇe. Takov´e ˇreˇsen´ı by zahrnovalo vypracov´an´ı nˇejak´eho algoritmu, kter´y by flexibilnˇe startoval z´apasy voln´ych brain˚u. Rovnˇeˇz by to vyˇzadovalo nˇekter´e zmˇeny do GUI. Z ˇcasov´ych d˚uvod˚u se toto nepodaˇrilo realizovat. Jde ale o oblast, kter´e by mohla b´yt v budoucnu vˇenov´ana pozornost.
6.4
Pozn´
amky
Nˇekter´e z pozn´amek uv´adˇen´ych v t´eto podkapitole jsem jiˇz diskutoval na jin´ych m´ıstech pr´ace. Logicky vˇsak patˇr´ı k sobˇe, takˇze budou zm´ınˇeny i zde.
Pˇrestoˇze aplikace nevypad´a pˇr´ıliˇs sloˇzitˇe, realizace nˇekter´ych vˇec´ı tak, jak byly napl´ ano-v´any se uk´azalo jako ˇcasovˇe velice n´aroˇcn´e. Nˇekter´e ze stanoven´ych poˇzadavk˚u proto nebyly splnˇeny. Zde se samozˇrejmˇe otev´ır´a cesta pro dalˇs´ı zdokonalov´an´ı programu.
Pˇrednˇe je zde probl´em s neexistenc´ı kompatibiln´ıch brain˚u. Toto bylo vyˇreˇseno vy-tvoˇren´ım vlastn´ıho testovac´ıho programu, kter´y by obstaral funkˇcnost braina. Protoˇze tvorba takov´eho programu pro vˇsechny podporovan´e hry nen´ı re´aln´a vzhledem k vyme-zen´emu ˇcasu ˇreˇsen´ı, hraje vytvoˇren´y brain pouze Reversi.
Program byl tedy vyv´ıjen a testov´an pro tuto hru, hran´ı dalˇs´ıch her stav´ı na nale-zen´ych postupech pro hru Reversi. Nˇekter´e vˇeci mohou fungovat beze zmˇeny (kupˇr´ıkladu sch´ema komunikace, ukl´ad´an´ı z´aznam˚u, poˇr´ad´an´ı turnaje), nˇekter´e by ke sv´e stoprocentn´ı funkˇcnosti vyˇzadovaly vysokou m´ıru testov´an´ı. Jedn´a se pˇredevˇs´ım o kontrolu spr´avnosti tahu, urˇcen´ı existence moˇzn´eho tahu a kontrolu konce hry. Tyto kontroly nejsou prov´adˇeny, coˇz je jistou nedokonalost´ı manaˇzeru, a je nutn´e se spol´ehat na brainy, ˇze prov´adˇej´ı v tˇechto hr´ach validn´ı tahy. To nen´ı optim´aln´ı, ale v souˇcasn´e dobˇe defacto neexistuje brain, kter´y by byl s manaˇzerem kompatibiln´ı (samozˇrejmˇe s v´yjimkou m´eho a hry Reversi Tom´aˇse Labaje), a tak se toto d´a pˇrej´ıt.
V´yvoj manaˇzeru by ostanˇe mˇel pokraˇcovat, je zde spousta prostoru pro vylepˇsov´an´ı. O vˇecech, kter´e by se daly vylepˇsit ˇci pˇridat se jeˇstˇe zm´ın´ım v z´avˇeru pr´ace.
Zm´ın´ım se jeˇstˇe o grafick´e podobˇe hern´ıch desek. Vˇsechny desky her – kromˇe ˇsachu – jsou generov´any pˇr´ımo v programu pomoc´ı funkc´ı Windows API. Pro vzhled ˇsachovnice a ˇsachov´ych figur byly vyuˇzity obr´azky z Wikimedia Commons. Jedn´a se o iniciativu, kter´a se snaˇz´ı distribuovat nˇekter´e soubory k voln´emu uˇzit´ı (jedn´a se o obr´azky, zvukov´e a obra-zov´e nahr´avky apod.) s c´ılem jejich jednotn´eho vzhledu v nekomerˇcn´ıch aplikac´ıch.
Kapitola 7
Ovl´
ad´
an´ı programu
Ovl´ad´an´ı programu je do znaˇcn´e m´ıry intuitivn´ı, zde uveden´y popis tedy bude struˇcn´y. Po-stupy pro spuˇstˇen´ı samostatn´e hry, turnaje a pr´ace se z´aznamy jsou uvedeny v samostatn´ych podkapitol´ach, protoˇze se jedn´a o stˇeˇzejn´ı funkce aplikace.
Kromˇe v´yˇse zm´ınˇen´eho se v programu nach´az´ı n´apovˇeda a nastaven´ı programu. S n´ a-povˇedou se pracuje stejn´ym ˇci podobn´ym zp˚usobem jako s kter´ymkoliv jin´ym prohl´ıˇzeˇcem. Uˇzivatel se pohybuje mezi str´ankami prostˇrednictv´ım odkaz˚u, pˇr´ıpadnˇe pomoc´ı tlaˇc´ıtek Vpˇred a Zpˇet. N´apovˇeda je dostupn´a pod z´aloˇzkou Help.
Na z´aloˇzce Settings se pak nach´az´ı moˇznost nastavit nˇekter´e vlastnosti programu. Zat´ım jich nen´ı mnoho – zobrazov´an´ı informaˇcn´ıch zpr´av, moˇznost spustit brainy bez pˇr´ıpadn´eho GUI, v´ybˇer sloˇzky pro ukl´ad´an´ı z´aznam˚u turnajov´ych her, volba jazyka n´apovˇedy.
7.1
Samostatn´
a hra
K ´uspˇeˇsn´emu zah´ajen´ı hry je nutn´e prov´est nˇekolik krok˚u:
1. Vybrat brainy. To se provede kliknut´ım na tlaˇc´ıtko Brain 1, resp. Brain 2. Po kliknut´ı se zobraz´ı dialog, kde uˇzivatel vybere, zda se jedn´a o lok´aln´ı aplikaci, nebo zda je brain na s´ıti. V prvn´ım zm´ınˇen´em pˇr´ıpadˇe vybere spustiteln´y soubor, ve druh´e zad´a IP adresu nebo dom´enov´e jm´eno. V obou pˇr´ıpadech pak nastav´ı port, na kter´em se bude komunikovat. N´aslednˇe m˚uˇze stisknout tlaˇc´ıtko OK. Dojde ke kontrole braina, stav se zobraz´ı na patˇriˇcn´ych m´ıstech.
2. Nastavit parametry z´apasu. Jedn´a se o: poˇcet her v z´apase, volbu stˇr´ıd´an´ı se v zaˇc´ın´an´ı, zad´an´ı timeoutu na tah, volba sledov´an´ı z´apasu v re´aln´em ˇcase a urˇcen´ı konstantn´ı doby tahu.
3. Odstartovat z´apas. Provede se snadno kliknut´ım na Start.
Po proveden´ı tˇechto ´ukon˚u jiˇz brainy zaˇcnou partii. Na hern´ı ploˇse m˚uˇzete sledovat pr˚ubˇeh, na prav´e stranˇe okna se zobrazuj´ı pr˚ubˇeˇzn´e informace. Hran´ı m˚uˇzete pozasta-vit tlaˇc´ıtkem Pause a analyzovat situaci. Stiskem tlaˇc´ıtka Stop se hra ukonˇc´ı. V takov´em pˇr´ıpadˇe se vˇsak neukl´ad´a z´aznam. Pˇredstavu o ovl´ad´an´ı si m˚uˇzete udˇelat i z obr´azku 7.1, kde vid´ıte rozehranou partii hry Reversi.
7.2
Turnaj
Postup pˇri zakl´ad´an´ı turnaje se do jist´e m´ıry podob´a tomu pˇredchoz´ımu. Je nutn´e opakovanˇe pˇrid´avat brainy pomoc´ı tlaˇc´ıtka Add brain. Je nutn´e si ale d´avat pozor pˇri zad´av´an´ı portu. U samostatn´e hry jsou porty pro oba brainy pˇredvoleny, takˇze se o toto uˇzivatel nemus´ı pˇr´ıliˇs starat. Pˇri pˇrid´av´an´ı brain˚u do turnaje je nutn´e db´at na to, aby uˇzivatel zadal jin´y port pro kaˇzd´y brain. Nejv´ıce probl´em˚u to m˚uˇze zp˚usobovat pˇri vybr´an´ı brainu lok´alnˇe, protoˇze zad´avat komunikaˇcn´ı port pˇri spouˇstˇen´ı lok´aln´ıch proces˚u nen´ı zvykem. Pro zjednoduˇsen´ı tam bylo pˇrid´ano mal´e tlaˇc´ıtko +. Odeb´ır´an´ı brainu se prov´ad´ı tlaˇc´ıtkem Delete brain.
Pˇri kaˇzd´em pˇrid´an´ı ˇci odebr´an´ı hr´aˇce se aktualizuje tabulka turnaje, statistiky i z´aloˇzka s hodnocen´ım ELO. N´asleduje nastaven´ı turnaje (podobnˇe jako u samostatn´e hry). Aˇz je uˇzivatel spokojen se vˇs´ım nastaven´ım, odstartuje turnaj tlaˇc´ıtkem Start. Vzhled okna se zad´av´an´ım turnaje je na obr´azku 7.2.
7.3
Z´
aznamy her
Pr´ace s hern´ımi z´aznamy je pak jiˇz snadn´a. Lev´y box obsahuje seznam z´aznam˚u v aktu´alnˇe vybran´e sloˇzce. N´azev sloˇzky je zobrazen v doln´ı ˇc´asti panelu a lze zvolit jinou sloˇzku tlaˇc´ıtkem Change folder. Po oznaˇcen´ı konkr´etn´ıho z´aznamu se vpravo zobraz´ı vybran´e pod-statn´e informace poskytuj´ıc´ı bliˇzˇs´ı pˇredstavu o charakteru z´aznamu.
Pod tˇemito daty lze nastavit konstantn´ı dobu pˇrehr´av´an´ı tahu. Pokud tato volba nen´ı zaˇskrtnuta, pˇrehr´av´a se z´aznam rychlost´ı, jeˇz byl hr´an. Pˇrehr´an´ı se odstartuje tlaˇc´ıtkem Watch the game. Situace je zobrazena na obr´azku7.3.
Obr´azek 7.1: Sn´ımek programu – hra Reversi
Obr´azek 7.3: Sn´ımek programu – z´aznamy