Croatian

2016 / Robotika / Radionica 6 i Domaća zadaća 5

Na radionicama sam spomenuo da bi domaća zadaća mogla biti neki zadatak sa puno likova koji nekako komuniciraju.

Nakon malo razmišljanja evo zadajem ovaj zadatak izazov. Tko ga prvi riješi i pošalje mi zadaću dobiva nagradu! :)

  1. Ima 4 lika: panda, jabuka, banana i naranča. Panda je na jednoj strani ekrana a sva hrana na drugoj strani.
  2. Panda mora zamisliti jedan broj od 1 do 3 i reći „Mislim o jednom voću. Probaj pogoditi kojem? Klikni mišem na voće koje misliš da sam zamislio!“
  3. Jabuka je broj 1, Banane su broj 2 a naranča je broj 3.
  4. Kada korisnik klikne na neko voće tada to voće mora javiti (bez ispisivanja teksta) pandi da se na njega kliknulo.
  5. Panda kada čuje na koga je korisnik kliknuo treba provjeriti da li je to ono voće koje je zamislio. Ako to nije zamišljeno voće tada mora reći „Ne, krivo! Probaj ponovo!“. Ako je to ispravno voće tada mora reći „Bravo!“ i narediti tom voću da dođe do njega.
  6. Voće kojemu je Panda rekao da dođe mora se uputiti prema Pandi i onda sakriti.
  7. Nakon što je panda pogodio broj svaki klik na voće tjera pandu da kaže „Hej igra je gotova!“
  • Pomoć

    1. Odredite koliko različitih poruka vam treba i tko šalje koju poruku – probajte si to nacrtati likove na običnom papiru i onda ih povežite sa strelicama gdje svaka strelica predstavlja neku poruku i vrh pokazuje prema kome ide ta poruka. Svakoj poruci dajte neko ime.
    2. Rješavajte korak po korak i neka vam pokretanje programa ne bude problem iako nije gotov
    3. Osigurajte se da vam se na početku svi likovi smjeste tamo gdje želite i da budu vidljivi ili nevidljivi ovisno o tome kako želite da priča započne.
  • Rješenje

    E... nema još! Probaj napraviti nešto i pošalji mi rješenje mailom na Ova e-mail adresa je zaštićena od spambota. Potrebno je omogućiti JavaScript da je vidite.

 

2016 / Robotika / malo drukčiji programi

Program 1 - panda priča sa voćem

Program možete preuzeti ovdje.

  • Kratak opis

    Ovaj program radi sa tri lika: pandom, jabukom i bananama. Likovi međusobno komuniciraju i glume jedan mali igrokaz koji će pokazati što to znači komuniciranje porukama i rad sa više likova (objekata). 

  • Priča o programu

    Kada se otvori program, u okviru sa likovima mogu se očiti tri lika: pandu, jabuku i banane.  likovi

    Lijevim klikom miša na nekog od likova taj se lik odabire. Na liku se pojavljuje malo "i" a sa desne strane se pojavljuje program (programi) vezan za tog lika. Probajte odabirati likove i gledajte koji se sve programi nalaze na kojem liku. Malo "i" vam omogućuje da preimenujete lika, da ga prikažete ili sakrijete na papiru i da mu postavite još neke osobine.

    Do sada smo radili programe koji su se pokretali na klik miša međutim to je samo jedan od "događaja" koji mogu pokrenuti program. U odjeljku "događaji" možemo vidjeti: dogadjaji

    Svaki od ponuđenih modula predstavljaju način kako se može pokrenuti program. Iza svakog od tih modula se može nalaziti neovisan program koji je zadužen samo za taj događaj - tako možemo imati puno različitih programa za jednog lika: jedan program koji će reagirati ako se pritisne razmaknica, drugi koji će se pokrenuti ako se na njega klikne mišem, treći ako je dobio poruku itd.

    Cilj ovog našeg programa jest da likovi reagiraju na poruke.

    Što su to poruke?

    Poruke su način kako likovi međusobno "pričaju". Svaki lik može poslati neku poruku ili primiti neku poruku i pritom se sa porukama ponašaju kao i u stvarnosti kada netko u javnosti vikne nešto - svi likovi čuju poruke. Upravo zato se programi rade tako da reagiraju samo na željenu poruku.

    U programu sam stvorio nekoliko poruka: postoji poruka od pande prema jabuci, poruka koju jabuka vikne a na koju reagiraju banane, poruka koju banane šalju a na koju će panda reagirati i na kraju poruka koju šanda šalje a na koju će reagirati i jabuke i banane.

    I sada ne preostaje ništa drugo nego da se pokrene glavni program na pandi i pogleda što nam sve ovi likovi govore.

    Probajte odabirom pojedinog lika pratiti kako poruke idu i pogledajte na koje poruke pojedini likovi reagiraju. 

    Nadam se da vam se primjer sviđa a ukoliko imate kakvo pitanje - slobodno mi pošaljite poruku.

 

