rocnikovy_projekt_kr..

Transkript

rocnikovy_projekt_kr..
Gymnázium, Praha 6, Arabská 14
předmět Programování, vyučující Tomáš Obdržálek
Karty Prší
ročníkový projekt,
Tomáš Krejča 1E
květen 2014
Anotace:
Mým cílem bylo vytvořit simulátor karetní hry prší. Hráč hraje proti počítači. Prostředí je
zpracováno textově. Každý tah se vypíše jaká karta je na vrchu a jaké karty má hráč u sebe.
Pote hráč napíše jakou kartu hraje, nebo zda si líže kartu z balíčku.
Abstract:
My goal was to create a simulation of Prší card game. The user plays against the computer.
The environment is made in text form. Every turn the program writes which card is on the
top of the deck and which cards the player has. Then player writes which card he plays or
if he takes a card from the deck.
2
Karty Prší
Tomáš Krejča
Karty Prší je počítačový provedení tradiční stejnojmenné hry
-Hráč se střídá v tazích proti počítači
-Grafické zpracování v podobě stolu s taženými kartami a kartami hráče
3
Karetní hra prší
Hra je v Evropě známa pod názvem Pony. Vznik je odhadován na polovinu 20.století.
Hraje se s mariášovými kartami, většinou hraje 2-6 hráčů.
Pravidla
Každému hráči se rozdá 5 karet. Jedna karta se položí lícem nahoru a zbytek karet v
balíčku se otočí lícem dolů. Vybere se první hráč a ten musí zahrát kartu se stejnou barvou
nebo stejnou hodnotou jako je otočená karta. Kartu pokládá navrch otočené karty. Jestliže
takovou kartu nemá, musí si líznout kartu z balíčku. Vyhrává hráč, kterému nezbyde žádná
karta.
Speciální karty
Ve hře se také nacházejí speciální karty a to sedma, svršek a eso. V případě, že je na vrchu
odkládacího balíčku (místo, kam se pokládají zahrané karty) sedma, hráč může zahrát
pouze jinou sedmu, nebo si musí líznout 2 karty. Je-li na sebe položeno více sedmiček,
hráč si líže 2 karty za každou sedmičku. Svrška může hráč zahrát na jakoukoliv barvu
předešlé karty a poté určí barvu, podle které musí hrát hráči po něm. Když hráč zahraje
eso, tak další hráč musí také zahrát eso nebo tzv. stojí. To znamená že je jeho tah
přeskočen.
Jiné varianty hry
V prší je možné provádět různé variace. Nejznámější je, že červená sedma vrací hráče do
hry. Když je červená karta zahrána na hráče, který odhodil poslední kartu, hráč se vrací do
hry tím, že si lízne 2 karty.
Hra jde taky rozšířit o speciální vlastnost zeleného krále. Hráč na kterého je král zahrán si
líže 4 karty.
Jiná varianta nabízí speciální vlastnost osmičky, která když se zahraje, tak se změní směr
otáčení hráčů. Na tuto osmičku však další hráč může vyložit jakoukoliv kartu. Pro
prodloužení hry slouží varianta, při které nelze zahrát sedmičku jako poslední kartu.
Pro více her je možná varianta, v které výherce dostává příští hru vždy o kartu méně
(případně ten, kdo prohraje o kartu více). Komu není rozdána už ani jedna karta, vyhraje.
4
Prostředí hry
Hra se hraje pomocí příkazů v konzoli. Na začátku se vypíše vrchní karta a karty hráče.
Tyto jednotlivé sekce jsou odděleny pomlčkami pro lepší přehlednost. Konec každého kola
je oddělen delší pomlkovou čárou. V sekci počítače je zaznamenáván jeho tah(,,počítač
stojí“, ,,počítač si lízl kartu“).
Ovládání hry
Všechny příkazy se píší velkými písmeny, bez háčků a čárek.
Na začátku hry se vypíše jaká karta je na vrchu lízacího balíčku a jaké karty má hráč v
ruce. Hráč si může líznout kartu příkazem „KARTA“. Do konsole může vypsat kartu,
kterou chce zahrát. Např. „ZELENA OSMA“, „KULE KRAL“. Poté se opět vypíše karta
na vrchu odkládacího balíčku (ta, kterou zahrál počítač). Hra oznámí, pokud si počítač lízl
kartu (jestliže si počítač lízl více karet, konsole vypíše jejich počet). Pak je hráč opět
dotázan na svůj tah.
Jestliže je na vrchu odkládacího balíčku ESO, hráč může zahrát pouze svoje eso nebo
napsat příkaz ,,STOJIM“.
Pokud hráč chce zahrát svrška, nejprve musí zadat příkaz „SVRSEK“. Tento příkaz může
zadat kdykoliv, pokud zrovna nemusí zahrát eso nebo sedmu. Hra se zeptá, kterého svrška
chce hráč zahrát (hráč musí zadat jméno karty, např SRDCE SVRSEK).
5
Nakonec hráč napíše na jakou barvu chce změnit (opět velkým písmem bez diakritiky,
např ZELENA, KULE).
Datové struktury
Hra je založena na používání kolekcí, v kterých se ukládají karty. Každou kartu představuje
jeden objekt s vlastnostmi Typ a Barva. Program obsahuje celkově šest kolekcí.
1. Kolekce hrac obsahuje karty hráče.
2. Kolekce pocitac obsahuje karty počítače.
3. Kolekce balicek obsahuje všechny karty před tím, než se rozdají.
4. Kolekce lizaciBalicek obsahuje balíček s kartami určenými k lízání.
5. Kolekce odkladaciBalicek obsahuje zahrané karty.
6. Kolekce mezikrokPocitac obsahuje karty počítače, mezi kterými se
rozhoduje jakou kartu zahraje.
Začátek hry
Jako první se naplní kolekce balicek. Ke každé barvě se přiřadí jeden typ. Vznikne
tedy 32 objektů, které se vloží do kolekce. Tato kolekce se nakonec příkazem
Collections.shuffle(balicek) promíchá, tudíž každá hra je jiná.
public void naplnBalicek() {
for (Barva barva : Barva.values()) {
for (Typ typ : Typ.values()) {
balicek.add(new Karta(barva, typ));
}
}
Collections.shuffle(balicek);
}
Z této kolekce poté rozdám karty mezi hráče a počítač. Každý dostane 5 karet. Zbylé karty
se vloží do lízacího balíčku.
6
Herní mechanismus počítače
Počítač se nejprve zeptá, jestli je nějaká speciální karta na vrchu odkládacího balíčku. Pro
každou speciální kartu existuje speciální metoda, v které počítač buď stojí (líže 2 karty)
nebo zahraje vlastní speciální kartu.
U obyčejný karty, počítač vloží do kolekce mezikrokPocitac všechny karty, které
může zahrát podle shodné barvy a poté všechny karty, které může zahrát podle shodného
typu. Z této kolekce vybere náhodnou kartu, kterou zahraje a zbytek vrátí zpět do své
kolekce.
public void pocitacVyberKarty() {
if (mezikrokPocitac.isEmpty()) {
pocitac.add(0, lizaciBalicek.get(0));
lizaciBalicek.remove(0);
System.out.println("počítač si lízl kartu");
} else {
int j = random.nextInt(mezikrokPocitac.size());
odkladaciBalicek.add(0, mezikrokPocitac.get(j));
mezikrokPocitac.remove(j);
for (Karta m : mezikrokPocitac) {
pocitac.add(m);
}
mezikrokPocitac.clear();
}
}
Kontrola průběhu hry
V metodě nazvané hra se kontroluje, zda hráč nebo počítač již nezhráli všechny své
karty. Také se zde kontroluje, jestli jsou nějaké karty v lízacím balíčku. Jestliže nejsou,
vrátí se zpět do kolekce karty z odkládacího balíčku. Třetí funkce metody je střídání tahu
hráče a počítače, dokud jeden z nich nevyhraje.
Problémové části
Čistý herní mechanismus byl napsaný hned. Problém začal, když jsem chtěl dovnitř
zakomponovat speciální karty. Začaly se mi hromadit do pár metod veliké množství
podmínek a for cyklů. Začal jsem se ztrácet a potom už jsem nebyl schopný program vůbec
upravovat a začal jsem to vzdávat. Jakmile jsem si program rozdělil do mnoha metod,
najednou to šlo mnohem rychleji a mohl jsem se zase pohnout z místa a program dokončit.
Pro příště jsem se aspoň už poučil.
7
Zhodnocení a závěr
Když jsem si vymýšlel téma, nečekal jsem, že tato hra bude pro mne tak náročná. Na
programu jsem pracoval necelý 3 týdny. Velkou část času mi zabralo pracování na
grafickém prostředí, které jsem bohužel nestihl dokončit. Na začátku jsem stěží věděl, co
jsou to objekty a ke konci jsem se naučil s nimi dobře pracovat. Během těchto týdnů jsem
se naučil mnoho a provedl jsem asi největší skok v programování. Nakonec jsem tento
schod zdolal. Jsem za tento ročníkový projekt vděčný, jelikož jsem se teprve teď plně vžil
do programování a jsem si jistý, že v něm chci pokračovat.
Budoucnost projektu
Jakmile se naučím lépe pracovat s JPanelem, hodlám dodělat grafické prostředí a až budu
mít delší chvíli, rád bych vylepšil i umělou inteligenci při rozhodování počítače, jakou
kartu zahraje. Nakonec bych rád tuto hru použil jako aplikaci pro mobil, abych mohl mít
tento můj první skutečný projekt stále u sebe.
Prohlášení
Prohlašuji, že jsem jediným autorem tohoto projektu, všechny citace jsou řádně označené a
všechna použitá literatura a další zdroje jsou v práci uvedené.
Tímto dle zákona 121/2000 Sb. (tzv. Autorský zákon) ve znění pozdějších předpisů uděluji
bezúplatně škole Gymnázium, Praha 6, Arabská 14 oprávnění k výkonu práva na
rozmnožování díla (§ 13) a práva na sdělování díla veřejnosti (§ 18) na dobu časově
neomezenou a bez omezení územního rozsahu.
Zdroje
https://cs.wikipedia.org/wiki/Pr%C5%A1%C3%AD

