Gymnázium, Praha 6, Arabská 16. předmět Programování, vyučující Tomáš Obdržálek Lodě Dokumentace ročníkového projektu Martin Karlík, 1E 17.5.



Podobné dokumenty
V Dolních Břežanech dne 10. května 2014

Piškvorky. Gymnázium, Praha 6, Arabská 16. Kristofer Filip, 1.E. Květen Stránka 1. předmět programování, vyučující Tomáš Obdržálek

Gymnázium, Praha 6, Arabská 14. předmět Programování, vyučující Tomáš Obdržálek. Počítačová hra Fotbalový Manažer. ročníkový projekt.

Gymnázium, Praha 6, Arabská 14. předmět Programování, vyučující Tomáš Obdržálek. Program pro kontrolu správného vývoje dítěte.

Gymnázium, Praha 6, Arabská 16 předmět Programování, vyučující Tomáš Obdržálek Šibenice ročníkový projekt Tadeáš Váša, 1E květen 2014

Vědomostní test. Gymnázium, Praha 6, Arabská 14 předmět Programování, vyučující Tomáš Obdržálek

Gymnázium, Praha 6, Arabská 16 Předmět Programování, vyučující Tomáš Obdržálek Hledání Min Ročníkový projekt Filip Mašát, 1.

Postřehová hra. Zadání projektu. 1 Moje cíle

Gymnázium Arabská. Hra Pexeso. ročníkový projekt předmět programování vyučující Tomáš Obdržálek autor Ondřej Novák školní rok 2013/2014

Obsah Anotace :... 1 Anotation 2

Matematika. Gymnázium, Praha 6, Arabská 16. předmět Programování, vyučující Tomáš Obdržálek. dokumentace ročníkového projektu.

Příručka aplikace KNetWalk. Fela Winkelmolen Eugene Trounev

Mobilní hra Block Runner ročníkový projekt David Novák, 1.E květen 2014

Zadání soutěžních úloh

Hledání správné cesty

Hodnocení soutěžních úloh

Metodický průvodce k výukovému materiálu

Gymnázium, Praha 6, Arabská 14. Loydova patnáctka. Dokumentace ročníkového projektu. Předmět: Programování Vyučující: Ing. Tomáš Obdržálek Třída: 1.

Martin Heni Eugene Trounev Kontrolor: Mike McBride

Karty Prší. Anotace: Abstract: Gymnázium, Praha 6, Arabská 14 předmět Programování, vyučující Tomáš Obdržálek

Kámen-nůžky-papír. Tomáš Svoboda Centrum strojového vnímání, Katedra kybernetiky Fakulta elektrotechnická, České vysoké učení technické

Zadání soutěžních úloh

Zadání soutěžních úloh

Příručka aplikace Kollision. Paolo Capriotti

Příručka aplikace Bovo

Celostátní kolo soutěže Mladý programátor 2012, kategorie A, B

Hodnocení soutěžních úloh

Uživatelská příručka - Naves

Úvod do počítačových sítí

Kámen-nůžky-papír. Tomáš Svoboda Centrum strojového vnímání, Katedra kybernetiky Fakulta elektrotechnická, České vysoké učení technické

Škola: Střední škola obchodní, České Budějovice, Husova 9. Inovace a zkvalitnění výuky prostřednictvím ICT

ALTERNATIVNÍ SPORTOVNÍ HRY II.

strategická desková hra pro dva hráče

rodinná hra od Stefana Dorry (překlad: Michal Kohoutek)

Sport, sportování a hry

Tento materiál byl vytvořen v rámci projektu Operačního programu Vzdělávání pro konkurenceschopnost.

Hodnocení soutěžních úloh

Usekne-li Honza 1 hlavu, narostou dva ocasy. Tento tah můžeme zakreslit následujícím způsobem: Usekne-li 2 hlavy, nic nenaroste.

LOGBOOK. Blahopřejeme, našli jste to! Nezapomeňte. Prosím vyvarujte se downtrade

Programátorská dokumentace

Školní kolo soutěže Mladý programátor 2015, kategorie A, B

Celostátní kolo soutěže Mladý programátor 2012, kategorie C, D

Úvodem... 9 Kapitola 1 Karetních

Při bodování se mohou přidělovat body za každou dílčí úlohu (tj. a, b ), maximální bodové hodnocení je uvedeno na konci každé dílčí úlohy.

POVLTAVSKÉ SETKÁNÍ BALTÍKŮ - 9.ročník a

