Igra Othello

Za prvi del projektne naloge boste sprogramirali igro Othello.

To je igra za dva igralca, ki izmenično polagata vsak svoje žetone na polja kvadratne igralne plošče. Dodatno se ob tem spremeni barva tistih nasprotnikovih žetonov, ki jih je ob tem možno preskočiti. Zmaga igralec, ki ima ob koncu igre na plošči več svojih žetonov. Podrobnejša pravila igre so na zgornji povezavi.

1. in 2. teden - logika igre

Premislite, kako boste predstavili igro (ploščo, polja, žetone, igralce, poteze, ...) in trenutno stanje (odigrane poteze, kakšno je stanje žetonov na plošči, kdo je na potezi, kdo je zmagal, s kakšnimi žetoni igra kateri igralec, ...) ter sestavite razrede za opis igre in trenutnega stanja. Dodajte metode za preverjanje, ali je poteza veljavna, ali je igre konec ter metode za igranje (odigraj potezo, razveljavi zadnjo potezo, ...). Koristna bo tudi metoda, ki vrne seznam vseh možnih potez. Metodi za igranje naj tudi nastavita, kdo je na potezi po opravljeni spremembi in kdo je zmagovalec.

3. teden - grafični vmesnik

Sestavite razreda Okno in Platno, da boste lahko trenutno stanje igre tudi grafično prikazali. Za silo bo dobro, če bosta položaj plošče in velikost polja fiksna, zaželjeno pa je, da je plošča postavljena v sredino platna, velikost polja pa izračunana tako, da bo plošča čim večja in v celoti vidna (če oknu spremenimo velikost, naj se spremeni tudi velikost polja). Oknu dodajte menu, preko katerega bo možno nastavljati lastnosti igralcev (ime, človek ali računalnik, kateri algoritem uporablja računalnik, ...), lastnosti grafičnega vmesnika (barve žetonov, ...), najmanj koliko časa naj preteče, preden računalnik odigra potezo (da ne bo igral prehitro) ...

Če boste namesto grafičnega vmesnika za igro Othelo rajši delali aplikacijo za besedno uganko, je ta teden čas, da začnete razmišljati o njej.

4. teden - igranje

Platnu dodajte metodo, ki bo iz koordinat klika izračunala, katero polje smo kliknili ter opravila ustrezno potezo. Igro bo tako že možno igrati človek proti človeku. V oknu naj se poleg stanja plošče in števila posameznih žetonov prikazujejo še podatki o igralcu na potezi (ime in barva žetonov), ko je igre konec pa podatki o zmagovalcu.

Dodajte tudi preprostega računalniškega igralca. Ta bo potezo naključno izbral iz seznama vseh možnih potez. Težji del bo uskladitev dveh igralcev, da ne bosta igrala hkrati. Priporočam uvedbo nadzornika igre, ki bo tekel v posebni niti in bo skrbel za usklajevanje.

5. teden - algoritmi Minimax / AlfaBeta / MCTS

Dodajte boljše računalniške igralce. Kako dober bo igralec, bo v veliki meri odvisno od tega, kako dobro bo znal oceniti trenutno stanje igre. Ker je na vsakem koraku več možnih potez, se lahko zgodi, da bo algoritem Minimax prepočasen. Poskrbite tudi, da se poteze, o katerih razmišlja računalniški igralec, ne bodo prikazovale na plošči.

6., 7. in 8. teden - čiščenje in komentiranje kode

Na koncu še enkrat preglejte vso kodo, pobrišite neuporabljene dele, dodajte komentarje k metodam (kaj metoda počne, kakšen je pomen parametrov, kaj metoda vrača, ...).

Last modified: Tuesday, 5 April 2022, 11:51 AM