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.



Podobné dokumenty
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.

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

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

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

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

Příručka aplikace Shisen-Sho. Dirk Doerflinger Eugene Trounev Frederik Schwarzer Kontrolor: Frerich Raabe

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

Projekty pro výuku programování v jazyce Java

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

PŘÍRODOVĚDECKÁ FAKULTA UNIVERZITY PALACKÉHO KATEDRA INFORMATIKY ROČNÍKOVÝ PROJEKT KLOKAN. Informatika, II. ročník


Kolekce ArrayList. Deklarace proměnných. Import. Vytvoření prázdné kolekce. napsal Pajclín

Sumatra ostrov mnoha vzácných druhů zvířat 2 4 hráči, minut, věk 8+ Obsah krabice. větvení (na jedné straně každého dílku cesty)

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.

Herní plán číselných loterií a sázkových her SAZKA

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

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.

MANUÁL K APLIKACI SOFTRADE. 1.Holandské aukce (sestupné) 2.Holandské aukce (sestupné) s možností navyšování ceny 3.Limitní cena

Projekt. Jan Outrata. listopad Jan Outrata (KI UP) Projekt - analýza a návrh listopad / 13

Souhrn. Cíl hry. Autoři: Marco Rusowski a Marcel Süßelbeck

Eufrat a Tigris HRACÍ MATERIÁL PŘÍPRAVA NA HRU. Sestavení monumentů. Příprava hrací desky. Výběr dynastie

P1 Formule ve sněhu. P2 Double Cola

1 of :27

Digitální učební materiál

Po obrazovce přejede formule, před kterou se budou postupně objevovat písmena slova formule.

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.

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.

Strana 1. Vysoké napětí FACTORY MANAGER / Ředitel továrny FRIEDEMANN FRIESE

Pravidla hry. Herní materiál

Obsah herní sady: 40x dřevěný kámen hrací deska návod

Héra a Zeus. Cíl hry Héra zvítězí, pokud najde Arguse a osvobodí ho. Zeus zvítězí, pokud najde Io a osvobodí ji.

FORMÁTOVÁNÍ ODSTAVCE

Obsah Anotace :... 1 Anotation 2

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

Obsah krabice. 1 hrací deska 60 karet. 1 karta hotelu. 32 karet pohybu 2 karet fotografií. 34 dřevěných částí

O soutěži MaSo. Co je to MaSo? Třinácté MaSo, 78 družstev, 46 škol. Organizace. maso.mff.cuni.cz. o dvakrát za rok o nejen počítání o soutěž družstev

Laboratorní zdroj - 6. část

Uživatelský manuál Radekce-Online.cz

TECHNICKÉ POŽADAVKY PORTÁLU

LED_007.c Strana: 1/5 C:\Michal\AVR\Výukové programy\archiv\ Poslední změna: :01:48

1. ZKOPÍROVÁNÍ VZOROVÉHO GOOGLE

Martin Heni Eugene Trounev Kontrolor: Mike McBride

Klíčová slova: OOP, konstruktor, destruktor, třída, objekt, atribut, metoda

Obsah. Úvod 11 Základy programování 11 Objektový přístup 11 Procvičování 11 Zvláštní odstavce 12 Zpětná vazba od čtenářů 12 Errata 13

CATE VLT HERNÍ PLÁN - NÁVOD PRO HRU

MANUÁL K OBSLUZE REDAKČNÍHO SYSTÉMU / wordpress

Manuál pro uživatele on-line hry Pimp Your Landscape. On-line hra Pimp your Landscape Návod pro uživatele

Google Apps. dokumenty 5. verze 2012

- Karty energie safírové (3-7), smaragdové (5-10), diamantové (8-12), rubínové (13-17)

MANUÁL K APLIKACI SOFTRADE. 1. Pohyb v aplikaci 2. Aukce obálkového výběru 3. Aukce otevřená v ceně

Před první hrou setřiďte karty podle přiloženého pořadníku do drážek v krabici. 500 karet 130 karet peněz Název

Na základě Business Targets autora Simona Greenalla, vydaných nakladatelstvím Macmillan Heinemann English Language Teaching (Oxford).


Oficiální výklad pravidel FIBA. platné od

3 Vývojová prostředí, základní prvky jazyka Java, konvence jazyka Java

Semestrální práce do předmětu Principy tvorby mobilních aplikací