CÍLOVÝ KONCEPT. Ghoul Wars. pro. Jihočeskou univerzitu Pedagogickou fakultu Předmět: TDSA

DSL manuál. Ing. Jan Hranáč. 27. října V této kapitole je stručný průvodce k tvorbě v systému DrdSim a (v

POROVNÁNÍ NĚKTERÝCH SW PRO ZOBRAZENÍ GRAFU FUNKCE DVOU PROMĚNNÝCH

GOLDEN BANK 300. Universe games, s.r.o., U Habrovky 247/11, Praha 4. Herní plán

ČTENÍ. M e t o d i c k é p o z n á m k y k z á k l a d o v é m u t e x t u :

FAZOLE KOSTKOVÁ HRA POPIS

PROJEKT MINY - DOKUMENTACE

Projekt: ŠKOLA RADOSTI, ŠKOLA KVALITY Registrační číslo projektu: CZ.1.07/1.4.00/ EU PENÍZE ŠKOLÁM

ODDVILLE hra pro 2 4 hráče od 10 let

Převod prostorových dat katastru nemovitostí do formátu shapefile

PRAVIDLA: ÚROVEŇ 4 BALÍČEK VS BALÍČEK

SHOWDOWN. Podpora hodiny Netradiční hry

Kód: Vzdělávací materiál projektu Zlepšení podmínek výuky v ZŠ Sloup. Present simple "to have, to be"

AJ 3_08_Shopping.notebook. November 08, úvodní strana

PRAVIDLA HRY. Loris Games, s.r.o. Všechna práva vyhrazena.

Kdo jsme Čím se zabýváme Nabídka služeb pro veřejnou správu Ověřeno v praxi u tisíce uživatelů v podnikatelské a bankovní sféře Plně využitelné u

II_ _Listening Pracovní list č. 2.doc II_ _Listening Pracovní list č. 3.doc II_ _Listening Řešení 1,2.doc

CAS. Czech Association of Shogi

Téma: Arkanoid. X36SOJ Strojově orientované jazyky Semestrální práce. Vypracoval: Marek Handl Datum: červen 2006

VY_32_INOVACE_06_Předpřítomný čas_03. Škola: Základní škola Slušovice, okres Zlín, příspěvková organizace

Používají se standardní pravidla Pocket kulečníku, pokud se zde nestanoví výslovně jinak.

Střední průmyslová škola strojnická Olomouc, tř.17. listopadu 49

Google Apps. kalendář 3. verze 2012

Regionální kolo soutěže Mladý programátor 2012, kategorie A, B

Vítejte ve hře Planet Territory

Projekt: ŠKOLA RADOSTI, ŠKOLA KVALITY Registrační číslo projektu: CZ.1.07/1.4.00/ EU PENÍZE ŠKOLÁM

Tento materiál byl vytvořen v rámci projektu Operačního programu Vzdělávání pro konkurenceschopnost.

REELMAXX. Universe games, s.r.o., U Habrovky 247/11, Praha 4. Herní plán

PRAVIDLA HRY. Kuraki Mura Wee Yee Chong

Programování jako nástroj porozumění matematice (seriál pro web modernivyuka.cz)

DUST SETUP. následně každý hráč odloží hranou kartu a začíná první kolo. HERNÍ KOLO

Projekt: ŠKOLA RADOSTI, ŠKOLA KVALITY Registrační číslo projektu: CZ.1.07/1.4.00/ EU PENÍZE ŠKOLÁM

e erz vaná v aco rozpr

Výukový materiál zpracovaný v rámci operačního programu Vzdělávání pro konkurenceschopnost

Novinky ISÚI a VDP verze

Nile deluxor PŘEDSTAVENÍ HRY OBSAH KRABICE

Digitální učební materiály

Vánoční sety Christmas sets

Napínavé letecké závody pro dva chytré havrany od 10 let

27-SEP-10. Black Cyan Magenta Yellow. CÍL HRY Jako první vytlačit šest. v tazích - své kuličky lze posunout. pole.

VY_22_INOVACE_91 P4 U3 Revision

Gymnázium Vysoké Mýto nám. Vaňorného 163, Vysoké Mýto

VZDĚLÁVACÍ MATERIÁL. Pololetní písemná práce pro 5. ročník Mgr. Iveta Milostná VY_32_INOVACE_A11 Pořadové číslo: 11.

Webová stránka. Matěj Klenka

Billy Elliot 1 Pre-watching activities A2/B1

MAPA PARKOVÁNÍ A BEZBARIÉROVÉHO PŘÍSTUPU IMPLEMENTOVANÁ DO MOBILNÍHO MAPOVÉHO KLIENTA SPINBOX

Projekt MŠMT ČR: EU peníze školám

Třída DrawingTool. Obrázek 1: Prázdné okno připravené pro kreslení

Gymnázium, Praha 6, Arabská 14. předmět: Programování. vyučující: Tomáš Obdržálek. Piškvorky. ročníkový projekt. Le Hoang Nguyen, 1.E.

JAK HRÁT Petr Vojtěch Jindřich Pavlásek

User manual SŘHV Online WEB interface for CUSTOMERS June 2017 version 14 VÍTKOVICE STEEL, a.s. vitkovicesteel.com

Chit Chat 2 - Lekce 1

GEOVAP, spol. s r.o. WMS JDTM ZK

královna Má hodnotu 16.

Transkript:

Gymnázium, Praha 6, Arabská 16 předmět Programování, vyučující Tomáš Obdržálek Lodě Dokumentace ročníkového projektu Martin Karlík, 1E 17.5.2014

Anotace In this school year we had to chose some year project. So I chose a clasic table game battleships but I make some upgrades. You do not need pencil or paper just your computer or notebook. In my version of battleships you can play with your friend online. By making this project I learn lots of usefull things like online communication to the server. I would like you to play this game and have a fun with it. Proháš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. 1

Zadání projektu Dva hráči (každý na svém počítači) umístí na hrací pole lodě. Navzájem neznají jejich pozice. Střídají se po jednom výstřelu. Cílem je zničit soupeřovi lodě. * Počítače budou komunikovat přes server (není součástí programu) * Program hráči zobrazuje předchozí úspěšné i neúspěšné výstřely * Program určí vítěze * Nekontroluje správné umístění lodí * Statistiky výstřelů/zásahů Zpracování: Grafické Jazyk: Java Bonus: * Program generuje lodě sám, uživatel pouze volí jejich pozici 2

Pravidla hry Lodě je hra pro dva hráče. Hraje se na čtvercovém hracím poli 10 x 10. Cílem hry je zlikvidovat všechny soupeřovy lodě. Hra začíná ve výchozí situaci, kdy musí každý hráč umístit všechny své lodě na hrací pole. Oba hráči by se měli shodovat v typu i počtu nasazených lodí. Zde je příklad některých typů lodí. Je možné volit i jiné kombinace. Na hracím poli by se jednotlivé lodě neměli navzájem dotýkat a to ani rohy. Hráč, který je na tahu, zvolí pozici, na kterou chce vystřelit. Hráč si zaznamená výsledek (v našem programu za vás toto učiní počítač) a na tahu je jeho protihráč. V případě zásahu není loď potopena do té doby dokud nejsou zasaženy všechny její části, v takovém případě by měl hráč oznámit soupeří, že byla jedna z jeho lodí potopena. Hra končí když jeden z hráčů přijde o všechny své lodě. Instalace hry Hra je velice jednoduchá a k úspěšnému spuštení je zapotřebí pouze program samotný a přístup k internetu. K ovládání stačí pouze myš. Program se nepřispůsobuje velikosti obrazovky, proto je dobré mít HD monitor, aby se mohl celý program bez problémů zobrazit. Úvod Vývoj hry Na začátku jsem chtěl jako svojí ročníkovou práci naprogramovat lodě, které mohou hrát proti sobě dva lidé na různých počítačích. Komunikaci jsem chtěl vyřešit uložením souřadnic do textového souboru, do společného uložného prostoru pro oba počítače a jeho následným načetním protihráčem. Tuto moznast mi však vedoucí práce rozmluvil a nabídl mi pomoc při programování komunikace přes server. Tento server poskytuje Gymnázium Arabská. Grafické zpracování První fáze byla jednoduchá, využij jsem JPanelu k vykreslení hracího pole. Jediná potíž nastala při převodu systému souřadnic, který hraci pole rozděloval po jednotlivých pixelech na souřadnice vhodné pro umísteni lodí např. místo [1586, 982] použít vhodnejší souřadnice [4, 6]. Tento problém jsem vyřešíl poměrně jednoduše, a to rovnicí: int x = (e.getx() - 100) / 40; V rovnici se int x rovná požadované souřadnici, metoda e.getx() vrátí souřadnice v pixelech, od kterých je odečten okraj (- 100) a jsou vyděleny 40 (šířka jednoho čtverečku 3

na hracím poli v pixelech). Takto získané souřadnice se hned uloží do pole[], kde jsou jim přideleny indexy. Potom jsou lodě pomocí funkce Graphics2D vykresleny na příslušné pozice. Pozice lodí je nutné uchovávat pro pozdější ověřování zásahů. Na stejném principu jsou vykreslovány i střely, úspěšné i neůspěšné. Střěly jsou nejprve roztříděny podle úspěšnosti, potom jsou jejich pozice uloženy do polí[], podobně jako lodě. 4

Online komunikace Oba počítače komunikují pomocí jednoduchých dotazů na server. Hned po spuštení programu se počítač dotáže serveru na své číslo. Toto je nejdůležitější část hry, podle čísla se totiž odvíjí nasledná komunikace i pořadí obou hráčů. Na své číslo se program dotáže pomocí následujícího příkazu: komunikace = new Komunikace(); // login if (komunikace.getcislohrace() == 1) { tah = true; } Tento příkaz zajistí, že pokud bylo hráči přideleno číslo 1, začíná hru. Metoda getcislohrace() se pomocí tohoto odkazu dotáže serveru: http://lode.svs.gyarab.cz/?command=login Hráč číslo jedna je tedy na tahu, vybere pozici, na kterou chce střílet, souřadníce se uloží, jak bylo zmíněno vyše, a odešlou se pomoci tohoto odkazu: http://lode.svs.gyarab.cz/?command=send&recipient=1message=x,y. Recipient=1, tato část určuje pro kterého z hráčů je zpráva určena, message=x,y odesle zpravu (v našem případě souřadnice) pro zvoleného hráče a hned se přepne do stavu, kdy čeká na odpoveď. Mezi tím druhy hráč pomocí odkazu: http://lode.svs.gyarab.cz/? command=get&recipient=1 stále zkouší, zda pro něj není na serveru zpráva. Pokud na serveru žádná zpráva není, server odpovídá NO MESSAGE. Pokud na serveru zpráva je, tak pomoci for cyklu projde pole[], ve kterém jsou uloženy souřadníce všech lodí a vyhodnotí, zda se souřadnice nejaké lodě shodují se souřadnicemi střely. Pokud ano, odešle pomocí odkazu na zasílání zpráv, zmíněného v minulém odstavci, zprávu zásah a zasažená část lodi zmizí z jeho hracího pole. Pokud ne, odešle zprávu vedle a do jeho hracího pole je střela modře zakreslena. První hráč vyhodnotí zprávu a podle výsledku zakreslí střelu červeně, pokud byla úspěšná nebo modře, pokud minula. Potom se hráči vystřídají, střílí protihráč. Na začátku každé metody (tah() nebo cekaninatah()) je vložena podmínka, která kontroluje zda mají oba hráči alespoň jednu loď. Pokud ne, hra je ukončena a program oběma hráčům oznámí vítěze. Pomocné informace a proměnné Hra svému hráčí zobrazuje několik pomocných údajů. Ke každému údaji se váže jedna proměnná. Například v momentě, kdy hra odesílá souřadnice střely, tak se automaticky přičte jedna do proměnné, která počíta celkový počet střel. Nebo proměnná s názvem mojelode počítá počet mých zbývajícich lodí, je ověřována v momentě, kdy program dostane odpověď ze serveru se souřadnicemi střely. Pokud byla střela úspěšná, automaticky se odečte jedna. V programu je mnoho dalších proměnných, například s počtem nepřátelských lodí. Všechny pomocné informace jsou opět vypisovány pomoci Graprics2D. 5

Závěr Doufám, že zadání ročníkového projektu se mi podařilo splnit. Práce na projektu byla pro mě velmi přínosná,neboť jsem se na celém projektu i spoustu užitečných věcí naučil. V budoucnu se mi určitě bude hodit komunikace přes server. Také jsem zjistil, jak je při programování důležidté vše si třídit do tříd a metod a také dávat proměnným správné názvy, prostě jak je důležité udržovat si v kódu pořádek. Protože jinak se člověk v kódu ztratí a když pak udělá chybu strávi zbytečně dlouhou dobu jejím hledáním. Taky bch chtěl poděkovat vedoucímu projektu a našemu učiteli na programování, že mi tolik pomohl s online komunikaci. 6