Aktivnost Čarobnih 8

Napravi zabavnu igru s pitanjima u MakeCodeu!

  • Get started
  • MakeCode
  • Random
  • Variables
  • Games
Print lesson
  • Starosna dob 8+
  • 30 minute
  • MakeCode Editor

Uvod

Ovaj projekt uči korisnika kako napraviti igru s loptom Čarobnih 8 (Magic 8). Gotova igra omogućuje ti da postaviš pitanje micro:bitu, a on će odgovoriti nasumičnim odgovorom!

Vodič za nastavnike

Otvorite Otvoreni materijali za nastavnike

Aktivnost

7 koraka

Prvi korak

Ovaj program oživotvoruje loptu "magic 8". On traži od korisnika da postavi pitanje i daje nasumičan odgovor.

Prvi korak je programirati uređaj tako da traži od korisnika da postavi pitanje. Na zaslonu se treba prikazati 'string', a to se postiže pomoću bloka “show string” koji se može pronaći u bloku izbornika osnovnih naredbi.

Povuci blok 'show string'

Povuci blok “show string” na radnu površinu i postavi ga unutar bloka “on start”. Klikni na tekst “hello!” i promijeni ga na “Ask a question!”


basic.showString("Ask a question!")
          

Sljdeći korak je prikazati broj "8" na zaslonu za prikaz logotipa lopte "magic 8". Koraci se opet ponavljaju.

Povuci blok 'show number'

basic.showString("Ask a question!")
basic.showNumber(8)
          

Drugi korak

Sada kada program prikazuje “ask a question” i “8”, korisnik treba dobiti odgovor od micro:bita. To se postiže pomoću geste “Shake” kao inputa. U izborniku naredbi odaberi opciju “input” i odaberi blok “on shake” te ga povuci ga na radnu površinu.

Povuci blok 'on shake'

Kada je na radnoj površini, blok "on" se može namjestiti na niz pokreta poput nagiba ulijevo ili udesno. Za ovaj projekt odabran je pokret "protresti".

Klikni na strelicu za promjenu geste

input.onGesture(Gesture.Shake, function () {
  
})
          

Micro:bitov zaslon najprije treba biti ažuriran koristeći se blokom “Clear”. Time će se izbrisati sav sadržaj koji se trenutno prikazuje na micro:bitu bez obzira na to radi li se o rečenici “Ask a question” ili o broju “8”. Blok “clear screen” nalazi se u opciji "basic" pod opcijom "More" u izborniku naredbi,. Povuci blok na radnu površinu i postavi ga unutar bloka “on shake”.

Povuci blok 'clear screen'

input.onGesture(Gesture.Shake, function () {
    basic.clearScreen()
})
          

Treći korak

Sada kada je micro:bit programiran da reagira na pokret tresenja, sljedeći korak je kreirati varijablu koja će pohraniti nasumičan broj. Iz izbornika naredbi odaberi karticu “Variables” i klikni na “Make a Variable”.

Klikni na 'Make a variable' iz izbornika varijabli

Dijaloški okvir koji se pojavi potom će te tražiti da imenuješ svoju varijablu. U ovom primjeru ime je "Random"

Klikni na 'ok' za promjenu imena varijable

Kada se micro:bit protrese želimo da se nasumični broj generira i pohrani u varijablu “Random”. Da bi se to postiglo, dodaj blok “Set item to” na radnu površinu.

Povuci blok 'set item' na radnu površinu

Postavi blok “Set item to” ispod bloka “clear screen” i klikni na strelicu koja pokazuje prema dolje pored riječi "item". To će nam omogućiti da odaberemo varijablu nazvanu “Random” koja će odmah biti postavljena na "0" kada se micro:bit protrese.


let Random = 0
input.onGesture(Gesture.Shake, function () {
    basic.clearScreen()
    Random = 0
})
          

Četvrti korak

Sada kada je varijabla postavljena na "0" kada se micro:bit protrese, trebamo joj dodijeliti nasumičan broj. Iz izbornika naredbi odaberi opciju “Math” i odaberi “pick random 0 to 10”

Povuci blok 'pick random' iz sekcije 'Math'

Povuci blok “pick random” na radnu površinu i spoji ga s blokom “set random”. Nasumičan broj između 1 i 3 će nam dati 3 potrebne opcije, stoga promijeni broj “0” u “1” i “10” u “3”.


let Random = 0
input.onGesture(Gesture.Shake, function () {
    basic.clearScreen()
    Random = Math.randomRange(1, 3)
})
          

Peti korak

Sljedeći korak je dodavanje postupka odabira koristeći se izjavom IF koja se nalazi unutar opcije “Logic” u izborniku naredbi.

Povuci blok 'if' na radnu površinu

Povuci blok "IF" na radnu površinu i poveži ga tako da slijedi blok “random”. Dakle, ako se micro:bit protrese sve sa zaslona se briše, nasumični broj se generira i pohranjuje u varijablu “Random” − sada moramo postaviti što će se dogoditi za svaki od različitih uvjeta varijabli.


