Tutorial ke hře Hit The Ball ve zjednodušené verzi

Ostatní jazyky GameMaker Jednoduché hry Tutorial ke hře Hit The Ball ve zjednodušené verzi

Hit the ball je hra, která vás naučí používat základní funkce GM. Doporučuji přečíst 1. tutorial z první série, který vás obeznámí s teorií a celkovým interfacem. Ale teď k samotné hře. Obrázky si můžete stáhnout spolu s hotovým kódem dole na stránce. (pokud je nechcete shánět jinde).

Jak na to

První věc, kterou bychom měli udělat, je přidat si sprity (v našem případě zeď a míček). Z prvního tutorialu byste měli vědět jak na to (kliknete na ikonku Pac-Mana a pokračujete pojmenováním a výběrem spritu). Potom tu máme jeden zvuk, který se přehraje při strefení se do míčku a jedno pozadí. A teď to základní - vytvoření objektů:

Objekty ve hře

Nejprve si vytvoříme objekt "zed". Zde zaškrtneme políčko "solid" a dáme OK. poté si vytvoříme objekt míček. Kliknutím na "Add Event do něj přidáme událost "Create". Tato událost říká hře, co se má stát při vytvoření daného objektu. Do "Create" přidáme příkaz, aby skóre začínalo na nule. Tento příkaz je na kartě "score" (třetí odspodu). Přetažením ikonky pro nastavení skóre. Vypadá takto: Ikonka pro skore . Tam nastavíme dafaultní hodnotu 0. Také bychom měli nastavit čas, po který bude možné se pokoušet strefit do míčku. To se dělá přes příkaz "Set Health". Ikonka je opět na kartě "score" a je to tahle: Indikátor času . Zdraví nastavíme na 100. Také by nebylo špatné aby se míček hýbal. Proto mu přidáme příkaz "Move Fixed". Jeho ikonka je první ikona na kartě "move". Tam aktivujeme všechny šipky a rychlost nastavíme na jakoukolik hodnotu, asi nejlepší na start je 5-8. Naše snažení po prvním eventu by mělo vypadat takhle:

Výsledek po dokončení eventu Create

Další z kroků je event "Step". Ten vytvoříme kliknutím na "Add Event", potom na "Step" a nakonec znovu "Step". Jakmile se bude míč pohybovat po ploše, budeme chtít, aby se nám započítalo skóre, ale aby nám také ubíhal čas. Proto přidáme příkaz "Set Score" a v okně do políčka napíšeme počet bodů získaných za jeden krok a zaškrtneme "Relative" (Zaškrtnutí "Relative" je důležitý krok, bez něj by vám skore stálo na 1 bodu). OK. Nyní přidáme i příkaz "Set Health" a nastavíme jeho parametry. Zde musíte zadat záporné číslo, jinak by se vám čas prodlužoval a hra by byla nekonečná (i když z hlediska výsledného skore by to nebylo špatné :) ). Va našem příkladu máme tuto hodnotu nastavenou na -0.5. Opět zaškrtneme "Relative". Takže jak to teď vypadá?

Stav po přidání eventu Step

Dále bych si udělal ovládání. Do míčku se budeme strefovat myší, proto přidáme event Mouse a vybereme "Left pressed". Do něj přidáme přehrání zvuku, uskočení míčku, jiný směr pohybu a obnovení časomíry. Ale pěkně popořadě. Začal bych přehráním zvuku. Otevřeme si kartu "main1" a přetáhneme ikonku repráku ve čtverci ( Ikonka pro přehrání zvuku ) a vybereme zvuk "zvuk". "Loop" dáme na "false". Potom by měl míček uskočit, proto přejdeme na kartu "move" a vezmeme příkaz "Jump To Random" (jeho ikonka je takováto: Ikonka jumpu ). Zde nic nenastavujeme a pouze klikneme na OK. Teď by se měl míč hýbat jiným směrem, proto vezmeme a přetáhneme ikonu příkazu "Move Fixed" (n kartě "move" ) a aktivujeme všechny šipky a nastavíme rychlost. Na konec eventu potřebujeme obnovir časový limit. To uděláme jednosuše přes ikonu "Set Health" a hodnotu nastavíme na 100. Cím byl asi takovýto:

Stav po dokončení eventu Mouse Pressed

Pokud chceme, aby hra skončila po vypršení časového limitu, musíme nastavit event "No More Health". Ten najdete v sekci "Other". Chceme aby se nám zobrazola tabulka výsledků a také chceme hrát znovu. Proto přidáme příkaz "Show Highscore" ( Tabulka s výsledky ) a nastavíme podle libosti ("new color" nastavuje nový výsledek a "other color" výsledky předchozí). Potom (opravdu je důležité napřed zobrazit tabulku výsledků a pak až hrát znovu :) ) přetáhneme ikonu Ikona restartu roomu , která má na svědomí příkaz "Restart Room" a nachází se na kartě "main1". Jediné co zde můžeme nestavit, je efekt přechodu. Sami se rozhodněte, který se vám líbí nejvíce. Event hotov a vysledek?

Stav po dokončení dalšího eventu – No More Health

