Scratch tutorijal – Napad zombija, drugi deo
Kao što smo vam obećali prethodnog ponedeljka, danas ćemo da nastavimo sa programiranjem naše igre. Ukoliko niste bili sa nama prošle sedmice, ili jeste, ali niste sačuvali ono što ste uradili, predlažemo vam da pročitate i uradite ono o čemu smo pričali u prethodnom tekstu, kako biste mogli da nastavite sa programiranjem igre.
Programiranje metka
Pri kraju prethodnog dela tutorijala, u program glavnog lika smo dodali blokove koji pokreću animaciju i zvuk pucanja, ako igrač pritisne levi taster miša. Da bi pucanje našeg glavnog lika bilo kompletno, potrebno je da dodamo sprajt metka, i da programiramo njegovo ponašanje. Sprajt metka dodajemo kao i ostale sprajtove, klikom na ikonu otvorene fascikle, koja se nalazi ispod donjeg desnog dela prozora igre. Pronaći ćemo folder u kojem se nalazi slika koju smo preuzeli sa interneta, i iz njega učitati fajl blt0.gif. Pošto ga učitamo, promenićemo ime ovog sprajta, onako kako smo to uradili i sa ostalim sprajtovima.
Posmatrajući sprajt metka, primećujemo nekoliko stvari. Prva je ta da je sprajt metka nešto veći od ostalih sprajtova. Druga je da oko metka postoji bela pozadina, koju ne želimo. I poslednja, treća stvar koju uočavamo, je ta da metak nije okrenut u istom pravcu kao i ostali sprajtovi. Pa, da krenemo sa ispravljanjem ovih nedostataka. Najpre ćemo da uklonimo belu pozadinu. Dok je uokviren sprajt metka, kliknućemo na karticu / tab Costumes. Zatim ćemo da uveličamo prikaz metka, da bismo jednostavnije mogli da uklonimo belu pozadinu. To radimo klikom na lupu koja se nalazi u donjem desnom uglu Scratch prozora. Kliknućemo na nju tri puta, a zatim ćemo iz palete sa ikonama, koja se nalazi u levom delu ekrana sa uveličanim metkom, da kliknemo na ikonu kofe. Iz palete sa bojama, koja će se pojaviti pri dnu sredine ekrana, kliknućemo na kosu crvenu crtu, a zatim i na belu pozadinu oko metka. Time smo uklonili belu pozadinu.
Sledeće što sređujemo je veličina metka. Pošto je sprajt metka nešto veći od ostalih sprajtova, smanjićemo ga, kao što smo to uradili sa ostalim sprajtovima. Preći ćemo u grupu blokova Looks, u kojoj tražimo blok Set size to 100%. Umesto broja 100, ukucaćemo broj 30, a zatim kliknuti na blok, kako bismo smanjili metak.
Pre nego što promenimo poslednju stvar na samom sprajtu metka, programiraćemo njegovo kretanje, da bismo videli zašto je potrebna promena pravca. Kliknućemo na sprajt vojnika, a zatim ćemo preći u Events grupu blokova, i odabraćemo blok na kojem piše Broadcast message 1 (pošalji poruku 1). Ovaj blok nam je potreban, zbog toga što ćemo preko njega da obavestimo ostale likove u našoj igri da je igra započela, i da mogu da počnu sa izvršavanjem svojih programa. Tako će i zombiji da znaju da je igra počela, i da bi trebalo da krenu prema nama. Pored toga, izmenićemo poruku, tako da umesto message 1, stoji Početak igre, a zatim ćemo da spojimo ovaj blok sa ostalima, kao na sledećoj slici.
Kliknućemo na sprajt metka, i preći u Events grupu blokova. Prevući ćemo blok When I receive message 1. Klikom na strelicu na desnoj strani tog bloka, otvaramo padajući meni, i biramo poruku Pocetak igre, koju smo maločas napravili. Zašto to radimo? Da bi program metka znao kada je igra počela, odnosno, da bi znao kada da se aktivira. Sledeći korak je prelazak u Motion grupu blokova, i prevlačenje blokova Move 10 steps,Point towards, i Go to x: 0 y:0. Zatim ćemo da pređemo u grupu blokova Control, iz koje prevlačimo blokove:
- Wait 1 secs (dva puta)
- Forever
- If <> then
- Repeat until <>
- When I start as a clone
- Create a clone of myself
- Delete this clone
Poslednji korak pre spajanja blokova, jeste prelazak u grupu blokova Sensing, odakle prevlačimo blokove Touching, i blok Mouse down. Pošto smo prevukli sve ove blokove, spajamo ih kao na sledećoj slici.
Ako sada pokrenemo igru, videćemo da naš vojnik ispaljuje metak klikom na levi taster miša, ali da se metak ne kreće onako kako smo očekivali. To se dešava zbog toga što metak nije okrenut u dobrom pravcu. Da bismo to ispravili, preći ćemo u kostime metka, i iz palete alata odabrati Select tool. Zatim ćemo, pritisnutim levim klikom i povlačenjem miša, da obeležimo sprajt metka. Kada se pojavi plavi okvir, pomerićemo strelicu miša na kružić iznad plavog okvira oko sprajta. Kada se strelica miša promeni u kružnu strelicu, pritisnućemo levi klik, i početi da pomeramo miš u desno i na dole, kao na sledećoj slici.
Kliknućemo na bilo koji drugi sprajt, da aktiviramo promenu pravca metka, a zatim ćemo da pokrenemo igru i da testiramo pucanje. Metak se sada kreće onako kako bi trebalo. Međutim, ne izlazi iz oružja, već iz tela vojnika. To možemo da ispravimo na nekoliko načina, a mi smo se odlučili za sledeći. Preći ćemo najpre u sprajt vojnika, a zatim u njegove kostime. Kliknućemo na prvi kostim vojnika, a onda na ikonu u gornjem desnom delu ekrana, koja liči na +. Preko kostima su se pojavile dve ukrštene crne linije. Njihovo trenutno mesto nam pokazuje gde je centar kostima, odnosno, oko čega će kostim da se okreće kada pomeramo miš. Kliknućemo na mesto ispred pištolja vojnika. Izgledaće kao da je vojnik odskočio unazad. Ono što se zaista desilo je to da smo promenili centar rotacije vojnika, ali i da smo odredili mesto iz kojeg će izlaziti meci. Ovaj postupak ponavljamo za svaki od kostima.
Ako pokrenemo igru, videćemo da se metak ponaša onako kako bi trebalo, a da se naš vojnik sada okreće oko zamišljene tačke ispred njegovog pištolja.
Sledeće što je potrebno da uradimo je da sakrijemo metak koji se trenutno vidi na sredini prozora igre, i da programiramo da se pojavljuje tek kada vojnik počne da puca. To radimo na sledeći način. Najpre ćemo da kliknemo na sprajt metka, pošto želimo da doradimo njegov program. Zatim ćemo da pređemo u grupu blokova Looks, iz koje ćemo da prevučemo blokove Show i Hide, a onda i da ih dodamo u naš program, kao na sledećoj slici.
Da li primećujete još nešto što bismo mogli da ispravimo? Šta se dešava sa zvukom pucnja? Ako tokom igre budemo držali pritisnutim levi taster miša, primetićemo da se pucanj ne čuje onako kako bismo očekivali, već isprekidano. Da bismo to rešili, preći ćemo u sprajt vojnika, i ukloniti blok Play sound shotty, a zatim u sprajt metka, gde ćemo najpre dodati fajl shotty.mp3, a zatim i blok vezan za njega, kao na sledećoj slici (kliknite na sliku za uveličani prikaz).
Na ovaj način smo programirali kretanje metka. Značenje prvog dela programa metka je sledeće:
Kada metak dobije poruku da je igra počela, sakriće se, i otići u sam centar prozora za igru. Sve vreme će da proverava da li je pritisnut levi klik. Ako jeste, malo će da sačeka, i da se umnoži.
Značenje drugog dela programa metka je:
Kada nastane kopija metka (a nastaće ako je pritisnut levi klik), usmeriće se ka trenutnoj poziciji strelice miša, postaće vidljiva, i čuće se zvuk pucnja. Sve dok ta kopija metka ne dodirne rub ekrana, pomeraće se za po petnaest koraka. Kada dodirne rub ekrana, sačekaće deseti deo sekunde, i biće obrisana.
Programiranje velikog zombija
Naredni korak je, pogađate, programiranje preostalih sprajtova u igri, odnosno, programiranje zombija. Krenućemo od programiranja velikog zombija. Kliknućemo na sprajt velikog zombija, a zatim na karticu / tab Scripts. Pošto ćemo, kao i kod metka, da vežemo početak programa velikog zombija za početak igre, potreban nam je blok When I receive Pocetak igre, koji se nalazi u Events grupi blokova. Pored ovog bloka, potrebni su nam i sledeći blokovi:
- Control grupa blokova:
- Wait (2 bloka)
- Forever (1 blok)
- Repeat until (1 blok)
- When I start as a clone (2 bloka)
- Create a clone of myself (1 blok)
- Delete this clone (1 blok)
- Motion grupa blokova:
- Point towards (1 blok)
- Glide 1 secs to x: y: (1 blok)
- Set x to (1 blok)
- Set y to (1 blok)
- Looks grupa blokova:
- Show (1 blok)
- Hide (1 blok)
- Next costume (1 blok)
- Sensing grupa blokova:
- Touching? (1 blok)
- Operators grupa blokova:
- Pick random 1 to 10 (1 blok)
Pošto želimo da se stalno pojavljuju veliki zombiji, moramo, kao i kod metka, da programiramo umnožavanje velikog zombija. Osim toga, želimo da se zombiji koji se stvaraju na taj način, stalno kreću ka našem vojniku. Ukoliko ga dodirnu, aktivira se kraj igre. Program kojim to postižemo pravimo na način prikazan na sledećoj slici (vodite računa o vrednostima u padajućim menijima, a i o brojevima).
Šta zapravo radi ovaj program? Pa, mogli bismo da ga tumačimo ovako:
Kada veliki zombi dobije poruku da je igra počela, najpre će da postane nevidljiv. Zatim će, dokle god traje igra, da menja svoje mesto(-240 označava da će stalno da bude u levom delu ekrana, a blok Pick random 0 to 180, da će da bude samo u gornjoj polovini ekrana, ali da nikad nećemo tačno da znamo gde), da sačeka 4 sekunde, i da se umnožava tamo gde se u tom trenutku zatekao. Kada nastane kopija velikog zombija, postaće vidljiva. Sve dok je ne pogodi metak, biće okrenuta ka vojniku, i menjaće kostim svake destinke (to jest, pokretaće animaciju kretanja). Kada je pogodi metak, nestaće.
Poslednji blok, Glide 10 secs to x: 0 y: 0 predstavlja blok koji je zadužen za kretanje zombija. Ovaj blok je izdvojen od ostalih, zato što se izvršava sve dok se ne završi. Ako bismo ga stavili ispred ostalih blokova, ne bi se aktivirao uslov za sudar zombija i metka, a ne bi se pokrenula ni animacija kretanja. Za probu ga prebacite unutar prvog programa koji počinje blokom When I start as a clone, i videćete na šta tačno mislimo.
Kada pokrenemo igru, videćemo da skoro sve radi onako kako bi trebalo. Jedini nedostatak naše igre je taj što metak ne nestaje prilikom sudara sa velikim zombijem. Ako pogledamo program metka, videćemo i zašto. U programu za kopije / klonove metka, nigde ne postoji uslov za uništavanje metka, ukoliko se sudari sa velikim zombijem. To ćemo da ispravimo tako što ćemo da pređemo u grupu blokova Operators, iz koje prevlačimo blok OR. Zatim prelazimo u grupu Sensing, i prevlačimo blok Touching. Kad smo to uradili, svaki od ova dva bloka kopiramo tri puta, desnim klikom i izborom opcije duplicate. Napravili smo kopije ovih blokova, zato što želimo da odmah postavimo uslov za sudar sa ostalim zombijima (srednjim i malim), iako ih još uvek nismo programirali. Jednostavno, želimo da izbegnemo stalno vraćanje u program metka. Blokove spajamo i podešavamo kao na sledećoj slici (kliknite na sliku za uveličani prikaz).
Pokretanjem igre, videćemo da sada sve radi onako kako bi trebalo. Sada možemo da sačuvamo sve što smo do sada uradili. Ukoliko koristiteonline verziju Scratcha, ulogujte se, kako biste sačuvali svoj rad. A ako ste igru pravili u offline verziji Scratcha, kliknite na File, pa na Save As. U prozoru koji se otvori, odaberite mesto za vašu igru, i kliknite na Save.
Pridružite nam se i narednog ponedeljka, kada nastavljamo sa programiranjem naše igre. :)