## Programujeme počítačové hry
[Miroslav Biňas, Filip Gurbáľ](https://bletvaska.github.io)
/ [**KPI**](https://kpi.fei.tuke.sk)

## Hráte sa počítačové hry?

## Chceli by ste si naprogramovať vlastnú hru?
notes:
* a kolki ste si uz vlastnu hru aj naprogramovali?

(**https://forms.gle/2aioVEkhLk7MduGt8**)
[](https://pygame-zero.readthedocs.io/)
notes:
* budeme spolu programovat hru
* mozeme posrandovat - lebo som pocul, ze programovat viete - v assembleri / C :-P

([since 1969](https://en.wikipedia.org/wiki/Lunar_lander))
notes:
* https://en.wikipedia.org/wiki/Lunar_lander

[](http://moonlander.seb.ly/)

notes:
* nasa implementacia bude velmi jednoducha
* mame len hodinu
* budeme pristavat kolmo dolu

## Čo je aktér?
**Aktér** je **ľubovoľný herný objekt**, ktorý:
* má **vzhľad** (obrázok alebo tvar),
* má **polohu** (niekde sa nachádza),
* niečo **robí** alebo na niečo **reaguje** (pohybuje sa, skáče, padá, mizne, útočí).
notes:
* v našom prípade to môže byť:
* raketa - teda hráč
* plameň pod raketou
* miesto pristátia
* nápisy ako Game Over, Well Done a pod.
## 2D Súradnicový sys.


Notes:
* http://gameprogrammingpatterns.com/images/game-loop-simple.png
* vytvorit kostru funkcii:
* `draw()`
* `update()`
## Herná slučka
**Herná slučka** je nepretržitý proces, ktorý **riadi každú hru**. Skladá sa z:
* **získania vstupov** od hráča
* **aktualizácie** herného stavu
* **vykreslenia** scény, a
* **kontroly ukončenia** hry.
notes:
* definicia hernej slucky
* v nasom pripade
* ziskanie vstupu znamena, ze overime, ci stlacil klaves na pridanie
* aktualizacia hry - overime na zaklade vstupov a aktualnej pozicie, co s reketou a taktiez overime, ci uz nahodou uspesne nepristala alebo nehavarovala
* vykreslime scenu pre hraca na obrazovku

notes:
* https://remarkablecoder.com/sprites-in-games/

notes:
* https://remarkablecoder.com/sprites-in-games/
## Pygame Handles

## Herná mechanika
**Mechanika** predstavuje **súbor pravidiel**, ktorými sa riadi celá hra.
notes:
* ked si kupite stolovu hru, dostanete k nej vytlaceny manual, kde sa pravidla hry nachadzaju. vasou ulohou je sa ich naucit, aby ste sa vedeli hru hrat. a sami dohliadate na to, aby sa pravidla hry dodrziavali.
* v hre su tieto pravidla zabudovane a obecne subor takychto pravidiel nazyvame hernymi mechanikami.
* je velmi dolezite, aby hra mala jasne mechaniky pre rozpoznanie konca hry - ci uz uspesne alebo neuspesne
* v nasom pripade vieme hovorit napr. o:
* pravidlach pre pohyb rakety smerom hore a dole
* pravidlach pri stlaceni klavesy pridaj plyn
* pravidlach pre uspesne alebo neuspesne ukoncenie hry

notes:
* jednoduchou zmenou niekolkych mechanik vieme z nasho lunar landera spravit flappy birda

Note:
* https://www.researchgate.net/publication/324066514_Playing_Flappy_Bird_with_Deep_Reinforcement_Learning


(**https://forms.gle/stC3MdryTbSoHzRMA**)
## Hotovo (!?)
notes:
* ake dalsie herne mechaniky by sme vedeli pridat?
* ake dalsie hry by sme vedeli urobit ohnutim mechanik?

(**https://forms.gle/bukszmSGKYkE3oof7**)
## Na stiahnutie
* [itch.io](https://mattwalkden.itch.io/lunar-battle-pack) - assety
* kostra projektu: [project.zip](resources/project.zip)
* to, čo som plánoval spraviť: [flappybird.py](resources/flappy/flappybird.py)
## Odkazy
* [Pygame Zero homepage](https://pygame-zero.readthedocs.io/) ([sk](https://pgzero-slovak.readthedocs.io/sk/latest/index.html))
* [Code a homage to Lunar Lander | Wireframe #37](https://www.raspberrypi.com/news/code-a-homage-to-lunar-lander-wireframe-37/)
* [Wireframe](https://wireframe.raspberrypi.org/) Magazine, [MagPi](https://www.raspberrypi.org/magpi/) Magazine
* [Mission Python](https://nostarch.com/missionpython) ([YouTube Video](https://www.youtube.com/watch?time_continue=2&v=_2aglIeW1kQ))
* [Code the Classics – Volume 1](https://wireframe.raspberrypi.org/books/code-the-classics1)
* [Pygame Zero: snadno použitelný nástroj určený pro výuku programování](https://www.root.cz/clanky/pygame-zero-snadno-pouzitelny-nastroj-urceny-pro-vyuku-programovani/) - časť seriálu [Jazyky pro výuku programování](https://www.root.cz/serialy/jazyky-pro-vyuku-programovani/) na portáli [root.cz](https://www.root.cz)

(**https://forms.gle/5rmgrNLyJXX9n4SN6**)

(**https://bit.ly/3FnlO61**)