11 velj Igra: Lupi krticu
Sada kad ste upoznali dio mogućnosti micro:bita, vrijeme je za jedan složeniji program.
Izradite igricu Lupi krticu koja će na lijevoj ili desnoj strani ekrana micro:bita prikazivati sličicu koja predstavlja krtičnjak. Igrač mora pritisnuti tipkalo na onoj strani na kojoj se prikaže krtičnjak. Svakim ispravnim pritiskom na tipkalo A ili B igrač skuplja bodove i igra se nastavlja, a ako pogriješi, igra je gotova. Igrač u početku ima 1 sekundu za pritisnuti pravo tipkalo, a kako igra odmiče, vrijeme se smanjuje dok ne dođe do 100 milisekundi. Ako igrač ne pritisne tipkalo u zadanom vremenu, igra je gotova. Nakon završetka igre, na ekranu se prikazuje da je igra gotova i osvojeni broj bodova. Igra počinje odmah po uključenju micro:bita, tj sve naredbe se nalaze unutar on start bloka.
Program izradite u MakeCode editoru koji se nalazi ovdje.
1. korak
Igra započinje pokretanjem micro:bita pa će se cijeli program nalaziti unutar bloka on start. U programu će se koristiti nekoliko varijabli koje trebate kreirati. Varijablu kreirate unutar kategorije Variables opcijom Make a Variable. Kreirajte varijablu vrijeme i postavite je na 1000 naredbom set vrijeme to iz kategorije Variables. To je varijabla koja vam govori koliko vremena u milisekundama ima igrač da pritisne pravi gumb. Igru ćete napraviti s vremenom koje se smanjuje dok ne dođe do 100 ms. Naredbom show string iz kategorije Basic na ekranu prikažete 3-2-1 kako bi se igrač stigao pripremiti. Kreirajte varijablu IgraTraje postavite je na true (kategorija Logic). Ova varijabla označava je li igra traje (true) ili je završila (false).
2. korak
Ostatak igre nalazi se unutar petlje while do iz kategorije Loops koja provjerava vrijednost varijable IgraTraje. Kreirajte varijablu MjestoKrtice i naredbom pick random iz kategorije Math postavite da poprima slučajno odabranu vrijednost 0 ili 1. Ona označava hoće li se krtičnjak pojaviti na desnoj ili lijevoj strani. Napravite varijablu GumbStisnut kojom će se provjeravati je li pritisnuto tipkalo na micro:bitu. Postavite vrijednost te varijable na false (kategorija Logic) što označava da tipkalo nije pritisnuto. Dodajte pauzu od 300ms naredbom pause iz kategorije Basic između svakog pojavljivanja krtičnjaka nakon točnog pogotka. Sada ćete pomoću dvije if then naredbe iz kategorija Logic, ovisno o tome je li varijabla poprimila slučajan broj 0 ili 1, na ekranu micro:bita prikazati krtičnjak na lijevoj ili desnoj strani. Uvjet je li vrijednost varijable MjestoKrtice 0 ili 1 provjeravate pomoću naredbe usporedbe iz kategorije Logic. Iz kategorije Basic uzmite naredbu show leds i u prvom if then bloku nacrtajte krtičnjak s lijeve strane, a u drugom if then bloku, gdje je vrijednost varijable MjestoKrtice jednaka 1, s desne strane.
3. korak
U igrici Lupi krticu bitno je i vrijeme koje je igraču potrebno da pritisne tipkalo A ili B. Kako biste mogli provjeriti je li igrač prespor, čime igra završava, potrebno je pamtiti koliko je vremena prošlo otkad se na ekranu pojavila slika krtičnjaka. Zato kreirajte varijablu Početak u koju ćete spremiti trenutak kada je prikazan krtičnjak i postavite ju na vrijednost running time (ms). Naredba running time (ms) označava koliko je vremena prošlo u milisekundama od trenutka paljenja micro:bita. Nalazi se u kategoriji Input u dijelu more. Sav ostatak koda ponavlja se dok igrač ne pritisne tipkalo A ili B. Iz kategorije Loops uzmite petlju while do. Naredbe unutar te petlje trebaju se izvršavati dokle god nije pritisnuto tipkalo pa iz kategorije Logic naredbom usporedbe provjerite je li vrijednost varijable GumbStisnut jednaka false. Sada provjerite je li igraču isteklo vrijeme za razmišljanje. Uzmite if then naredbu i kao uvjet stavite naredbu usporedbe koja provjerava je li razlika proteklog vremena i vrijednosti varijable Početak veća od vrijednosti varijable Vrijeme. Ako je uvjet ispunjen, znači da je vrijeme isteklo i da je igra gotova. Naredbom game over iz kategorije Game u dijelu Advanced na ekranu micro:bita ispisat će se da je igra gotova i broj osvojenih bodova.
4. korak
Sada je potrebno provjeriti je li igrač pogodio krtičnjak ili ne. Prvo ćete napraviti slučaj kada je krtičnjak na lijevoj strani. Postoje dvije situacije – igrač je pogodio ili nije, pa ćete koristiti blok if then else. Potrebno je provjeriti dva uvjeta – je li krtičnjak na lijevoj strani (MjestoKrtice = 0) i je li pritisnuto tipkalo A (button A is pressed). Koristite naredbu logičkog I iz kategorije Logic što označava da oba uvjeta moraju biti istinita kako bi se izvršile naredbe u if dijelu bloka, inače se izvršavaju naredbe iz else dijela. Ako je vrijednost varijable MjestoKrtice jendaka 0 i pritisnuto je tipkalo A, znači da je igrač pogodio. U tom slučaju potrebno je vrijednost varijable GumbStisnut postaviti na true, prikazati sličicu kvačice naredbom show icon kao znak uspješnog pogotka i povećati broj osvojenih bodova za 1 naredbom change score by 1 iz kategorije Game. Dodajte i jedan if then blok kojim će se smanjiti vrijeme za razmišljanje igrača. U uvjetu neka se provjerava je li vrijednost varijable Vrijeme veća od 100 jer ne želite da vrijeme za razmišljanje bude manje od 100 ms. Ako je uvjet ispunjen, naredbom change Vrijeme by iz kategorije Variables, smanjite vrijednost za 20.
5. korak
U else dijelu if then else naredbe provjerava se slučaj kada je krtičnjak na lijevoj strani, a igrač je pritisnuo tipkalo B pa nije pogodio. Potrebno je provjeriti oba uvjeta pa uzmite naredbu if then i naredbom logičkog I provjerite je li vrijednost varijable MjestoKrtice jednaka 0 i je li igrač pritisnuo tipkalo B. U slučaju da je uvjet ispunjen, postavite varijablu GumbStisnut na true i opet upotrijebite naredbu game over, ovaj put zbog pritiska na pogrešno tipkalo.
6. korak
Drugi slučaj – kada je krtičnjak na desnoj strani, napravit ćete modifikacijom prvog slučaja. Prvo kopirajte cijeli if then else blok opcijom Duplicate i napravite nekoliko izmjena. Prvo neka se provjerava slučaj kada je igrač pogodio pa kao prvi uvjet stavite provjeru je li krtičnjak na desnoj strani (MjestoKrtice = 1) i je li pritisnuto tipkalo B (button B is pressed). U else dijelu if then else naredbe provjerava se slučaj kada je krtičnjak na desnoj strani, a igrač je pritisnuo tipkalo A pa nije pogodio. U uvjetu izmijenite da se provjerava je li krtičnjak na desnoj strani (MjestoKrtice = 1) i je li igrač pritisnuo tipkalo A (button A is pressed).
Prebacite program na miro:bit i zaigrajte igru Lupi krticu!
U slučaju da koristite novu verziju micro:bita koji ima mogućnost postavljanja izvoda P0, P1 i P2 na kapacitativni dodir (kao logotip), izmijenite prethodni program tako da se umjesto na pritisak tipki A i B koristi pritisak na logotip i izvod P2. Neka se sličice uskličnika prikazuju vodoravno kako bi se igra Lupi krticu mogla igrati naopako – s micro:bitom okrenutim za 90 stupnjeva.