Akcelerometar – igra ‘Kolačić’

Izradite igricu Kolačić u kojoj je cilj balansirati micro:bit držeći ga što ravnije, kako sprite koji predstavlja kolačić ne bi ispao s pladnja – micro:bita. Ako kolačić dođe do ruba ekrana, ispao je s pladnja i igra je gotova. Koristite ugrađeni akcelerometar kako biste detektirali naginjanja micro:bita po x i y osi. Igra započinje protresanjem micro:bita.

Program izradite u MakeCode editoru koji se nalazi ovdje.

Upute za izradu programa

1. korak

Želite da igra započne protresanjem micro:bita pa iz kategorije Input uzmite on shake blok unutar kojeg će se nalaziti cijeli program. Na početku ispišite 3-2-1-Go! naredbom show string kako biste igraču dali vremena da se skoncentrira. Kreirajte tri varijable opcijom Make a Variable u kategoriji Variables: kolacic, KolacicNaTacni i Tolerancija. Naredbom set kolacic to iz kategorije Variables varijabli kolacic dodjelite točkicu na sredini ekrana naredbom create sprite at x:2 y:2 koju možete naći u kategoriji Game u dijelu Advanced. Varijablom KolacicNaTacni provjeravate je li kolačić još uvijek na tacni pa ju postavite na true (kategorija Logic). Varijablom Tolerancija određujete težinu igre. Što je vrijednost varijable Tolerancija manja, to kolačić klizi s tacne pri manjem nagibu. U ovom primjeru Tolerancija je postavljena na 40.

2. korak

Ostatak igre nalazi se u petlji while do iz kategorije Loops koja provjerava vrijednost varijable KolacicNaTacni. Igra se odvija sve dok kolačić ne padne s tacne, to jest, dokle god je vrijednost varijable KolacicNaTacni jednaka true. Sada ćete redom provjeravati je li micro:bit nagnut u nekom smjeru i pomicati kolačić u tom smjeru sve dok ne ispadne. Prvo ide provjera u pozitivnom smjeru po osi x (micro:bit je nagnut na desnu stranu). Iz kategorije Logic uzmite naredbu if then. Provjera se izvršava u uvjetu if dijela naredbom usporedbe iz kategorije Logic gdje se provjerava je li akceleracija po osi x veća od zadane vrijednosti varijable Tolerancija, što je u ovom primjeru 40. Naredba acceleration (mg) x nalazi se u kategoriji Input.

3. korak

Ako je micro:bit nagnut na desnu stranu potrebno je provjeriti gdje se nalazi kolačić. Ako je tacna nagnuta u desno i kolačić je već na desnom rubu, kolačić pada s tacne, inače se pomiče jedno mjesto u desno. Uzmite naredbu if then else iz kategorije Logic. Uvjet se provjerava uspoređivanjem x koordinate naredbom sprite x iz kategorije Game s brojem 4 (koordinate idu od 0 do 4). Naziv sprite promijenite u kolacic. Ako je uvjet zadovoljen, u if dijelu naredbe, vrijednost varijable KolacicNaTacni postavite na false jer je kolačić pao s tacne. U else dijelu naredbe, ako je tacna nagnuta u desno, a kolačić još nije na desnom rubu, pomaknite ga jedno mjesto u desno naredbom kolacic change x by iz kategorije Game. Dodajte pauzu od 200 ms naredbom pause (ms) iz kategorije Basic, jer inače igrač neće imati vremena reagirati. Povećanjem pauze možete olakšati igru.

4. korak

Kopirajte if then blok i u njemu sad radite provjeru u negativnom smjeru po osi x (micro:bit je nagnut na lijevu stranu). U uvjetu if then naredbe potrebno je promijeniti znak usporedbe kako bi se provjerilo je li akceleracija po osi x manja od zadane vrijednosti varijable Tolerancija pomnožene s -1 koristeći naredbu množenja iz kategorije Math.  Ako je tacna nagnuta u lijevo i kolačić je već na lijevom rubu (kolacic x = 0), kolačić pada s tacne (set KolaicNaTacni to false), inače se pomiče jedno mjesto u lijevo (kolacic change x by -1).

5. korak

Još jednom kopirajte prvi if then blok i radite provjeru u pozitivnom smjeru po osi y (micro:bit je nagnut prema naprijed). U uvjetu se sada provjerava je li acceleration (mg) y veća od vrijednosti varijable Tolerancija. Ako je tacna nagnuta prema naprijed i kolačić je već na rubu (kolacic y = 0), kolačić pada s tacne (set KolaicNaTacni to false), inače se pomiče jedno mjesto prema naprijed  (kolacic change y by 1).

6. korak

Kopirajte drugi if then blok kojim se provjeravao negativan smjer po osi x i izmijenite ga da se radi provjera u negativnom smjeru po osi y (micro:bit je nagnut prema nazad). U uvjetu se sada provjerava je li acceleration (mg) y manja od vrijednosti varijable Tolerancija pomnožene s -1. Ako je tacna nagnuta prema nazad i kolačić je već na rubu (kolacic y = 0), kolačić pada s tacne (set KolaicNaTacni to false), inaće se pomiče jedno mjesto unazad (kolacic change y by -1).

7. korak

Kada kolačić dođe do ruba, igra je gotova. U tom slučaju vrijednost varijable KolaicNaTacni je false pa program izlazi iz petlje while do. Nakon while do petlje postavite naredbu game over iz kategorije Game kako bi se na ekranu micro:bita prikazala animacija i ispisalo da je igra gotova. Prebacite program  na micro:bit i isprobajte igru. Po želji postavite stazu kojom će igrači nositi kolačić, pobjednik je onaj tko ga prvi donese do cilja. Probajte napraviti i da u igru dodate bodovanje.

Program za micro:bit v2

U slučaju da koristite novu verziju micro:bita koji sadrži ugrađeni zvučnik ili na izvornoj verziji micro:bita imate spojen vanjski zvučnik, izmijenite prethodni program tako da dodate pozadinski zvuk i zvuk koji označava kraj igre.

Naredba start melody entertainer repeating once nalazi se u Music kategoriji. Postavite ju prije while petlje kako bi krenula svirati na početku igre. Umjesto once opcije u naredbi, odaberite opciju forever in background kako bi melodija svirala tijekom trajanja igra.

Kada igra završi, odnosno nakon izlaska iz while petlje, zaustavite pozadinsku melodiju naredbom stop melody background iz kategorije Music te ispod nje stavite naredbu start melody wawawawaa repeating once kako biste označili kraj igre.