70
Univerza v Mariboru Fakulteta za elektrotehniko, ra ˇ cunalni ˇ stvo in informatiko David Bombek IGRA REVERSI NA TELEFONSKEM APARATU CISCO IP Diplomska naloga Maribor, september 2008

Diplomska naloga - UM · Seznam uporabljenih simbolov x, y koordinate p poteza igralca s stanje pozicije igralca na igralni plo•s•ci r igralec z rde•cimi •zetoni g igralec

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Diplomska naloga - UM · Seznam uporabljenih simbolov x, y koordinate p poteza igralca s stanje pozicije igralca na igralni plo•s•ci r igralec z rde•cimi •zetoni g igralec

Univerza v Mariboru

Fakulteta za elektrotehniko,

racunalnistvo in informatiko

David Bombek

IGRA REVERSI NA TELEFONSKEM

APARATU CISCO IP

Diplomska naloga

Maribor, september 2008

Page 2: Diplomska naloga - UM · Seznam uporabljenih simbolov x, y koordinate p poteza igralca s stanje pozicije igralca na igralni plo•s•ci r igralec z rde•cimi •zetoni g igralec

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

Page 3: Diplomska naloga - UM · Seznam uporabljenih simbolov x, y koordinate p poteza igralca s stanje pozicije igralca na igralni plo•s•ci r igralec z rde•cimi •zetoni g igralec

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.

Page 4: Diplomska naloga - UM · Seznam uporabljenih simbolov x, y koordinate p poteza igralca s stanje pozicije igralca na igralni plo•s•ci r igralec z rde•cimi •zetoni g igralec

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.

Page 5: Diplomska naloga - UM · Seznam uporabljenih simbolov x, y koordinate p poteza igralca s stanje pozicije igralca na igralni plo•s•ci r igralec z rde•cimi •zetoni g igralec

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.

Page 6: Diplomska naloga - UM · Seznam uporabljenih simbolov x, y koordinate p poteza igralca s stanje pozicije igralca na igralni plo•s•ci r igralec z rde•cimi •zetoni g igralec

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

Page 7: Diplomska naloga - UM · Seznam uporabljenih simbolov x, y koordinate p poteza igralca s stanje pozicije igralca na igralni plo•s•ci r igralec z rde•cimi •zetoni g igralec

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

Page 8: Diplomska naloga - UM · Seznam uporabljenih simbolov x, y koordinate p poteza igralca s stanje pozicije igralca na igralni plo•s•ci r igralec z rde•cimi •zetoni g igralec

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

Page 9: Diplomska naloga - UM · Seznam uporabljenih simbolov x, y koordinate p poteza igralca s stanje pozicije igralca na igralni plo•s•ci r igralec z rde•cimi •zetoni g igralec

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

Page 10: Diplomska naloga - UM · Seznam uporabljenih simbolov x, y koordinate p poteza igralca s stanje pozicije igralca na igralni plo•s•ci r igralec z rde•cimi •zetoni g igralec

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

Page 11: Diplomska naloga - UM · Seznam uporabljenih simbolov x, y koordinate p poteza igralca s stanje pozicije igralca na igralni plo•s•ci r igralec z rde•cimi •zetoni g igralec

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

Page 12: Diplomska naloga - UM · Seznam uporabljenih simbolov x, y koordinate p poteza igralca s stanje pozicije igralca na igralni plo•s•ci r igralec z rde•cimi •zetoni g igralec

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

Page 13: Diplomska naloga - UM · Seznam uporabljenih simbolov x, y koordinate p poteza igralca s stanje pozicije igralca na igralni plo•s•ci r igralec z rde•cimi •zetoni g igralec

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

Page 14: Diplomska naloga - UM · Seznam uporabljenih simbolov x, y koordinate p poteza igralca s stanje pozicije igralca na igralni plo•s•ci r igralec z rde•cimi •zetoni g igralec

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.

Page 15: Diplomska naloga - UM · Seznam uporabljenih simbolov x, y koordinate p poteza igralca s stanje pozicije igralca na igralni plo•s•ci r igralec z rde•cimi •zetoni g igralec

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

Page 16: Diplomska naloga - UM · Seznam uporabljenih simbolov x, y koordinate p poteza igralca s stanje pozicije igralca na igralni plo•s•ci r igralec z rde•cimi •zetoni g igralec

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,