let Random = 0
input.onGesture(Gesture.Shake, function () {
    basic.clearScreen()
    Random = Math.randomRange(1, 3)
    if (true) {

    } else {

    }
})
          

Budući da postoje više od 2 uvjeta unutar ovog izbora, potrebna je još jedna izjava, “else if”. Klikni '+' na bloku 'if' za dodavanje dodatnih izjava 'else' i 'else if'.


let Random = 0
input.onGesture(Gesture.Shake, function () {
    basic.clearScreen()
    Random = Math.randomRange(1, 3)
    if (true) {
      
    } else if (false) {
      
    } else {
      
    }
})
          

Potom trebamo popuniti izjavu IF kako bismo omogućili odabir. Iz opcije “logic” u izborniku naredbi odaberi blok “equals”.

Povuci blok 'equals' na radnu površinu

Nakon što ga odabereš, povuci blok “equals” na blok izjave "IF".


let Random = 0
input.onGesture(Gesture.Shake, function () {
    basic.clearScreen()
    Random = Math.randomRange(1, 3)
    if (0 == 0) {
      
    } else if (false) {
      
    } else {
      
    }
})
          

Šesti korak

Kako bi se osiguralo da micro:bit temelji izjavu IF na nasumičnom broju, treba provjeriti vrijednost pohranjenu u varijabli “Random”. Varijabla “Random” može se odabrati iz opcije 'Variables' unutar izbornika naredbi.

Povuci varijablu 'random' iz izbornika varijabli

Blok varijable "Random" nalazi se u bloku "equals" za testiranje logičke izjave IF. Ako varijabla "Random" jednaka "3", odabrana je prva opcija. U protivnom je odabrana druga ili treća opcija.


let Random = 0
input.onGesture(Gesture.Shake, function () {
    basic.clearScreen()
    Random = Math.randomRange(1, 3)
    if (Random == 3) {
      
    } else if (false) {
      
    } else {
      
    }
})
          

Dakle, micro:bit se može prebacivati između triju opciju, klikni '+' u bloku 'if' tako da blok ima 1 izjavu 'if', 1 'else if', i 1 'else'. Tvoj kôd treba izgledati ovako:


let Random = 0
input.onGesture(Gesture.Shake, function () {
    basic.clearScreen()
    Random = Math.randomRange(1, 3)
    if (Random == 3) {
      
    } else if (Random == 2) {
      
    } else {
      
    }
})
          

Sedmi korak

Sada kada micro:bit ima 3 moguće opcije temeljene na nasumično generiranom broju, sljedeći korak je dati korisnicima odgovor na njihovo pitanje. To se postiže odabirom bloka “show string” iz izbornika osnovnih naredbi u izborniku naredbi i njegovim povlačenjem na radnu površinu.

Povuci blok 'show string' na radnu površinu

Za svaki od dijelova “then” u bloku “If” potreban je blok “show string”. Povuci 3 iz izbornika ili jednom klikni desno na blok na radnoj površini kako bi ga duplicirao. Stringovi bi trebali biti izmijenjeni za “yes”, “no” i “I don’t know”.


let Random = 0
input.onGesture(Gesture.Shake, function () {
    basic.clearScreen()
    Random = Math.randomRange(1, 3)
    if (Random == 3) {
        basic.showString("YES")
    } else if (Random == 2) {
        basic.showString("NO")
    } else {
        basic.showString("I DON'T KNOW")
    }
})
          

Nakon što je odgovor generiran, u posljednjem dijelu programa treba programirati micro:bit da ponovo prikazuje broj “8”. Potreban je još jedan blok "show string" koji se postavlja nakon izjave “If”.


let Random = 0
input.onGesture(Gesture.Shake, function () {
    basic.clearScreen()
    Random = Math.randomRange(1, 3)
    if (Random == 3) {
        basic.showString("YES")
    } else if (Random == 2) {
        basic.showString("NO")
    } else {
        basic.showString("I DON'T KNOW")
    }
    basic.showNumber(8)
})
          

Spremi projekt i preuzmi ga na micro:bit.


let Random = 0
input.onGesture(Gesture.Shake, function () {
    basic.clearScreen()
    Random = Math.randomRange(1, 3)
    if (Random == 3) {
        basic.showString("YES")
    } else if (Random == 2) {
        basic.showString("NO")
    } else {
        basic.showString("I DON'T KNOW")
    }
    basic.showNumber(8)
})
basic.showString("Ask a question!")
basic.showNumber(8)
          

Izazov

Pokušaj dodati sljedeću funkcionalnost:

  • Dodavanje dodatnih odgovora
  • Dodaj animaciju koja će uslijediti nakon pokreta tresenja

Nauči više

Aktivnost 'Trepereće srce' služi se LED diodama za prikaz slika na drugom micro:bitu pomoću "radijskih" blokova.

Selecting this opens external content from our support system, which adheres to their privacy policy.