Game maker tutorial - Pong!

Ostatní jazyky GameMaker Jednoduché hry Game maker tutorial - Pong!

Vytvoříme si jednoduchou pinkací hru s míčkem zvanou Pong pro dva hráče.

Vytvořte objekt obj_controler a nechte jej zatím ležet.

Nejprve přidáme obrázek (sprite) -> ikonka červeného pacmana ze složky game makeru pálku otočenou (vysící svisle dolů). Pojmenujeme jej spr_bat.

Nyní vytvoříme objekt (modrá koule). Pojmenujeme jej obj_bat_one a přiřadíme mu patřičný sprite.

Vytvoříme další objekt obj_ball kterému přiřadíme další ze spritů ze složky gm který vycentrujeme klepnutím na tlačítko (center).

Přepneme se zpět do objektu pálky (bat) a přidáme event kolizi s míčkem. Do níž umístíme akci bounce applies to other against all objects

Nyní klepneme na objekt pálky pravým tlačítkem a zvolíme duplikovat vytvoříme bat_two.

Nyní přidáme eventy aby se pálky pohybovali. Začneme otevřenou dvojkou. Přidáme eventy keyboard/UP a kb/DOWN.

Přidáme akci set horizontal speed a jako rychlost u UP nastavíme -7 a u DOWN 7

To samé uděláme u první s tím že tam budou eventy W a S.

Do míčku přidejte událost create a do ní start moving in a direction kde poklepejte na šipečky v rozích a speed dejte tak 10.

Vytvořte si room do kterého naproti sobě umístěte pálky a doprostřed míček.

Zkuste si hru spustit.

Zjistíte hlavni nedostatky. Jako první opravíme pohyb pálek. Přidejte event release (W,S,down,up) kde nastavte horizontální rychlost na 0.

Teď by to ještě celkem chtělo aby se míček od krajů odrážel a pálky nemohli odcestovat.

Vytvořte si proto dva černé obdélníčky o rozměrech 16x480 (WxH) a 640x16 (WxH).

A nyní tři objekty kterým nastavíme solid a přidělíme jim tyto sprity. A sice jeden objekt -> zarážka která bude nahoře a dole a bude pouze zastavovat pálky a odrážet míček. A dva objekty z nichž jeden bude za jednou a druhý za druhou pálkou budou počítat skóre a resetovat míček na defaultní pozici.

Takže třeba obj_horizontal dáme do něj horizontální zarážku, zaškrtneme solid a odškrtneme visible. Přidáme kolizi s míčkem kde dáme bounce other all objects. A kolizi s pálkama kde dáme hned první ikonku z move (moving in a direction) klepneme na prostředek (čtvereček) a potvrdíme.

Vytvoříme obj_vertical_left kterému přidáme kolizi s míčkem kde použijeme akci set variable z control.

Vyberte applies to obj_controler. variable napište bat_two_score, do value napište 1 a zaškrtněte relative. Pak se přepněte na záložku move a z jump vyberte jump to start applies to other

Nyní objekt zduplikujte pojmenujte jej obj_vertical_right a v set variable přejmenujte proměnou na bat_one

Nyní zarážky umístěte do mapy (nezapomeňte jim vypnout visible aby nebyly vidět).

Pro pohodlnější usazování vypněte Delete underlying které maže objekty které kolidují se současně pokládaným objektem.

Hru si vyzkoušejte.

Nyní se vrhneme na controler.

Do eventu create umístěte dvě akce set variable bat_one a bat_two.

Nyní přidejte event draw a ze stejnojmenné záložky vybereme draw text (modré A) jako text napište třeba Player 1 -> potvrďte. Nyní se přepněte do záložky control a vlevo dole vyberte draw variable kde napište bat_one.

Nyní ještě přidejte to samé s tím rozdílem že tam bude Player 2 -> a bat_two.

Pak text od oka napozicujte a controler vložte někam do mapy třeba vlevo do rohu (pozor na delete underlying)

Pak si hru vyzkoušejte

Ještě trošku promakáme controler.

Do create přidejte proměnou time a nastavte ji na 1.

Do stepu dejte test variable a napište
variable: time
value: 0
operation: larger than

Nyní přidejte bloky a do nich z main2 sleep na 1000 pak zmenšete hodnotu time o 1.

Do draw přidejte ještě vykreslení textu x -> (room_width / 2) - 50, y room_height / 2.

Můžete si přidat font a nastavit mu větší velikost nebo i jinačí face. Poté jej aplikujete před draw the value of var. time přidáním set font. Pak si ale musíte vytvořit další font kde bude výška zase normální jinak se vám budou všechny texty vykreslovat tímto fontem.

A ještě to chce přidat podmínku if time is larger than 0 aby se nevykreslovala furt.

Poté ještě přidejte do kolize s ball ve vertikálních zarážkách set variable time to 1 applies to obj_controler.

Hru si vyzkoušejte.

Můžete si hru vylepšit přidáním pozadí, hudby, popřípadě doplňte o své vlastní nápady.


 

Stáhnout

Staženo 848x (14.94 kB)
Aplikace je včetně zdrojových kódů v jazyce GameMaker

 

  Aktivity (1)

Článek pro vás napsal David Jančík [sczdavos]
Avatar
Autor je vášnivý programátor v .NET C# a PHP. Nezná slovo "nelze", nebojí se zkoušet nepoznané a pronikat do nových technologií.

Jak se ti líbí článek?
Celkem (5 hlasů) :
55555


 


Miniatura
Všechny články v sekci
GameMaker - Jednoduché hry
Miniatura
Následující článek
Game maker tutorial - Arkanoid

 

 

Komentáře

Avatar
Bambus64
Člen
Avatar
Bambus64:

Co se týče hry, tak myslím že pong tahle nevypadá! Mnělo by to mít zelené pozadí a bílé plošinky a hranatý míček :)

 
Odpovědět 12.3.2013 21:19
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na Bambus64
Petr Nymsa:

A to jsi slyšel kde ? :) Je zakázané udělat si vlastní vzhled a kopii, když je to pouze za účelem vyzkoušet si algoritmy, procvičit programování ? Momentálně od tebe vídám pouze komentáře na hry, které nejsou nijak přínosné. Je to to samé, jako kdyby jsi řekl, že Ferrari bylo červený, že už nemůže být černý ;)

Odpovědět  +2 12.3.2013 22:42
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Bambus64
Člen
Avatar
Odpovídá na Petr Nymsa
Bambus64:

Jen vyjadřuji svůj názor.

 
Odpovědět 18.3.2013 20:01
Avatar
Зайчик
Člen
Avatar
Odpovědět 18.3.2013 20:03
Коммунизм для нашего будущего!
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na Bambus64
Petr Nymsa:

V názoru ti nebráním :)

Odpovědět 18.3.2013 20:04
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
TomBen
Redaktor
Avatar
TomBen:

A já myslel, že Pong je jméno jednoho z těch dvou číňanů,
co vymysleli stolní tenis. :D:D

Odpovědět  +2 18.3.2013 21:21
Za posledních 200 miliónů let se nic zvláštního nestalo, akorát dinosauři vymřeli a opice se naučily programovat.
Avatar
Bambus64
Člen
Avatar
Odpovídá na Petr Nymsa
Bambus64:

Alespoň tady se najdou normální lidi kteří chápou že jsme ve svobodné zemi a můžeme vyjadřovat svůj názor. SUPER :)

 
Odpovědět 27.3.2013 19:58
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 7 zpráv z 7.