POVINNÁ ČETBA 2015/ A

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

Kategorie Základní školy




Návod k obsluze Bakalářská práce Autor Vedoucí práce Škola Obor Webový systém pro konfiguraci disperzního modelu

Pracovní list: Práce s počítačovou myší. Číslo: PL /verze 01. Vincentinum poskytovatel sociálních služeb Šternberk, p.o.

Šifrování/Dešifrování s použitím hesla

SimOS. Jakub Doležal Radek Hlaváček Michael Očenášek Marek Reimer

Napínavé soutěžení pro 2 až 4 hráče od 9 let.

8 A (strana 1) Soubory a složky, procházení, orientace

Loterie a jiné podobné hry

ALTERNATIVNÍ SPORTOVNÍ HRY I.

Kapitola z diplomové práce Marie Brázdové: Využití internetu ve výuce matematiky. PedF UK v Praze, Jedna z aktivit v praxi

Návod: Ulož hru: Stručný popis: Požadavky: Jak začít hrát? Měna. Plynutí času: Hlavní prostředí hry: HRA

PŘEHLED PRAVIDEL STOP! Výkladový slovník strany 2 10 Hlavní část přehledu, ve které naleznete podrobný popis všech pravidel v abecedním pořadí.

PRAVIDLA SOUTĚŽE SPORTUŠKA

VYTVÁŘENÍ A POUŽITÍ VZDĚLÁVACÍCH MODULŮ

UŽIVATELSKÁ PŘÍRUČKA Import dat do Pohody Firmadat, s.r.o. 2015

KONFIGURACE SILNIČNÍCH KŘIŽOVATEK

ÚPRAVY PRAVIDEL RAGBY

MALÁ KOPANÁ TŘINEC - PRAVIDLA

Manuál k užívání aplikace Monitoringrejstriku.cz

Obhajoba na Informační a komunikační technologie 1

Uživatelská příručka pro dodavatele

UVĚZNĚNI ÚSMĚVEM MONY LISY ÚROVEŇ

Příprava hry. Průběh hry

Elektronická dokumentace - LATEX. Maticové operace

Plán práce školní družiny na šk.rok 2010/2011

Předpisy WPA Strana 1 z 7

Toto zadání je podepsané děkanem a vedoucím katedry, po obhajobě).

Hromadné platby - inkaso

VZDĚLÁVACÍ MATERIÁL III/2

Algoritmizace, základy programování, VY_32_INOVACE_PRG_ALGO_01

DUM 05 téma: Úvod do VBA for application

Alchymie je 2. rozšíření k Dominionu. Přidává 12 nových karet království a nové platidlo elixír.

Úvod. Obsah. Dvě mapy Severní Amerika a Evropa. Vysoké napětí deluxe pro 2 hráče: Proti Trustu. Příprava hry

Závěrečná práce studentského projektu OPPA

Mlýnek (typový výrobek)

Využití volně dostupných simulátorů pole v elektromagnetické kompatibilitě

Czech SILESIA BC 2012

PŘÍLOHA K PROPOZICÍM SPORTTOUR SPORTOVNÍM REGULÍM PRO SOUTĚŽ SPORTTOUR

Transkript:

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.E Jan Zaoral květen 2014

