## Vytajte
## Programujeme počítačové hry [Miroslav Biňas, Filip Gurbáľ](https://bletvaska.github.io) / [**KPI**](https://kpi.fei.tuke.sk)
![thats me](images/mirek.jpg)
## Hráte sa počítačové hry?
![Indiana Jones and the Great Circle](images/indiana.jones.webp)
## Chceli by ste si naprogramovať vlastnú hru? notes: * a kolki ste si uz vlastnu hru aj naprogramovali?
![qr code](https://api.qrserver.com/v1/create-qr-code/?data=https://forms.gle/2aioVEkhLk7MduGt8&size=300x300) (**https://forms.gle/2aioVEkhLk7MduGt8**)
[![](images/logo-pygamezero.svg)](https://pygame-zero.readthedocs.io/) notes: * budeme spolu programovat hru * mozeme posrandovat - lebo som pocul, ze programovat viete - v assembleri / C :-P
![Apollo 11 Lunar Module Eagle](images/apollo.11.lunar.module.eagle.jpg) ([since 1969](https://en.wikipedia.org/wiki/Lunar_lander)) notes: * https://en.wikipedia.org/wiki/Lunar_lander
![Lunar Lander: Text Game](images/lunar.lander-text.game.gif)
[![Lunar Lander: Arcade](images/lunar.lander-arcade.gif)](http://moonlander.seb.ly/)
![](images/lunar.lander-banner.webp) notes: * nasa implementacia bude velmi jednoducha * mame len hodinu * budeme pristavat kolmo dolu
![](images/super.mario.gif)
## Č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. ![2D Coordinate System](images/2d.coordinate.system.png)
![Herná slučka](images/game-loop-simple.png) 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
![Mega Man Spritesheet](images/mega.man-sprite.sheet.jpg) notes: * https://remarkablecoder.com/sprites-in-games/
![Mega Man Animation](images/mega.man-animation.gif) notes: * https://remarkablecoder.com/sprites-in-games/
## Pygame Handles ![Pygame Handles](images/handles.png)
## 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
![Flappy Bird](images/flappy.gif) notes: * jednoduchou zmenou niekolkych mechanik vieme z nasho lunar landera spravit flappy birda
![Game Analysis](images/analysis.png) Note: * https://www.researchgate.net/publication/324066514_Playing_Flappy_Bird_with_Deep_Reinforcement_Learning
## Detekcia kolízií
![Ilustrácia detekcie kolízií](images/collisions.png)
![qr code](https://api.qrserver.com/v1/create-qr-code/?data=https://forms.gle/stC3MdryTbSoHzRMA&size=300x300) (**https://forms.gle/stC3MdryTbSoHzRMA**)
## Hotovo (!?) notes: * ake dalsie herne mechaniky by sme vedeli pridat? * ake dalsie hry by sme vedeli urobit ohnutim mechanik?
## Otázky?
![qr code](https://api.qrserver.com/v1/create-qr-code/?data=https://forms.gle/bukszmSGKYkE3oof7&size=300x300) (**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)
![qr code](https://api.qrserver.com/v1/create-qr-code/?data=https://forms.gle/5rmgrNLyJXX9n4SN6&size=300x300) (**https://forms.gle/5rmgrNLyJXX9n4SN6**)
![qr code](https://api.qrserver.com/v1/create-qr-code/?data=https://bit.ly/3FnlO61&size=300x300) (**https://bit.ly/3FnlO61**)