Page 17: Diplomska naloga - UM · Seznam uporabljenih simbolov x, y koordinate p poteza igralca s stanje pozicije igralca na igralni plo•s•ci r igralec z rde•cimi •zetoni g igralec

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.

Page 18: Diplomska naloga - UM · Seznam uporabljenih simbolov x, y koordinate p poteza igralca s stanje pozicije igralca na igralni plo•s•ci r igralec z rde•cimi •zetoni g igralec

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.

Page 19: Diplomska naloga - UM · Seznam uporabljenih simbolov x, y koordinate p poteza igralca s stanje pozicije igralca na igralni plo•s•ci r igralec z rde•cimi •zetoni g igralec

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.

Page 20: Diplomska naloga - UM · Seznam uporabljenih simbolov x, y koordinate p poteza igralca s stanje pozicije igralca na igralni plo•s•ci r igralec z rde•cimi •zetoni g igralec

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

Page 21: Diplomska naloga - UM · Seznam uporabljenih simbolov x, y koordinate p poteza igralca s stanje pozicije igralca na igralni plo•s•ci r igralec z rde•cimi •zetoni g igralec

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,

Page 22: Diplomska naloga - UM · Seznam uporabljenih simbolov x, y koordinate p poteza igralca s stanje pozicije igralca na igralni plo•s•ci r igralec z rde•cimi •zetoni g igralec

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

Page 23: Diplomska naloga - UM · Seznam uporabljenih simbolov x, y koordinate p poteza igralca s stanje pozicije igralca na igralni plo•s•ci r igralec z rde•cimi •zetoni g igralec

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.

Page 24: Diplomska naloga - UM · Seznam uporabljenih simbolov x, y koordinate p poteza igralca s stanje pozicije igralca na igralni plo•s•ci r igralec z rde•cimi •zetoni g igralec

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.

Page 25: Diplomska naloga - UM · Seznam uporabljenih simbolov x, y koordinate p poteza igralca s stanje pozicije igralca na igralni plo•s•ci r igralec z rde•cimi •zetoni g igralec

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.

Page 26: Diplomska naloga - UM · Seznam uporabljenih simbolov x, y koordinate p poteza igralca s stanje pozicije igralca na igralni plo•s•ci r igralec z rde•cimi •zetoni g igralec

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

Page 27: Diplomska naloga - UM · Seznam uporabljenih simbolov x, y koordinate p poteza igralca s stanje pozicije igralca na igralni plo•s•ci r igralec z rde•cimi •zetoni g igralec

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.

Page 28: Diplomska naloga - UM · Seznam uporabljenih simbolov x, y koordinate p poteza igralca s stanje pozicije igralca na igralni plo•s•ci r igralec z rde•cimi •zetoni g igralec

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

Page 29: Diplomska naloga - UM · Seznam uporabljenih simbolov x, y koordinate p poteza igralca s stanje pozicije igralca na igralni plo•s•ci r igralec z rde•cimi •zetoni g igralec

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.

Page 30: Diplomska naloga - UM · Seznam uporabljenih simbolov x, y koordinate p poteza igralca s stanje pozicije igralca na igralni plo•s•ci r igralec z rde•cimi •zetoni g igralec

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

Page 31: Diplomska naloga - UM · Seznam uporabljenih simbolov x, y koordinate p poteza igralca s stanje pozicije igralca na igralni plo•s•ci r igralec z rde•cimi •zetoni g igralec

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

Page 32: Diplomska naloga - UM · Seznam uporabljenih simbolov x, y koordinate p poteza igralca s stanje pozicije igralca na igralni plo•s•ci r igralec z rde•cimi •zetoni g igralec

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,

Page 33: Diplomska naloga - UM · Seznam uporabljenih simbolov x, y koordinate p poteza igralca s stanje pozicije igralca na igralni plo•s•ci r igralec z rde•cimi •zetoni g igralec

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.

Page 34: Diplomska naloga - UM · Seznam uporabljenih simbolov x, y koordinate p poteza igralca s stanje pozicije igralca na igralni plo•s•ci r igralec z rde•cimi •zetoni g igralec

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

Page 35: Diplomska naloga - UM · Seznam uporabljenih simbolov x, y koordinate p poteza igralca s stanje pozicije igralca na igralni plo•s•ci r igralec z rde•cimi •zetoni g igralec

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.

