Přednášky (které vede Michal Krumnikl) a další pomocné materiály naleznete na: http://tamz2.mrl.cz/

Cvičení

Během semestru budou na cvičeních zadávány úkoly, které budou hodnoceny osobně na cvičeních. Za body z těchto úkolů bude možné získat zápočet (max. 45; min. 23).
V hodnocení úkolů bude také zohledněno prezentovování vlastního řešení a pochopení problematiky.
Pokud se nemůžete osobně dostavit na cvičení a odprezentovat úkol, zašlete mi prosím své řešení e-mailem. Následně mi ho ukážete osobně na našem dalším společném cvičení.	

  1. Android Studio, instalace zalozeni projektu, emulator
  2. Zakladni komponenty/ui prvky
  3. Složený úrok (0-3b)
  4. 4. Rozšíření předchozího úkolu: (0-5b)
    Cvičení bude hodnoceno podle množství a obtížnosti přidaných prvků oproti předchozímu cvičení. Možné je například přidat tyto části (můžete přidat i jiné):
    1. Přidání navigace mezi více obrazovkami (např. pomocí menu s možností volby: "typ grafu" "nastavení").
    2. V položce "typ grafu": výběr alespoň dvou různých grafů.
    3. V položce "nastavení" umožněte měnit parametry, např. velikost kroku posuvníků, rozsah posuvníků barvu grafu.
    4. Můžete se pokusit přidat vliv daně (případně inflace): https://www2.karlin.mff.cuni.cz/~portal/fin_mat/?page=vliv_inf_dane
    5. Můžete se pokusit přidat také volbu pravidelného vkladu (viz video ukázka).
    Ukázky navigace composable/obrazovek
     pomocí if/else (dvě obrazovky)
     pomocí navigation-compose (dvě obrazovky)
     pomocí navigation-compose (tři obrazovky)
    Dokumentace k Menu:
     Menu (compose)
    Ukázka-1 pro inspiraci ukazuje pouze menu a první položku (změnu grafu). Jedná se o verzi z předchozího cvičení, tedy bez pravidelného vkladu. Vzhled dalších položek v menu si implementujte podle sebe.
    Ukázka-2 rozšířená verze obsahuje i pravidelný vklad (je potřeba modifikovat vzorec pro výpočet z předchozího cvičení).
5. Implementace vlastního Composable/View pro generování čárového kódu: (0-5b)

Vytvořte vlastní Composable/View implementující zobrazení jednoduchého čárového kódu - UPC. Nosičem informace v kódu UPC-A jsou čáry a mezery. Mohou mít různou šířku, která je ale vždy násobkem šířky nejužšího elementu. Šířka nejužšího elementu představuje základní délkovou jednotku. Každý zakódovaný znak má v symbolu čárového kódu délku přesně 7 základních jednotek. Kódování jednotlivých cifer najdete v přiloženém zdrojovém souboru projektu. Kód je uprostřed rozdělen dělicím znakem na dvě části (na ukázce níže zvýrazněn červeně). První pole je vlevo od dělicího znaku, druhé pole je vpravo. Princip kódování můžete nalézt na Wikipedii

Při tvorbě aplikace se pokuste vyřešit (pro plný počet bodů) i následující body:
  1. Možnost zadání 12-místného číselného kódu uživatelem prostřednictvím textového pole. Po stisknutí tlačítka se zadaný kód vykreslí.
  2. Vykreslování UPC-A čárového kódu se pokuste vyřešit pomocí bitového posunu v kombinaci s proměnnými L a R poskytnutými v ukázkové šabloně.
  3. Kontrola správnosti kódu pomocí poslední kontrolní číslice (check digit) UPC–A Check Digit Calculator
  4. Využití ML Kit: Google code scanner API pro čtení kódů (aktivace např. na tlačítko) ml-kit barcode-scanning
  5. Můžete se pokusit také o uložení vygenerovaného čárového kódu jako obrázek do galerie.
Šablona (Compose)
Šablona (Java/Kotlin + XML)
Základní ukázka (pouze vykreslení, na další prvky úkolu využijte vlastní kreativitu):
05
6. Sokoban: (0-5b)

Sokoban (skladník) je logická hra, ve které hráč posouvá bedny v bludišti a snaží se je umístit na vyznačené pozice. Bludiště je 2D mapa znázorňující rozmístění Sokobana, beden, zdí a vyznačených pozic. Není možné posouvat více beden naráz, vždy pouze jednu v daném okamžiku. Dále není možné za sebou bednu táhnout.

Pro splnění úkolu je potřeba vyřešit všechny správné pohyby hráče a beden po hracím poli.
Šablona (Compose)
Šablona (Java/Kotlin + XML)
Pro odchycení dotyků můžete využít:
Compose: pointerInput pointerInput
Java/Kotlin + XML: onTouchEvent onTouchEvent
Herní grafika:

Screenshot ukázkového příkladu:
05
7. Sokoban - pokračování: (0-6b)
Cvičení bude hodnoceno podle množství a obtížnosti přidaných prvků oproti předchozímu cvičení. Možné je například přidat tyto části:
  1. Práce s více levely. Po splnění aktuálního levelu se automaticky přepne na level následující.
  2. Načítání herních levelů ze souborů. Umístění souborů je na vás - můžete použít např. assets složku.
  3. Odkaz na levely: Sokoban Levels
    (vysvětlení symbolů)
    Compose ukázka assets složky: .png .txt
    (starší přístup) Java/Kotlin + XML ukázka assets složky: .png .txt
  4. Načítání více levelů ze souborů. Pokuste se o automatický parser formátu levelu z výše uvedeného odkazu + podpora různě velkých levelů.
  5. Ukládat nejlepší skóre ke každému levelu do úložiště (např. počet tahů, čas).
  6. Výběr levelů pomocí listu se seznamem levelů (v Compose např. pomocí LazyColumn, v XML např. přes RecyclerView / ListView) – viz ukázka.
  7. Ukládání rozehraného levelu.
  8. Zobrazit náhled levelu - viz ukázka - jedná se o automaticky (programově) generovaný náhled levelu - ne pouze například manuálně (vytípnutý) vložený obrázek do adresáře drawable/assets.
  9. Jednoduchý editor levelů.
  10. sokoban