Black Friday Black Friday
Black Friday výprodej! Až 80 % extra bodů zdarma! Více informací zde

Cvičení k 11. lekci OOP v Javě

Java Objektově orientované programování Cvičení k 11. lekci OOP v Javě

Unicorn College ONEbit hosting Tento obsah je dostupný zdarma v rámci projektu IT lidem. Vydávání, hosting a aktualizace umožňují jeho sponzoři.

Následující 3 cvičení vám pomohou procvičit znalosti objektově orientovaného programování v Javě z minulé lekce. Ve vlastním zájmu se je pokuste vyřešit sami. Pod článkem máte pro kontrolu řešení ke stažení. Ale pozor, jakmile se na něj podíváte bez vyřešení příkladů, ztrácí pro vás cvičení smysl a nic se nenaučíte :)

Pokud si opravdu nebudete vědět rady, podívejte se raději znovu do minulého tutoriálu a pokuste se na to přijít.

Jednoduchý příklad

Vytvořte program, kterému zadáváte stále dokola jednotlivá slova, dokud nezadáte slovo "konec". Program následně vypíše malými písmeny jaká unikátní slova jste zadali. K ukládání slov využijte kolekci ArrayList.

Ukázka obrazovky programu:

Konzolová aplikace
Zadej slovo: Na
Zadej slovo: Měsíci
Zadej slovo: neexistuje
Zadej slovo: minulost
Zadej slovo: po
Zadej slovo: které
Zadej slovo: by
Zadej slovo: někdo
Zadej slovo: toužil
Zadej slovo: nebo
Zadej slovo: o
Zadej slovo: které
Zadej slovo: by
Zadej slovo: snil
Zadej slovo: konec
Zadal jsi tato slova: na, měsíci, neexistuje, minulost, po, které, by, někdo, toužil, nebo, o, snil

package onlineapp;

import java.util.ArrayList;
import java.util.Scanner;

Středně pokročilý příklad

Vytvořte program pro evidenci automobilů v autobazaru. Autobazar sídlí na určité adrese, má určité peníze v pokladně a obsahuje automobily. Automobil má spz, značku (např. Škoda) a cenu. Autobazar poskytuje metodu pro přidání (odkoupení) automobilu, která odečte jeho cenu z pokladny autobazaru, jelikož byla vyplacena původnímu majiteli automobilu. Dále poskytuje metodu pro prodání (auto z autobazaru zmizí a jeho cena se přičte do pokladny). Poslední metodou v autobazaru je metoda ke zjištění celkové ceny všech automobilů. V autobazaru se vyskytují osobní automobily a nákladní automobily, které mají oproti osobním automobilům navíc ještě vlastnost nosnost.

Na pokladnu autobazaru vložte 5 000 000 Kč a do autobazaru přidejte pomocí zmíněné přidávací metody následující automobily:

  • Škoda 120, SPZ: 123ABC, Cena: 10 000 Kč
  • Škoda Fabia, SPZ: 456DEF, Cena: 100 000 Kč
  • Ferrari FF, SPZ: 789GHI, Cena: 3 000 000 Kč
  • Tatra 811, SPZ: 534NGS, Nosnost: 20 tun, Cena: 50 000 Kč
  • Renault Midliner, SPZ: 489GSR, Nosnost: 30 tun, Cena: 100 000 Kč

Ukázka obrazovky programu:

Konzolová aplikace
V bazaru je 5 automobilů
Na pokladně je 1740000 Kč
Celková cena automobilů je 3260000 Kč

    public class Auto
    {
    }
    import java.util.ArrayList;

    public class Autobazar
    {
    }
    public class NakladniAuto extends Auto
    {
    }

Pokročilý příklad

Všichni jistě znáte jednoduchou hru Arkanoid s míčkem, pálkou a cihličkami. Míček se pohybuje po herní ploše diagonálně. Na plochu se vygenerují na nějakou pozici cihličky (typicky doprostřed), které míček musí zničit. Míček se odrazí po dotknutí se hranice obrazovky nebo cihličky, čímž se cihlička zničí (zmizí). Hra končí ve chvíli, kdy jsou všechny cihličky zničené.

Originální hra má ještě pálku, ale protože v konzoli nejde moc dobře reagovat na stisk kláves, udělejme si pouze simulaci odrážení míčku a jeho kolizi s cihličkami. Pokud vás hra zaujala, můžete navštívit kurz Tvorba her v Java Swing.

Hry fungují obvykle ve smyčce, někdy zvané jako game-loop. Jedná se o cyklus, který neustále provádí 5 operací:

  1. Vymazání obrazovky (My zde pouze odřádkujeme dostatečný počet řádek, aby se celý výstup posunul v konzoli dále. Java nám totiž nedovoluje konzoli úplně mazat)
  2. Vykreslení scény
  3. Posun objektů
  4. Čekání (aby nebyla hra moc rychlá, provedete příkazem Thread.sleep(1000), kde 1000 je počet milisekund)
  5. Reakce na stisknuté klávesy (To v našem případě zanedbáme, protože v Java konzoli moc dobře nejde)

Protože je cihliček více, uložte jejich instance do ArrayListu. Hrací plochu vytvořte o rozměrech 15x6 znaků.

Tipy

Konzole v Javě nám nedovoluje měnit pozici kurzoru, proto si musíte všechny znaky nejprve připravit do 2d pole a až poté obrazovku vykreslit. Tomuto poli se někdy říká buffer.

Co se týká pohybu míčku, je nejjednodušší jej reprezentovat proměnnými smerX a smerY (nabývajících hodnot 1 nebo -1). Při každém pohybu potom přičteme k x + smerX a k y + smerY.

U všech kolizí stačí kontrolovat, zda míček nenarazil do cihličky. Cihličky jsou objekty v ArrayList s vlastnostmi x a y.

Začněte tím, že vykreslíte herní plochu s cihličkami do konzole, poté přidejte pohyb.

Ukázky obrazovky programu:

Konzolová aplikace
+---------------+
|               |
|               |
|   █████████   |
|               |
|       O       |
|               |
+---------------+

Míček letí směrem doprava nahoru, po chvíli narazí na cihličku, tu zničí a odrazí se od ní doprava dolů:

Konzolová aplikace
+---------------+
|               |
|               |
|   ██████ ██   |
|         O     |
|               |
|               |
+---------------+

Simulace končí po rozbití všech cihliček:

Konzolová aplikace
+---------------+
|               |
|               |
|               |
|     O         |
|               |
|               |
+---------------+

Game over!

Tuto úlohu si díky interaktivitě vytvořte ve svém počítači v NetBeans.


 

Stáhnout

Staženo 18x (65.9 kB)
Aplikace je včetně zdrojových kódů v jazyce java

 

 

Článek pro vás napsal Samuel Kodytek
Avatar
Jak se ti líbí článek?
1 hlasů
Autor se věnuje všem jazykům okolo JVM. Rád pomáhá lidem, kteří se zajímají o programování. Věří, že všichni mají šanci se naučit programovat, jen je potřeba prorazit tu bariéru, který se říká lenost.
Aktivity (17)

 

 

Komentáře

Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zatím nikdo nevložil komentář - buď první!