Page 36: Diplomska naloga - UM · Seznam uporabljenih simbolov x, y koordinate p poteza igralca s stanje pozicije igralca na igralni plo•s•ci r igralec z rde•cimi •zetoni g igralec

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)),

Page 37: Diplomska naloga - UM · Seznam uporabljenih simbolov x, y koordinate p poteza igralca s stanje pozicije igralca na igralni plo•s•ci r igralec z rde•cimi •zetoni g igralec

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

Page 38: Diplomska naloga - UM · Seznam uporabljenih simbolov x, y koordinate p poteza igralca s stanje pozicije igralca na igralni plo•s•ci r igralec z rde•cimi •zetoni g igralec

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.

Page 39: Diplomska naloga - UM · Seznam uporabljenih simbolov x, y koordinate p poteza igralca s stanje pozicije igralca na igralni plo•s•ci r igralec z rde•cimi •zetoni g igralec

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}

Page 40: Diplomska naloga - UM · Seznam uporabljenih simbolov x, y koordinate p poteza igralca s stanje pozicije igralca na igralni plo•s•ci r igralec z rde•cimi •zetoni g igralec

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

Page 41: Diplomska naloga - UM · Seznam uporabljenih simbolov x, y koordinate p poteza igralca s stanje pozicije igralca na igralni plo•s•ci r igralec z rde•cimi •zetoni g igralec

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.

Page 42: Diplomska naloga - UM · Seznam uporabljenih simbolov x, y koordinate p poteza igralca s stanje pozicije igralca na igralni plo•s•ci r igralec z rde•cimi •zetoni g igralec

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.

Page 43: Diplomska naloga - UM · Seznam uporabljenih simbolov x, y koordinate p poteza igralca s stanje pozicije igralca na igralni plo•s•ci r igralec z rde•cimi •zetoni g igralec

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}

Page 44: Diplomska naloga - UM · Seznam uporabljenih simbolov x, y koordinate p poteza igralca s stanje pozicije igralca na igralni plo•s•ci r igralec z rde•cimi •zetoni g igralec

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

Page 45: Diplomska naloga - UM · Seznam uporabljenih simbolov x, y koordinate p poteza igralca s stanje pozicije igralca na igralni plo•s•ci r igralec z rde•cimi •zetoni g igralec

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.

Page 46: Diplomska naloga - UM · Seznam uporabljenih simbolov x, y koordinate p poteza igralca s stanje pozicije igralca na igralni plo•s•ci r igralec z rde•cimi •zetoni g igralec

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.

Page 47: Diplomska naloga - UM · Seznam uporabljenih simbolov x, y koordinate p poteza igralca s stanje pozicije igralca na igralni plo•s•ci r igralec z rde•cimi •zetoni g igralec

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].

Page 48: Diplomska naloga - UM · Seznam uporabljenih simbolov x, y koordinate p poteza igralca s stanje pozicije igralca na igralni plo•s•ci r igralec z rde•cimi •zetoni g igralec

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)

Page 49: Diplomska naloga - UM · Seznam uporabljenih simbolov x, y koordinate p poteza igralca s stanje pozicije igralca na igralni plo•s•ci r igralec z rde•cimi •zetoni g igralec

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

Page 50: Diplomska naloga - UM · Seznam uporabljenih simbolov x, y koordinate p poteza igralca s stanje pozicije igralca na igralni plo•s•ci r igralec z rde•cimi •zetoni g igralec

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.

Page 51: Diplomska naloga - UM · Seznam uporabljenih simbolov x, y koordinate p poteza igralca s stanje pozicije igralca na igralni plo•s•ci r igralec z rde•cimi •zetoni g igralec

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).

Page 52: Diplomska naloga - UM · Seznam uporabljenih simbolov x, y koordinate p poteza igralca s stanje pozicije igralca na igralni plo•s•ci r igralec z rde•cimi •zetoni g igralec

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.

Page 53: Diplomska naloga - UM · Seznam uporabljenih simbolov x, y koordinate p poteza igralca s stanje pozicije igralca na igralni plo•s•ci r igralec z rde•cimi •zetoni g igralec

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.

Page 54: Diplomska naloga - UM · Seznam uporabljenih simbolov x, y koordinate p poteza igralca s stanje pozicije igralca na igralni plo•s•ci r igralec z rde•cimi •zetoni g igralec

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.

