Upload
others
View
2
Download
0
Embed Size (px)
Citation preview
Univerza v Mariboru
Fakulteta za elektrotehniko,
racunalnistvo in informatiko
David Bombek
IGRA REVERSI NA TELEFONSKEM
APARATU CISCO IP
Diplomska naloga
Maribor, september 2008
Diplomska naloga visokosolskega strokovnegastudijskega programa
IGRA REVERSI NA TELEFONSKEM
APARATU CISCO IP
Student: David BOMBEK
Studijski program: visokosolski strokovni, Racunalnistvo in informatika
Smer: Programska oprema
Mentor: izred. prof. dr. Janez BREST
Maribor, september 2008
ZAHVALA
Zahvaljujem se mentorju izred. prof. dr. Janezu Brestu in
asistentu mag.Alesu Zamudi za strokovno pomoc in us-
merjanje pri opravljanju diplomske naloge.
Posebna zahvala velja ocetu Mirku, ki me je med
studijem vzpodbujal. Zahvala gre tudi punci Mateji,
ki mi je nudila moralno podporo.
IGRA REVERSI NA TELEFONSKEM
APARATU CISCO IP
Kljucne besede: igra reversi, aplikacija, umetna inteligenca,
telefonski aparat Cisco IP, spletni streznik, po-
datkovni streznik
UDK: 004.72:621.396(043.2)
Povzetek
V diplomski nalogi smo pokazali, da je mozno igranje igre reversi na IP tele-
fonskem aparatu. Aplikacijo smo izdelali s pomocjo razlicnih tehnologij. Pomembno
vlogo pri nasem programu ima tudi razsirljivi oznacevalni jezik XML. Igra reversi
spada med igre s popolno informacijo. V diplomski nalogi smo opisali strategije za
ucinkovito igranje igre reversi in iskalne algoritme.
Osrednji del diplomske naloge sestavljajo trije segmenti nase aplikacije Rever-
siOnCisco. Ti so Cisco IP telefonski aparat, spletni in podatkovni streznik. Med
drugim predstavlja pomembno vlogo spletnega streznika vizualizacija igre. Sledi opis
delovanja motorja programa, ki poganja igro reversi in podroben opis metode shran-
jevanja in pridobivanja statisticnih podatkov. Zadnji del obsega rezultate in moznosti
za nadaljnje raziskave.
THE REVERSI GAME ON CISCO IP
PHONE
Keywords: reversi game, application, artificial intelli-
gence, Cisco IP Phone, web server, database
server
UDK: 004.72:621.396(043.2)
ABSTRACT
We have demonstrated that, with the help of various technologies, it is possible to
play the reversi game on an IP telephone set. On the other hand, XML Extensible
Markup Languages played an important role in our program as well. The reversi
game belongs to a group of games that provide complete information. In the diploma
work, we have described the strategies of how to play reversi successfully and search
algorithms.
The central part of the diploma work is composed of three segments of our program
ReversiOnCisco. These are Cisco IP telephone set, web and database server. A
relevant role of the web server is, among other things, the visualization of the game.
The next stage will be the description of a game engine and a detailed description
of the method of saving and acquiring statistical data. The final part is wrapped up
by our results and possibilities for future research.
Seznam uporabljenih simbolov
x, y koordinate
p poteza igralca
s stanje pozicije igralca na igralni plosci
r igralec z rdecimi zetoni
g igralec z zelenimi zetoni
w sirina igralne plosce
h visina igralne plosce
eval ocenitvena funkcija
-∞ ocenitev, pri kateri igralec min izgubi
∞ ocenitev, pri kateri igralec maks zmaga
d globina iskalnega drevesa
b vejitveni faktor iskalnega drevesa
n koncno stevilo vozlisc iskalnega drevesa
O casovna zahtevnost algoritma
α najboljsa vrednost igralca maks
β najboljsa vrednost igralca min
i
Seznam uporabljenih kratic
IP Internet Protocol
XML Extensible Markup Language
PBX Private Branch eXchange
VoIP Voice Over Internet Protocol
HTTP Hypertext Transfer Protocol
URL Uniform Resource Locator
ASCII American Standard Code for Information Interchange
ISO International Organization for Standardization
LCD Liquid Crystal Display
PNG Portable Network Graphics
ID Identifikator
ii
Slike
2.1 Drevesna struktura iskalnega algoritma minimaks. . . . . . . . . . . . 14
2.2 Drevesna struktura iskalnega algoritma alfa-beta. . . . . . . . . . . . 16
3.1 Celotno resitev ReversiOnCisco sestavljajo posamezni segmenti. . . . 19
4.1 Povprasevanje po vsebini in odgovor kot XML format. . . . . . . . . 20
5.1 Struktura in podatkovni tok spletnih strani na spletnem strezniku. . . 22
5.2 S sejo prenasamo podatke iz ene do druge strani. . . . . . . . . . . . 24
5.3 Podlaga predstavlja prazno igralno plosco. . . . . . . . . . . . . . . . 26
5.4 Osnovni sestavni elementi igralne plosce. . . . . . . . . . . . . . . . . 27
5.5 Razporejenost zacetnih, koncnih in povezovalnih elementov. . . . . . . 27
5.6 Elementi za animiran prikaz smeri zavzemanja obmocij zelenega igralca
na igralni plosci. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
5.7 Elementi za animiran prikaz smeri zavzemanja obmocij rdecega igralca
na igralni plosci. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
5.8 Potrebne komponente za animirano izvajanje potez. . . . . . . . . . . 30
5.9 Igralna plosca na zaslonu ter njena povecava. . . . . . . . . . . . . . . 32
6.1 Povezava med motorjem in spletno stranjo. . . . . . . . . . . . . . . . 34
6.2 Uporaba matricne sablone. . . . . . . . . . . . . . . . . . . . . . . . . 35
7.1 Povezava med spletnim in podatkovnim streznikom. . . . . . . . . . . 39
7.2 Podatkovni tok med spletnim in podatkovnim streznikom. . . . . . . 40
7.3 Pridobivanje statisticnih podatkov. . . . . . . . . . . . . . . . . . . . 43
8.1 Vstopni meni. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
8.2 Prikaz moznih nastavitev. . . . . . . . . . . . . . . . . . . . . . . . . 46
8.3 Zacetna postavitev zetonov z moznimi potezami. . . . . . . . . . . . . 47
8.4 Stanje igralne plosce po prvi potezi E,6. . . . . . . . . . . . . . . . . 47
8.5 Stanje igralne plosce po izbrani potezi C,5. . . . . . . . . . . . . . . . 48
8.6 Primerjava rezultatov umetnih inteligenc. . . . . . . . . . . . . . . . . 48
iii
SLIKE iv
8.7 Nastavitev brez moznih potez. . . . . . . . . . . . . . . . . . . . . . . 49
8.8 Pricetek igre brez moznih potez. . . . . . . . . . . . . . . . . . . . . . 49
8.9 Nastavitve za igranje igre z animiranim prikazom izvajanja potez. . . 50
8.10 Animiran prikaz izvajanja potez. . . . . . . . . . . . . . . . . . . . . . 51
8.11 Animiran prikaz izvajanja potez z usmeritvijo. . . . . . . . . . . . . . 52
8.12 Nastavitve za igranje igre z animiranim prikazom izvajanja potez z
usmeritvijo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
8.13 Moznost ponovne igre ali pregleda statisticnih podatkov. . . . . . . . 53
8.14 Pregled statisticnih podatkov. . . . . . . . . . . . . . . . . . . . . . . 54
8.15 Nasa vizitka. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Seznam algoritmov
1 Vizualizacija igralne plosce. . . . . . . . . . . . . . . . . . . . . . . . 29
2 Definiranje obmocij obcutljivih na dotik. . . . . . . . . . . . . . . . . 33
3 Algoritem alfa-beta. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
4 Odigrana igra z dvema dostopoma do podatkovne baze. . . . . . . . . 42
5 Odigrana igra z enim dostopom do podatkovne baze. . . . . . . . . . 43
v
Kazalo
1 Uvod 3
2 Pregled IP telefonskih aparatov in iger s popolno informacijo 5
2.1 IP telefonski aparat . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.1.1 Razsirljivi oznacevalni jezik XML . . . . . . . . . . . . . . . . 6
2.2 Igre s popolno in igre z nepopolno informacijo . . . . . . . . . . . . . 10
2.2.1 Reversi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.2.2 Strategije . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2.3 Iskalni algoritmi . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.2.4 Algoritem minimaks . . . . . . . . . . . . . . . . . . . . . . . 14
2.2.5 Algoritem negamaks . . . . . . . . . . . . . . . . . . . . . . . 15
2.2.6 Algoritem alfa-beta . . . . . . . . . . . . . . . . . . . . . . . . 16
3 Struktura programa ReversiOnCisco 18
3.1 Motivacija . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.2 Posamezni segmenti kot celota . . . . . . . . . . . . . . . . . . . . . . 19
4 Nas program in Cisco IP telefonski aparat 20
5 Spletni streznik 21
5.1 Podatkovni tok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
5.2 Upravljanje s podatki . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
5.2.1 Priprava podatkov . . . . . . . . . . . . . . . . . . . . . . . . 24
5.2.2 Prenos podatkov med stranmi . . . . . . . . . . . . . . . . . . 24
5.3 Vizualizacija . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
5.3.1 Elementi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
5.3.2 Generator dinamicnih slik . . . . . . . . . . . . . . . . . . . . 28
5.3.3 Animiran prikaz izvajanja potez . . . . . . . . . . . . . . . . . 30
5.3.4 Obmocje obcutljivo na dotik . . . . . . . . . . . . . . . . . . . 31
1
KAZALO 2
6 Motor 34
6.1 Pricetek igre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
6.2 Izvajanje potez . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
6.2.1 Iskanje moznih smeri zavzemanja . . . . . . . . . . . . . . . . 35
6.2.2 Zavzemanje nasprotnikovih zetonov . . . . . . . . . . . . . . . 36
6.3 Umetna inteligenca . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
6.4 Ocenitvena funkcija . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
7 Podatkovni streznik 39
7.1 Dostop do podatkovnega streznika . . . . . . . . . . . . . . . . . . . . 40
7.2 Podatkovna baza . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
7.3 Obdelava statisticnih podatkov . . . . . . . . . . . . . . . . . . . . . 42
7.3.1 Shranjevanje podatkov . . . . . . . . . . . . . . . . . . . . . . 42
7.3.2 Pridobivanje podatkov . . . . . . . . . . . . . . . . . . . . . . 43
8 Rezultati programa ReversiOnCisco 45
8.1 Primer igre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
8.1.1 Primerjava moci dveh umetnih inteligenc . . . . . . . . . . . . 48
8.1.2 Igranje igre brez moznih potez . . . . . . . . . . . . . . . . . . 49
8.1.3 Animiran prikaz izvajanja potez . . . . . . . . . . . . . . . . . 50
8.1.4 Animiran prikaz izvajanja potez z usmeritvijo . . . . . . . . . 52
8.2 Statisticni podatki . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
8.3 Ostalo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
9 Zakljucek 56
Literatura 58
Priloge 60
Poglavje 1
Uvod
IP telefonija je dandanes najbolj tehnolosko napredna resitev telefonije. Je usmer-
janje glasovnih pogovorov preko interneta ali skozi katerokoli drugo omrezje. Lahko
jo uporabljamo na istem omrezju kot racunalnike, kar je prednost in razlika med
klasicno telefonijo. To pomeni, da lahko med samim telefoniranjem uporabljamo
podatke, ki so dostopni v omrezju. Tako lahko s telefonskim aparatom dostopamo
tudi do posebej pripravljenih spletnih vsebin tako imenovanih servisov. Vse to pa
so nam omogocili razlicni proizvajalci IP telefonskih aparatov, kot so: 3Com, Aas-
tra, Alcatel, Mitel, Polycom itd. Ti se nenehno ukvarjajo z razvojem inovativnih
IP telefonskih aparatov. Vecina od nastetih ponudnikov v sklopu IP telefonije ne
ponuja le telefonov, temvec tudi stikala, usmerjevalnike ter druge proizvode znotraj
sklopa. Med najvecjimi je Cisco Systems, ki nam ponuja resitev telefonskega aparata
z zaslonom obcutljivim na dotik (angl. touch screen), kar nam bo pri nadaljnjih
raziskavah v pomoc.
Ker so nas dandanes ze mnozicno poplavili mobilni telefoni, ki nudijo veliko
moznosti zabave in razvedrila, smo tudi mi poskusali dobiti idejo o tem, kako us-
tvariti IP telefon, ki bo za posameznika koristen in zabaven hkrati. Tako smo prisli
na idejo za izdelavo igre, ki bi se lahko igrala preko zaslona obcutljivega na dotik.
Idejo smo realizirali in tako smo ustvarili igro reversi. Reversi je igra dveh igralcev s
popolno informacijo in nicelno vsoto. Igralcu so v vsakem trenutku znane vse mozne
poteze, ki jih ima nasprotnik. Med tovrstne igre spadajo sah, dama, go, reversi itd.
Med njih ne stejemo igre s kartami.
Diplomsko delo vsebuje devet poglavij. Po uvodu v drugem poglavju se v grobem
seznanimo z IP telefonskim aparatom, protokolom, ki je potreben za prenos, govora
ter z etiketami (TAG) razsirljivega oznacevalnega jezika (XML), ki so bistvenega
pomena nasega dela. Nato se seznanimo z igrami s popolno in nepopolno infor-
macijo. Med igre s popolno informacijo in nicelno vsoto sodi tudi igra reversi.
Opisemo strategije ucinkovite igre reversi, iskalne algoritme ter prikazemo njihovo
3
4
delovanje. V tretjem poglavju prikazemo strukturo nasega programa ReversiOn-
Cisco in posamezne segmente potrebne za realizacijo le te. V cetrtem poglavju
utemeljimo, zakaj smo izbrali Cisco IP telefonski aparat in zakaj ta razume ukaze
spletnega streznika. Peto poglavje je namenjeno zgolj spletnemu strezniku. V njem
opisemo posamezne spletne strani in njihove naloge. Prikazemo tudi podatkovni
tok med njimi in dinamicnima knjiznicama. Opisemo postopek priprave podatkov
ter potrebne postopke in elemente za vizualizacijo igre na telefonskem aparatu. Po-
leg postopkov opisemo generator dinamicnih slik, animiran prikaz izvajanja potez
ter definiranje obmocij obcutljivih na dotik. Naslednje, sesto poglavje je namen-
jeno motorju. Motor predstavlja program, ki vsebuje umetno inteligenco za igranje
igre. Tukaj opisujemo samo delovanje igre reversi, nacin izvajanja potez, iskanje
moznih smeri zavzemanja s pomocjo matricne sablone ter umetno inteligenco in
kombinirano ocenitveno funkcijo. Sedmo poglavje je zadnje izmed treh segmentov,
ki zaznamujejo sestavne dele nasega programa. Predstavlja podatkovni streznik
kamor po koncani igri shranjujemo oz. ob zelji po pregledu statisticnih podatkov le
te prikazemo. Prikazemo povezavo med spletnim in podatkovnim streznikom, struk-
turo podatkovne baze ter shranjene procedure za obdelavo statisticnih podatkov. Na
koncu podrobno opisemo metodi shranjevanja in pridobivanja statisticnih podatkov.
V osmem poglavju podamo rezultate odigrane igre in komentiramo posamezne poteze.
Deveto poglavje poda zakljucek k diplomskemu delu in moznosti za nadaljnje raz-
iskave. Na koncu je navedena se literatura.
Poglavje 2
Pregled IP telefonskih aparatov in
iger s popolno informacijo
2.1 IP telefonski aparat
IP telefonski aparat je naprava prikljucena na omrezje, ki lahko izmenjuje infor-
macije z drugimi omreznimi napravami. Osnovna funkcija je prenos zvoka in go-
vora, vkljucuje pa vse funkcije standardnih telefonskih sistemov PBX (angl. Private
Branch eXchange) in se mnogo vec. Za prenos glasu ali zvoka uporablja VoIP
(angl. Voice Over Internet Protocol), ki spreminja zvok v IP-pakete, ti paketi pa
potujejo preko IP-infrastrukture, kar ponuja sirok spekter telefonskih storitev ter
aplikacij.
IP telefonski aparati so lahko v obliki samostojne naprave (telefon) ali kot ap-
likacija na racunalniku t.i. SoftPhone. Poznamo pa vec vrst SoftPhonov in eden
izmed njih je tudi Cisco IP SoftPhone, ki je predhodnik danasnjega Cisco IP Commu-
nicator-ja, ki je izsel leta 2004. IP Communicator predstavlja aplikativno obliko IP
telefonskega aparata.
Prednosti Cisco IP Communicator-ja so:
• podpora za razsirljivi oznacevalni jezik (XML),
• povprasevanje po spletnih vsebinah (HTTP),
• samodejno posodabljanje programske opreme,
• prikaz ozadja na zaslonu,
• datum in cas,
5
2.1. IP TELEFONSKI APARAT 6
• servisi
• itd.
Med zgoraj nastetimi je tudi Cisco Systems IP Phone Services, ki omogoca
prikaz spletnih vsebin na Cisco IP telefonskem aparatu. Da se spletna vsebina
pravilno prikaze, mora vsebovati posebej pripravljene objekte v obliki razsirljivega
oznacevalnega jezika [1].
Cisco za razliko od drugih proizvajalcev ponuja obseznejso resitev. Resitev pri
tem daje poudarek na novih storitvah, ki jih omogoca zdruzevanje omrezij.
2.1.1 Razsirljivi oznacevalni jezik XML
XML ali Extensible Markup Language je jezik, ki je zelo uporaben za racunalniske
komunikacije in je zelo preprosto zgrajen. Je format za opisovanje strukturiranih
podatkov. Kljub svoji preprostosti omogoca prenos podatkov in njihovo izmenjavo
med vec omrezji. Je razsirljiv jezik, katerega se da tudi razsiriti tako, da si sami
izmislimo imena etiket (TAG). Pogosto ga srecujemo kadar brskamo po internetu [2].
Sledi pregled Cisco IP Phone XML [1] objektov in njihov opis:
• CiscoIPPhoneMenu,
• CiscoIPPhoneText,
• CiscoIPPhoneInput,
• CiscoIPPhoneDirectory,
• CiscoIPPhoneImage,
• CiscoIPPhoneImageFile,
• CiscoIPPhoneGraphicMenu,
• CiscoIPPhoneGraphicFileMenu,
• CiscoIPPhoneIconMenu,
• CiscoIPPhoneIconFileMenu,
• CiscoIPPhoneStatus,
• CiscoIPPhoneStatusFile,
2.1. IP TELEFONSKI APARAT 7
• CiscoIPPhoneExecute,
• CiscoIPPhoneResponse in
• CiscoIPPhoneError.
CiscoIPPhoneMenu
CiscoIPPhoneMenu ima funkcijo, da na zaslonu prikaze meni. Meni je sestavljen
iz naziva, pozivne vrstice ter menijskih vrstic. Menijska vrstica sestoji iz imena in
pripadajocega naslova URL (angl. Uniform Resource Locator), kamor smo ob izbiri
menijske vrstice preusmerjeni.
Naziv menijske vrstice lahko sestavlja maksimalno 64 znakov. Omejeni smo na
100 menijskih vrstic.
CiscoIPPhoneText
Objekt CiscoIPPhoneText prikazuje besedilo v obliki 8-bitnih ASCII znakov. To
pomeni, da ne podpira sumnikov, temvec podpira ISO 8859-1 (Latin 1) in ShiftJIS
nabor znakov.
CiscoIPPhoneInput
Objekt CiscoIPPhoneInput na zaslonu ustvari vnosno polje, kjer uporabnik lahko
vnasa predefinirane nabore znakov.
CiscoIPPhoneDirectory
CiscoIPPhoneDirectory oz. telefonski imenik omogoca vnos naziva ter telefonske
stevilke. Naenkrat lahko izpisemo le 32 zapisov.
CiscoIPPhoneImage
Objekt CiscoIPPhoneImage prikaze bitno sliko velikosti 133×65 pikslov. Telefonski
aparat uporablja LCD zaslon, pri cemer je potrebno paleto obrniti.
CiscoIPPhoneImageFile
Novejse razlicice IP telefonskih aparatov omogocajo zaslone z vecjo barvno globino.
Tako ima telefonski aparat zaslon velikosti 298×168 pikslov in 12-bitno barvno
globino. Mozen je prikaz slike formata PNG.
2.1. IP TELEFONSKI APARAT 8
CiscoIPPhoneGraphicMenu
Ta objekt sluzi enakemu namenu kot CiscoIPPhoneText. Uporablja se, ce gre za
kompleksne zapise nazivov, katere s sliko boljse ponazorimo.
CiscoIPPhoneGraphicFileMenu
Nekateri izmed najnovejsih IP aparatov imajo vgrajen LCD zaslon obcutljiv na
dotik. Za uporabo tega zaslona potrebujemo objekt CiscoIPPhoneGraphicFileMenu.
Sliki nastavimo lokacijo na x in y-osi ter obmocje delovanja.
CiscoIPPhoneIconMenu
CiscoIPPhoneIconMenu ima enako funkcijo kot CiscoIPPhoneMenu z majhno raz-
liko, da temu pred naziv lahko dodamo slicice oz. ikone velikosti 16×10 pikslov.
CiscoIPPhoneIconFileMenu
Tudi ta objekt je podoben CiscoIPPhoneMenu z razliko, da lahko temu pred naziv
dodamo barvne slicice formata PNG.
CiscoIPPhoneStatus
Objekt CiscoIPPhoneStatus se razlikuje glede na ostale tako, da ga je mozno prikazati
med klicanjem. Obicajno se uporablja za prikaz stanja aplikacij.
CiscoIPPhoneStatusFile
Temelji na objektu CiscoIPPhoneStatus z razliko, da prikaze PNG slike, velikosti
262×50 pikslov.
CiscoIPPhoneExecute
Objekt CiscoIPPhoneExecute se razlikuje od ostalih. Ni ga mozno prikazati. Namen
objekta je razresevanje veckratnega povprasevanja namenjenega aparatu.
CiscoIPPhoneResponse
Objekt CiscoIPPhoneResponse priskrbi sporocila in informacije izhajajoce iz objekta
CiscoIPPhoneExecute.
2.1. IP TELEFONSKI APARAT 9
CiscoIPPhoneError
Slednji upravlja z moznimi stanji napak, ki jih vrne telefonski aparat:
• napaka 1 - napaka pri razclenjevanju objekta CiscoIPPhoneExecute,
• napaka 2 - napaka pri sestavljanju objekta CiscoIPPhoneResponse,
• napaka 3 - notranja napaka datoteke in
• napaka 4 - napaka verodostojnosti.
2.2. IGRE S POPOLNO IN IGRE Z NEPOPOLNO INFORMACIJO 10
2.2 Igre s popolno in igre z nepopolno informacijo
Igra je razvedrilna dejavnost, ki ze od nekdaj navdusuje cloveka. Poznamo vec vrst
iger in njihove lastnosti: simetricnost, igre z nicelno vsoto, s popolno ali nepopolno
informacijo, staticne in zaporedne oziroma dinamicne itd. Poznamo tudi igre, ki
vkljucujejo enega ali vec igralcev in imajo nek cilj, ki ga igralci poskusajo doseci ter
pravila, ki opredelijo, kako igralci igrajo.
Igranje iger spada tudi v podrocje umetne inteligence, ki je interdisciplinarnega
znacaja. Omogoca nam igranje, pri katerih je lahko racunalnik nasprotnik cloveskemu
igralcu. V grobem lahko igre dveh igralcev delimo glede na informacijo o igri, te so:
• popolna informacija in
• nepopolna informacija.
Igre s popolno informacijo imenujemo tako, ker so v poljubnem trenutku igranja
znane vse moznosti, ki jih ima igralec oz. nasprotnik. Med njih stejemo igre kot
so sah, dama, go, reversi itd. Kot primer lahko vzamemo igro reversi. Igra poteka
med dvema igralcema, igralcem z rdecimi in igralcem z zelenimi zetoni. Oba igralca
imata pregled nad celotno igro in vsemi moznimi potezami. Zato pravimo, da je
to igra s popolno informacijo. Poleg tega lahko vsak igralcev element (polje igralne
plosce) oznacimo z numericno vrednostjo. Torej bo imel igralec stevilka ena pozi-
tivno numericno vrednost, igralec stevilka dve pa negativno numericno vrednost. V
pravilih igre je doloceno, da poteka igra z izmenjevanjem izbir potez med njima. Do-
datna lastnost igre je nicelna vsota, katere izraz izhaja iz teorije iger [11]. Kot smo
dejali, lahko vsak igralcev element predstavimo kot numericno vrednost. Legalne
poteze igralcev ob mesanih strategijah igranja prinasajo prednost oziroma slabost za
igralca, ki je na potezi. Torej lahko stanje pozicije s ocenimo za oba igralca. Igralca
rdecih zetonov lahko oznacimo z r, igralca zelenih zetonov z g, ocenitveno funkcijo
pa z eval.
Matematicni model nicelne vsote lahko zapisemo:
evalr(s) + evalg(s) = 0. (2.1)
Matematicni model 2.1 pravi, da je vsota ovrednotenih igralcevih elementov
enaka nic.
Za nasprotnika oziroma umetno inteligenco so strategije za igranje igre reversi
lahko naucene brez strokovnega predznanja. Mozno je ucenje z uporabo evolucijskih
algoritmov na osnovi nevronskih mrez in ocenitvena funkcija, kombinirana s stan-
dardnim minimaks iskalnim algoritmom [5]. Torej lahko igranje igre reversi poteka
2.2. IGRE S POPOLNO IN IGRE Z NEPOPOLNO INFORMACIJO 11
brez predhodnega cloveskega znanja, saj ga nadomesca povratno ucenje. Dokazano
je, da igranje igre reversi s povratnim ucenjem deluje boljse, kot igranje z uporabo
osnovne strategije [6]. Primerno opremljeno ucenje s koevolucijo ”co-evolutionary
learning” se lahko nauci boljsih igralnih strategij kot pa ucenje z vmesnimi razlikami
”temporal difference learning”, ceprav se sledne uci mnogo hitreje.
Pri ucenju s koevolucijo je bistvenega pomena za doseganje dobrih rezultatov,
da so starsi in otroci iskalnega drevesa povprecno obtezeni. Z uporabo te metode je
bil razvit visoko kvaliteten stevec obtezevanja zetonov in prikazan pomen stevilnih
standardnih hevristicnih utezi [7]. Poznamo posebno ogrodje za pol avtomaticno
razvijanje ocenjevalnih funkcij. Postopek poteka tako, da za iskanje prostih mest
najde nove poteze ob oceni izvedljivih poti. Poleg tega poteka iskanje in izvajanje
ucnih potez za napredno izbiranje in prilagajanje teze v velikih linearnih sistemih
[8]. Poznana je tudi aplikacija treh znanih statisticnih metod na podrocju igralnih
iskalnih dreves. Ta za ocenitveno funkcijo uporablja veliko stevilo dobrih reversi
pozicij in utezi ne glede na igralno fazo, kar pomeni, da ocenjuje po pomenu logicne
regresije [9].
Za igre z nepopolno informacijo je znacilno, da v poljubnem danem trenutku
niso znane vse moznosti, ki jih ima nasprotnik. Med tovrstne spada vecina iger s
kartami [12]. V nadaljevanju bomo govorili le o igrah z dvema igralcema in popolno
informacijo.
Racunalniske igre s popolno informacijo zahtevajo kompleksne igralne algoritme,
ki ocenijo mozne igralne poteze in se odlocijo o nadaljnji potezi. Racunalnik razvije
veliko vec potez vnaprej kot clovek in z vecanjem zmogljivosti racunalnika se vecajo
tudi razlike v zmogljivosti med racunalnikom in clovekom. Ta prepad si je clovek
ustvaril sam in je razocaran, ko izgublja v igrah proti racunalniku, za kar si je v bistvu
kriv sam. Vendar se tehnologija vedno bolj razvija in s tem tudi racunalnistvo in tako
je tudi pravilno. Igre bi bile nezanimive, ce bi proti racunalniku vedno zmagal clovek.
Obstaja se mnogo iger, ki cakajo, da bodo raziskane iz evolucijske perspektive in
se mnogo vec je cakajocih, da jih izumijo. Raziskovalno podrocje racunalniskih iger
ima dolgo zgodovino in sega v korenine racunalniske znanosti [4].
2.2.1 Reversi
O nastanku igre reversi oz. othello (reversibel (lat.) = povraten) obstaja vec raz-
licnih zgodb. Prva trdi, da je avtor igre Goro Hasegawa leta 1971 na japonskem izdal
igro reversi. Druga pa, da je igro reversi leta 1888 v Angliji izumil Lewis Waterman,
ki naj bi jo videl ze pri John W. Molletu. Med njima sta bili samo dve razliki. Prva
je bila, da je pri igri reversi bilo potrebno tudi prve stiri zetone odigrati, druga pa,
2.2. IGRE S POPOLNO IN IGRE Z NEPOPOLNO INFORMACIJO 12
da je vsak igralec dobil tocno doloceno stevilo zetonov. V bodoce bomo obravnavali
igro reversi z vnaprej pripravljeno plosco. Torej so prvi stirje zetoni ze pripravljeni.
Leta 1980 je program za igranje igre reversi po imenu The Moor premagal sve-
tovnega prvaka. Leto 1997 je bilo zaznamovano kot leto igre othello. Tega leta je
potekal boj v igranju igre othello med svetovnim prvakom Takeshi Murakami in
racunalniskim programom Logistello, katerega avtor je Michael Buro. Logistello je
na osnovi strategije GLEM premagal svetovnega prvaka s 6:0. S tem rezultatom je
Buro dokazal, da dandanes clovek vec ni kos racunalniskemu programu [10].
Danasnje tehnike dobrega racunalniskega igralca tovrstne igre so plod predhod-
nega znanja dobrih strategij in uporaba naprednih iskalnih algoritmov za pridobi-
vanje moznih potez.
Kljub temu, da je racunalniski program premagal svetovnega prvaka, se zdalec
ne pomeni, da je ta inteligentne narave. Sicer so hitri in imajo ogromne zaloge pom-
nilnika, a vendar uporabljenih strategij niso razvili sami. Uporabljajo kombinacijo
cloveskega znanja ter racunalniske zmogljivosti.
Leta 2005 sta Michiel Vuurboom in Bas Jacob pricela z raziskavo na temo igranje
igre reversi. Zacela sta brez predhodnega znanja in temeljila na nevronskih mrezah
in povratnem ucenju. Izhajajoc iz rezultatov je Michiel Vuurboom v znanstvenem
delu na temo Othello in uporaba nevrorazvojnih tehnik primerjal zmoznosti ucenja
in hitrosti. Primerjal je tri tehnike SANE, ESP ter NEAT in prikazal, da je NEAT
(Neuro-Evolution of Augmenting Topologies) dosegla najboljse rezultate, vendar je
to le majhen del problematike v igri othello [13].
2.2.2 Strategije
Igro reversi lahko razdelimo v tri faze. Prva faza se imenuje faza odprtja (angl. open-
ing game), druga faza je osrednja faza (angl. mid game), na koncu sledi se koncna
faza (angl. end game). Slednje niso locene s tocno definirano mejo, a vendar vsaka
izmed njih zahteva drugacno strategijo [14]. Za primerjavo omenimo, da racunalniski
program Logistello pozna priblizno dvajset faz. Obicajno ima igra sestdeset potez.
Vcasih manj, a nikoli vec. Faza odprtja predstavlja zacetno igralno plosco z vsemi
stirimi zacetnimi zetoni. Vsak igralec ima po dva zetona svoje barve. Ta faza se
lahko odigra ob uporabi seznama ugodnih polozajev. Obicajno predstavlja ta faza
cetrt celotne igre. V koncni fazi je moznost izbire primerne strateske poteze za
nadaljnjo igro manjsa, saj je vecina polj ze zasedenih. Igralec skusa zavzeti zadnja
prosta mesta in zbrati toliko zetonov, da bo zmaga njegova. Tudi ta faza predstavlja
priblizno toliksen del igre. Preostali del igre je namenjen osrednji fazi. V zadnjih
letih je osrednja faza precej pridobila na pomembnosti, saj je ta del precej zahteven
2.2. IGRE S POPOLNO IN IGRE Z NEPOPOLNO INFORMACIJO 13
za racunalniski program. Pri tej fazi je izvedba dobre poteze precej pomembna, saj
lahko le ena nepravilna poteza nasprotniku prinese potrebno prednost in s tem pot
do zmage. Ena izmed preprostejsih strategij je zavzemanje maksimalnega stevila
zetonov.
Osrednja faza ima dve bistveni strategiji igre. To sta polozajna strategija (angl.
positional strategy) in premicnostna strategija (angl. mobility strategy). Polozajna
strategija je preprostejsa kot premicnostna strategija, vendar ji je slednja podrejena.
Namen igralca, ki uporablja polozajno strategijo, je zavzeti cim vec zetonov v naj-
krajsem moznem casu. Da bi to dosegel, mora svoje zetone postaviti na rob plosce
in hkrati obkroziti cim vec nasprotnikovih. Igralec s tako strategijo vedno igra v
smer oglisc, saj mu zetonov na ogliscih nasprotnik ne more vec zavzeti. Raziskave
so pokazale, da pri igranju igre reversi proti racunski inteligenci le ta zmaga v 85%
vseh iger. Igranje proti nakljucnim nasprotnikom so izvedli 10.000-krat. Da bi
dobili realisticno povprecje so postopek ponovili 10-krat [13]. Nekoliko zahtevnejsa
strategija je premicnostna strategija. Pri tej strategiji igralec nadzoruje sredisce
igralne plosce in nasprotnika sili v obkrozitev lastnih zetonov. S tem igralec prisili
nasprotnika, da opusti svoje strateske poteze, dokler se sam ne odloci za napad.
Zato je nasprotnik v koncni fazi igre prisiljen predati oglisca ter robove. Cilj te
strategije v osrednji fazi igre je imeti cim manj svojih zetonov in cim vec moznih
potez. To za nasprotnika naj ne bi veljalo. Billman in Shaman sta pokazala, da je
strategija premicnosti precej zahtevna [15].
2.2.3 Iskalni algoritmi
Pri tovrstnih igrah igralca igrata izmenoma. Vsak opravi po eno potezo naenkrat.
Ob vsaki opravljeni potezi se stanje igre spremeni in s tem tudi mozne nadaljnje
poteze igranja. Igre s popolno informacijo lahko predstavimo v obliki drevesa. Koren
ali vrh predstavlja trenutno stanje igre, ki je na potezi. Ostala vozlisca predsta-
vljajo naslednje mozne polozaje glede na svojega oceta. Sinovi vozlisca predstavljajo
polozaje igre, do katerih pridemo z izvedbo le ene poteze. Povezave med ocetom in
sinovi oz. plastmi imenujemo poteze. Polozaje na dnu drevesa imenujemo listi.
Plasti (angl. ply) s polozaji se izmenjujejo in tako pravimo, da smo v tej plasti na
vrsti mi, v naslednji nizji plasti je na vrsti nasprotnik in tako naprej.
Da igralec dobi obcutek igrati proti inteligentnemu racunalniskemu programu, je
programu potrebno liste drevesa z ocenitveno funkcijo oceniti, in se nato odlociti,
katera poteza mu bo prinesla prednost pred nasprotnikom. Pri vecini iger je zaradi
stevila moznih potez nemogoce drevo razviti do konca. Zaradi prevelike porabe
pomnilnika in casovne zahtevnosti drevo raje razvijemo do vnaprej dolocene globine.
2.2. IGRE S POPOLNO IN IGRE Z NEPOPOLNO INFORMACIJO 14
Nato z ocenitveno funkcijo ocenimo liste iskalnega drevesa. Zasnova ocenitvene
funkcije je lahko od programa do programa drugacna.
2.2.4 Algoritem minimaks
Gonilo za razvoj postopka za izbiro potez pri vecini iger z dvema igralcema je bila
igra sah. John Von Neumann si je leta 1928 izmislil postopek za iskanje potez
imenovan minimaks [11]. Ta postopek se uporablja pri vecini iger z dvema igralcema.
Ce ponazorimo scenarij, da je racunalnik na potezi, sebe oznaci kot igralca maks
ali tako imenovani maksimizirajoc. Nas kot nasprotnika oziroma igralca min pa
oznacimo kot minimizirajoc. Pogosto uporabljamo izraza maks in min, da oznacimo
posamezne plasti drevesa. Pozitivna ocena polozaja bi pomenila prednost za igralca
maks negativna pa za igralca min. Prav tako bi pozitivna ocena pomenila slabsi
polozaj za igralca min ter negativna ocena slabsi polozaj za maks. V primeru, ko je
ocena nicelna, torej enaka nic, se polozaj ovrednoti kot nevtralen, saj noben izmed
igralcev ni v prednosti. Ocena polozaja je v razponu med -∞ in ∞. Oznaka ∞pomeni zmagovito oceno igralca maks, -∞ igralca min.
Na trivialnem primeru (slika 2.1) bomo poskusili prikazati delovanje iskalnega
algoritma minimaks.
Slika 2.1: Drevesna struktura iskalnega algoritma minimaks.
Razvito je iskalno drevo z globino dva. Sestavljajo ga tri plasti. Prva plast
predstavlja igralca maks in njegov trenutni polozaj (koren). Druga plast predstavlja
igralca min, zadnja, pa staticne ocene pozicij. Dejali smo, da je drevo razvito do
globine dva, kar ne pomeni, da sta v njem samo dva nivoja. Prve plasti oz. korena
namrec ne stejemo kot potezo. Steje se le trenutni polozaj in tako razvito drevo
prikazuje iskanje za dve potezi vnaprej.
2.2. IGRE S POPOLNO IN IGRE Z NEPOPOLNO INFORMACIJO 15
Iskalni algoritem deluje tako, da v plasti igralca maks izbere maksimalno oceno
poddrevesa. V plasti igralca min pa izbere minimalno oceno poddrevesa. Na zad-
njem (najnizjem) nivoju priredimo staticno oceno polozaja. Algoritem bo za naj-
boljso potezo izbral tisto, katera bo igralcu v prvi plasti oziroma korenu najbolj
koristila. V primeru, ko prva plast predstavlja igralca maks, bo izbral maksimalno
vrednost, ce pa le ta predstavlja igralca min, bo izbral minimalno vrednost. Ocene
druge plasti so minimum ocen iz tretje plasti, ocena prve plasti je maksimum ocen
iz druge. Seveda samo v nasem primeru, saj je v prvi plasti igralec maks, sicer bi se
ocene izbirale obratno.
Drevo opazujemo iz leve proti desni in od spodaj navzgor. Ker je v prvi plasti
na potezi igralec maks, bi na prvi pogled lahko dejali, da bo zagotovo igral v smeri
polozaja 8, saj je tam maksimalna staticna ocena. Vendar je med prvo in tretjo
plastjo se ena plast, ki predstavlja igralca min. Ce bi se odlocili za izbiro poteze v
smeri 8, nam to ne bi prevec koristilo. Bilo bi samo se slabse, saj bi s tem koristili
nasprotniku. Ta bi v naslednji potezi igral v smeri −1, ki je zanj najboljsa, za nas
pa najslabsa. Zato bi v prikazanem primeru najboljsa poteza igranja bila poteza v
smeri 5. Na sliki 2.1 je oznacena s puscico.
Iskalni algoritem zadostuje osnovnim potrebam. Zaradi preiskovanja celotnega
drevesa pa ob iskanju z visjo globino ne doseze zelenih rezultatov. Z rastjo globine
iskalnega drevesa, se eksponentno veca velikost iskalnega drevesa, s tem pa tudi
casovna in prostorska zahtevnost. Ozko grlo algoritma predstavlja ocenjevanje
staticnih ocen v listih drevesa. Predvsem pri igrah s kompleksnimi ocenitvenimi
funkcijami je njihovo izvajanje casovno zahtevno.
Ce poznamo globino iskalnega drevesa d ter vejitveni faktor (povprecno stevilo
poddreves) b, potem lahko zapisemo casovno zahtevnost:
O(bd). (2.2)
Problem lahko resimo, ce se osredotocimo na pregledovanje le pomembnih delov
razvitega drevesa (algoritem alfa-beta opisujemo v poglavju (2.2.6)).
2.2.5 Algoritem negamaks
Iz enake druzine izhaja algoritem negamaks, ki temelji na ideji minimaks. Bistvena
razlika med njima je, da negamaks v vseh plasteh starsem dodeli nasprotno oceno
igralca poddrevesa. Torej vrednostim pri vsakem prehodu med plastmi spremeni
predznak. V primerjavi z iskalnim algoritmom minimaks je negamaks lazje imple-
mentirati in vzdrzevati.
2.2. IGRE S POPOLNO IN IGRE Z NEPOPOLNO INFORMACIJO 16
2.2.6 Algoritem alfa-beta
Algoritem alfa-beta temelji na enakem principu kot minimaks. Samo ime izhaja iz
oznak α in β. Oznaka α predstavlja najboljso vrednost za igralca maks, oznaka β pa
najboljso vrednost za igralca min. Pravimo, da α in β predstavljata okno iskalnega
drevesa. Tudi pri tem algoritmu sta mozna dva scenarija. Prvi je, da je koren
drevesa oznacen kot maks, drugi pa da je koren drevesa plast min. Bistvo algoritma
je klestenje poddreves. To pomeni, da poddreves, za katera predvidevamo, da niso
obetajoca, ne pregledujemo. Ce gre za prvo varianto, se opravlja tako imenovano
alfa klestenje. Pri tem mora biti izpolnjen pogoj:
α ≥ β. (2.3)
Pri drugem scenariju velja analogno. Beta klestenje se izvaja v plasteh maks,
pogoj za klestenje je enak (glej neenacbo (2.3)).
Slika 2.2: Drevesna struktura iskalnega algoritma alfa-beta.
Na podanem primeru (slika 2.2) bomo poskusili prikazati delovanje algoritma
alfa-beta. Prvo plast bomo zaznamovali kot igralca maks. Torej velja pravilo (2.3).
Ob pregledovanju poddreves se lahko spremenljivki α in β spreminjata, zato smo
polozaje v visjih plasteh oznacili z A, B, C in D. Alfa klestenje se izvaja v plasteh
min. Zgled prikazuje, da je vrednost α v prvi plasti, ki je doslej najvisja ocena
izmed vseh poddreves. Vrednost β predstavlja doslej najnizjo oceno izmed pre-
gledanih poddreves. Pregledovanje pricnemo pri najbolj levem poddrevesu. Po
pregledu tega poddrevesa smo dobili vrednost 3. Zaenkrat igralcu na polozaju A ta
vrednost predstavlja najboljso mozno izbiro. Nadaljujemo s preiskovanjem drugega
poddrevesa. Ob pregledu prve staticne ocene smo dobili vrednost −3. Ker bo igralec
min v polozaju C tezil k oceni β ali manj, igralec maks v polozaju A k oceni α ali
vec, igralec α zagotovo ne bo igral v smeri vozlisca C, saj ima boljso alternativo
od prej. Pogoj (2.3) je izpolnjen, zato lahko opravimo alfa klestenje in koncamo s
2.2. IGRE S POPOLNO IN IGRE Z NEPOPOLNO INFORMACIJO 17
preiskovanjem tega poddrevesa. Podobna situacija nastane v zadnjem poddrevesu,
kjer pri preiskovanju naletimo na staticno oceno 2, ki je manjsa od vrednosti α v
vozliscu A. Izvede se klestenje. Igralec maks se bo odlocil za izbiro poteze v smeri
prvega poddrevesa, saj je v tej smeri moznost njegove zmaga najvisja.
Precrtane poteze in listi z oznako X pomenijo, da teh zaradi klestenja ni bilo
treba pregledati. Iz danega primera je razvidno, da je bilo pregledanih le sest
od desetih listov. Zmogljivost tega algoritma je odvisna od tega, kdaj pride do
klestenja. V idealnem primeru prvo pregledamo vozlisca, ki povzrocajo klestenje,
kar bi iskalno drevo enormno zmanjsalo. Pri taki prihranitvi na casu lahko globino
dvakrat povecamo. V najslabsem primeru ne pride do klestenja in algoritem posledi-
cno opravi enako delo kot algoritem minimaks opisan v poglavju 2.2.4.
Znano je, da ima drevo n listov in da je v najboljsem primeru najboljsa poteza
igralca na skrajni levi strani, potem je potrebno ovrednotiti le√
n listov. Na podlagi
ugotovitve (2.2) lahko zapisemo:
O((bd)12 ) = O(
√bd). (2.4)
Izboljsave algoritma so [16]:
• podaljsevanje dominantnih polozajev (angl. quiescence search),
• transpozicijske tabele (angl. transposition table),
• postopno poglabljanje (angl. progressive deepening)
• itd.
Poglavje 3
Struktura programa
ReversiOnCisco
V prejsnjem poglavju smo naredili pregled IP telefonskih aparatov in iger s popolno
in nepopolno informacijo. Opisali smo strategije in iskalne algoritme, ki so sestavni
del igre reversi. V tem poglavju bomo razkrili, kaj nas je motiviralo za razvoj nasega
programa ReversiOnCisco in zakaj smo razdelili problem v tri segmente.
3.1 Motivacija
Motivirala nas je ideja igranja igre reversi na IP telefonskem aparatu. Privzeto so
IP telefonski aparati namenjeni telefoniranju ter prikazu dolocenih informacij a ne
igranju iger. Pri tem smo se soocili z omejitvami s strani IP telefonskega aparata,
kako:
• prikazemo zelene podatke na IP telefonskem aparatu,
• sestavimo sliko iz vec elementov,
• prikazemo igralno plosco, ki se ob vsakem vstavljenem zetonu spremeni,
• uporabniku omogocimo izbiro poteze in
• prikazemo izvajanje potez na animiran nacin.
Ker gre za edinstven primer resevanja takega problema, smo se odlocili problem
resiti po principu strategije deli in vladaj.
18
3.2. POSAMEZNI SEGMENTI KOT CELOTA 19
3.2 Posamezni segmenti kot celota
Po temeljiti raziskavi ugotovimo, da je najboljse problem razdeliti v tri glavne seg-
mente, kar je prikazano na sliki 3.1:
• IP telefonski aparat,
• spletni streznik in
• podatkovni streznik.
Vsak izmed nastetih segmentov opravlja svoje delo. IP telefonski aparat sluzi inter-
aktivnemu komuniciranju z uporabnikom. Podatkovni streznik sluzi shranjevanju
statisticnih podatkov, bistveno vlogo pa ima spletni streznik. Ta upravlja z ukazi
oziroma zahtevami, ki jih dobi od telefonskega aparata. Odloci ali bo zahteva
preusmerjena motorju (angl. game engine), dinamicni knjiznici za delo s podatkovno
bazo (angl. game statistics) ali gre zgolj za ukaz, katerega streznik zna obdelati sam.
Konec koncev tudi pripravi povratne podatke IP telefonskemu aparatu, ki jih bo le
ta prikazal uporabniku. S tem se komunikacijski krog zakljuci in uporabnik po
pritisnjeni tipki dobi ustrezno povratno informacijo.
Slika 3.1: Celotno resitev ReversiOnCisco sestavljajo posamezni segmenti.
Poglavje 4
Nas program in Cisco IP
telefonski aparat
Dandanes obstaja sirok izbor IP telefonskih aparatov, vendar smo se odlocili za
resitev s Cisco telefonskim aparatom. Cisco s svojimi IP telefonski aparati nudi
moznost komunikacije s spletnimi servisi (angl. web services). Spletni servisi vracajo
podatke v posebej pripravljenem formatu. To je tako imenovani razsirljivi oznaceval-
ni jezik (poglavje 2.1). Za nas to pomeni prvi korak povezave IP telefona s spletnim
streznikom. Zaradi kompleksnosti problema in stevilnih drugih problemov smo se
odlocili, da bomo na spletnem strezniku zasnovali spletno stran, ki bo vracala po-
datke v popolnoma enakem formatu kot spletni servis (slika 4.1).
Slika 4.1: Povprasevanje po vsebini in odgovor kot XML format.
20
Poglavje 5
Spletni streznik
Spletni streznik si lahko predstavljamo kot imenik. Vsaka izmed njegovih strani ima
dolocen pomen in nam ob pogledu nanjo vraca dolocene informacije. Bodisi v taksni
ali drugacni obliki. V realnem zivljenju bi to lahko bila imena in stevilke v obliki
alfanumericnih znakov, v nasem primeru v obliki XML (poglavje 2.1.1).
5.1 Podatkovni tok
Slika 5.1 prikazuje podatkovni tok med posameznimi spletnimi stranmi. Linearne
povezave oznacujejo preusmeritve strani. Krivulje med razlicnimi povezanimi stran-
mi oznacujejo povprasevanje oz. vracanje dolocene vsebine. Krivulje, ki ne zapuscajo
dolocene strani in kazejo na samega sebe, oznacujejo prenos oz. potrjevanje po-
datkov. Povezave iz strani do zobnika pomenijo dostop do dinamicnih knjiznic, do
katerih spletni streznik mora dostopati, da lahko opravi nadaljnje delo. Nasa ap-
likacija vkljucuje dve dinamicni knjizici. Prva je motor, druga dinamicna knjiznica
pa je za delo s podatkovno bazo. Delo na spletnem strezniku opravlja osem spletnih
strani:
1. Main,
2. Menu,
3. About,
4. Settings,
5. Statistics,
6. Play,
7. Board in
21
5.1. PODATKOVNI TOK 22
8. Animation.
Vstopno tocko predstavlja spletna stran Main. Ta pripravi podatke za nadaljnje
delo. Priskrbi ime telefonskega aparata, katero predstavlja edinstveni kljuc. Po njem
locimo statisticne podatke glede na telefonske aparate. Ime telefonskega aparata
pridobimo s preprostim trikom. Ker je to edina direktna povezava med telefonskim
aparatom ter spletnim streznikom in nam telefonski aparat ob le takih povezavah
vraca svoje ime, preprosto takoj povprasamo po imenu. Pripravi tudi privzete nas-
tavitve potrebne za igranje. To so na primer privzeta globina igranja, prikaz moznih
potez, animiran prikaz izvajanja potez, igralec ena in igralec dva itd. Vse podatke
shrani v sejo, kjer so dostopni tudi iz vseh ostalih strani. Po opravljeni pripravi
podatkov nas preusmeri na stran Menu. Menu oz. meni je prva stran, ki se
uporabniku prikaze ob zagonu nase aplikacije. Sestavljena je iz stirih menijskih
vrstic, katere uporabniku omogocajo vstop v igro (Play), nastavljanje posameznih
parametrov za igranje igre (Settings), pregled preteklih iger in izidov Statistics
in pregled ostalih informaciji o igri About. Board opravlja funkcijo generatorja
dinamicnih slik (glej poglavje 5.3.2), Animation pa simulira animiran prikaz izva-
janja potez (glej poglavje 5.3.3).
Slika 5.1: Struktura in podatkovni tok spletnih strani na spletnem strezniku.
Zraven ze omenjenih funkcij streznika velja se omeniti druge njegove naloge:
• priprava podatkov,
• prenos podatkov med stranmi,
5.1. PODATKOVNI TOK 23
• shranjevanje vmesnih podatkov,
• opravljanje z motorjem,
• prikaz animiranega izvajanja potez,
• vizualizacija elementov in
• komunikacija s podatkovnim streznikom.
Nekatere izmed nastetih nalog streznika nimajo tako pomembne vloge kot ostale.
Vendar brez njih delovanje ne bi bilo popolno, zato bomo tudi te opisali.
5.2. UPRAVLJANJE S PODATKI 24
5.2 Upravljanje s podatki
5.2.1 Priprava podatkov
Za IP telefonski aparat je priprava podatkov najpomembnejsi del. Sam aparat
s podatki ne bi znal operirati, ce le teh ne bi ze vnaprej poznal. Govorimo o
XML formatu. Spletna stran v osnovi vraca podatke v obliki enostavnega besedila
(angl. plain text). V osnovi je to dovolj, vendar pa ne za potrebe telefonskega
aparata.
Response.ContentType = ”text/xml”; //nastavi XML kot tip vsebine strani
Response.Expires = −1; //ne dovolimo shranjevanja zgodovine
Z dvema vrsticama izvorne kode v jeziku C# ogrodja ASP.NET [17] lahko nas-
tavimo zeljen tip vsebine. S tem se izognemo se drugi nevsecnosti, kot je shran-
jevanje obiskanih strani. Telefonski aparat podobno kot internetni brskalnik hrani
zgodovino obiskanih strani. Slabost tega je, da se med njimi ne moramo poljubno
premikati naprej oziroma nazaj, temvec z zapiranjem trenutne strani samo nazaj.
Zamisel, da bi po koncani igri vse izvedene poteze korak za korakom lahko pregledali
je lepa, vendar postane nadlezna, ce bi zeleli igro predcasno zapustiti in bi za vsako
potezo morali stran znova in znova zapreti.
5.2.2 Prenos podatkov med stranmi
Slika 5.2: S sejo prenasamo podatke iz ene do druge strani.
Za prenos podatkov iz ene do druge spletne strani obstajajo preproste metode
5.2. UPRAVLJANJE S PODATKI 25
kot sta GET in POST. Ti dve metodi lahko uporabimo, ce zelimo dolocene podatke
prenesti iz strani A do strani B, vendar podatkov ne moremo prenasati naprej.
Z dolocenimi metodami je tudi to mozno, a je preprostejsa resitev uporaba seje
(angl. session). Seja se pricne, kadar nov uporabnik vstopi na prvo stran nekega
sistema. Vsak uporabnik ima svojo sejo, ki ob mirovanju uporabnika potece po
dolocenem casu. Vanjo lahko shranimo poljubne podatke. Te lahko prenasamo med
razlicnimi stranmi, kar je nas cilj.
Na sliki 5.2 vidimo, da je seja dostopna iz vseh strani. Lahko bi se zgodilo,
da uporabnik zeli spremeniti nastavitve (angl. settings) igre. Torej bi vpisal svoje
ime in izbral globino igre. V tem primeru bi za shranjevanje teh dveh podatkov
potrebovali sejo z dvema razlicnima spremenljivkama. To bi bilo nadlezno, zato
ustvarimo razred, ki ima vse potrebne lastnosti in ga priredimo seji. Tako imamo
vse nastavitve in ostale potrebne podatke na enem mestu.
5.3. VIZUALIZACIJA 26
5.3 Vizualizacija
Pod pojmom vizualizacija razumemo prikaz ali izris slike. V osnovi nam Cisco
IP telefonski aparat omogoca prikaz staticne slike. Vendar nam je pri realizaciji
nase aplikacije le ta predstavljala velik problem. Za igranje igre reversi potrebujemo
plosco, na kateri so zetoni igralcev. Z vsako potezo se stanje plosce in stevilo zetonov
na njej spremeni. Torej bi za igranje potrebovali mnogo slicic plosce z vsemi moznimi
stanji na njej. Zaradi porabe virov nam ta resitev ni primerna. Resitev je generator
dinamicnih slik.
5.3.1 Elementi
Igralna plosca (slika 5.3) je kvadratna, dimenzije 8×8 igralnih polj, skupaj stiriinsest-
desetih celic. Osnovo oziroma podlago predstavlja prazna plosca velikosti 168×168
pikslov, kar je znotraj dovoljenega obmocja zaslona (poglavje 2.1.1).
Slika 5.3: Podlaga predstavlja prazno igralno plosco.
Na njej so igralna polja velikosti 19×19 pikslov. Igralno polje lahko zavzame eno
izmed sedmih osnovnih oblik:
1. prazno polje oznacuje del igralne plosce, kamor ni moznosti vstavljanja
zetona, vendar je del igralne plosce (na sliki 5.4(a) je zaradi boljse ponazoritve
uokvirjeno s crno barvo),
2. rdeci zeton predstavlja trenutni zavzet polozaj rdecega igralca (slika 5.4(b)),
3. rdeci animacijski zeton je viden samo po izvedbi poteze rdecega igralca in
zaznamuje polja, ki jih je zavzel zelenemu igralcu (slika 5.4(c)),
4. prosti rdeci zeton predstavlja polje, ki ga lahko zaseda rdeci igralec s svojim
zetonom (slika 5.4(d)),
5.3. VIZUALIZACIJA 27
5. zeleni zeton predstavlja trenutni zavzeti polozaj zelenega igralca (slika 5.4(e)),
6. zeleni animacijski zeton je mozno viden samo po izvedbi poteze zelenega
igralca in zaznamuje polja, ki jih je zavzel rdecemu igralcu (slika 5.4(f)) in
7. prosti zeleni zeton predstavlja polje, ki ga lahko zaseda zelen igralec s svojim
zetonom (slika 5.4(g)).
(a) (b) (c) (d) (e) (f) (g)
Slika 5.4: Osnovni sestavni elementi igralne plosce.
Ostali elementi
Vkljucili smo dodatno moznost opazovanja smeri zavzemanja obmocij. Ta moznost
je razsiritev osnovnega animiranega prikaza izvajanja potez. V primeru, da je ani-
miran prikaz izvajanja potez onemogocen, potem tudi opazovanje smeri zavzemanja
obmocij ni mozna. Elemente locimo glede na:
• zacetni ali koncni element (slika 5.5(a)) in
• vmesni oziroma povezovalni element (slika 5.5(b)).
(a) Zacetni ali koncni ele-ment.
(b) Vmesni ali povezovalnielement.
Slika 5.5: Razporejenost zacetnih, koncnih in povezovalnih elementov.
Zacetni ali koncni elementi imajo le polovico velikosti povezovalnih elementov.
Razlog temu je vecja preglednost nad pricetkom in koncem zavzete linije. Izbira
elementa se doloci glede na orientacijo zavzemanja (poglavje 6.2.1) in ima glede na
igralca eno izmed dvanajstih oblik (slika 5.3.1 ali slika 5.3.1).
Ideja je, da bi se hkrati ob iskanju moznih potez zavzemanja shranjevale tudi
informacije o orientaciji. Izhajamo iz matricne sablone, tocke (0, 0). Podali bomo
5.3. VIZUALIZACIJA 28
(a) (b) (c) (d) (e) (f) (g) (h)
(i) (j) (k) (l)
Slika 5.6: Elementi za animiran prikaz smeri zavzemanja obmocij zelenega igralcana igralni plosci.
(a) (b) (c) (d) (e) (f) (g) (h)
(i) (j) (k) (l)
Slika 5.7: Elementi za animiran prikaz smeri zavzemanja obmocij rdecega igralcana igralni plosci.
primer zavzemanja zetonov iz izhodisce tocke navzgor. Izbira elementa za zavze-
manje navzgor poteka iz izhodiscne tocke glede na njeno orientacijo. Opazujemo
celico nad izhodiscno tocko (slika 5.5(a)). Ker je prikazana linija v spodnji polovici
celice in le ta pomeni koncni element linije zavzemanja bi izbrali element 5.6(a).
To nam ne ustreza, zato pomnozimo njegovo vrednost z −1. S tem smo spreme-
nili orientacijo in dobili nasprotni element (slika 5.6(e)), ki oznacuje zacetek linije
zavzemanja. Dokler ponovno ne najdemo svojega zetona, vstavljamo povezovalni
element (slika 5.6(i)). Ko najdemo svoj zeton, to pomeni konec linije zavzemanja.
Nato vstavimo element s prvotno orientacijo, torej koncni element (slika 5.6(a)).
5.3.2 Generator dinamicnih slik
Operiranje s spletnimi stranmi se v tem primeru ponovno obrestuje. Tako kot lahko
tip vsebine spletne strani nastavimo na obliko razsirljivega oznacevalnega jezika,
lahko tip vsebine spletne strani nastavimo tudi na sliko. Torej bo spletna stran
Board vracala sliko v formatu PNG. Podlago (slika 5.3) vzamemo kot osnovo. Sledi
izracun koordinat elementov. Glede na vhodni parameter Board, ki nosi numericne
informacije o igralni plosci v dvodimenzionalnem polju se odlocimo za enega izmed
sedmih vnaprej definiranih elementov. Glede na nove koordinate obstojeco podlago
prerisemo. Opisan postopek podaja algoritem 1.
5.3. VIZUALIZACIJA 29
Algoritem 1 Vizualizacija igralne plosce.
Vhod: Board - 2D igralna plosca z numericnimi informacijami o poziciji elementovVhod: W - sirinaVhod: H - visinaVhod: D - dimenzija igralne plosceVhod: GB - slika igralne plosceVhod: GEi
- slika igralnega elementaVhod: GEW
- sirina elementaVhod: GEH
- visina elementaVhod: Eo - orientacija usmerjenega elementaIzhod: igralna plosca NewBoard
W = 0; {zacetni koordinati elementov na igralni plosci}H = 0;NewBoard = GB; {novi plosci priredimo osnovno obliko}for column = 0 to D - 1 do
for row = 0 to D - 1 do{nova pozicija igralnega elementa na osnovni plosci}W = (column ∗GEW
) + BorderWidth;H = (row ∗GEH
) + BorderHeight;switch (Board[column, row]) {na lokacijo W, H vstavimo element}
case (default): Draw(NewBoard, GEa ,W,H); {5.4(a)}case (player1, 2): Draw(NewBoard,GEb
,W,H); {5.4(b) ali 5.4(e)}case (player1, 2Animation):
if EnableDirection then {omogocen prikaz moznih potez}Draw(NewBoard,GEo ,W,H); {element z ustrezno orientacijo}
elseDraw(NewBoard,GEc,f ,W,H); {5.4(c) ali 5.4(f)}
end ifcase (player1, 2PossibleMove):
if EnablePossibleMoves then {omogocen prikaz moznih potez}Draw(NewBoard,GEd,g,W,H); {5.4(d) ali 5.4(g)}
elseDraw(NewBoard,GEb,e,W,H); {5.4(b) ali 5.4(e)}
end ifend for
end forreturn NewBoard ; {nova igralna plosca z vsemi potrebnimi elementi}
5.3. VIZUALIZACIJA 30
Slika 5.8: Potrebne komponente za animirano izvajanje potez.
5.3.3 Animiran prikaz izvajanja potez
Splosen problem Cisco IP telefonskih aparatov je animacija. Kljub temu v naso
aplikacijo zelimo vkljuciti animiran prikaz izvajanja potez. Razlog za to je sunkovito
spreminjaje igralne plosce. To pomeni, da se ob uporabnikovi izbiri poteze in tik za
njim se racunalnikove poteze, z dvema potezama precejsen del igralne plosce lahko
spremeni. Uporabnik bi videl le stanje plosce pred in po izvedeni potezi, kar bi ga
lahko zmedlo. Zato smo razvili prefinjen postopek za animirano izvajanje potez.
Potrebujemo tri strani in motor (slika 5.8)
Prva stran Play ima vec funkcij. Skrbi za pravilno odvijanje igre. Mozna sta
dva scenarija:
1. navadna igra (scenarij 1) in
2. igra z animiranim prikazom izvajanja potez (scenarij 2).
V primeru prvega scenarija poteka komunikacija neposredno med spletno stranjo
Play in spletno stranjo Board. Splatna stran Play poklice motor, kateri na igralni
plosci (CurrentBoard) izvede uporabnikovo potezo, poisce najboljso racunalnikovo
potezo in to tudi izvede. Nato poisce vse mozne poteze uporabnika in jih priredi
igralni plosci. Po opravljenih korakih je igralna plosca pripravljena za izris. Podatki
se shranijo v sejo, nadaljnje delo pa opravi generator dinamicnih slik (poglavje 5.3.2).
Pri drugem scenariju je nekoliko drugace. Ce spletna stran Play ugotovi, da
je parameter EnableAnimation vkljucen, se pred izvedbo poteze uporabnika pobrisejo
5.3. VIZUALIZACIJA 31
vse mozne poteze in naredi kopija trenutne igralne plosce. Vsa stanja se preslikajo v
zacasno igralno plosco AnimationBoard, z razliko, da se ob vsaki izvedeni potezi le te
in njihove pozicije shranjujejo v zacasni seznam AnimationList. Nato je potek enak
kot pri scenariju 1. Sedaj imamo dve igralni plosci in seznam animiranih potez.
Stran Play ponovno preveri ali je parameter EnableAnimation vkljucen in ali je v
AnimationList katera poteza. Ce sta pogoja izpolnjena, nas preusmeri na spletno
stran Animation. Ponovno se preveri, ali seznam AnimationList vsebuje katero
potezo. Ce jo, potem iz njega vzamemo prvo potezo in jo v seznamu AnimationBoard
shranimo na ustrezno pozicijo. Dokler ni seznam AnimationList prazen, torej se
vsebuje poteze za simuliranje izvajanja, se v glavo spletne strani zapise meta podatek
za osvezevanje. Ta podatek spletni strani pove, da naj le to po dolocenem casu
preusmeri. V nasem primeru na samo sebe. Ta moznost nam omogoca ponovno
nalaganje iste spletne strani. Torej bi lahko dejali, da osvezujemo stran Animation.
Dokler seznam ni prazen, je izhod spletne strani v XML formatu, ki nosi pot do
Board. Ta je dejanski generator dinamicnih slik in ob vsakem izrisu zacasne plosce
pobrise pravkar dodano potezo. S tem se seznam potez manjsa, dokler ni prazen.
Ko je prazen, nas stran Animation preusmeri nazaj na Play, ki nam posledicno
izrise trenutno igralno plosco CurrentBoard.
5.3.4 Obmocje obcutljivo na dotik
Za igranje igre in izbiro potez potrebujemo vhodno napravo. To nalogo opravlja
Cisco IP telefonski aparat s svojim zaslonom obcutljivim na dotik (poglavje 2.1.1).
Preden stran Play telefonskemu aparatu vrne XML zapis, definira obmocja obcutlji-
va na dotik. Definira jih tako, da glede na vse mozne poteze igranja (poglavje
6.2.1) in njihove koordinate dodatno se doloci, kje tocno so te koordinate na zaslonu
telefonskega aparata. Za pridobivanje ustreznih koordinat najprej poisce zacetni
koordinati BoardScrXin BoardScrY
, ki predstavljata zacetno tocko (0, 0) igralne
plosce na zaslonu. Ta proces je potreben, saj je zaslon pravokotne in ne kvadratne
oblike, kot nasa igralna plosca (poglavje 2.1.1). Del igralne plosce so tudi stevilke in
crke. Z njihovim kombiniranjem omogocamo lazje odcitavanje potez (slika 5.9(a)).
Tudi ta del igralne plosce zavzema nek prostor BorderS, zato je to vrednost
pri vsaki novi definiciji potrebno pristeti. Da se obmocja obcutljiva na dotik ne
stikajo, imajo vmesni nedefinirani prostor. Zato vsaki zacetni poziciji oz. koordinati
(X1, Y1) elementa pristejemo to vrednost, vsaki koncni koordinati (X2, Y2) elementa
pa odstejemo to vrednost (slika 5.9(b)). Glede na stolpec in vrstico pozicije njeno
vrednost pomnozimo s sirino oziroma visino elementa, ki graficno zaznamuje obmocje
obcutljivo na dotik.
5.3. VIZUALIZACIJA 32
(a) (b)
Slika 5.9: Igralna plosca na zaslonu ter njena povecava.
Dodatno mora dolociti, kaj se bo zgodilo, ko bo uporabnik pritisnil obmocje na
telefonskem aparatu. To stori z naslovom URL, ki ga preusmeri nazaj na spletno
stran Play in ga opremi z dodatno informacijo o obmocju oziroma izbrani poziciji.
Ko bo Cisco IP telefonski aparat prejel XML zapis, ga bo obdelal in najprej izrisal
sliko, potem pa oznacil obmocja obcutljiva na dotik. Postopek definiranja obmocij
obcutljivih na dotik podaja algoritem 2.
5.3. VIZUALIZACIJA 33
Algoritem 2 Definiranje obmocij obcutljivih na dotik.
Vhod: X1 - zacetna koordinata xVhod: Y1 - zacetna koordinata yVhod: X2 - koncna koordinata xVhod: Y2 - koncna koordinata yVhod: PossibleMoves - seznam moznih potezVhod: BoardScrX
- zacetna tocka igralne plosce x, na zaslonu telefonskega aparataVhod: BoardScrY
- zacetna tocka yVhod: BorderS - odmik elementov od roba igralne plosceVhod: ElemW - sirina elementaVhod: ElemH - visina elementaVhod: GridS - razmik med elementiIzhod: XML z definiranimi obmocji obcutljivimi na dotik
X1, Y1, X2, Y2 = 0;BoardScreenX
= (ScrW /2) − (BoardW /2); {od polovice sirine zaslona odstejemopolovico sirine plosce}BoardScreenY
= (ScrH/2) − (BoardH/2); {od polovice visine zaslona odstejemopolovico visine plosce}foreach (Position p in PossibleMoves)
X1 = BoardScrX+ (ElemW * pColumn) + GridS + BorderS;
Y1 = BoardScrY+ (ElemH * pRow) + GridS + BorderS;
X2 = BoardScrX+ ((ElemW * pColumn) + ElemW ) - GridS + BorderS;
Y2 = BoardScrY+ ((ElemH * pRow) + ElemH) - GridS + BorderS;
TouchItem = TouchPostion(X1, Y1 X2, Y2);TouchURL = ”Play?moveTo = ” + pColumn + ”, ” + pRow;TouchScreen.Add(TouchItem, TouchURL);
end forreturn TouchScreen; {XML z vsemi definicijami}
Poglavje 6
Motor
V tem poglavju bomo opisali motor (angl. game engine). Ta predstavlja program,
ki vsebuje umetno inteligenco, katera je osnovna celica nase igre reversi. Vse, kar
je povezano z delovanjem igre, kot je na primer izvajanje potez, iskanje moznih
potez, zavzemanje zetonov, igranje nasprotnega igralca itd., je del motorja. Zasno-
van je v obliki dinamicne knjiznice (angl. dynamic-link library) ali kar DLL. Slika
6.1 prikazuje povezavo med dinamicno knjiznico in spletno stranjo Play.
Slika 6.1: Povezava med motorjem in spletno stranjo.
6.1 Pricetek igre
Vstopno tocko motorja predstavlja pricetek igre. Ko govorimo o pricetku igre,
imamo v mislih inicializacijo vseh potrebnih spremenljivk in pripravo polozajev
igralcev na igralni plosci. Igro pricne igralec ena z izbiro svoje poteze. Potezo vrne
Cisco IP telefon, ki je ob prejsnjem izrisu igralne plosce na zaslonu dodatno oznacil
obmocja obcutljiva na dotik (poglavje 5.3.4). V primeru, ko poteza ni podana, gre
za pricetek igre s pripravljenimi zacetnimi polozaji igralcev. V nasprotnem primeru
gre za tekoco igro, kjer je ze odigrana najmanj ena poteza. Glede na parametre
potrebne za animiran prikaz, se ustvari kopija igralne plosce (poglavje 5.3.3). Sledi
izvedba poteze trenutnega igralca (poglavje 6.2), temu pa poteza igralca dva, ki je v
nasem primeru racunalnik. Tudi on bo glede na globino igre poiskal njemu najboljso
34
6.2. IZVAJANJE POTEZ 35
igralno potezo (poglavje 6.3). Nato poiscemo vse mozne poteze obeh igralcev. Ce
nobeden od igralcev nima moznosti nadaljevanja igre, torej nobeden izmed njiju
nima moznosti poteze, potem to zaznamuje konec igre.
6.2 Izvajanje potez
Ko uporabnik na zaslonu izbere potezo, izgleda kot, da bi potezo izvedel on sam, v
resnici pa jo izvede motor. Za izvedbo ene poteze potrebujemo:
• potezo igranja,
• podatek o igralcu, ki zeli izvesti potezo,
• postopek za obhod ostalih pozicij,
• postopek za preverjanje veljavnosti poteze in
• postopek za zavzemanje nasprotnikovih zetonov.
Torej potezo igranja ze poznamo. Hkrati poznamo tudi igralca, ki jo zeli izvesti. Na
pozicijo poteze vstavimo zeton tega igralca in opravimo obhod v vse smeri igralne
plosce. S tem smo izvedli potezo in zavzeli vse nasprotnikove zetone v vseh smereh.
6.2.1 Iskanje moznih smeri zavzemanja
Iskanje moznih smeri zavzemanja v vseh smereh igralne plosce, si lahko predstav-
ljamo kot matricno sablono (slika 6.2(a)).
(a) Matricna sablona. (b) Matricna sablona polozena nazeleno potezo igranja.
Slika 6.2: Uporaba matricne sablone.
6.2. IZVAJANJE POTEZ 36
Izhodiscna tocka matricne sablone je tocka (0, 0). Orientacija matricne sablone
doloca smer iskanja. Tako bi se pri orientaciji −1,−1 pomikali v smer levo navz-
gor. Pri orientaciji 0,−1 navpicno navzgor itn. Sablono polozimo na igralno plosco,
kjer izhodiscno tocko matricne sablone postavimo na zeleno potezo igranja. Slika
6.2(b) predstavlja odsek igralne plosce s potezo igranja (3, 3), na kateri je polozena
matricna sablona s svojo izhodiscno tocko (0, 0). S pristevanjem orientacije, ki je
celostevilcni element iz intervala [−1, 1] × [−1, 1], dobimo novo zacasno pozicijo.
Sledi preverjanje veljavnosti poteze.
Veljavnost poteze preverimo tako, da prvo pogledamo, ali je nova zacasna poteza
znotraj obmocja igralne plosce. Temu sledi preverjanje, ali je trenutni lastnik nove
pozicije nasprotnik. Ce je pogoj izpolnjen, nadaljujemo iskanje v tej smeri. V
trenutni smeri iskanja se pomikamo z izbrano orientacijo, dokler ne naletimo spet na
svoj zeton. V tem primeru pomeni, da je ta orientacija veljavna in lahko zavzamemo
celotno linijo (poglavje 6.2.2). Sicer spremenimo orientacijo in postopke ponavljamo,
dokler niso preverjene vse smeri igralne plosce.
6.2.2 Zavzemanje nasprotnikovih zetonov
Zavzemanje nasprotnikovih zetonov je dokaj preprost postopek. Vendar brez za-
vzemanja igranje ne bi bilo mozno. Ko ugotovimo, da je smer igranja veljavna
(poglavje 6.2.1), opravimo enak postopek kot pri samem iskanju. Tokrat v izbrani
smeri iscemo svoj zeton in hkrati spreminjamo nasprotnikove zetone v nase. To
naredimo tako, da na igralni plosci numericno vrednost nasprotnika zamenjamo z
naso numericno vrednostjo.
6.3. UMETNA INTELIGENCA 37
6.3 Umetna inteligenca
Umetna inteligenca (angl. artificial intelligence)1 je najzahtevnejse opravilo motorja.
Z umetno inteligenco simuliramo nasprotnika, ki je do neke mere ”inteligenten”. To
mero podamo z globino (angl. depth). Ko govorimo o globini igre, imamo v mislih,
koliko potez (poteza v igri) vnaprej bo racunalnik razvil iskalno drevo. Vecja kot
je globina, vecja je moznost racunalnikove zmage. Uporabnik je naredil potezo in
caka na izvedbo poteze racunalnika. Za iskanje najboljse poteze smo implementirali
iskalni algoritem alfa-beta. Naloga racunalnik je (v tem primeru je misljena umetna
inteligenca) zgraditi iskalno drevo igre. Glede na izracunano oceno se bo odlocil, v
katero smer bo igral. Postopke za iskanje najboljse poteze prikazuje algoritem 3.
Algoritem 3 Algoritem alfa-beta.
Vhod: depth - globina igreVhod: board - igralna ploscaVhod: alpha - vrednosti igralca maksVhod: beta - vrednosti igralca minIzhod: staticna ocena
eval = 0;if depth == 0 then
return Evaluate(board); {ocenitvena funkcija}end ifPossibleMoves = GetPossibleMoves(); {iskanje moznih potez}foreach (Position p in PossibleMoves)
if alpha >= beta thenbreak; {klestenje drevesa}
end ifboard = MakeMove(p) {izvedba poteze}{rekurzivni klic}eval = −alphaBeta(board, depth− 1, −beta, −alpha) {ocena poteze}if eval > alpha then
alpha = eval; {nova vrednost}end if
end foreturn alpha; {staticna ocena}
Podroben postopek delovanja algoritma 3 (alfa-beta) je opisan v poglavju 2.2.6.
1Bralec lahko najde opis o umetni oz. racunski inteligenci v knjigi[3].
6.4. OCENITVENA FUNKCIJA 38
6.4 Ocenitvena funkcija
Ocenitvena funkcija se izvede sele, ko je iskalno drevo zgrajeno. Zato je snovanje le
te zelo pomembno. Odloca o tem, katera poteza bo izbrana. Ocenitveno funkcijo
je mozno zasnovati na vec nacinov. Vsaka ima svoje prednosti in slabosti. Odlocili
smo se za ocenitveno funkcijo vsote. Matematicni model 6.1 predstavlja vsoto vseh
zetonov igralne plosce. Oznaka w zaznamuje sirino igralne plosce, h visino igralne
plosce, i vrstico, j stolpec in Board igralno plosco z numericnimi vrednostmi.
Ocenitveno fukncijo f izracunamo:
f =w−1∑i=0
h−1∑j=0
Board[i, j]. (6.1)
Naknadno smo ocenitveno funkcijo ojacali. Pravimo, da smo povecali moc oce-
nitvene funkcije. Ocenitveno funkcijo vsote smo kombinirali s polozajno strategijo
(poglavje 2.2.2). Smisel polozajne strategije je zavzeti robna obmocja, saj so le
ta stratesko gledano najboljsa. Zato pripravimo matriko enake dimenzije, kot je
igralna plosca in jo zapolnimo. Posamezna vrednost celice pomeni toliksno ojacanje
polozaja, kot je numericna vrednost polozaja v matriki polozajne strategije.
PositionalMatrix =
100 −20 10 5 5 10 −20 100
−20 −50 −2 −2 −2 −2 −50 −20
10 −2 −1 −1 −1 −1 −2 10
5 −2 −1 −1 −1 −1 −2 5
5 −2 −1 −1 −1 −1 −2 5
10 −2 −1 −1 −1 −1 −2 10
−20 −50 −2 −2 −2 −2 −50 −20
100 −20 10 5 5 10 −20 100
(6.2)
Matriko polozajne strategije PositionalMatrix lahko razdelimo na stiri kvartale,
ki se med seboj preslikavajo. Kotne pozicije imajo mocno ojacanje, ob kotne pa
sibko oz. negativno. Razlog je ta, ce vstavimo svoj zeton tik pred kotno pozicijo, bo
nasprotnik zavzel zeleno kotno, kar seveda ne zelimo. Ojacano ocenitveno funkcijo
fm izracunamo:
fm =w−1∑i=0
h−1∑j=0
Board[i, j] · PositionalMatrix[i, j]. (6.3)
Poglavje 7
Podatkovni streznik
To poglavje je namenjeno podatkovnemu strezniku. Za realizacijo nase resitve Re-
versiOnCisco smo uporabili podatkovni streznik SQL Server 2005. Na njem je
shranjena podatkovna baza, s katero operira nasa aplikacija. Podatkovni streznik
sluzi shranjevanju statisticnih podatkov v podatkovno bazo, ki nam ob poljubnem
trenutku dajo informacijo o preteklih igrah in njenih izidih. Pisali bomo o njegovih
nalogah:
• zakaj in kdaj ga potrebujemo,
• dostop do njega,
• zasnova podatkovne baze,
• shranjenih procedurah in
• obdelavi podatkov.
Slika 7.1: Povezava med spletnim in podatkovnim streznikom.
Za dostop do podatkovne baze shranjene na podatkovnem strezniku smo upora-
bili resitev SubSonic. Slika 7.1 prikazuje povezavo med spletnim in podatkovnim
streznikom. Dostop do podatkovnega streznika je mozen le preko spletnega streznika.
39
7.1. DOSTOP DO PODATKOVNEGA STREZNIKA 40
Cisco IP telefon nima neposrednega dostopa do podatkovnega streznika in po-
datkovne baze shranjene na njem.
7.1 Dostop do podatkovnega streznika
Do podatkovnega streznika dostopamo z dinamicno knjiznico, ki smo jo poimenovali
GameStatistics, samo v dveh primerih:
• koncanje igre (primer 1) in
• zahteva po prikazu statisticnih podatkov (primer 2).
Slika 7.2: Podatkovni tok med spletnim in podatkovnim streznikom.
V primeru 1 gre za shranjevanje podatkov. Ne glede na izid igre se shranijo
statisticno pomembni podatki. Izhajamo iz spletne stran Play. Izid igre je lahko:
• zmagovalec je igralec ena (uporabnik),
• zmagovalec je igralec dva (umetna inteligenca) ali
• neodloceno.
V primeru 2 gre za pridobivanje ze shranjenih statisticnih podatkov. Izhajamo
iz spletne strani Statistics. Slika 7.2 prikazuje podatkovni tok med spletnim in
podatkovnim streznikom. Za upravljanje uporabljamo dinamicno knjiznico.
7.2. PODATKOVNA BAZA 41
7.2 Podatkovna baza
Podatkovna baza (angl. database) je prostor, kamor shranjujemo statisticne po-
datke. Poleg shranjenih podatkov predstavljajo shranjene procedure (angl. stored
procedures) postopke za obdelavo le teh.
Za nas relevantvni statisticni podatki so:
• naziv telefonskega aparata (DeviceName),
• ime igralca 1 (Player1Name),
• ime igralca 2 (Player2Name),
• globina igre (GameDepth),
• stevilo dosezenih tock igralca 1 (Player1Score),
• stevilo dosezenih tock igralca 2 (Player2Score),
• koncni zmagovalec (GameWinner),
• cas pricetka igranja (GameStart),
• cas trajanja igranja (GameDuration) in
• stanje igralne plosce po koncani igri (BoardState).
Za shranjevanje in vracanje statisticnih podatkov uporabljamo tri shranjene proce-
dure:
• shranjevanje podatkov (SetStatistic),
• vracanje podatkov glede na ime naprave (GetStatisticByDeviceName) in
• vracanje podatkov glede na identifikator (GetStatisticByID).
7.3. OBDELAVA STATISTICNIH PODATKOV 42
7.3 Obdelava statisticnih podatkov
Ko govorimo o obdelavi statisticnih podatkov, imamo v mislih shranjevanje in pri-
dobivanje le teh. Za izvedbo teh akcij uporabljamo vnaprej shranjene procedure, s
katerimi povecamo varnost dostopa do podatkovnega streznika.
7.3.1 Shranjevanje podatkov
Izvedba shranjevanja statisticnih podatkov poteka na spletne strani Play. Vsak
skupek shranjenih statisticnih podatkov oz. zapis ima svoj edinstven kljuc ali iden-
tifikator (ID). Obicajen postopek shranjevanja podatkov bi lahko bil podoben sled-
njemu: pricetek igre s predcasno dolocenimi nastavitvami. Shranjevanje novega
zapisa z nastavljenimi nastavitvami in casom pricetka igre. Po koncani igri poisce
ID trenutne igre, izracuna cas igranja, doloci zmagovalca in vstavi koncno stanje
igre. V prikazanem primeru bi za eno odigrano igro potrebovali dva dostopa do
podatkovne baze, kar prikazuje postopek 4. Shranjevanje ali vracanje podatkov pa
stane nekaj casa. Vecja kot je casovna rezina opravila, bolj bo uporabnik to obcutil.
Algoritem 4 Odigrana igra z dvema dostopoma do podatkovne baze.
Vhod: settings - nastavitveIzhod: odigrana igra s shranjenimi statisticnimi podatki
saveSettingsIntoDB; {shranjevanje zacetnih nastavitev (prvi dostop)}startGame; {pricetek igre}WHILE !gameOver DO {dokler igra ni koncana}
play; {igraj}ENDWHILEeditStatisticIntoDB; {dopolnjevanje statisticnih podatkov (drugi dostop)}
Na problem smo pogledali iz druge strani. Ce uporabnik igro pricne, nato
nekaj casa igra in igro predcasno prekine, potem tako igro ne stejemo kot veljavno.
Torej smo postopek shranjevanja podatkov prilagodili: pricetek igre s predcasno
dolocenimi nastavitvami in trenutnim casom, nemoteno odigranje igre in konec igre.
Klic shranjene procedure za shranjevanje podatkov se izvede sele po koncani igri.
Proceduro smo zasnovali tako, da prejme vse podatke razen casa trajanja igre. Ta
se tik pred shranjevanjem izracuna glede na trenutni cas, od katerega smo odsteli
cas pricetka igre. S tem smo dobili zadnji manjkajoci podatek in opravili zapis s
samo enim dostopom. Postopek opisuje algoritem 5.
7.3. OBDELAVA STATISTICNIH PODATKOV 43
Algoritem 5 Odigrana igra z enim dostopom do podatkovne baze.
Vhod: settings - nastavitveIzhod: odigrana igra s shranjenimi statisticnimi podatki
startGame; {pricetek igre}WHILE !gameOver DO {dokler igra ni koncana}
play; {igraj}ENDWHILEsaveStatisticIntoDB; {shranjevanje statisticnih podatkov z enim dostopom}
7.3.2 Pridobivanje podatkov
Kot smo ze omenili, poteka operiranje s statisticnimi podatki na spletni strani Play
in Statistics. Povedali smo tudi, da na spletni strani Play izvajamo shranjevanje,
na spletni strani Statistics pa vracanje oz. pridobivanje le teh.
Slika 7.3: Pridobivanje statisticnih podatkov.
Spletna stran Statistics ima tri naloge:
• vracanja vseh shranjenih statisticnih podatkov (Pregled),
• vracanje igralne plosce glede na ID zapisa (Igralna plosca) in
• vracanje podrobnosti o poteku igre glede na ID zapisa (Podrobnosti).
Smiselno bi bilo vracanje statisticnih podatkov po vrstnem redu pregled, podrob-
nosti in nato igralna plosca, vendar zaradi omejitve Cisco IP telefona tak nacni ni
mozen. Za podrobnosti uporabljamo menijske vrstice objekta CiscoIPPhoneMenu.
Ta nam omogoca vracanje maksimalno 100 shranjenih zapisov dolzine do 64 znakov.
Ta objekt nam omogoca dodajanje naslova URL, kamor nas telefonski aparat po
izbrani menijski vrstici preusmeri. Naslednji objekt je CiscoIPPhoneGraphicFile-
Menu. Uporabljamo ga za prikaz igralne plosce. Tokrat generatorju dinamicnih
slik posljemo sekvenco numericnih vrednosti. Ta zaznamuje stanje zavzetih celic
na igralni plosci. Obmocje obcutljivo na dotik definiramo podobno kot v poglavju
5.3.4 (Obmocje obcutljivo na dotik), vendar tokrat cez celotno sliko igralne plosce.
7.3. OBDELAVA STATISTICNIH PODATKOV 44
Definirano obmocje tokrat ne pomeni izvedbo nove poteze, temvec preusmeritev na
samega sebe z zahtevo po podrobnostih te igre. Podrobnosti prikazemo z objektom
CiscoIPPhoneText. Ker je zmoznost tega objekta le prikaz znakov in ne omogoca
nadaljnje preusmeritve, smo na tem mestu prisiljeni vrniti vse preostale statisticne
podatke. Lastnosti omenjenih objektov smo opisali v poglavju 2.1.1. V vseh treh
primerih je preusmeritev na spletno stran Statistics vendar z razlicnimi zahtevami.
Poglavje 8
Rezultati programa
ReversiOnCisco
Program ReversiOnCisco zdruzuje tri komponente. Cisco IP telefonski aparat, ki
predstavlja sprednji konec (angl. front-end) ter spletni in podatkovni streznik, ki
predstavljata zadnji konec (angl. back-end) nase aplikacije. Sprednji konec sluzi
komunikaciji med uporabnikom in telefonskim aparatom, zadnji konec pa skrbi za
procesiranje oziroma vracanje podatkov.
V nadaljevanju je prikazano delovanje nasega programa. Prikazane slike so rezul-
tat izvajanja posameznih akcij nasega programa na Cisco IP Communicator-ju.
Identicne rezultate vracajo novejse razlicice Cisco IP telefonskih aparatov, kot je
Cisco IP telefonski aparat 7970. Ta ze v osnovi vkljucuje zaslon obcutljiv na dotik.
Pri tem omenimo, da uporabljena razlicica Cisco IP Communicator-ja ne podpira
sumnikov.
Delovanje nasega programa bomo razdelili v vec korakov. Prvo bomo opisali
zacetni ali vstopni meni. Nato opisemo posamezno menijsko vrstico in njene zmozno-
sti. Sledi prikaz igranja igre z razlicnimi nastavitvami. Tukaj bomo opisali razlog
za posamezne izbrane poteze umetne inteligence. Nato bomo spremenili posamezne
nastavitve igranja in opisali njihovo posledico v ponovni igri. Primerjali bomo moc
igranja umetne inteligence pri razlicni globini igranja z (ali brez) uporabe polozajne
strategije. Opisali bomo razlike med igranjem z omogoceno (ali onemogoceno) nas-
tavitvijo prikaza moznih potez, animiranega prikaza izvajanja potez in dodatno
moznost animiranega prikaza izvajanja potez, ki je usmeritev zavzemanja zetonov.
Za prikaz razlicnega delovanja igre z razlicnimi nastavitvami je potreben ponovni
zagon igre. Zato spreminjamo nastavitve in igro zacenjamo vedno znova. Za konec
opisemo pregled statisticnih podatkov odigranih iger in s tem koncamo poglavje z
rezultati nasega programa ReversiOnCisco.
45
8.1. PRIMER IGRE 46
8.1 Primer igre
Slika 8.1: Vstopni meni.
Slika 8.1 prikazuje vstopni meni. Vstopni meni se uporabniku prikaze, kadar
pozene nas programa. Na izbiro imamo vec menijskih vrstic. Vsaka izmed njih nas
vodi v svoj odsek igre, od koder je mozno njihovo nadaljnje upravljanje.
Slika 8.2: Prikaz moznih nastavitev.
Kot je razvidno iz slike 8.2, smo pred pricetkom igre izbrali menijsko vrstico
nastavitve. Prikazana je stran, ki jo kot odgovor na izbiro menijske vrstice nastavitve
vrne spletni streznik. Vidimo, da nam je dana moznost spreminjanja privzetih
nastavitev. Poleg spreminjanja imena lahko spremenimo tudi globino igre. V nasem
primeru smo globino igre omejili na maksimalno sest potez vnaprej. Stevilo sest
predstavlja zgornjo sprejemljivo mejo, saj se z vecanjem globine eksponentno veca
tudi velikost iskalnega drevesa. Za prikaz trivialne igre smo izbrali globino ena.
Animacijo in usmeritev smo v tem primeru onemogocili, prikaz moznih potez pa
omogocili. Po potrditvi izbranih nastavitev se ponovno prikaze vstopni meni (slika
8.1), kjer za igranje igre z izbranimi nastavitvami izberemo menijsko vrstico pricetek
igre.
8.1. PRIMER IGRE 47
Prikazali bomo primer igranja umetne inteligence pri globini ena z (ali brez)
polozajne strategije.
Slika 8.3: Zacetna postavitev zetonov z moznimi potezami.
Pricetek igre z izbranimi nastavitvami predstavlja igralno plosco z vnaprej dolo-
cenimi zacetnimi polozaji. Pri nastavitvah smo omogocili mozne poteze, zato so pri
tej igri mozne poteze igranja oznacene z rdecimi krizci. Rdeci so, ker smo lastnik
rdecih zetonov. Na dnu zaslona vidimo imena igralcev s pripadajocim stevilom
zavzetih zetonov.
(a) Brez polozajne strategije. (b) S polozajno strategijo.
Slika 8.4: Stanje igralne plosce po prvi potezi E,6.
Slika 8.4 prikazuje, da se umetna inteligenca po nasi izbrani potezi odloci za
enako potezo D,6 z (ali brez) polozajne strategije.
Po izbrani potezi C,5 je razlika v moci polozajne strategije umetne inteligence
ocitna, kar prikazuje slika 8.5. Iz slike 8.5(a) je razvidno, da se umetna inteligenca
odloci za potezo F,4. Vzrok temu je, da nasprotnik pri izbrani globini razvije iskalno
drevo samo za eno potezo naprej. Torej v primeru izbrane poteze zavzame dva nasa
zetona, v vseh ostalih pa samo enega. Iz slike 8.5(b) je razvidno, da se umetna
8.1. PRIMER IGRE 48
(a) Brez polozajne strategije. (b) S polozajno strategijo.
Slika 8.5: Stanje igralne plosce po izbrani potezi C,5.
inteligenca z uporabo polozajne strategije odloci za potezo B,4. Vzrok temu je ma-
trika polozajne strategije. Ta poveca moznost izbire pozicije blizje lezecim robovom,
kajti bolj kot se blizamo srediscu igralne plosce slabse so moznosti nadaljnje igre.
Sicer je nasprotnikovo stanje zavzetih zetonov v primeru brez polozajne strategije
visje, s polozajno pa nizje, vendar se igranje v smeri robnih polozajev obrestuje in
konec koncev bi ob neprevidni izbiri potez umetna inteligenca z vecjo verjetnostjo
zmagala.
8.1.1 Primerjava moci dveh umetnih inteligenc
Za primerjavo moci umetnih inteligenc smo pripravili dva primerka umetne in-
teligence. Prvi primerek bo simuliral izbiro nasih najboljsih potez, drugi pa izbiro
nasprotnikovih najboljsih potez. Primerek ena igra z globino tri, primerek dva pa
z globino sest. Odigrala bosta dve igri, prvo brez, drugo pa z uporabo polozajne
strategije. Prikazali bomo rezultate igranja dveh umetnih inteligenc.
(a) (b)
Slika 8.6: Primerjava rezultatov umetnih inteligenc.
8.1. PRIMER IGRE 49
Ze vnaprej lahko pricakujemo, da bo primerek dva v obeh primerih zmagal, saj
igra z visjo stopnjo inteligence kot primerek ena. Razliko poda polozajna strategija.
Na sliki 8.6(b) vidimo vec rdecih zetonov, saj je v odigrani igri igralec rdecih zetonov
uporabljal polozajno strategijo, pri sliki 8.6(a) pa ne.
8.1.2 Igranje igre brez moznih potez
Igranje igre brez moznih potez je nekoliko zahtevnejse kot z moznimi potezami. Za
taksno igro je potrebno v nastavitvah moznost mozne poteze onemogociti. Izvedbo
tega prikazuje slika 8.7.
Slika 8.7: Nastavitev brez moznih potez.
Slika 8.8 prikazuje igralno plosco brez oznacenih moznih potez igranja.
Slika 8.8: Pricetek igre brez moznih potez.
V primeru enakih izbir potez kot pri igranju z moznimi potezami, bi igra potekala
analogno, saj mozne poteze ne vplivajo na odlocitev umetne inteligence. Uporabniku
le olajsajo pot do prave izbire.
8.1. PRIMER IGRE 50
8.1.3 Animiran prikaz izvajanja potez
Za animiran prikaz izvajanja potez je pri nastavitvah potrebno omogociti animacijo.
Zaradi boljse ponazoritve izbranih potez smo omogocili tudi mozne poteze. Us-
meritev je v tem primeru onemogocena in globina igre je tri. Opisano podaja slika
8.9.
Slika 8.9: Nastavitve za igranje igre z animiranim prikazom izvajanja potez.
Slika 8.10 prikazuje animiran prikaz izvedbe dveh potez in posledicno zavzemanje
zetonov. Prvo potezo izvedemo mi, naslednjo pa nasprotnik. Zaporedje zavzemanja
poteka v zaporedju izbranih potez. Osvezevanje poteka v casovnem intervalu ene
sekunde.
8.1. PRIMER IGRE 51
(a) (b)
(c) (d)
(e) (f)
(g) (h)
Slika 8.10: Animiran prikaz izvajanja potez.
8.1. PRIMER IGRE 52
8.1.4 Animiran prikaz izvajanja potez z usmeritvijo
Kadar gre igra v fazo zaprtja, je ob stevilnih zetonih na igralni plosci tezko slediti
animiranemu izvajanju potez. Obstaja moznost zavzemanja zetonov v vec smeri
hkrati. V takem primeru nam koristi znanje usmerjenosti zavzemanja. Ob enakih
nastavitvah kot v poglavju 8.1.3, z dodatno omogoceno nastavitvijo usmeritev, je
rezultat slika 8.11.
(a) (b)
(c) (d)
(e) (f)
Slika 8.11: Animiran prikaz izvajanja potez z usmeritvijo.
8.2. STATISTICNI PODATKI 53
Slika 8.12: Nastavitve za igranje igre z animiranim prikazom izvajanja potez z us-meritvijo.
8.2 Statisticni podatki
Po vsaki koncani igri se shranijo podatki o igri. Prikaze se koncno stanje igre z napi-
som ”Ni vec moznih potez”, od koder lahko nadaljujemo ali se vrnemo na vstopno
stran. V primeru nadaljevanja nam program na dnu zaslona izpise zmagovalca igre
in daje moznost ponovne igre ali pregleda statisticnih podatkov (slika 8.13(a)).
(a) (b)
Slika 8.13: Moznost ponovne igre ali pregleda statisticnih podatkov.
Ce zelimo pregledati statisticnih podatkov, izberemo menijsko vrstico statistika.
Enake rezultate vrne menijska vrstica statistika na vstopni strani (slika 8.13(b)).
Slika 8.14(a) prikazuje izpis zadnjih sto odigranih iger na tem telefonskem aparatu.
Odigrane igre so v obliki casovnih podatkov. Sestavljajo jih datum igranja, cas
pricetka igre ter cas trajanja igranja. Kot primer bomo izbrali zadnjo odigrano igro.
Ta je na prvem mestu.
Slika 8.14(b) se prikaze po izbrani igri in prikazuje koncno stanje odigrane igre.
S klikom na igro se prikazejo se ostale podrobnosti o tej igri (slika 8.14(c)).
8.2. STATISTICNI PODATKI 54
(a)
(b)
(c)
Slika 8.14: Pregled statisticnih podatkov.
8.3. OSTALO 55
8.3 Ostalo
Zadnja menijska vrstica je ostalo. Njen pomen pa razkrije slika 8.15.
Slika 8.15: Nasa vizitka.
Poglavje 9
Zakljucek
V diplomski nalogi smo predstavili igranje igre reversi na Cisco IP telefonskem
aparatu. Za realizacijo nase resitve smo izbrali resitev telefonskega aparata Cisco
IP, saj je bila najbolj primerna za nase potrebe. Pri tem smo uporabljali razsirljivi
oznacevalni jezik XML, ki ga razume izbrani telefonski aparat. Problema smo se
lotili po strategiji deli in vladaj, katere osnovni rezultati so bili trije segmenti: Cisco
IP telefonski aparat, spletni in podatkovni streznik. Bistveno vlogo ima spletni
streznik, ki komunicira z uporabnikom preko telefonskega aparata Cisco IP in po-
datkovnim streznikom za shranjevanje statisticnih podatkov. Poleg tega skrbi za
pravilen tok igre.
Zaradi dinamike igre smo razvili generator dinamicnih slik. Ta ustvari igralno
plosco z zetoni kot izhodno sliko. Z izhodno sliko in obmocji obcutljivimi na dotik
smo omogocili prikaz aktualne igralne plosce na telefonskem aparatu, kjer obmocja
obcutljiva na dotik predstavljajo mozne poteze uporabnika. Dodatna pomanjkljivost
telefonskega aparata je animacija. S kombinacijo vecih spletnih strani, tehnike
osvezevanja in vodenja dodatnega seznama izvedenih potez nam je uspelo simulirati
animiran prikaz izvajanja potez. Dodatno smo glede na orientacijo implementirali
moznost prikaza usmeritve zavzemanja zetonov.
Nasprotnik oz. umetna inteligence v igri je del motorja. Umetna inteligenca
za izbiro potez uporablja iskalni algoritem alfa-beta v kombinaciji z ojacano ocen-
itveno funkcijo. Osnovno ocenitveno funkcijo smo krizali s polozajno strategijo. To
doprinese vecjo moznost odlocitve za izbiro robnih kot obrobnih pozicij. S tem smo
ojacali moc umetne inteligence, saj nasprotniku skrajno robnih zetonov ni mozno
zavzeti.
Po koncani igri se koncno stanje igre z vsemi nastavitvami in rezultati zapise v
podatkovno bazo. Po zelji lahko v poljubnem trenutku priklicemo podrobnosti o
odigrani igri in si ogledamo koncno stanje zetonov na igralni plosci.
Mozne nadaljnje raziskave bi bile na podrocju umetne inteligence. Za iskanje
56
57
moznih potez bi lahko uporabili nevronske mreze. Prav tako bi lahko osnovno
ocenitveno funkcijo krizali z drugimi strategijami. Na podrocju telefonije bi lahko
obstojeco resitev razsirili tako, da bi omogocili socasno igranje uporabnikov na raz-
licnih telefonskih aparatih. Dodatna moznost bi bila, da bi bilo mozno igranje igre
zacasno prekiniti in jo pozneje nadaljevati. Potrebno bi bilo odgovoriti na vprasanja,
kako reagira nas program ob dohodnem klicu. V primeru odhodnega klica bi lahko
uporabili prejsnjo omenjeno resitev zacasne prekinitve igre.
Podali smo nekaj moznosti nadaljnjih raziskav in zakljucili diplomsko delo, v
katerem smo prikazali, da je mozno igranje igre reversi na telefonskem aparatu za
IP telefonijo.
Literatura
[1] “Cisco unified IP phone services application development notes release 6.0(1),”
Technical Report, 2007, [Internet http://www.cisco.com/en/US/docs/voice ip
comm/cuipph/all models/xsi/6 0/english/programming/guide/xsi.pdf; dostop
28. junij 2008].
[2] “Xml syntax quick reference,” 2006, [Internet http://www.mulberrytech.com/
quickref/XMLquickref.pdf; dostop 2. junij 2008].
[3] D. B. Fogel, ‘ ‘Evolutionary Computation: Toward a New Philosophy of Ma-
chine Intelligence,“ 3rd izd., Wiley-IEEE Press, 2006.
[4] S. Lucas in G. Kendall, “Evolutionary computation and games,” Computational
Intelligence Magazine, IEEE, letn. 1, st. 1, str. 10–18, 2006.
[5] S. Chong, M. Tan, in J. White, “Observing the evolution of neural networks
learning to play the game of Othello,” Evolutionary Computation, IEEE Trans-
actions on, letn. 9, st. 3, str. 240–251, 2005.
[6] N. van Eck in M. van Wezel, “Application of reinforcement learning to the game
of Othello,” Computers and Operations Research, letn. 35, st. 6, str. 1999–2017,
2008.
[7] S. Lucas in T. Runarsson, “Temporal Difference Learning Versus Co-Evolution
for Acquiring Othello Position Evaluation,” IEEE Symposium on Computa-
tional Intelligence and Games, 2006, [Internet http://www3.hi.is/∼tpr/papers/
SiRu06.pdf; dostop 22. avgust 2008].
[8] M. Buro, “From simple features to sophisticated evaluation functions,” v Com-
puters and Games, Proceedings of CG98, LNCS 1558. Springer-Verlag, 1998,
str. 126–145.
[9] M. Buro, “Statistical Feature Combination for the Evaluation of Game Posi-
tions,” Journal of Artificial Intelligence Research, letn. 3, str. 373–382, 1995,
58
LITERATURA 59
[Internet http://arxiv.org/PS cache/cs/pdf/9512/9512106v1.pdf; dostop 23.
avgust 2008].
[10] M. Buro, “The Othello match of the year: Takeshi Murakami vs. Logistello,”
ICCA Journal, letn. 20, st. 3, str. 189–193, 1997.
[11] J. V. Neumann, “Zur theorie der gesellschaftsspiele,” Mathematische Annalen,
letn. 100, st. 1, str. 295–320, 1928.
[12] M. Lustrek, “Racunalnisko igranje iger s kartami,” Diplomska naloga, Fakulteta
za racunalnistvo in informatiko, Univerza v Ljubljani, 2002.
[13] M. Vuurboom, “Learning othello using neuroevolution and temporal difference
learning,” Master thesis, 2008, [Internet http://people.cs.uu.nl/marco/thesis
vuurboom.pdf; dostop 14. avgust 2008].
[14] T. Andersen, K. Stanley, in R. Miikkulainen, “Neuro-Evolution Through Aug-
menting Topologies Applied To Evolving Neural Networks To Play Othello,”
Department of Computer Sciences, University of Texas at Austin, Technical
Report, Technical Report, 2002, [Internet http://www.cs.utexas.edu/ftp/pub/
techreports/tr02-32.pdf; dostop 16. julij 2008].
[15] D. Billman in D. Shaman, “Strategy knowledge and strategy change in skilled
performance: A study of the game othello,” American Journal of Psychology,
letn. 103, st. 2, str. 145–166, 1990.
[16] T. Marsland, “A review of game-tree pruning,” ICCA Journal, letn. 9,
st. 1, str. 3–19, 1986, [Internet http://www.cs.ualberta.ca/∼tony/OldPapers/
1986review.pdf; dostop 15. julij 2008].
[17] S. Worley, Inside ASP.Net. Sams Publishing, 2002.
Priloge
− Zgoscenka z diplomsko nalogo v elektronski obliki.
60