Game maker (rozpracováno)

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"…)


Postup stavby programu (Míša):

  1. Přidej Obrázek (ang. sprite) - to bude vzhled objektu.

    Přidání obrázku     Nastavení vlastností obrázku
     (případně přidej Zvuk (ang. sound) - zvuk objektu).
  2. Vytvoř patřičný Objekt:

    Přidání objektu
        Nastavení vlastností objektu

    Pro naši první hru vytvoř ještě obrázek + objekt "zeď" (zaškrtni PEVNÝ - nebude se pohybovat):

    Nastavení zdi

  3. Stanov chování objektu (nyní např. pro Míšu) - stane-li se událost, jakou akci má provést.
    Stisk šipky nahoru (= událost) => Míša půjde nahoru (=akce)
    Událost nastav: dvojklik myší na objekt Míša->

    Přidání události

    Nastav akci:

    Nastavení akce

    Stejně přidej:
    - stisk šipky dolů => pohyb dolů
    - Míša narazí na zeď (kolize) => zastaví (~rychlost=0)

    Nastavení kolize  Rychlost nastav na 0 (=zastavení)

     
  4. K rozmístění objektů potřebujeme místnost:

    Přidání místnosti   Nastavení rozměrů místnosti a vzdálenost čar mřížky (v pixelech)

    Rozmístění objektů do místnosti:

    Rozmístění objektů do místnosti

Program je hotov. Ulož jej a spusť F5 nebo ikonou Spusť program . 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" Začni pohyb ve směru, přidej "odraz" Odraz od objektu (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!).

Shrnutí - Míša

objekt událost akce
Míša - objekt Míša    klávesa pohyb ↑ (rychlost 5)
  klávesa pohyb ↓ (rychlost 5)
  klávesa pohyb → (rychlost 5)
  klávesa pohyb ← (rychlost 5)
  kolize se zdí zeď    - zastavení (1. varianta)
    - odraz (2. varianta)

Zobrazení zprávy = zobrazení zprávy, Ukončení hry = ukončení hry (ouško hlavní2)

Bludiště

Do programu Bludiste přidej objekt cíl:

Bludiste0

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 zobrazení zprávy a Ukončení hry ukončení hry

Výpis zprávy, ukončení hry (ouško hlavní2)

Shrnutí - Bludiště1

objekt událost akce
Míša - objekt Míša    kolize se zdí zeď    zastavení
  kolize s cílem cíl  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ě = obrať směr vodorovně, restaruj místnost = restartovat místnost (ouško hlavní1)

Bludiště s potvorou

Aby procházení bludiště bylo napínavější, necháme v něm vodorovně běhat potvoru Potvora. 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 Potvora . Přidej jí událost->Ostatní->Začátek místnosti . Této události nastav akci Začni pohyb ve směru 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ě"Obrať směr vodorovně. (aby se odrážela po stranách od zdi)

Potvora - akce

Objekt Míša musí při události Kolize s potvorou Potvora vyvolat akci Restart místnosti:

Kolize Míša-potvora vyvolá 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:

Pohyb potvory v místnosti

Úkol-potvora1: vylepši ovládání - mezerníkem nech Míšu zastavit. Přidej událost - Klávesnice->Mezerník, akce Začni pohyb ve směru 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:

Shrnutí - Bludiště s potvorou

objekt událost akce
Míša - objekt Míša    kolize se zdí zeď    zastavení
  kolize s cílem cíl  hláška, konec prog.
  kolize s potvorouPotvora  
  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 = jdi do další místnosti, Existuje-li další místnost = existuje-li další místnost (podmínka - při splnění se provede akce hned na dalším řádku), Else - provede se, není-li splněna podmínka = příkaz za tímto se provede při nesplnění podmínky (ouško hlavní1)

Postup do další místnosti (~levelu)

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
Existuje-li další místnost Jdi do další místnosti Else - provede se, není-li splněna podmínka Zobrazení zprávy Ukončení hry

Přechod do dalšího levelu


Souřadnice v Game Makeru

[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, Ikona nastav skóre - nastaví skóre, přičte body

Letadlo

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
  se střelou 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).


Chytání míčku

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.


Ikona smaž objekt = smazání objektu, Ikona obrať směr svisle = obrať směr svisle

Ohnivý brankář

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 Ikona nastav skóre (relativně +1) - získání bodu, události kolize s plamenem Nastavit skóre Ikona nastav 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íč":
Při "spálení" míče se vytvoří nový

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)

Místnost a souřadnice


Skok na určenou pozici = skok na urč. pozici, Puštění klávesy = puštění klávesy, Otočení kolečkem myši = otočení kolečkem myši

Tenis

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:Z tohoto obrázku vytvoř "pálku".

 

Tenis - místnost pálky (pro rychlejší míč můžeš zvětšovat pálky)

Chování objektu pálka :

       událost   akce
Kolize zeď Nastav směr pohybu zastav
Stisk klávesy stisk šipky nahoru Nastav směr pohybu nahoru 15
Puštění klávesy puštění šipky nahoru Nastav směr pohybu zastav
Stisk klávesy stisk šipky dolů Nastav směr pohybu dolů 15
Puštění klávesy puštění šipky dolů Nastav směr pohybu zastav
Otočení kolečkem myši nahoru Skok na určenou pozici x: 0,  y: 30 relativně (tj. skok o 30 bodů nahoru)
Otočení kolečkem myši dolů Skok na určenou pozici x: 0,  y: -30 relativně (tj. skok o 30 bodů dolů)
Stisk klávesy mezerník Restartuj hru restartuj hru

Chování objektu míč :

Míč       událost   akce
Vytvoření vytvoření Nastav směr pohybu vlevo nahoru 15
  (případně Nastav gravitaci nastav gravitaci 250;1)
Kolize zeď Odraz odraz od pevné objekty
Mimo místnost mimo místnost Zobraz tabulku nejlepších hráčů zobraz tabulku nejlepších hráčů
  Restartuj hru restartuj hru
   
   
   
   

Pro zajímavější průběh můžeš nastavit gravitaci.


Další hry:
Úkol:

Skripty

Wikipedia,