Page 55: Diplomska naloga - UM · Seznam uporabljenih simbolov x, y koordinate p poteza igralca s stanje pozicije igralca na igralni plo•s•ci r igralec z rde•cimi •zetoni g igralec

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

Page 56: Diplomska naloga - UM · Seznam uporabljenih simbolov x, y koordinate p poteza igralca s stanje pozicije igralca na igralni plo•s•ci r igralec z rde•cimi •zetoni g igralec

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.

Page 57: Diplomska naloga - UM · Seznam uporabljenih simbolov x, y koordinate p poteza igralca s stanje pozicije igralca na igralni plo•s•ci r igralec z rde•cimi •zetoni g igralec

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

Page 58: Diplomska naloga - UM · Seznam uporabljenih simbolov x, y koordinate p poteza igralca s stanje pozicije igralca na igralni plo•s•ci r igralec z rde•cimi •zetoni g igralec

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.

Page 59: Diplomska naloga - UM · Seznam uporabljenih simbolov x, y koordinate p poteza igralca s stanje pozicije igralca na igralni plo•s•ci r igralec z rde•cimi •zetoni g igralec

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.

Page 60: Diplomska naloga - UM · Seznam uporabljenih simbolov x, y koordinate p poteza igralca s stanje pozicije igralca na igralni plo•s•ci r igralec z rde•cimi •zetoni g igralec

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.

Page 61: Diplomska naloga - UM · Seznam uporabljenih simbolov x, y koordinate p poteza igralca s stanje pozicije igralca na igralni plo•s•ci r igralec z rde•cimi •zetoni g igralec

8.1. PRIMER IGRE 51

(a) (b)

(c) (d)

(e) (f)

(g) (h)

Slika 8.10: Animiran prikaz izvajanja potez.

Page 62: Diplomska naloga - UM · Seznam uporabljenih simbolov x, y koordinate p poteza igralca s stanje pozicije igralca na igralni plo•s•ci r igralec z rde•cimi •zetoni g igralec

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.

Page 63: Diplomska naloga - UM · Seznam uporabljenih simbolov x, y koordinate p poteza igralca s stanje pozicije igralca na igralni plo•s•ci r igralec z rde•cimi •zetoni g igralec

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)).

Page 64: Diplomska naloga - UM · Seznam uporabljenih simbolov x, y koordinate p poteza igralca s stanje pozicije igralca na igralni plo•s•ci r igralec z rde•cimi •zetoni g igralec

8.2. STATISTICNI PODATKI 54

(a)

(b)

(c)

Slika 8.14: Pregled statisticnih podatkov.

Page 65: Diplomska naloga - UM · Seznam uporabljenih simbolov x, y koordinate p poteza igralca s stanje pozicije igralca na igralni plo•s•ci r igralec z rde•cimi •zetoni g igralec

8.3. OSTALO 55

8.3 Ostalo

Zadnja menijska vrstica je ostalo. Njen pomen pa razkrije slika 8.15.

Slika 8.15: Nasa vizitka.

Page 66: Diplomska naloga - UM · Seznam uporabljenih simbolov x, y koordinate p poteza igralca s stanje pozicije igralca na igralni plo•s•ci r igralec z rde•cimi •zetoni g igralec

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

Page 67: Diplomska naloga - UM · Seznam uporabljenih simbolov x, y koordinate p poteza igralca s stanje pozicije igralca na igralni plo•s•ci r igralec z rde•cimi •zetoni g igralec

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.

Page 68: Diplomska naloga - UM · Seznam uporabljenih simbolov x, y koordinate p poteza igralca s stanje pozicije igralca na igralni plo•s•ci r igralec z rde•cimi •zetoni g igralec

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

Page 69: Diplomska naloga - UM · Seznam uporabljenih simbolov x, y koordinate p poteza igralca s stanje pozicije igralca na igralni plo•s•ci r igralec z rde•cimi •zetoni g igralec

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.

Page 70: Diplomska naloga - UM · Seznam uporabljenih simbolov x, y koordinate p poteza igralca s stanje pozicije igralca na igralni plo•s•ci r igralec z rde•cimi •zetoni g igralec

Priloge

− Zgoscenka z diplomsko nalogo v elektronski obliki.

60