C# týden Slevový týden - Březen
Využij náš slevový týden a získej až 30 % bodů navíc zdarma! Zároveň také probíhá C# týden se slevou na e-learning až 80 %
Hledáme fulltime programátora do ITnetwork týmu -100% homeoffice, 100% časově flexibilní #bezdeadlinu Mám zájem!

Váš Pacman

Dnes si vytvoříme našeho vlastního Pacmana. Zde nebo v balíčku, který je ke stažení si můžete stáhnout potřebné sprity v balíčku pak i hudbu.

Nejlprve si přidáme sprity Pacmana (nezapomeňte zaškrtnout remove background):

Vytvořte si ve spritech nejlépe složku pacmans do které tyto sprity dejte ať je v tom nějaký systém.

Je důležité změnit každému spritu (pacmanovy a později i duchům) masku kvůli kolizi se zdmi a solid objekty vůbec. Proto vždy dejte modify mask zvolte rectangle a full image. Tím se vám vypne precise collision checking a všechny objekty bude hra vidět jako čtverce, tím se zjednodušší kolize a nebude docházet k zasekávání objektů ve zdech.

Otevřeme si objekt pacman a defaultní sprite mu dáme pacman_stand. Do create přidáme set variable kde nastavíme image_speed na 0.5, aby mlel pusou trošku pomaleji :)

Poté přidáme eventy left, right, up a down. Přičemž do každého z nich přidáme akce -> kontrola kolize kde nastavíme x na - 4 (touto rychlostí se bude pacman pohybovat), pouze pro solid a zaškrtneme relative. přidáme blok kam umístíme start moving in directory -> kde zaškrtneme šipku dle spěru a rychlost bude 4. A změníme sprit podle směru.

Do eventu outside room přidáme pouze wrap both directions

Do game start set lives to 3 , score to 0

Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!

Pak přidáme Score Caption Zde nastavíme výpisek score a životů který bude v programu nahoře v okně. Show score : show , score caption : Score :, show lives: show, lives caption : Zivoty : Show – znamená že se zobrazí, don’t show že se nezobrazí, caption je co se vypíše (doporučuji nepoužívat diakritiku) Poté potvrdíme.

A ještě přidáme event No more lives kam umístíme show hight score table a end the game.

Hru si můžete vyzkoušet přidáním roomu a umístěním pacmana do něj.

Nyní přidáme sprite zdi a vytvoříme solid objekt s tímto spritem. Do pacmana přidáme kolizi s tímto objektem a nastavíme mu na prostřední čtvereček a sprite změníme na stand.

Teď přidejte sprite jídla a hvězdičky a můžete i bonusové lízátko. Vytvořte objekty s těmito spritama a zatím v nich nic nenastavujte. Do pacmana přidejte event kolizi s jídlem, kde budeme kontrolovat počet -> kvůli výhře zařizovat přesun do dalšího levelu, přidávat skóre atd.

Vytvořte si nějakou mapku kam umístěte jídlo a pacmana a vyzkoušejte si hru.

Nyní přidáme duchy. Pro jednoduchost nám stačí jen tyto dva sprity.

Vytvořte si dva objekty -> ghost nebo monster a scared.

V monster do create přidejte start moving in a direction kde poklepte na levou, pravou, horní a dolní šipku a nastavte rychlost na 4 to samé udělejte v kolizi se stěnou. Do outside room přidejte wrap screen a nastavte hloubku (depth) na -2 ať nechodí pod jídlem.

Do scaret přidejte alarm ve kterém se bude měnit instance na původního ducha.

Do pacmana přidejte kolizi s hvězdičkou a přidáme nějaký zvuk (beeb používám), smažte instanci (other), změňte instanci (object duch) na scared a nastavte alarm v objektu scared na 160.

Přidejte ještě kolizi s duchem kde přehrajte zvuk dead, vložte sleep asi na vteřinu a půl, akci jump tu the start position (pro pacmana a příšeru která ho zabila -> other) změňte pacmanovi sprite na stand a odečtěte jeden život (set lives relative to -1).

V kolizi se scared přehrajte (catch), na other použijte jump to the start position a změňte jeho instanci zpět na ducha. Ke skóre přičtěte 100.