1. Úvod 1.1. Anotace Česky Cílem tohoto projektu bylo vytvořit hlavolam (hru) Loydova patnáctka. Aplikace je vytvořena v programovacím jazyce Java s využitím vývojivého prostředí NetBeans. English The main goal of this project was to create a puzzle Loyd s 15 also known as 15 Puzzle. This application was created in Java programming language using NetBeans development suit. 1.2. 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. 1.3. Zadání projektu 1.3.1. Předem schválené vlastnosti Vytvoření aplikace na principu hry Loydova patnáctka. V aplikaci budou kameny označené čísly. Aplikace bude zaznamenávat počet tahů s kameny, aby se na konci mohl vypsat celkový počet tahů ve hře. 1.3.2. Bonusové vlastnosti V grafickém rozhraní se nachází tlačítko Zamíchat, které zamíchá kameny (dále jako hrací tlačítka) pro začátek hry. Vedle tlačítka na zamíchaní hracích tlačítek se také nachází krokoměr, který ukazuje aktuální počet tahů. Při každém stisknutí tlačítka na zamíchání se automaticky vynuluje počet kroků, aby hráči neukazoval jejich nesprávný počet (např. z předchozích her). Na konci hry se objeví okno s gratulací k dokončení hry a s finálním počtem kroků. (2

2. Hra 2.1. Historie a princip hry Loydova patnáctka je jednoduchý hlavolam, ve kterém musí hráč přesouvat hrací tlačítka ve čtvercovém poli (4 4) a dostat je do správné pozice. Hrací tlačítka jsou označena čísly 1-15 a pomocí jednoho volného místa se musí všechna složit do správného pořadí. Hlavolam se považuje za vyřešený v momentě, kdy jsou herní tlačítka seřazená vzestupně od nejmenšího po největší číslo. V počítačové verzi to není možné, ale ve fyzické verzi hlavolamu je zakázáno vyndávat a přemisťovat kameny na jiná místa v herním poli. Pokud by tak někdo učinil, celá hra by byla neplatná. Autorem tohoto hlavolamu není Sam Loyd, po kterém je hra pojmenována, protože byl jejím hlavním popularizátorem. Ve hlavolamu existují různé kombinace herních tlačítek, ze kterých se nelze dostat do finální složené podoby. Loyd nabídl odměnu 1000 dolarů tomu, kdo jako první nabídne řešení těchto pozic. Díky této nabídce na hře velice zbohatl a zároveň hru velice proslavil. Navíc odměnu nikomu dávat nemusel, protože sám věděl, že tyto pozice doopravdy vyřešit nejdou. 3. Aplikace Výsledná aplikace vypadá jako na následujícím obrázku. Tlačítko Zamíchat Herní tlačítko Hrací pole Krokoměr (3

3.1. Spuštění aplikace Aplikaci je vytvořena do spustitelného balíčku typu JAR, který lze spustit na počítačích s nainstalovaným prostředím Java. Žádný instalační balíček není potřeba. 3.2. Grafické rozhraní Pro vytvoření grafického rozhraní mojí aplikace jsem do svého projektu naimportoval knihovnu Swing. Hned na první pohled jsou v okně aplikace vidět 4 hlavní prvky: 1. pole, ve kterém se nachází herní tlačítka, 2. herní tlačítka, 3. tlačítko Zamíchat, 4. tzv. krokoměr, který počítá počet kroků s herními tlačítky. První věc, kterou jsem udělal, byla třída s názvem Tlacitko s následujícími vlastnostmi a metodami: int radek: určuje řádek v herním poli, ve kterém se bude herní tlačítko nacházet. int sloupec: určuje sloupec v herním poli, ve kterém se bude herní tlačítko nacházet. int velikost: určuje šířku a výšku tlačítka. presun: metoda zajišťující přesunutí tlačítka na pozici určenou předanými parametry. Tlacitko (konstruktor): úvodní nastavení tlačítka, tzn. jeho popisu, vzhledu a úmístění ve hracím poli. Takto speciálně nadefinované tlačítko má jednotné vlastnosti a metody oproti ostatním ovládacím prvkům na formuláři, pro které jsem nemusel vytvářet další speciální třídy. Po vytvoření třídy Tlacitko bylo zapotřebí vytvořit okno, ve kterém se budou nacházet všechna herní tlačítka. V tomto kroku bylo potřeba nastavit rozměry okna, které jsem odvodil z rozměrů tlačítek. Velikost tlačítka jsem musel ale nejprve otestovat. Poprvé jsem zkusil tlačítko o velikosti 50x50 bodů. To se mi zdálo dost malé, a proto jsem na druhý pokus vytvořil tlačítko 100x100 bodů. Tato velikost se mi zdála být dostačující. Jelikož jsou ve hře tlačítka 4 v každém řádku a také 4 v každém sloupci, vypočítal jsem si, že základní velikost okna pro samotné hrací pole bude 400x400 bodů. Tyto rozměry jsem také zadal do kódu pro vytvoření okna. Protože ve spodní části formuláře jsou i další objekty jako je krokoměr a tlačítko na míchání, musel jsem zvětšit výšku okna. (4

Po vykreslení hracího pole je potřeba umístit 15 herních tlačítek. Ta jsou vytvořena a umístěna na hrací ploše pomocí dvou cyklů, které určují zároveň pozici řádku a sloupce. Odkazy na jednotlivé objekty tlačítek jsou umístěny v kolekci tlacitka typu HashMap. Když je vytvořeno hrací pole s herními tlačítky, musí se vytvořit tlačítko Zamíchat, které slouží k náhodnému rozmístění kamenů na začátku hry. Jak už jsem výše zmínil, není možné tlačítka rozházet zcela náhodně, protože by se mohla dostat do postavení, kdy není možné hlavolam vyřešit. Pro zamíchání tlačítek jsem tedy použil tento postup: 1. najdu volnou pozici v hracím poli, 2. náhodně určím směr, ze kterého se tlačítko posune, 3. otestuji, jestli ve zvoleném směru je tlačítko a není konec hracího pole, 4. přesunu požadované tlačítko. Tento postup se opakuje tak dlouho, kolikrát je to nastaveno v cyklu. Přednastavených je 100 opakování. Tímto je vyřešen problém s tím, aby se dalo postavení vždy vyřešit. U každého přesunu je nutné otestovat, aby se to tlačítko nedostalo mimo hrací pole. 3.3. Základní metody V tomto odstavci uvedu důležité metody, které jsou v aplikaci použity a přidám k nim jejich význam: presun - zajišťuje přesun hracího tlačítka, jevolne - zkontroluje, zda je pozice volná, rozhazejtlacitka - metoda, která po svém zavolání prohází tlačítka po hrací ploše, addcomponentstopane - slouží pro vykreslení objektů na formuláři, kontrola - kontroluje, zda jsou herní tlačítka na správném místě, main - vytváří se v něm formulář a spouští se zde aplikace. 3.4. Ovládání Ovládání aplikace je velice jednoduché, protože ke hraní není potřeba nic jiného než myš. Klávesnici aplikace nevyžaduje a ani nepodporuje. 3.5. Problémy Jeden z hlavních problémů byl jak vytvořit okno, ve kterém budou umístěna tlačítka, protože jsme v hodinách skoro vůbec neprobírali grafickou stránku programování. Musel jsem si proto nastudovat, jak vytvořit formulář, do kterého dám tlačítka a další objekty. Další problém nastal, když jsem potřeboval tlačítka rozpohybovat, tzn. aby reagovaly na kliknutí tlačítka myši. Na internetu jsem našel návod na vytvoření třídy ActionListener. Ta (5

slouží ke zpracování událostí, které se dějí s objekty. Když jsem si vytvořil tuto třídu, musel jsem ještě nastavit, jak budou reagovat objekty, na které se právě klikne (herní tlačítka a tlačítko na zamíchání). 3.6. Možná vylepšení Zde uvádím několik námětů, se kterými by se aplikace dala ještě vylepšit: Aplikace by mohla obsahovat vlastnost s požadovanými rozměry, takže by si hráč mohl nastavit, jakou velikost hracího pole chce. Čím větší by pole bylo, tím déle by trvalo hru vyřešit. Od těchto rozměrů by se také automaticky určily rozměry formuláře. Hráč by si mohl do hry naimportovat obrázek, který by se automaticky rozkouskoval a rozházel. Úkol by potom byl jasný: složit obrázek do původní podoby. Při míchání tlačítek by bylo možné zajistit, aby se v rámci cyklu nevracelo tlačítko na pozici, ze které se předtím přesunulo. Díky tomu by bylo míchání pečlivější. Pro uložení odkazů na objekty by bylo také možné použít jiné druhy kolekcí (např. ArrayList). Zvolil jsem HashMap v rámci procvičení aktuálně probíraného učiva a zároveň se mi líbila možnost procházet jednoduše kolekci pomocí cyklu for-each. 4. Vyhodnocení, závěr Tuto ročníkovou práci považuji za úspěšně dokončenou a mám z ní dobrý pocit, protože jsem splnil schválené i bonusové zadání, naučil jsem se v Javě novým věcem a procvičil jsem si látku, kterou jsme se za celý školní rok naučili. 4.1. Zdroje Popis hlavolamu: http://cs.wikipedia.org/wiki/patn%c3%a1ctka O Samu Loydovi: http://cs.wikipedia.org/wiki/sam_loyd Dokumentace Java: http://docs.oracle.com/javase/7/docs/api/ Dokumentace NetBeans: https://netbeans.org/kb/ Programátorské diskusní fórum: http://stackoverflow.com/ Články na internetu ke Swing, Java, ActionListener atd. (6