Iks – Oks 1.0

Sadržaj

Uvod	2

Pravila i cilj igre	2

Implementacija	2

Način igre	3

Kraj igre	3

Šta treba očekivati u narednoj verziji?	3

Uvod

Ovaj program je napravljen u okviru projekta za predmet Praktikum iz operativnih sistema. Autor projekta je Vladimir Tomić. U skladu sa ciljem i zahtevima projekta, autor nije posvetio preveliku pažnju programiranju, već se pretežno koncentrisao na izradu tehničke dokumentacije.

Pravila i cilj igre

Igru iks – oks (engl. Tic – tac – toe) igraju dva igrača. Igra se na dvodimenzionalnoj tabli, sa dve vrste simbola (uobičajeno je da se koriste simboli X i O, po čemu je i nastao srpski naziv ove igre). Igrači naizmenično upisuju svoje simbole u prazna polja table. Cilj igre je povezati određen broj svojih simbola u jednoj liniji. U najrasprostranjenijoj varijanti igre dimenzije table su 3 x 3 i potrebno je povezati 3 simbola. Naravno, dimenzije i broj potrebnih povezanih simbola se sporazumno mogu menjati.

Implementacija

Igra je urađena kao konzolna aplikacija u jeziku C++, korišćenjem razvojnog okruženja KDevelop. Program se sastoji samo od jednog .cpp fajla, u kome se nalaze i glavni program i nekoliko pomoćnih funkcija. Na samom početku fajla su #define naredbama određene konstante DIM i ROW, pri čemu DIM predstavlja dimenziju table (visina i širina su jednake), a ROW je broj simbola koje treba povezati za pobedu. Tabla za igru je realizovana kao 2D matrica (char t[DIM][DIM]). Pored glavnog programa (tj. main funkcije), u fajlu se nalaze i sledeće funkcije:

void pisi (char t[DIM][DIM])

void swap (int& turn)

bool koord_OK (char t[DIM][DIM], int x, int y)

bool pobeda (char t[DIM][DIM], int x, int y, int turn)

bool tabla_puna (char t[DIM][DIM])

Dvodimenzionalna matrica karaktera predstavlja tablu za igru. Promenljiva turn se koristi za određivanje igrača koji je na redu da igra i može imati vrednosti 1 (za X) i -1 (za O). Promenljive x i y predstavljaju koordinate polja na koje igrač želi da postavi ili je već postavio svoj simbol.

Funkcija pisi ispisuje tablu sa upisanim simbolima.

Funkcija swap menja igrača na kome je red da igra.

Funkcija koord_OK proverava da li su unete koordinate x i y u dozvoljenim granicama (od 0 do DIM – 1) i da li je polje sa koordinatama (x,y) slobodno.

Funkcija pobeda proverava da li posle poteza određenog igrača (pomoću promenljive turn se određuje koji je igrač u pitanju) kojim je simbol stavljen na polje sa koordinatama (x,y) postoji prava linija koja sadrži taj simbol i koja ima dovoljan broj istih povezanih simbola da bi se proglasila pobeda tog igrača.

Funkcija tabla_puna proverada da li su sva polja na tabli popunjena.

Funkcije pisi, swap, koord_OK i pobeda se pozivaju posle svakog poteza. Funkcija tabla_puna služi za prekidanje igre ukoliko se popune sva polja a ne dobije se pobednik.

Celokupan kôd je komentarisan, tako da je snalaženje u njemu jednostavno.

Način igre

Po startovanju igre se na ekranu ispisuje tabla dimenzija 5 x 5 (kako je podešeno u ovoj verziji programa) i očekuje se da igrač sa simbolom X odigra prvi potez zadavanjem prvo vertikalne, a onda horizontalne koordinate željenog polja. Kao pomoć u orijentaciji, iznad i sa leve strane table su ispisani brojevi kolona, odnosno redova. Nakon što igrač X odigra svoj potez, ponavlja se ispisivanje table (naravno, ovaj put sa jednim zauzetim poljem) i ponovo se čeka unos, ovog puta od igrača O. Ovo se ponavlja sve dok na tabli postoje slobodna polja, ili dok neki od igrača ne spoji 5 svojih simbola u jednoj liniji. Ukoliko pri izboru polja igrač unese koordinate polja koje je zauzeto ili koordinate veće ili manje od dozvoljenih, program će to prijaviti odgovarajućom porukom i zahtevaće da se ponovi unos.

Kraj igre

Igra se završava pobedom jednog od igrača ili popunjavanjem cele table. Igra se može završiti i pre vremena, kombinacijom tastera Ctrl – C.

Šta treba očekivati u narednoj verziji?

Kao što je ranije napomenuto, na početku fajla se pomoću dve simboličke konstante određuju dimenzije table i broj potrebnih spojenih simbola za pobedu. U narednoj verziji će biti omogućeno dinamičko unošenje ovih parametara od strane krajnjeg korisnika. Planira se i jedna novina u odnosu na klasična pravila igre – mogućnost da na istoj tabli igra više od 2 igrača (pri čemu bi bilo razumno uzeti tablu većih dimenzija). Takođe, planira se mogućnost posmatranja table kao omotača lopte, tj. ćelije u istom redu (ili koloni) koje se nalaze uz ivice table bi se posmatrale kao susedne.

Autor programa je Vladimir Tomić (vtomic85@yahoo.com). Ovaj program se može neograničeno koristiti, kopirati i distribuirati, sve dok se za to ne dobija novčana, niti bilo kakva druga nadoknada. Izvorni kôd ovog programa se može pregledati i menjati, s tim što se izmenjena verzija mora vratiti u javnost, takođe bez traženja bilo kakve nadoknade.

Strana 3 od 3

Vladimir Tomic

2006-08-15T14:08:51