Nyní si otevřete bonusové lízátko. Do create přidejte akci jump to position a třeba do x napište -1000 ať vyskočí někam pryč. nastavte alarm 0 na 500. Do tohoto alarmu dejte akci jump to start a nastavte alarm 1 na 200. Do alarm 1 přidejte stejné akce jako jsou v create. A do posledního eventu kolize s pacmanem přidejte play sound bonus, set score relative to 200 a jump to position -1000 a alarm 0 zase nastavte na 500.

Hru si vyzkoušejte. Pacman je zdá se hotový, avšak ještě zdokonalíme inteligenci duchů přidáním objektu crossroad (kterému napamujte nějaký sprite) bude mít za úkol náhodně vybrat cestu při narazení na křižovatku. Odškrtneme mu visible a do ducha přidáme kolizi s tímto objektem. Bude zde podmínka která kontroluje jestli je duch přesně v prostředku křižovatky (check grid) . Kde nastavíme snap na 32x32 (podle velikosti všech spritů). A pod tuto podmínku přidáme start moving in a direction kde zaškrtneme zase šipky vlevo, vpravo, nahoru, dolů.

Tento objekt vložte na místa kde se dá jít více směry a není naproti zeď (křižovatky ve tvaru T nebo X). Pacman je hotov.


 

Stáhnout

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

 

 

Článek pro vás napsal David Jančík
Avatar
Jak se ti líbí článek?
3 hlasů
Autor je vášnivý programátor. Nezná slovo "nelze", nebojí se zkoušet nepoznané a pronikat do nových technologií.
Všechny články v sekci
GameMaker - Bludišťovky
Aktivity (1)

 

 

Komentáře

Avatar
Lonslei
Neregistrovaný
Avatar
Lonslei:6.1.2011 19:43

Ahoj, moc pěkný návod, ale já bych rád udělal něco 2D a poté hned 3D vím že to nejde tak lehce, ale mám na to dost času myslím :) tak jestli bys mi pomohl třeba jak v C++ nebo co je nejlepší program, vubec totiz se v c++ nevyznam a neumim ty prikazy,Diky moc, skype : dada.david

Mimochodem ty hraješ Wow? Kde?

 
Odpovědět
6.1.2011 19:43
Avatar
Mates
Neregistrovaný
Avatar
Odpovídá na Lonslei
Mates:9.1.2011 14:23

Cau chtěl jsem se zeptat??? na to odstranění pozadí z toho pacmena nejdemi to když ho tam načtu
tak tam nikde v pravo nemám tlačítko remove background?, dík

 
Odpovědět
9.1.2011 14:23
Avatar
sczdavos
Tým ITnetwork
Avatar
Odpovídá na Lonslei
sczdavos:9.1.2011 15:18

Ahoj,
na 3D se chci teď někdy dostat, jinak je na to dobrý XNA ve kterém je dělaný například RoboTris, jsou na to i pěkný příklady na 3D ale není to moc easy no.
Pokusím se v závislosti na čase napsat nějaký návod na 3D ale momentálně jsem v časové tísni takže v brzké době to nebude.
WoW nehraji již dlouhou dobu, nebavilo mne to hrál jsem normal bliz, pak funko, pak sem měl vlastní server na 3.0.1 WOTLK ale ani to mne nebavilo ikdyž hodně pěkný bylo že jsem si do DB mohl přidat vlastní itemy a spelly :D.

Odpovědět
9.1.2011 15:18
Zapomeň, že je to nemožné a udělej to ;)
Avatar
sczdavos
Tým ITnetwork
Avatar
Odpovídá na Mates
sczdavos:9.1.2011 15:26

Ahoj,
pozadí můžeš nastavovat v nastavení konrétního roomu.
Je tam backgrounds.
Tam pokud pozadní nechces klepneš na aktivní (tučné) a odšrtneš 'Visible when room starts'.
Změnit ho můžeš tak že klepneš na šipečku výběru u comboboxu. Tam si vybereš pozadí. V jednom roomu jich můžeš mít až 8. Každnému Background 0 - 7 můžeš přřadit jinačí obrázek a pomocí Title ho napozicovat.

Odpovědět
9.1.2011 15:26
Zapomeň, že je to nemožné a udělej to ;)
Avatar
sdraco
Tým ITnetwork
Avatar
Odpovídá na David Jančík
sdraco:9.1.2011 16:20

Myslím, že dotyčný měl na mysli tlačítko "Remove background" které slouží k vymazání pozadí okolo spritu ve sprite editoru. Je možné, že má starý GameMaker, každopádně by přeci mělo stačit sprite načíst a GameMaker ho sám nastaví jako transparent a vybere průhlednou barvu (pokud máš pozadí jednolité) :)

