Univerzita Komenského v Bratislave Fakulta matematiky, fyziky a informatiky Ročníkový projekt (1) Herňa Študijný odbor: Aplikovaná informatika Autor : Jozef Kubík, 1AIN2
O hre Hra Herňa bola vytvorená ako semestrálny projekt pre predmet Programovanie(2). Jej mierne upravená verzia je taktiež použitá pre predmet Ročníkový projekt(1). Hra je vytvorená v programovacom jazyku Python s pomocou dodatočných modulov a vykresľovacieho okna. Podporuje ovládanie myšou, ukladanie a nahrávanie uložených hier. Jej cieľom je poraziť protihráčov zastúpených umelou inteligenciou programu v dvoch rôznych kartových hrách Poker a BlackJack. Konkrétnu hru možno vybrať kliknutím na jej nápis v úvodnom menu. Obrázok 1: Úvodne menu s možnosťou výberu hry. Hra taktiež obsahuje horné menu s rôznymi možnosťami a informáciami o hre.
Pravidlá hry Blackjack BlackJack (známy tiež ako 21) je hazardná kartová hra podobná hre Oko. Hráč hra prioritne proti krupiérovi (môže aj s inými hráčmi) a snaží sa dosiahnuť súčet hodnôt kariet väčší ako krupiér, menší však ako 22. Hrá sa s balíčkom 52 francúzskych kariet. Hodnota všetkých figúrových kariet je 10, číselných kariet je rovnaká a hodnota esa je 1. Hráči najskôr uzavrú stávky, čiže vsadia určitú čiastku. Hra sa začína rozdaním 2 kariet každému hráčovi lícom nadol, pričom iba jedna krupiérova karta sa dá lícom nadol, druhá naopak. Hráč sa teraz môže rozhodnúť medzi tromi pokračovaniami: Stand : Hráš už nechce ďalšiu kartu a čaká na výsledok hry. Hit : Hráč si berie ďalšiu kartu. V prípade súčtu menšieho ako 21 má hráč opäť možnosť voľby. V prípade súčtu väčšieho ako 21 hráč automaticky prehráva. Double : Hráč zdvojnásobí svoju stávku a berie si ďalšiu kartu. Následne sa čaká na uzatvorenie stávok všetkých hráčov a nasleduje dealerov ťah. Jeho správanie sa je podľa striktných pravidiel. Pozná len možnosti Hit a Stand, pričom volí Hit ak je súčet jeho kariet menší ako 17, inak volí Stand. Ak dealer prekročí hodnotu 21, vyhrávajú všetci hráči ktorí zostali v hre (teda neprekročil hodnotu 21). Inak vyhrávajú hráči s vyšším súčtom ako dealer a menším ako 22. V prípade súčtu rovnakého ako dealer je remíza a vracia sa vklad.
Umelá inteligencia v hre BlackJack Protihráči, v tejto hre premýšľajú (t.j. hrajú inteligentne). V určitých situáciách dokážu byť aj nevyspytateľní. Ich správanie sa určujú 2 kritéria: Taktika : Každému z protihráčov sa na začiatku pridelí jedna z troch možných taktík. Na jej základe sa ovplyvní jeho voľba a bude hrať buď rozumne, opatrne alebo hazardne. Šanca na úspech : Protihráč si dokáže na základe súčtu svojich kariet vypočítať percentuálnu šancu na úspech. Podľa jej veľkosti a svojej taktiky sa počítač rozhodne, čo bude robiť ďalej. Obrázok 2: Ukážka z hry BlackJack
Pravidlá hry Poker Poker je hazardná kartová hra. Jej princíp spočíva v hľadaní čo najlepších možných kombinácií 5 kariet. Existuje veľa verzií, táto predstavuje verziu Texas Hold em. Cieľom je vyhrať čo najviac peňazí. Hrá sa s balíčkom 52 francúzskych kariet 4 rôznych farieb. Na začiatku hry sa určí počet hráčov a ich začiatočné pozície, ktoré sa postupne menia. Rozlišujeme 4 základné pozície: Dealer: Rozdáva hráčom karty, pričom nijako inak nezasahuje do hry. Small Blind: Alebo aj Malý Blind, pozícia v ktorej hráč musí dať polovicu povinnej stávky do banku (vkladu) ešte pred začiatkom rozdávania kariet. Big Blind: Alebo aj Veľký Blind, pozícia v ktorej hráč musí dať celú povinnú stávku do banku (vkladu) ešte pred začiatkom rozdávania kariet. Ostatné pozície : Neviazané vkladom, o vložení peňazí rozhodujú sami. Pozícia Big aj Small Blindu sa posúva každé kolo. Povinná stávka sa zvyšuje pravidelne každých 5 kôl. Hra začína povinnými stávkami a rozdaním 2 kariet každému hráčovi. Hráči majú potom na výber medzi 5 možnosťami: Check: Hráč nič nerobí a prenáša ťah na súpera po pravici. Táto možnosť nie je možná, ak hráč nemá vsadené aspoň toľko peňazí, koľko je najvyššia vsadená stávka. Call: Hráč dorovnáva najvyššiu stávku a prenáša ťah na súpera. Táto možnosť nie je možná, ak hráš už má vsadené aspoň toľko peňazí, koľko je najvyššia vsadená stávka. Fold: Hráč skladá karty a nepokračuje v hre celé kolo, pričom ak vsadil nejaké peniaze, stráca ich. Raise: Hráč navyšuje najvyššiu stávku a vytvára novú najvyššiu stávku. All-in: Hráč vsádza všetky svoje žetóny. Po ukončení stávok dealer vytiahne 3 karty, ktoré vyloží na stôl a sú platné pre každého hráča. Nastáva ďalšie kolo stávok, po ktorom sa vytiahnu ešte 2 karty a vyhodnotí sa hra. Hráč s najlepšou kombináciou vyhráva.
Kombinácie v hre Poker Royal Flush : Postupnosť kariet A, K, Q, J, 10 v rovnakej farbe. Straight Flush : Postupnosť piatich podľa hodnoty po sebe idúcich kariet v rovnakej farbe. Four of a Kind : Štvorica kariet rovnakej hodnoty. Full House : Trojica kariet rovnakej hodnoty spolu s dvojicou kariet rovnakej hodnoty. Flush : Päť kariet rovnakej farby. Straight : Postupnosť piatich podľa hodnoty po sebe idúcich kariet v nie rovnakej farbe. Three of a Kind : Trojica kariet rovnakej hodnoty spolu s dvojicou rôznych kariet. Two pair : Dve dvojice kariet rovnakej hodnoty spolu s inou kartou. One pair : Dvojica kariet rovnakej hodnoty spolu s trojicou rôznych kariet. Highest card : Najvyššia hodnota karty. Obrázok 3: Pokerové kombinácie
Umelá inteligencia v hre Poker Protihráči v tejto hre premýšľajú (t.j. hrajú inteligentne). V určitých situáciách dokážu byť aj nevyspytateľní. Ich správanie sa určujú 4 kritéria: Taktika : Každému z protihráčov sa na začiatku pridelí jedna z troch možných taktík. Na jej základe sa ovplyvní jeho voľba a bude hrať buď rozumne, opatrne alebo hazardne. Kombinácie : Protihráč dokáže na základe kariet zistiť, či má nejakú výhernú kombináciu. Dokáže aj zistiť koľko rôznych kombinácií má. Fakt, že nejakú má ovplyvní jeho správanie. Typ najlepšej kombinácie :Protihráč si hierarchicky určí silu kombinácie a riadi sa podľa nej. V prípade, že ich má viac, rozozná najlepšiu z nich a na jej základe prispôsobí svoju hru. Hráč a ostatní protihráči : Počítač rôzne reaguje na rôzne akcie hráča a protihráčov a prispôsobuje sa im Obrázok 4: Ukážka z hry Poker
Záver Hra Herňa bola vytvorená so zámerom nielen pobaviť, ale aj skutočne si zmerať sily v hre s počítačom. Snahu priblížiť sa k tomuto zámeru svedčí aj dĺžka kódu, skoro 4000 riadkov. Kód je voľne dostupný na pozretie, pričom je aj riadne okomentovaný na vysvetlenie všetkých nejasných vecí. Samotné kartové hry boli v hre minimálne upravené, aby sa zachovala ich platnosť, ale aby aj boli jednoduchšie zrozumiteľné a lepšie hrateľné. Všetky zmeny, ako aj informácie o oboch kartových hrách a o programe je možné dosiahnuť v menu hry na hornej lište okna. Na záver chcem ešte poďakovať RNDr. Andrejovi Blahovi, PhD. ako vedúcemu môjho projektu za odbornú konzultáciu a pomoc pri projekte a PaedDr. Daniele Bezákovej, PhD. za pomoc pri projekte.