Aliens atack - Gymnázium Arabská

Transkript

Aliens atack - Gymnázium Arabská
Gymnázium, Praha 6, Arabská 14
Aliens atack
Dokumentace ročníkového projektu
Předmět: Programování
Vyučující: Tomáš Obdržálek
Matěj Kovařík, 1E
18. května 2014
1. Úvod
1.2 Anotace
Česky
Cílem tohoto projektu bylo vytvořit hru zvanou „Aliens atack“. Tato hra vychází z
populární hry „Space Invaders“ Hra byla vytvořen v programovacím jazyce Java ve
vývojovém prostředí Netbeans. Úkolem hráče je zabránit plošinou mimozemským lodím
přistát na zem. Po dotyku lodě se zemí hra skončí.
Anglicky
The goal of the project was to crate a game called „Aliens atack“. This game come from
popular game „Space Invaders“. The game was created in programming language Java in
development environment Netbeans. The task of a player is prevent alien spaceships
landing on the ground. After spaceship touching with ground the game will end.
1.3 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.4 Zadání Projektu
1.4.1 Povinné funkce

Vytvoření hry „Aliens atack“ v programovacím jazyce Java pomocí knihovny Swing

Výstup hry z okna.

Hra měří skóre hráče nahrané v poslední hře.

Hra se okamžitě ukončí po stisknutí klávesy Escape (Esc).

Pokaždé před startem hry si hráč muže zvolit ze tří obtížností.
-1-
Aliens atack
1.4.2 Bonusové funkce

Program ukládá nejvyšší dosažené skóre.
2. Hra
2.1 Původ a princip hry
Tato hra je podobná „Space Invaders“, vyvinutá Japoncem Tomohiro Nishikadem v roce
1978. Úkolem je zde zabránit mimozemšťanům dosáhnutí dna obrazovky. Avšak zde se po
lodích střílí a lodě jsou pravidelně seřazeny do zástupů. „Space Invaders“ obtížnosti nemá,
ale po každé střelené lodi se jejich pohyb zrychluje. Takže hra je stále obtížnější a
obtížnější. Ve hře „Aliens Atack“ se nepřátelé chytají. Také lodě se generují náhodně.
Celkové provedení hry je podstatně jednodušší. Plošina se ovládá pomocí kláves „s“ a „d“.
Hra se múže ukončit klávesou „Escape“
1Výstupní okno programu
2.2 Spuštění
Hra se otevře spuštením souboru JAR s názvem „Aliens“. Nachází se ve složce také s
názvem „Aliens“. Další soubory ve složce jsou nutné ke spravnému fungování aplikace a
musejí zůstat ve složce s hrou. Soubory se zdrojovými kódy se nacházejí v druhé složce
„Aliens_sourceFiles“. Dále ve složce „src“. Hlavní spouštěcí třída se jmenuje
-2Aliens atack
„AnimatedPanel“. Také je nutné mít v počítači nainstalované běhové prostředí Java. (Java
SE Runtime Environment 7) Žádná instalace není potřeba.
2.3 Postup
V prvé řadě jsem si stáhnul z webu pixabay.com obrázek vesmírné lodě. Obrázek je
licencován jako Creative Commons. Tudíž jsem se nedopustil žádného porušení
autorských práv. Poté jsem pomocí programu na vektorovou grafiku Inkscape vytvořil
obrázek plošiny. Dále jsem vytvořil třídu spaceship, která zastupuje vesmírnou loď. Má
parametr souřadnice y. Další třída byla catcher, která zastupuje plosinu. Catcher má
parametr souřadnice x. Dalším postupem bylo nahrání těchto dvou obrázků do canvasu.
Hlavní myšlenka kódu je vytváření objektů v časovači a přidávání do kolekce. V kódu jsou
dva časovače Jeden má za úkol přidávání lodí do kolekce. Druhý časovač prochází kolekce
a zjišťuje detekci s plošinou nebo se dnem. V prvním případě se loď odebere z kolekce,
zmizí a program běží dál. V druhém se program zastaví. Dále jsou v kódu metody
KeyListener, které umožňují ovládání plošiny pomocí kláves. Zásadní metodou je
paintComponent, kde se vše vykresluje. Poslední metodu je main, která se spouští jako
první. Od ní se vše vyvíjí.
2.4 Struktura kódu
Timer2 = Generuje lodě, přidává je do kolekce.
KeyTyped = Posouvá plošinu.
paintComponent = Vykresluje lodě, plošinu a skóre.
Timer = Detekuje srážky s lodí a plošinou, zapisuje do souboru „points.txt“. Ukončuje
program.
main = Spouští program, vykresluje okno, načítá soubor s nejlepším skórem a pracuje
s obtížnostmi
2.5 Potíže
Průběhem práce jsem narazil na několik problému, které se mi obtížně řešili. Prvním byl
posun lodi, aniž bych je nějakým způsobem ovládal. To jsem vyřešil časovačem. Časovač je
metoda, která se zavolá vždy po nějakém časovém úseku. Dalším problémem byla
podmínka, která detekovala srážku s plošinou. U té jsem trávil nejvíce času, ale nakonec
jsem zjistil, že jsem nevyřešil problém s různým rozlišením.
-3Aliens atack
3. Závěr
3.1 Zhodnocení projektu
Práce na tomto projektu pro mě byla velká zkušenost. Tímto jsem vytvořil můj první větší
program a jsem za to hrdý. Rozhodně bych se někdy vrátit ke psaním nějakého dalšího
programu. Zvažuji o práci dalšího ročníkového projektu v druhém ročníku.
3.2 Zdroje
http://en.wikipedia.org/wiki/Space_Invaders
http://pixabay.com/cs/kosmick%C3%A9-lod%C4%9B-cosmic-retro-155165/
-4Aliens atack

Podobné dokumenty

Škola: Základní škola Trávníky Otrokovice, příspěvková organizace

Škola: Základní škola Trávníky Otrokovice, příspěvková organizace Téma: Will (for decisions, predictions and offers) - budoucí čas prostý - procvičování a test Pomůcky: papír, tiskárna, psací potřeby Anotace: Cvičení na budoucí čas prostý, test z budoucího času p...

Více

Dokumentace

Dokumentace onKeyDown, onKeyUp, onMouseDown, onMouseUp a onMouseMove. V obsluze těchto událostí se tvoří XML soubor, který obsahuje číslo uživatele, url flash animace, čas události, číslo snímku, na kterém doš...

Více

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

Postřehová hra Zadání projektu 1 Moje cíle its random size. The player tries to shoot the green squares which are displayed in a short time as much as possibile. If he shot the red square, the game is finished. The game is limited by a time...

Více

Lean Canvas - Ashoka CEE

Lean Canvas - Ashoka CEE Unikátní nabídka hodnoty Čím upoutáte pozornost? V čem jste jiní? Jaká je výsledná hodnota pro zákazníka?

Více