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



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

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

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.

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

Typický prvek kolekce pro české řazení

Java - Kresba. 2/28/11 1/8 Java - kresba

JSR tutorial 2 Transformace v JSR-184

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

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.

Principy objektově orientovaného programování

Čipové karty Lekařská informatika

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.

Obsah Anotace :... 1 Anotation 2

Teoretické minimum z PJV

1. Téma 12 - Textové soubory a výjimky

20. Projekt Domácí mediotéka

11. Dědičnost. Dědičnost strana 103

Algoritmizace a programování

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Obrázek. Základní popis, zadání úkolu. Struktura tříd,

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.

Seznamy a iterátory. Kolekce obecně. Rozhraní kolekce. Procházení kolekcí

Algoritmizace a programování

Datové typy v Javě. Tomáš Pitner, upravil Marek Šabo

Problém identity instancí asociačních tříd

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Programování v Javě I. Leden 2008

2 Tvorba interaktivních grafických programů

OOPR_05. Případové studie

Jazyk C++ I. Šablony 3

Abstraktní třída a rozhraní

Java a Caché IV: Manipulace s objekty

Michal Podzimek

Herní engine. Co je Engine Hotové enginy Jemný úvod do game designu

Programování v Javě I. Únor 2009

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

Chit Chat 1 - Lekce 11

PREPROCESOR POKRAČOVÁNÍ

Uživatelská příručka. Xperia P TV Dock DK21

ALGORITMIZACE 2010/03 STROMY, BINÁRNÍ STROMY VZTAH STROMŮ A REKURZE ZÁSOBNÍK IMPLEMENTUJE REKURZI PROHLEDÁVÁNÍ S NÁVRATEM (BACKTRACK)

5 Rekurze a zásobník. Rekurzivní volání metody

Rozklad problému na podproblémy

Úvod do programovacích jazyků (Java)

Jazyk C# (seminář 3)

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

Objekty, třídy, instance

PRAVIDLA MEZINÁRODNÍ DVOUHRY

PŘETĚŽOVÁNÍ OPERÁTORŮ

Objekt. základní prvek v OOP. má vlastnosti. má metody. vznikne vytvoření nové instance definován pomocí třídy

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.

Lambda funkce Novinky v interfaces Streamy Optional - aneb zbavujeme se null. Java 8. Ondřej Hrstka

Java a XML. 10/26/09 1/7 Java a XML

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Stromy. Příklady. Rekurzivní datové struktury. Základní pojmy

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

9. přednáška - třídy, objekty

Generické programování

Abstraktní datové typy: zásobník

Chit Chat 2 - Lekce 1

Printris. Hra Printris je psána pomocí příkazů Javascriptu a standardních příkazů HTML.

Projekt Obrázek strana 135

Java - výjimky. private void vstup() throws IOException {... }

DSA, První krok: máme dokázat, že pro left = right vrátí volání f(array, elem, left, right)

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

Třídy a objekty -příklady

typová konverze typová inference

Úvod do programovacích jazyků (Java)

JavaScript v praxi: Sokoban (5. přednáška)

Stromy. Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta a kol.

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

, Brno Připravil: David Procházka Návrhové vzory

8 Třídy, objekty, metody, předávání argumentů metod

ALGORITMIZACE 2010/03 STROMY, BINÁRNÍ STROMY VZTAH STROMŮ A REKURZE ZÁSOBNÍK IMPLEMENTUJE REKURZI PROHLEDÁVÁNÍ S NÁVRATEM (BACKTRACK)

Tlačítkem Poskládej jiný počítač se hra vrátí na úvodní obrazovku a lze zvolit jiný obrázek.

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

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

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

OMO. 4 - Creational design patterns A. Singleton Simple Factory Factory Method Abstract Factory Prototype Builder IoC

VY_32_INOVACE_5 Anglický jazyk Vypracovala: Mgr. Marcela Minaříková Téma: 5.37 Test 4-1 Opakování Theme 1 Vznik: září 2012 Číslo projektu:

Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV)

Metodický list k didaktickému materiálu

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

int => unsigned int => long => unsigned long => float => double => long double - tj. bude-li:

Struktura třídy, operátory, jednoduché algoritmy, junit. Programování II 2. cvičení Alena Buchalcevová

Jazyk C# (seminář 6)