Program 2 - loptica odbijačica

Program možete preuzeti ovdje.

  • Kratak opis

    Loptica, kada se na nju klikne mišem, počineskakutati po papiru i odbijati se od rubova ali i od pande. Probajte premještati pandu i pogledajte kako se lopta ponaša (na pandu kliknite i držite lijevu tipku miša, pomaknite pandu na novu poziciju i pustite tipku miša).

  • Priča o programu

    Kada otvorite program, opaziti će te da postoje dva lika: panda i naranča (koju smo nazvali lopta). Ako odaberete pandu tada će te sigurno primijetiti da na tom liku NEMA programa. Panda nam je ovdje koristan samo kao smetalo od kojega će se lopta odbijati.

    Odaberete li pak loptu vidjeti će te da je tu neki program koji se pokreće klikom miša na loptu i još nešto ispod toga nazvano "udari loptu":

    odbijacica potprogram

    Ajmo sada nešto reći o ovome drugom: u mBlock programu ovo se zove blok (u drugim programskim jezicima se ovo naziva i potprogramom). Blok predstavlja niz operacija koje čine cjelinu a koje želimo više puta koristiti. Ako se prisjetite svih dosadašnjih zadaća tada se tamo sigurno može pronaći neki primjer koji možemo napraviti kao blok - recimo crtanje pravokutnika - napravimo blok koji se naziva pravokutnik i u njemu stavimo onu petlju i crtanje stranica i okretanje - sve što je potrebno da bi se nacrtao pravokutnik. U ovom primjeru imamo blok koji se zove "udari_loptu". Nama on služi da se odredi neka brzina i neki smjer kretanja naše lopte.

    Blokove stvaramo u odjeljku "Podatci i blokovi" (narančasta boja). Kada ga stvorimo tada nam se u prostoru za programiranje pojavi samo plavi dio sa slike i na njega onda nalijepimo sve naredbe koje želimo da se izvrše u tom bloku. Kada stvorite blok tada se u narančastom odjeljku "Podatci i blokovi" pored varijabli pojavljuje i operacija nazvana koa i blok a koju možemo umetati u naš program.

    Evo sada i programa:

    odbijacica glavni

    Kao što možete primijetiti, naš blok se poziva dva puta.

    Što radi program? Pretpostavljam da ste već shvatili no evo i mojeg opisa rada: ako je netko kliknuo na lopticu tada se program pokreće. U početku on pozove blok "udari_loptu" gdje se postave tri varijable. Brzina je varijabla koja će nam odrediti po kojoj će se brzini lopta kretati. Što je veći broj to je veća i brzina. PravacH i PravacV su varijable koje se slučajno napune sa brojevima -1, 0 ili 1. Ovisno o tome koji je broj odabran - lopta se kreće u nekom pravcu. Npr. ako je PravacH=0 a PravacV=-1 tada će se lopta kretati samo vertikalno i to prema dolje (jer je Y pozitivan prema gore a negativan prema dolje). Ako je recimo PravacH=-1 a PravacV=1 tada će se lopta kretati horizontalno u lijevo a vertikalno prema gore a to znaći da će ići u koso i to u pravcu gore-lijevo.

    Jednom kada smo odredili brzinu i pravac tada samo trebamo pokrenuti loptu i ispitati da li lopta nešto dira.

    U stvarnosti naše "pokretanje" lopte znači da ju trebamo premjestiti na neku drugu točku. To radimo koristeći naredbu "idi na" kojoj dajemo nove X i Y koordinate.

    Nova X koordinata je stara X koordinata uvećana za (pravacH) * (brzina). Sada vam je jasno zašto se lopta ne kreće po X ako je pravacH=0? Zato što će pravacH*brzina uvijek biti 0 pa se X pozicija nikada neće promijeniti. Ista je priča i sa Y koordinatom.

    Nakon što smo pomaknuli loptu na novu poziciju, ispitamo da li dira rubove. Ako dira gornji ili gornji rub tada pravacV pomnožimo sa -1 i time mijenjamo smjer jer je 1 * -1 = -1 i isto tako -1 * -1 = 1 (to je tako u matematici). Što god da množimo sa 0 je uvijek 0 pa nam tu množenje ništa ne mijenja. Ako dira lijevi ili desni rub ponovo na isti način mijenjamo smjer po horizontali - pravacH.

    Zadnje što provjeravamo je da li smo dotaknuli sa loptom pandu pa ako smo dotaknuli pandu tada ponovo koristimo "udari_loptu" gdje se smjer i brzina nasumice ponovo određuju i gdje lopta odlazi od pande u nekom totalno nepredviđenom smjeru.

    Još kao zanimljivost možete primijetiti da su varijable vidljive samo za loptu jer sam kod stvaranja varijabli rekao da želim da budu vidljive samo za naranču. Da sam rekao da želim da budu vidljive za sve likove tada bi svi likovi vidjeli i mogli mijenjati sadržaj varijabli. 

 

2016 / Robotika / Radionica 5 i Domaća zadaća 4

Na radionici su djeca dobila novi zadatak za domaću zadaću a on glasi:

 

Napravi program za pandu koji će pitati korisnika dva pitanja:

  • Unesi dužinu prve stranice 
  • Unesi dužinu druge stranice

Nakon svakog pitanja provjeriti će se da li je uneseni broj koji mora biti između 1 i 400 i taj broj spremiti će se u varijablu. Panda će na osnovu ta dva broja nacrtati pravokutnik koji počinje od 0,0 i kojemu su stranice duge onoliko koliko je korisnik unio.Panda će izračunati opseg i površinu pravokutnika, otići u gornji lijevi kut papira i reći: "Opseg pravokutnika je (broj) točaka a površina je (broj2) točaka kvadratnih."

(broj) predstavlja izračunati opseg. Opseg se računa kao 2 x (dužina1 + dužina2)
(broj2) predstavlja izračunatu površinu. Površina se računa kao dužina1 * dužina2

Dodatni izazov:

Kada se iscrtava pravokutnik neka duža stranica uvijek bude ona koja je polegnuta (vodoravna).

  • Pomoć

    Kao prvo si napravite 4 varijable: dužina, širina, opseg i površina. Neka se za početak sve vide na ekranu.

    U prvom koraku zatražite od korisnika da unese dužinu i širinu i spremite ih u istoimene varijable. 

    Nakon toga pomoću formule izračunajte opseg i površinu i spremite ih u te varijable --> opseg=2 * (dužina+širina)     ,      površina = dužina*širina

    Pokrenite program i probajte unijeti neke testne vrijednosti i provjerite da je sve dobro izračunato tako da vidite što piše u varijablama na ekranu (uzmite neke lake vrijednosti npr. 10 za širinu i 20 za dužinu, opseg bi tada morao ispasti 60 a površina – 200. Ako nije tada provjerite formule. I obavezno rezultat pazite da niste spremili u krive varijable.

    Ako je sve u redu onda nadodajte u program iscrtavanje pravokutnika. Pokrenite program i vidite da li se sve iscrtava kako treba.

    Ako je i to u redu tada napravite još jednu varijablu koja se recimo zove poruka. U nju pomoću operacije spajanja teksta ubacite nešto kao:

    SPAJAJ ( „Opseg iznosi:“, SPAJAJ ( opseg, SPAJAJ („a površina iznosi:“, površina)))

    Ovo gore je kako bi spajanja trebala biti ubačena jedno u drugo (kao da pišete formulu a+b+c gdje trebate b+c ubaciti u a+...

    Evo kada sastavite taj tekst tada ga panda samo mora ispisati :)

  • Rješenje

    Program za mBlock možete preuzeti ovdje.

    Na donjoj slici nalazi se pojednostavljeno rješenje koje ne sadrži provjere ispravnosti unosa brojeva i druge već poznate stvari. Dodatno, program za mBlock pokazuje i kako provjeravati granice unosa brojeva tako da se ne uspoređuje sa brojem već sa sadržajem neke varijable - to je korisno kada imamo više mjesta gdje se treba koristiti ta vrijednost jer onda, ako se promjene granice, trebamo samo izmijeniti varijablu.

    2016 robotika DZ4 racunamo pravokutnik

2016 / Robotika / Radionica 4 i Domaća zadaća 3

Danas je na red došao novi zadatak koji će nas zaokupiti možda i nekoliko sljedećih radionica:

Napraviti program za robota koji će se ponašati na sljedeći način:

  • program se pokreće nakon pritiska na tipkalo na robotu. Dok tipka nije pritisnuta, LED svjetla su na robotu ugašena. Kada se tipka pritisne tada se uključe oba LED svjetla u plavoj boji.
  • ako je na daljinskom pritisnuto naprijed onda robot ide naprijed. Ukoliko pri kretanju naiđe na prepreku koja je bliže od 25 tada robot mora stati i zapištati dva puta
  • ako se na daljinskom pritisne tipka za nazad tada se robot mora okrenuti za 180 stupnjeva (otprilike). Ako se robot kretao prije okretanja tada se nakon okretanja mora nastaviti kretati.
  • ako je pritisnuta tipka lijevo na daljinskom tada se robot okreće u lijevo sve dok se ne otpusti tipka. Kada se tipka otpusti robot treba nastaviti naprijed ako se prije okretanja kretao naprijed.
  • ako je pritisnuta tipka desno na daljinskom tada se robot okreće u desno sve dok se ne otpusti tipka. Kada se tipka otpusti robot treba nastaviti naprijed ako se prije okretanja kretao naprijed.
  • ako je pritisnuta tipka A na daljinskom tada robot mora stati
  • svaki put kada program počne raditi nešto na pritisak tipke robot mora jednom zapištati

  

Domaća zadaća ima dva zadatka:

Zadatak 1

Napravi program u kojemu će panda slijediti miša. Dok se kreće za mišem panda mora izmjenjivati svoje dvije slike te davati dojam kao da hoda. Ukoliko panda doše na lokaciju gdje je miš tada mora reći "ulovio sam te" no čim se strelica miša pokrene ta poruka treba biti uklonjena.

  • Pomoć

    Program sa kojim panda slijedi miša smo napravili na prošloj domaćoj zadaći. Najjednostavnije rješenje da bi panda slijedio miša a da se vidi njegovo kretanje je:

    2016 robotika slijedi misa

    Ovo rješenje ima tu manu da se panda uvijek pokreće na onu poziciju miša koju je ugledao i dok ne stigne na to mjesto - panda ne gleda gdje je miš. Što se duže kreće to je vidljivije da panda ne reagira na pokrete miša dok ne stigne na mjesto gdje ga je ugledao prije pokretanja (povećajte vrijednost u "pomoči" na recimo 2 sekunde i probajte pomicati miša dok se panda kreće.

    Da bi ispravno riješili zadatak moramo omogućiti da panda mijenja sliku nakon svakog koraka a to znači da panda ne može ići na poziciju miša jer do te pozicije može biti puno koraka a mi ne možemo dok panda ne stigne - promjeniti pandi sliku. Zato trebamo pomicati pandu korak po korak prema mišu i pri svakom pomicanju za jedan korak moramo promijeniti pandinu sliku na onu koja nije tada postavljena. Izmjenjujući slikice dok se panda kreće dobivamo dojam da panda hoda. Jedan pandin korak ne mora biti veličine 1. Što je korak veći to će se panda brže kretati.

  • Prijedlog rješenja

    U beskonačnoj petlji neka panda prvo pogleda gdje je miš. Neka onda izračuna koja je udaljenost po X i po Y do miša kao i smjer gdje treba krenuti (predznak udaljenosti). Ukoliko je udaljenost po X ili po Y manja od koraka tada neka korak bude udaljenost (da se osiguramo da će panda uloviti miša a ne preskočiti ga). Kada se zna u kojem smjeru se treba kretati tada se treba izračunati nova pandina pozicija tako da se sadašnja pandina pozicija po X i po Y umanji ili uveća za dužinu koraka (ovisno o tome u kojem pravcu panda mora ići) te neka se panda uputi na tu novu poziciju bekom brzinom od recimo 0.1 sek.  Nakon što je panda napravio korak neka izmijeni svoju sliku na drugu. Da bi zadatak uspješno bio rješen treba se dakle pamtiti koja je slika pande aktivna, koji je predznak po X i Y za udaljenost od pande do miša i koji je korak po X i Y.

  • Rješenje

    Program za mBlock možete preuzeti ovdje.

    Ovako on izgleda:

    2016 robotika DZ3 / hodaj za misem

 

Zadatak 2

Napravi program kod kojega će panda nacrtati dva pravokutnika dužine stranice 100. Prvi pravokutnik mora biti smješten gore lijevo na papiru a drugi pravokutnik dole lijevo. Nakon crtanja panda se mora vratiti na sredinu ekrana i čekati. Kada korisnik sa mišem UĐE u gornji okvir tada mora reći „Evo te - GORE si!“ a kada sa mišem uđe u DONJI okvir tada mora reći „Vidim te – DOLJE si!“. Ako se miš ne nalazi ni u donjem ni u gornjem okviru tada panda mora „misliti“: „UFF ne vidim te ako nisi u kučicama koje sam nacrtao!“. Za one koji žele probati više: ako je miš izvan kučica ali se NE mrda barem 10 sekundi tada panda mora REĆI:  „Hej ne ljenčari! Mrdni guzu!“

  • Pomoć

    Već smo u prethodnim zadacima crtali pravokutnike pa vam kvadrat (pravokutnik kojemu su sve stranice iste dužine) ne bi trebao biti problem. Ovdje je glavna stvar shvatiti da središte ekrana predstavlja poziciju 0,0 Sve što je od te pozicije lijevo (X) je manje od nule a sve što je desno je veće od nule. Sve što je od te pozicije iznad (Y) je veće od nule a sve što je ispod je manje od nule.

    Ako pokušate micati miša u prozoru od pande, tada ćete u donjem desnom dijelu tog prozora vidjeti kako se mijenjaju X i Y brojke - te brojke predstavljaju poziciju miša. Probajte odrediti gdje bi otprilike trebao početi prvi kvadrat a gdje bi trebao početi drugi kvadrat. Probajte napraviti tako da vam kvadrati budu za nekih 10 točaka udaljeni od rubova.  

    Ako ste sposobni nacrtati kvadrat tada znate i koji su njegovi najmanji X i najveći X kao i najmanji Y i najveći Y. Kada panda gleda gdje je miš tada je potrebno da ispita da li mu se X pozicija nalazi između najmanje i najveće X pozicije kvadrata i Y pozicija miša mora biti unutar kvadrata po Y koordinati.

    Ovisno o tome u kojem je kvadratu - ispišite poruku.

  • Prijedlog rješenja

    Postoji jednostavnije i kompliciranije rješenje. Ja sam stvar riješio na kompliciraniji način i on ima svoje prednosti no stvar se može pojednostavniti.

    Dakle kao prvo sa mišem izračunajte gdje bi svaki kvadrat trebao započeti. Dužine stranica znate pa onda neka panda ode na početne pozicije i spusti pero pa nacrta prvo jedan pa onda drugi kvadrat (uz dizanje pera, premještanje i naravno ponovno sputanje pera). 

    Kada ste nacrtali sve vratite pandu na 0,0 i započnite beskonačnu petlju u kojoj prvo provjerite da li se x koordinata miša nalazi unutar prvog kvadrata po X osi a onda i da li se isto tako Y koordinata nalazi unutar prvog kvadrata po Y osi. Ako je to istina tada ispišite poruku a ako nije tada ispitajte da li se miš nalazi unuta drugog kvadrata. Ako je i to istina tada ispišite poruku a ako ni to nije točno tada ispišite treću poruku. :) Pogledajte moje rješenje - možda bude jasnije ;)

  • Rješenje

     Već sam spomenuo da sam ja malo kompliciranije rješenje. Kod mene panda ne zna unaprijed gdje mu je gornji i donji rub već ga ja potjeram u lijevo dok ne dođe do ruba pa onda zapamtim X koordinatu u varijablu lijevo. Onda ga potjeram prema gore do ruba i zapamtim Y poziciju u varijablu gore. U ovom trenutku znam gdje mogu nacrtati prvi kvadrat pa ga i nacrtam. nakon toga potjeram pandu prema dolje i kada dođe do donjeg ruba, tada Y poziciju zapamtim u varijablu dolje te nacrtam i drugi kvadrat.

    Dalje je sve prilično slično jednostavnijem rješenju s time da su moja lijeva i desna kao i gornja i donja granica kvadrata - izračunate na osnovu zapamćenih varijabli lijevo, gore i dolje. Znači malo više matematike koristim no rezultat je isti. Moje rješenje bi bilo bolje kada bi se pandu bacilo na veliki papir kod kojega se ne zna veličina i onda bi moj panda uvijek nacrtao pravokutnike blizu gornjeg i donjeg ruba i uvijek uz lijevu stranu papira.

    Program za mBlock možete preuzeti ovdje.

    Ovako on izgleda:

    2016 robotika DZ3 panda mis u kucicama



europe flag

Izradu ove mrežne stranice sufinancirala je Europska unija iz Europskog socijalnog fonda.

Top
Za što bolje korisničko iskustvo, ova internet stranica pohranjuje vaše kolačiće (cookies). Pritiskom gumba "Prihvaćam kolačiće" slažete se sa korištenjem kolačića. More details…