Odpovědět
9.1.2011 16:20
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
Mates
Neregistrovaný
Avatar
Mates:9.1.2011 16:34

Ahoj, ještě pořád mi to nějak nefunguje nevím jak v tom nastavit to průhledné pozadí, mám Gamemaker 8.0 a jediné co mám v praco když přidám ten sprite je ten obrázek, ale s ruzovim pozadím a nemám u toho removed nebo neco takového ??? prosím nevíte jak to pozadí udělat průhledné??? děkuji

 
Odpovědět
9.1.2011 16:34
Avatar
sdraco
Tým ITnetwork
Avatar
Odpovídá na Mates
sdraco:9.1.2011 16:43

To se nastavuje v momentě vybírání obrázku (Load sprite). Přímo v tom dialogu kde otevíráš pacman.png jsou na pravé straně tři checkboxy a jeden z nich je Remove background, sczdavos to tu přeci píše.

Odpovědět
9.1.2011 16:43
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
Mates
Neregistrovaný
Avatar
Odpovídá na David Čápka
Mates:9.1.2011 16:45

Uz to de dekuji vám moc

 
Odpovědět
9.1.2011 16:45
Avatar
Mates
Neregistrovaný
Avatar
Mates:9.1.2011 16:50

Eště bych se prosím vás chtěl zeptat, když si nastavim že se ten pacman promění v toho co žere potvory, tak se mi nechce proměnit zpět i když nastavim do alarmu Number of steps:5 tak se furt nemění a nemění??

 
Odpovědět
9.1.2011 16:50
Avatar
Mates
Neregistrovaný
Avatar
Mates:9.1.2011 17:53

Cau jak udělat zvuk když sežere pacman kuličku?? dík

 
Odpovědět
9.1.2011 17:53
Avatar
sczdavos
Tým ITnetwork
Avatar
Odpovídá na Mates
sczdavos:9.1.2011 20:58

Stáhni si zdrojové kódy a podívej se jak to mám udělané.

Odpovědět
9.1.2011 20:58
Zapomeň, že je to nemožné a udělej to ;)
Avatar
sczdavos
Tým ITnetwork
Avatar
Odpovídá na Mates
sczdavos:9.1.2011 21:00

Dáš do procedury při kolizi s kuličkou Play sound je tam na to akce.

Odpovědět
9.1.2011 21:00
Zapomeň, že je to nemožné a udělej to ;)
Avatar
prochy
Neregistrovaný
Avatar
prochy:20.1.2011 18:48

cau jak to, ze kdyz se malinko zadrhnu o tu zed, tak sem to hne zadrhne??

 
Odpovědět
20.1.2011 18:48
Avatar
jindral
Redaktor
Avatar
Odpovídá na prochy
jindral:20.1.2011 19:13

Jak to myslíš, jako že jdeš kolem zdi a PacMan se ti zastaví?

Odpovědět
20.1.2011 19:13
Life's just a dream.
Avatar
sczdavos
Tým ITnetwork
Avatar
Odpovídá na prochy
sczdavos:20.1.2011 19:29

Upraveno dne 20.01.2011 19:36:07 administrátorem.
Ahoj,
je to pouze ukázka kdybych to měl dělat pořádně udělal bych to aby se přesouval po čtverčkách a né po pixelech. To že se posouvá po pixelech způsobuje to zadrhávání.
Pokud si hraješ s gm zkus si tam napsat x += 20 pro pohyb vpravo, x -= 20 pro pohyb vlevo a to same s y pro pohyb nahoru a dolu. (píše se to do creation code)
Je tam i něco jako if(place_free(x+20,y)) to kontroluje jestli před ním něco není aby nezajel do textury nebo mimo mapu.

Odpovědět
20.1.2011 19:29
Zapomeň, že je to nemožné a udělej to ;)
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
jindral
Redaktor
Avatar
Odpovídá na David Jančík
jindral:20.1.2011 19:43

já to ve volnym čase skusim, teď nemam nápady co dělat atk to je inspirace ;):D

Odpovědět
20.1.2011 19:43
Life's just a dream.
Avatar
nekro
Neregistrovaný
Avatar
nekro:7.3.2011 12:38