public class Karel { private int position; public boolean issmiling; public int getposition() { return position;

Základy objektové orientace I. Únor 2010

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

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

George J. Klir. State University of New York (SUNY) Binghamton, New York 13902, USA

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

ZÁSUVKOVÁ DESKA SVOČ FST Klára Rödlová, Střední Průmyslová Škola Ostrov, Klínovecká 1197 Ostrov

TŘÍDY POKRAČOVÁNÍ. Události pokračování. Příklad. public delegate void ZmenaSouradnicEventHandler (object sender, EventArgs e);

Řídicí struktury. alg3 1

Sport, sportování a hry

ANT. Aplikační programování v Javě (BI-APJ) - 1 Ing. Jiří Daněček Katedra softwarového inženýrství Fakulta informačních technologií ČVUT Praha

NA CO SI DÁT POZOR V JAVASCRIPTU? Angular.cz

public static void main(string[] args) { System.out.println(new Main().getClass().getAnnotation(Greet.class).text());

Transkript:

Gymnázium, Praha 6, Arabská 16 předmět Programování, vyučující Tomáš Obdržálek Postřehová hra ročníkový projekt Matouš Jokl, 1E květen 2014 Obsah 1 Moje cíle...1 2 Kód...2 1.Objekty a ArrayList...2 2.Jpanel a jeho metody + metody na vytváření objektů...3 3.Ovládání hry + fungování ovládacích prvků...5 4.Přehled použitých datových typů...6 3 Grafické zpracování...6 4 Prohlášení...10 Zadání projektu Hra bude obsahovat několik objektů, které se budou postupně náhodně objevovat a mizet. Každý se zobrazí cca na 1 sekundu. Budou zde 2 typy objektů: 1) ScoreObjekty, po jejichž sestřelení se hráči přičte skóre. Ty budou rozděleny do 3 velikostí: malé, střední a velké. Čím větší bude objekt, tím menší bude skóre. 2) EndObjekty, které po sestřelení ukončí hru. Tyto objekty se budou velmi podobat (barevně i tvarem) ScoreObjektům. Ty budou rozděleny také do 3 velikostí (stejně jako ScoreObjekty). Hráči se na konci hry zobrazí jeho skóre. 1 Moje cíle Jako hlavní cíl ročníkového projektu jsem si stanovil využít co nejefektivněji svoje dosavavaní znalosti z programovacího jazyka Java a vytvořit jednoduchou hru, která by zároveň vynikala svojí banalitou. K vytvoření ročníkové práce jsem využil platformu Netbeans, kde jsem se snažil vytvořit jednoduchou postřehovou hru. K tomu jsem použil Jpanel a pomocí jeho vykreslovací metody jsem vykresloval na obrazovku jednoduché geometrické obrazce, přesněji čtverce. 1

2 Kód 1. Objekty a ArrayList Jako první je potřeba si vytvořit 2 objekty, objekty a endobjekty (viz Příklad 1 a Příklad 2). Ty se dají využít v takzvaném ArrayListu (česky kolekce), do něhož můžeme vkládat objekty, kterým specifikujeme datový typ, které pak do kolekce budou uloženy. Pro každý objekt si vytvoříme jednu kolekci. Do první vložíme objekty s názvem objekty a do druhé objekty s názvem endobjekty (viz níže příkald 1 a 2). ArrayList<EndObjekt> endobjekty = new ArrayList<>(); ArrayList<Objekt> objekty = new ArrayList<>(); Příklad 1 import java.util.random; public class Objekt { Random random = new Random(); int x; int y; int velikostx; int cas; boolean vybuch = false; public Objekt(int x, int y, int velikostx, int cas) { this.x = x; this.y = y; this.velikostx = velikostx; this.cas = cas; Příklad 2 public class EndObjekt { int x; int y; int velikostx; int cas; boolean vybuch = false; public EndObjekt(int x, int y, int velikostx, int cas) { this.x = x; this.y = y; this.velikostx = velikostx; this.cas = cas; 2

2. Jpanel a jeho metody + metody na vytváření objektů Název metody addmouselistener(new MouseListener() { @Override public void mousepressed(mouseevent e) { Co se stane při stisknutí myši addkeylistener(new KeyListener() { @Override public void keypressed(keyevent e) { Co se stane při stisknutí klávesy @Override public void actionperformed(actionevent ae) { Kód, který se má vykonat. Metoda odebírá EndObjekty z kolekce a volá metodu pridejobjekt. Jak jsem ji použil if (konechry) { return; for (Objekt o : objekty) { if (o.cas > 0 && e.getx() >= o.x && e.getx() <= o.x + o.velikostx && e.gety() >= o.y && e.gety() <= o.y + o.velikostx) { skore = skore + 65 - o.velikostx / 4; o.vybuch = true; o.cas = 200; if (konechry = false) { return; e.isactionkey(); skore = 0; repaint(); if (casovac > 0) { for (Objekt o : objekty) { o.cas = o.cas - 100; if (random.nextint(100) <= 50) { pridejobjekt(); for (EndObjekt oe : endobjekty) { oe.cas = oe.cas - 200; if (random.nextint(100) <= 40) { endobjekty.remove(endobjekty); casovac = casovac - 1; repaint(); 3

Název metody { @Override public void paintcomponent(graphics g) { super.paintcomponent(g); Graphics2D g2d = (Graphics2D) g; Vykreslovací metoda Jak jsem ji použil if (konechry) { Font font = new Font("Serif", Font.PLAIN, 50); { g2d.setfont(font); g2d.drawstring(" ", 550, 150); g2d.drawstring("konec Hry ", 550, 200); if (skore < 200) { g2d.drawstring("máš přesnost slepého po obrně!", 550, 300); if (skore > 199 && skore < 1000) { g2d.drawstring("máš špatnou mušku! Miř lépe!", 550, 300); if (skore > 1000 && skore < 2000) { g2d.drawstring("jsi dobrý střelec, ale máš co zlepšit!", 550, 300); if (skore > 1999 && skore < 4000) { g2d.drawstring("tvoje střelecké shopnosti jsou neuvěřitelné!", 550, 300); else { g2d.drawstring("jsi výborný střelec!", 550, 300); g2d.drawstring("tvoje skóre je: " + skore, 550, 400); g2d.drawstring(" ", 550, 410); g2d.drawstring("pokud chcete hrát znovu", 550, 500); g2d.drawstring("zmáčkněte libovolnou klávesu", 550, 550); return; 4

Metoda pridejobjekt vytváří a přidává do kolekce Objekty s náhodnou velikostí a náhodnými souřadnicemi (viz příklad níže). K náhodnému zobrazení je použit objekt Random. Příklad void pridejobjekt() { int size = random.nextint(170) + 50; int a = getwidth() - 80; int b = getheight() - 80; Objekt o1 = new Objekt(random.nextInt(a - size) + 40, random.nextint(b - size) + 40, size, random.nextint(2500) + 500); if (b - size > 0 && a - size > 0) { objekty.add(o1); EndObjekt oe = new EndObjekt(random.nextInt(a - size) + 40, random.nextint(b - size) + 40, size, random.nextint(2500) + 500); if (b - size > 0 && a - size > 0) { EndObjekty.add(oE); 3. Ovládání hry + fungování ovládacích prvků 1.Kurzor myši pomocí kurzoru myši se hráč snaží setřelit náhodně se objevující Objekty Při každém pokusu o setřelení se vyhodnotí jestli se souřadnice objektu shodují se souřadnicemi kurzoru. Pokud se shodují, hráč zasáhl a připočítává se mu skóre. 2.Libovolná klávesa poku je konechry True, tak se stisknutím libovolné klávesy vynuluje skore (viz příklad níže) a konechry se změní na false. Příklad public void keypressed(keyevent e) { if (konechry = false) { return; e.isactionkey(); skore = 0; repaint(); 5

4. Přehled použitých datových typů import javax.swing.timer; Timer timer; int x = 0; boolean zobrazen = false; int skore = 0; int casovac = 3000; boolean konechry = false; 3 Grafické zpracování 1 podmínka, určující jestli je nebo není konec hry. Pokud ano, spustí kód uvnitř. 2 pokud je podmínka true, vytvoří se nové písmo (Font) 3 g2d je metoda, pomocí níž jsou vykreslovány vytvořené čtverce( Objekty / EndObjekty ) na obrazovku 4 pokud jsou tyto podmínky splněny, hráči se zobrazí jeho skóre, přesnost a další instrukce 5 pokud je výbuch (datový typ boolean) true, metoda g2d nastaví na Objektu, čtvereci patřičnou barvou. 6 pokud je výbuch (datový typ boolean, na začátku je nastaven jako false) true, metoda g2d vykreslí na obrazovku Objekt, neboli čtverec, na souřadnicích (x,y) a velikosti (velikostx, velikostx). Pokud ne, Objekt (čtverec) je vykreslen na obrazovku zeleně(na stejných souřadnicích o stejné velikosti). 7 z kolekce EndObjektů jsou postupně brány prvky EndObjekty, které jsou stejně jako v bodě 6 vykresleny. 8 pomocí metody g2d se na obrazovku vykrelí aktuální skóre a čas zbývající do konce hry. (viz níže Ilustrace 3) 6

Ilustrace 1: Výchozí stav hry Ilustrace 2: Stav po skončení hry 7

Ilustrace 3: tento obrázek popisují body výše (viz Kapitola 3, Grafické zpracování) 8

Anotace Cílem mojí ročníkové práce bylo vytvořit jednoduchou a zábavnou postřehovou hru.v této hře se vyskytují dva druhy barevně odlišených čtverců. Ty se náhodně objevují na náhodných pozicích. Každý čtverec má svojí náhodnou velikost. Hráč se snaží sestřelit zelené čtverce objevující se jen na krátkou dobu. Pokud není hráč příliš přesný a sestřelí čtverce červené, hra končí. Hra je omezena časovým limitem a je urcěna pouze pro jednoho hráče. Abstract I tried to create an easy and funy perception game. In this game there are two types of squares with two colours. They are randomly shown on random positions. Each square has 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 limit and it is just for one player. 9

4 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. 10