je volně šiřitelný program na tvorbu (nejen) her. Pokládám jej za použitelný
nástroj také k "ochutnání" objektového programování.
Game makeru se věnuje web Velkej
chytrák, kde najdeš vše potřebné, např. i
návod jak vytvořit první
hru.
Oficiální web,
Wikipedie,
Devbook,
stažení - Slunečnice.
Princip objektového programování v Game Makeru:
Spuštěním programu pak nechám objekty dělat "to, co jsem je naučil".
Míša | Bludiště | Bludiště +potvora | Další level | Souřadnice v GM | Letadlo | Chytání míčku | Ohnivý brankář | Tenis |
Objekt = každý prvek vykonávající činnost nebo přicházející do styku s ostatními (míč, panáček, auto, zeď …).
VŠE v Game Makeru lze programovat pouze pomocí objektů.
Událost (angl. event) = cokoliv, co se s objektem stane (začátek,
konec pohybu, náraz=kolize, ťuknutí myší na objekt…).
Ke každé události lze přiřadit akci (angl. action)
- např. změnu pohybu, zvuk, vytvoření jiného objektu…
Pomocí událostí tak programujeme chování objektů (např. při.
události "náraz do zdi" provedˇakci "odraz"…)
Pro naši první hru vytvoř ještě obrázek + objekt "zeď" (zaškrtni PEVNÝ - nebude se pohybovat):
Program je hotov. Ulož jej a spusť F5 nebo ikonou
. Míšu lze řídit šipkami nahoru a dolů. Konec = Esc.
Úkol-Míša1: Doplň
objektu Míša události stisk šipek <- , -> a nastav odpovídající
akce (pohyb vlevo, vpravo).
Úkol-Míša2: Oprav
Míšovi událost kolize: smaž "zastav"
,
přidej "odraz"
(přesně, pevné objekty).
Úkol-Míša3: Do
místnosti dokresli zdi tak, aby vzniklo bludiště (místo odrazu od zdi dej
zastavení). Ulož jako "Bludiste". Bludiště projdi.
Nastav objektu Míša rychlost na hodnotu 2 (pro všechny 4 události!).
objekt | událost | akce |
![]() |
klávesa ↑ | pohyb ↑ (rychlost 5) |
klávesa ↓ | pohyb ↓ (rychlost 5) | |
klávesa → | pohyb → (rychlost 5) | |
klávesa ← | pohyb ← (rychlost 5) | |
kolize se zdí
![]() |
- zastavení (1. varianta) | |
- odraz (2. varianta) |
= zobrazení
zprávy,
= ukončení
hry (ouško hlavní2)
Do programu Bludiste přidej objekt cíl:
Vstupem do cíle chceme vypsat hlášení + ukončit hru.
Proto objektu Míša přidej událost kolize s objektem cíl
-> akce
zobrazení
zprávy a
ukončení
hry
objekt | událost | akce |
![]() |
kolize se zdí
![]() |
zastavení |
kolize s cílem
![]() |
hláška, konec prog. | |
klávesa ↑ | pohyb ↑ (rychlost 5) | |
klávesa ↓ | pohyb ↓ (rychlost 5) | |
klávesa → | pohyb → (rychlost 5) | |
klávesa ← | pohyb ← (rychlost 5) |
= obrať směr vodorovně,
= restartovat místnost (ouško hlavní1)
Aby procházení bludiště bylo napínavější, necháme v něm vodorovně běhat potvoru
. Dotyk
(kolize) s ní vrátí Míšu zpět na začátek místností.
Soubor Bludiste ulož jako "Bludiste+potvora".
Přidej objekt potvora
. Přidej jí událost->Ostatní->Začátek místnosti . Této události nastav
akci
pohyb (rychlost 3, směr -> ) (aby se začala pohybovat při
vstupu do místnosti)
Přidej událost->Kolize se zdí,
akci "Obrať směr horizontálně". (aby se odrážela po
stranách od zdi)
Objekt Míša musí při události Kolize s potvorou
vyvolat akci Restart místnosti:
POZN: místo toho jsme také mohli objektu potvora nastavit kolizi s Míšou -
vše by fungovalo stejně.
Nezapomeň do místnosti přidat potvoru a místo pro její pohyb:
Úkol-potvora1:
vylepši ovládání - mezerníkem nech Míšu zastavit. Přidej
událost - Klávesnice->Mezerník, akce
pohyb (rychlost 0, směr - čtverec uprostřed)
Úkol-potvora2:
přidej do místnosti další potvoru2 (+nastav pohyb objektu
potvora2, nastav kolizi Míša×potvora2).
Uprav rychlosti objektů, aby hráč místnost zvládl.
Úkol-potvora3:
aby Míša po puštění klávesy zastavil, nahraď událost "klávesa ↑"
(-> pohyb) událostmi:
-
"stisk ↑" (->pohyb)
- "puštěna ↑" (->zastav)
Podobně ostatní směry:
objekt | událost | akce |
![]() |
![]() ![]() |
zastavení |
![]() ![]() |
hláška, konec prog. | |
kolize s potvorou![]() |
||
stisk ↑ | pohyb ↑ (rychlost 5) | |
stisk ↓ | pohyb ↓ (rychlost 5) | |
stisk → | pohyb → (rychlost 5) | |
stisk ← | pohyb ← (rychlost 5) | |
puštěna ↑ | zastav | |
puštěna ↓ | zastav | |
puštěna → | zastav | |
puštěna ← | zastav |
= jdi do další místnosti,
= existuje-li další místnost (podmínka - při splnění se provede akce hned
na dalším řádku),
= příkaz za tímto se provede při nesplnění podmínky (ouško hlavní1)
Předchozí Bludiste ulož jako Bludiste1.
V něm vytvoř další místnost1, do které postoupí Míša dokončením místnosti0.
Umísti do ní také Míšu i cíl (třeba i další potvoru). Kolize s objektem
cíl má teď vyvolat v:
pokud existuje další místnost | | běž do ní | | jinak | | vypiš hlášení o konci programu | | ukonči program |
![]() |
![]() |
![]() |
![]() |
![]() |
[0;0] je v LH rohu místnosti.
Objekt je umístěn zadáním souřadnic svého LH rohu.
POZN: random([číslo]) - vygeneruje náhodné desetinné číslo od 0 do [číslo], pokaždé jiné.
příkaz | generuje číslo | příklady |
random (10) | od 0 do 10 | desetinná: 0,01; 9,5… |
100 + random(20) | od 100 do 120 | desetinná: 100,03, 119,9 |
round(random(9)) | od 0 do 9 | celá: 0 až 9 |
round(1+random(9)) | od 1 do 10 | celá: 1 až 10 |
Směry: → 0, ↑
90, ← 180, ↓
270.
-
akce = "natáhne budík" na daný počet kroků (setin sekundy?),
-
událost = zazvonění budíku -> spustí akci,
- nastaví skóre, přičte body
ovládané jen ↑,↓
zdánlivě
letí a má se vyhýbat balvanům (nebo je zneškodnit).
Letadlo je na místě, kolem něj budou zleva létat balvany.
Ovládání letadla (na hranici místnosti zastaví):
Souřadnice střely (= místo vytvoření) - blíže předku letadla.
Střela poletí ←, mimo místnost se
zničí.
Náhodné vyletování balvanů:
Balvan se má objevit náhodně vlevo - např. v místnosti 420(šířka)×320(výška)
na souřadnici x=5, y=20+random(room_height-40)
(tedy y je od 20 do 260) - vysvětlení viz
souřadnice
objekt | událost | akce |
letadlo | vytvořit | nastav Alarm0 na 30 |
Alarm0 | vytvoř balvan (viz obrázek) | |
nastav Alarm0 na 30 (čas do dalšího balvanu) | ||
hranice místnosti | zastav | |
stisk mezerník | vytvoř střelu (viz obrázek) | |
stisk ↑ | pohyb ↑ (rychlost 3) | |
stisk ↓ | pohyb ↓ (rychlost 3) | |
puštěna ↑ | zastav | |
puštěna ↓ | zastav | |
střela | mimo místnost | zničit sama sebe |
balvan | mimo místnost | zničit sama sebe |
![]() |
zničit střelu | |
zničit sama sebe |
Úkol-letadlo1:
při zásahu kamene zvyšuj skóre:
nastav např. balvanu (při kolizi střela-balvan) skóre 1 (relativně, tedy
přičítání).
Úkol-letadlo2:
letadlo "přežije" pouze 5 nárazů do balvanu:
nastav letadlu (při vytvoření) 5 životů. Při kolizi s balvanem mu život uber a
otestuj, zda počet životů=0 (->konec hry).
V této hře se bude objekt míč odrážet od stěn, za "trefu" myší do míče dostanu 1 bod.
Vlastnosti objektu Míč:
Úkol-míč1:
doplň ke stisku myši ještě akci "začni pohyb" libovolným směrem (jako při
vytvoření míče).
Úkol-míč2:
uprav změnu pohybu každým klikem rychlost vzrostla o 1.
= smazání objektu,
= obrať směr svisle
V této hře bude úkolem hráče uchránit od ohně 3 nezávisle se pohybující
míče. Klikem na míč obrátím jeho pohyb.
Místnost může mít např. 257×257 bodů.
Úkol-brankář1:
události kliknutí na míč přidej akci Nastavit skóre
(relativně +1) - získání bodu, události kolize s plamenem Nastavit skóre
(relativně -5) - ztráta bodů.
Úkol-brankář1:
"shořelé" míče nahrazuj novými -
události kolize s plamenem přidej akci Vytvořit objekt "míč":
VYSVĚTLENÍ SOUŘADNIC:
Má-li být ikona umístěna 45 od levého, 43 od pravého kraje, bude souřadnice
LH rohu:
- x: 45 až [šířka místnosti bez L okraje, bez P okraje, bez šířky
ikony],
tedy: (room_width - 45vlevo - 43vpravo - 32šíře.ikony)
-y: 40 až [výška místnosti bez H okraje, bez D okraje, bez výšky ikony],
tedy: (room_height - 40nahoře - 58dole - 32výška.ikony)
= skok na urč. pozici,
= puštění klávesy,
= otočení kolečkem myši
Hráč bude ovládat pálku (šipkami, kolečkem myši) k odrážení míčku. Na
protější straně se míč odrazí od zdi.
Pálku si buď nakresli či získej otočením a prodloužením např. GameMaker\Sprites\Breakout\bat2.gif:.
![]() |
pálky (pro rychlejší míč můžeš zvětšovat pálky) |
![]() ![]() ![]() ![]() ![]() |
Chování objektu pálka :
![]() |
událost | akce |
![]() |
![]() |
|
![]() |
![]() |
|
![]() |
![]() |
|
![]() |
![]() |
|
![]() |
![]() |
|
![]() |
![]() |
|
![]() |
![]() |
|
![]() |
![]() |
Chování objektu míč :
![]() |
událost | akce |
![]() |
![]() |
|
(případně
![]() |
||
![]() |
![]() |
|
![]() |
![]() |
|
![]() |
||
Pro zajímavější průběh můžeš nastavit gravitaci.
Skripty