potrbuju radu .. kdyz sezere tu modrou kouli tak uz nezzloutne co stim?? a jeste sem se chtel zeptat jestli by si sem dal navod na skakacku dik ;)

 
Odpovědět
7.3.2011 12:38
Avatar
jindral
Redaktor
Avatar
Odpovídá na nekro
jindral:7.3.2011 15:12

Nastavil sis to správně aby se vrátil? Skus si zopakovat tu část kde se mění a když zjistíš kde je chyba tak jí jednoduše oprav ;) Jinak návod na skákačku bude až si koupim novou grafickou kartu (stará odešla :( ) - udělam 2. tutorial - detailní popis všech funkcí + návod na hru (skákačka bude buď ve druhym a nebo ve třetim, uvidim jak to vyjde) budu se snažit co nejdřív, bohužel, finance nejsou :(

Odpovědět
7.3.2011 15:12
Life's just a dream.
Avatar
sdraco
Tým ITnetwork
Avatar
Odpovídá na nekro
sdraco:7.3.2011 15:20

Na skákačku tu máš přece příklady ke stažení.

Odpovědět
7.3.2011 15:20
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
lejzrman
Neregistrovaný
Avatar
lejzrman:11.4.2011 21:51

hustí dík ale mě něak nejde ten měnič pošli radu dík8-);)

 
Odpovědět
11.4.2011 21:51
Avatar
sczdavos
Tým ITnetwork
Avatar
Odpovídá na lejzrman
sczdavos:12.4.2011 21:51

Ahoj,
mohl by jsi mi popsat problém podrobněji nebo mi na email zaslat zdrojový kód abych se mohl podívat problému na kloub s potřebnými informacemi?

Odpovědět
12.4.2011 21:51
Zapomeň, že je to nemožné a udělej to ;)
Avatar
koblih
Neregistrovaný
Avatar
koblih:5.9.2011 20:28

Mě se pacman vždycky zadrhne když jdu kolem zdi , jak to mám přesně napsat do toho execute codu napsal ? Do eventu right jsem napsalx += 20
do left x -= 20 do up y -= 20 a do down y += 20 ale pořád to nefunguje;(.

 
Odpovědět
5.9.2011 20:28
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na koblih
David Čápka:5.9.2011 21:41

Tutoriál byl updatovaný, je nyní jednodušší a bez kódu, zkus si to podle něj udělat znovu nebo si stáhni dole výsledek :)

Odpovědět
5.9.2011 21:41
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
lukasjelinek
Neregistrovaný
Avatar
lukasjelinek:11.1.2012 19:00

Cojeto solid ??

 
Odpovědět
11.1.2012 19:00
Avatar

Redaktor
Avatar
Odpovídá na lukasjelinek
:11.1.2012 19:07

Solid znamená pevný, samostatný objekt. Je to vlevé liště editovaného objektu, a pro takové kolize je to nutné zaškrtnout.

 
Odpovědět
11.1.2012 19:07
Avatar
David Jančík
Tým ITnetwork
Avatar
Odpovídá na lukasjelinek
David Jančík:11.1.2012 20:01

Dobrý večer,
solid určuje zda je objekt pevný či nikoli. Nastavuje se například pro zeď či nějaké zarážky. Důležitá změna je při kolizi -> pokud je objekt se kterým postavička koliduje solid postavička je stále vracena o pixel před kolizi takže to vypadá, že se zastavila. Pokud zarážka není solid proběhnou pouze akce v eventu kolize a postavička zarážkou normálně projde.

Odpovědět
11.1.2012 20:01
Zapomeň, že je to nemožné a udělej to ;)
Avatar
ivopolasek
Člen
Avatar
ivopolasek:20.2.2013 15:43

prosím pomoc, při pohybu pacmana (držení klávesy) mi pacman nemele hudou, co mám špatně, nebo co mám změnit??

Odpovědět
20.2.2013 15:43
prosím pomoc...
Avatar
TomBen
Redaktor
Avatar
Odpovídá na ivopolasek
TomBen:20.2.2013 17:09

Pravděpodobně v ikoně change_sprite nemáš speed nastavený na 1.
Případně můžeš mít špatně udělaný sprite.

Odpovědět
20.2.2013 17:09
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
Martin Skalík
Redaktor
Avatar
Martin Skalík:23.5.2015 21:22

Dobra hra (docela ;) )

 
Odpovědět
23.5.2015 21:22
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 29 zpráv z 29.