Podobné dokumenty

česká pravidla - Svět deskových her

česká pravidla - Svět deskových her Hru tvoří z 20% náhoda, z 20% strategie a z 60% postřeh (od toho je odvozen orig. název varianty). Jejím cílem je zbavit se karet, které hráč dostane rozdané na ruku tím, že pomocí nich a karet upr...

Více

Fußball Ligretto

Fußball Ligretto otáčí ze svého lízacího balíčku, dává na libovolnou ze svých již existujících hromádek. Hráč také může dát horní kartu z některé své hromádky na balíček uprostřed stolu. Tím získává míč a sám může ...

Více

TAJ MAHAL

TAJ MAHAL Nová nabídka karet je rozložena vedle hrací desky. Karty se vykládají i na začátku 12.etapy! Pokud dojdou karty v lízacím balíčku, je zamíchán obsah odkládacího balíčku a použije se jako nový lízac...

Více

ZÁKLADNÍ PRAVIDLA TURNAJE V KŘÍŽOVÉ SEDMĚ

ZÁKLADNÍ PRAVIDLA TURNAJE V KŘÍŽOVÉ SEDMĚ otočí barvou nahoru, rozdávající rozdává opakovaně. Při druhém špatném pokusu o rozdávání se hra považuje za renonc.  Jestliže během hry někomu z hráčů spadne karta mimo stůl, popř. se při dolízáv...

Více

PRO HRST KARET

PRO HRST KARET lícem dolů kartu Pro hrst karet. Potom celou hromádku otočí lícem vzhůru a položí ji vedle sebe. Dříve než Šerif provede své druhé kolo, vezme první kartu z hromádky Pro hrst karet (dejte pozor, ab...

Více

Česká pravidla - Czech Board Games

Česká pravidla - Czech Board Games autodromu. Hráči kladou svá autíčka na libovolná neobsazená pole plánu. Přitom platí, že žádná 2 autíčka nesmí být na stejném dílu. Poté si hráči sečtou hodnotu svých autíček. Hodnota se určí podle...

Více

česká pravidla

česká pravidla Všech 5 kartiček rolí se položí viditelně doprostřed stolu. 5 kartiček obchodního domu se zamíchá a položí se na hromádku lícem dolů. Každý hráč obdrží o 1 kartu výrobna indiga [Indigoküperei] (kar...

Více