Míček by se měl při nárazu do stěny odrazit, proto nastavíme event "Collision". Zde nám stačí nastavit pouze příkaz z karty "move" - "Bounce". Pokud chceme, aby se míček odrazil do stran, v kolonce "precise" nastavíme "precisely", nás ale zajímá hlavně druhý parametr - "against". Tady zvolíme možnost "solid objects".

Na konec vytvoříme event "Draw". Obyčejně to není nutné, my však chceme vidět, kolik času nám zbývá a jaké máme skóre. Proto nastavíme příkazy "Draw Health" (ikonka je stejná jako u nastavování zdraví (v našem případě času), jenom barva na pozadí je žlutá). Ten se bude vykreslovat na souřadnicích x1=10, y1=10, x2=200 a y2=50. Dále si můžete nastavit barvy ukazatele. Chtěli jsme vidět i skore, proto přidáme příkaz "Draw Score" (ikonka je stejný případ jako "Draw Health") a opět nastavíme souřadnice (x=300, y=30). Protože chceme vidět míček, musíme přidat i příkaz pro vykreslení míčku. Ten najdeme na kartě "draw" a je to ta první ikonka. U první kolonky vybereme jako sprite "micek" a souřadnice x a y necháme na nule. "subimage" bude na -1. Zaškrtneme "Relative". Konečný výsledek vytváření objektu "mic" je tohle:

Výsledek snažení o vytvoření objektu je toto

Ale abychom si zahráli, musíme to všechno posadit do roomu. Takže si vytvoříme místnost (jejedno jak ji nazvete). V jejím okně si dole vyberete sprite "zed" a umístíte ho kolem celého roomu. Potom tam hodíme i objekt "mic" a pozadí. Pozadí vložíme na kartě "backgrounds" vybráním obrázku s pozadím (jediný seznam na záložce)

Takže toto je výsledek našeho snažení: Hotová hra


 

Stáhnout

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

 

  Aktivity (1)

Článek pro vás napsal jindral
Avatar
Autor se věnoval batchi v systému Windows XP, částečně Game Makeru a učil se Javu. Studuje na Středním odborném učilišti elektrotechnickém v Plzni, na čtyřletém oboru Mechanik elektrotechnik. Svět IT ale už opustil a sním i tehdejší Devbook

Jak se ti líbí článek?
Celkem (2 hlasů) :
4444 4


 


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

 

 

Komentáře

Avatar
Martin Bednář (xbedm01):

Ty obrázky nefungují jenom mě?

Odpovědět 26.6.2013 16:52
I bez motta se dá žít
Avatar
jindral
Redaktor
Avatar
Odpovídá na Martin Bednář (xbedm01)
jindral:

Pokud myslíš obrázky tady u článku, tak nevím, co se s nimi stalo...

Odpovědět 30.6.2013 14:20
129x pád = 219x úspěch
Avatar
Radko
Neregistrovaný
Avatar
Radko:

Ahoj,
mám problém. Vytvoril som si hru, kde klikám na loptičku a vždy keď sa dotkne steny dá mi 1 bod. Skóre sa mi pričíta a zobrazí na názve okna. Keď chcem pomocou eventu Draw pridať skore, loptička zmizne. Keď pridám sprite, loptička tam je ale nehýbe sa. AK by niekto vedel prečo, prosím napíšte

Dík

 
Odpovědět 22.11.2013 22:32
Avatar
TomBen
Redaktor
Avatar
Odpovídá na Radko
TomBen:

Když do eventu Draw dáš nějakou vlastní činnost, nahradíš tím původní automatické vykreslování.
Buď skóre vyřeš v jiném objektu nebo doplň původní vykreslování pomocí:

draw_sprite(sprite_index,image_index,x,y);

( za předpokladu, že míč nepoužívá rotaci ani změnu velikosti )

Editováno 22.11.2013 22:50
Odpovědět 22.11.2013 22:50
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
Tomáš Brůna
Redaktor
Avatar
Tomáš Brůna:

Ahoj jak se dá zařídit aby se mi objet pohyboval tam kde je ta myš?

Odpovědět 19.2.2015 22:27
Lepší být šprt než blbec :)
Avatar
Dominik Hošic
Redaktor
Avatar
Odpovídá na Tomáš Brůna
Dominik Hošic:

Ahoj,
1. Naklikneš si Step Event
2. Přetáhneš do něj dlaždičku 'Code'
3. do ní napíšeš:

x = mouse_x;
y = mouse_y;
Editováno 21.2.2015 11:16
Odpovědět 21.2.2015 11:16
Klient: Nefunguje mi internet co s tím uděláte? Operátor: a co vidíte na monitoru? Klient: No signal...
Avatar
Tomáš Brůna
Redaktor
Avatar
Odpovídá na Dominik Hošic
Tomáš Brůna:

Aha děkuju a jak se dá udělat rotace objektu za myší? Děkuju

Odpovědět 21.2.2015 16:20
Lepší být šprt než blbec :)
Avatar
Dominik Hošic
Redaktor
Avatar
Odpovídá na Tomáš Brůna
Dominik Hošic:

Taky do Step Eventu:

image_angle = point_direction(x, y, mouse_x, mouse_y);
Editováno 21.2.2015 21:27
Odpovědět 21.2.2015 21:27
Klient: Nefunguje mi internet co s tím uděláte? Operátor: a co vidíte na monitoru? Klient: No signal...
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 8 zpráv z 8.