Reversi (zvané aj Othelo) je dosková hra pre dvoch hráčov. Originál sa hrá s kameňmi, ktoré sú na jednej strane čierne a na druhej biele. V každom kole musí hráč položiť na hraciu plochu jeden nový kameň tak, aby svojou farbou obkolesil kamene protihráča. Obkolesené kamene prevráti na druhú stranu a získa ich tým pre seba. Cieľom je pokryť čo najviac políčok kameňmi svojej farby.
Viac informácií o doskovej hre: Wikipédia
Cieľom projektu bolo naprogramovať hru Reversi ako grafickú aplikáciu v jazyku Python. Hlavné vlastnosti projektu zahŕňajú:
tkinter
PIL
Odkaz na stiahnutie projektu. V súbore read_me.txt
sú bližšie inštrukcie ohľadom pravidiel hry a testovania.
Program
- Spúšťanie a vypínanie aplikácie, spúšťanie a načítanie hry, prepínanie medzi obrazovkami.SuperCanvas
- Pomocná trieda, odvodená z triedy tkinter.Canvas
. Obsahuje základné funkcie na prácu s grafikou, napr. konvertovanie súradníc, zmenu veľkosti obrázkov a ich umiestňovanie... Je super triedou pre nasledujúce triedy, ktorých úlohou je hlavne vykresliť grafiku, vytvoriť tlačidlá a zabezpečiť ich funkčnosť:MenuCanvas
- Hlavné menu.SettingsCanvas
- Obrazovka s nastaveniami pri vytváraní novej hry.GameCanvas
- Grafika hracej plochy.GamePanel
- Bočný panel vedľa hracej plochy, ktorý obsahuje napr. informácie o hráčoch a skóre.Game
- Funkčnosť hry samotnej - vytvorenie hracej plochy podľa .txt súboru, hľadanie platných ťahov, kontrola podmienok konca hry, fungovanie AI...Square
- Jedno políčko na hracej ploche.Move
- Horizontálny/verikálny/diagonálny rad políčok, ktoré môže hrač pre seba získať jedným kliknutím.MoveGroup
- Jeden platný ťah, ktorý môže hráč vykonať - tvorí ho buď jeden Move, alebo viacero inštancií Move, ktoré sa dajú získať kliknutím na to isté políčko.Players
- Pomocná trieda, ktorá obsahuje funkcie na ľahšiu prácu s hráčmi. Napr. zistiť, ktorý hráč je na ťahu, či je hráč človek alebo AI, aké je skóre...AnimatedPiece
- Pomocná trieda, ktorá sa používa pri animácií zmeny farby políčok.Než si AI vyberie z dostupných ťahov, program najprv každému pridelí číselnú hodnotu. Použije na to dve metódy:
Zoznam ťahov sa zoradí vzostupne podľa hodnotenia. Presný výber závisí od úrovne AI: