... | ... | @@ -4,11 +4,11 @@ |
|
|
|
|
|
> [Riešenie nasledujúcich úloh](https://gitlab.fi.muni.cz/grp-and01/09-game/commits/p9.HW) -- pre prípad, že budete stratení.
|
|
|
|
|
|
Vytvorte si aktivitu z názvom _GameActivity_,
|
|
|
Vytvorte hlavnú aktivitu z názvom **_GameActivity_**.
|
|
|
|
|
|
### 1. Dotyk obrazovky
|
|
|
|
|
|
- Spravte layout, ktorý bude obsahovať _TextView_ s nápisom Welcome.
|
|
|
- Spravte layout (activity_game.xml), ktorý bude obsahovať _TextView_ s nápisom Welcome.
|
|
|
- Layoutu nastavíme _setOnTouchListener__:
|
|
|
|
|
|
```java
|
... | ... | @@ -32,7 +32,7 @@ Vytvorte si aktivitu z názvom _GameActivity_, |
|
|
```
|
|
|
|
|
|
- _View_ nás nezaujíma, dôležitý je _MotionEvent_, konkrétne _MotionEvent.ACTION_DOWN_ (dal som prst na obrazovku)
|
|
|
- Pri každom dotyku nastavím text na `"[${event.x}, ${event.y}]"`
|
|
|
- Pri každom dotyku nastavím welcome text na `"[${event.x}, ${event.y}]"`
|
|
|
|
|
|
### 2. Fullscreen
|
|
|
|
... | ... | @@ -67,10 +67,15 @@ Vytvoríme si triedu, ktorá bude reprezentovať naše vlastné _View_. Kvóli d |
|
|
class CircleView
|
|
|
@JvmOverloads
|
|
|
constructor(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0) : View(context, attrs, defStyleAttr) {
|
|
|
// onDraw method
|
|
|
override fun onDraw(canvas: Canvas) {
|
|
|
super.onDraw(canvas)
|
|
|
// what to do on draw?
|
|
|
}
|
|
|
}
|
|
|
```
|
|
|
|
|
|
Trieda bude obsahovať atribút typu _Circle_.
|
|
|
|
|
|
V metóde _onDraw(canvas: Canvas)_ vykreslíme kruh:
|
|
|
|
|
|
```java
|
... | ... | @@ -88,14 +93,12 @@ private val paint = Paint().apply { |
|
|
}
|
|
|
```
|
|
|
|
|
|
Trieda bude obsahovať atribút typu _Circle_, ktorý mu nastavíme.
|
|
|
|
|
|
Nakoniec v aktivite vytvoríme inštanciu _CircleView_ a zavoláme nad hlavným layoutom metódu `addView`, ktorá zobrazí vytvorenú inštanciu _CircleView_.
|
|
|
Nakoniec v aktivite pri klinutí vytvoríme inštanciu _CircleView_ a zavoláme nad hlavným layoutom metódu `addView`, ktorá zobrazí vytvorenú inštanciu _CircleView_.
|
|
|
|
|
|
###
|
|
|
### 4. Náhodné farby kruhu
|
|
|
|
|
|
- Aplikácia bude zobrazovať namiesto súradníc dotyku počet bodiek.
|
|
|
- Kruh môže meniť farby.
|
|
|
- Kruh bude náhodne meniť farby po kliknutí.
|
|
|
- alpha = čím menšia hodnota, tým priesvitnejšia farba
|
|
|
- rgb = **r**ed, **g**reen, **b**lue
|
|
|
- `#000000`, `#FF0000`, `#00FF00`, `#0000FF`, `#00FFFF`, `#FFFFFF`, [`#FFFFAF`](https://www.google.com/search?q=%23FFFFAF)
|
... | ... | @@ -105,17 +108,17 @@ Nakoniec v aktivite vytvoríme inštanciu _CircleView_ a zavoláme nad hlavným |
|
|
paint.color = Color.argb(255, nextInt(250), nextInt(250), nextInt(250))
|
|
|
```
|
|
|
|
|
|
- Kruh sa bude postupne zmenšovať.
|
|
|
- Napr. vždy o 1/15 aktuálneho polomeru.
|
|
|
- Kruhy sa budú postupne zmenšovať.
|
|
|
- Napr. nový kruh bude vždy menší o 1/15 aktuálneho polomeru.
|
|
|
|
|
|
## HW
|
|
|
|
|
|
- Zobrazte kruh na konkrétnej pozícii -- napr. [150, 150].
|
|
|
- Po kliknutí kruh zmizne a objaví sa na (inej) náhodnej pozícii.
|
|
|
- Použite metódu `nextInt(from, until)`
|
|
|
- Po kliknutí na kruh zmizne a objaví sa na (inej) náhodnej pozícii.
|
|
|
- V triede `Circle` vytvorte metódu `isIntersecting(x: Float, y: Float): Boolean`
|
|
|
- Použite metódu `nextInt(from, until)`
|
|
|
- from = priemer kruhu
|
|
|
- until = šírka/výška layoutu - priemer kruhu
|
|
|
- šírka/výška layoutu sa zistí cez `layout.width/height`
|
|
|
- V triede `Circle` vytvorte metódu `isIntersecting(x: Float, y: Float): Boolean`
|
|
|
- Kruh sa stále zmenšuje a mení farby.
|
|
|
- Appka teraz zobrazuje počítadlo "levelov", do ktorého sa hráč dostal. |