Lese fra lister

Som i forrige kodeeksempel, der roboten stiller spørsmål og gir respons handler det om å få roboten til å stille spørsmål muntlig, presentere svaralternativer via skjermen i munnen og gi respons på svar. Denne gangen bruker vi lister, noe som gjør selve koden noe mer kompleks. Til gjengjeld kan vi lage noe spørsmålssett og føye til spørsmål kun ved å importere nye lister. Detblir også langt enklere å stille tilfeldige spørsmål.

I dette eksemplet har vi lagt koden på ulike sprites i Scratch. Det rydder litt i det visuelle når vi jobber med kodingen samtidig som det gir muligheter for å lage et visuelt grensesnitt (det er imidlertid ikke vektlagt her).

I dette eksemplet har vi lagt koden på ulike sprites i Scratch. Det rydder litt i det visuelle når vi jobber med kodingen samtidig som det gir muligheter for å lage et visuelt grensesnitt (det er imidlertid ikke vektlagt her).


Når roboten blir berørt på hodet setter vi variabelen "Order" til enten 1 eller 2. Vi bruker denne for at svaralternativene skal komme i tilfeldig rekkefølge. Sånn sett er det bare disse som må sjekkes ved hjelp av IF-spørringene. Dvs, vi kunne latt spørsmålene (første blokk inne i IF-blokken) ligge i begynnelsen av denne sekvensen.

Den første kodeblokken bruker vi kun for å sette i gang sekvensen. roboten setter variabelen "Number" til "1", dvs vi gjør den klar til å stille første spørsmål. Roboten ber deretter brukeren om å sette i gang ved å berøre roboten på hodet.

Selve spøsmålet stilles ved at v leder ut "Number" og stiller det korresponderende spørsmålet fra listen "Questions". roboten sider da dette ved hjelp av talesyntese,

Deretter viser vi svaralternativene, der rekkefølgen bestemmes av om "Order" er satt til 1 eller 2. Vi bruker her Scratch-funksjonen join. I kombinasjon med de blokkene som er spesifikke for Aisoy-roboten blir dette svært effektivt. Her slår vi sammen de punktene i listene for riktige og gale svaralternativ og skriver disse i robotens munn.

Vi benytter variabelen "Answer" for å holde orden på hvilket svaralternativ som er riktig. Vi knytter verdien "A" berøring av robotens venstre side og "B" til høyre.

Vi setter variabelen "Quest" til "1". Denne sjekker vi i nestre trinn. Vi bruker den for å unngå at brukeren svarer flere ganger på samme spørsmål.

Når et spørsmål er stilt kan brukeren svar ved å berøre roboten på sensorene på sidene av kroppen. Vi sjekker at "Quest" er "1" – hvis ikke gir ikke roboten noen respons.

Vi har to like kodeblokker i koden vår. Her ser vi på den som er knyttet til berøring av robotens venstre sensor (sett fras brukerens side, når roboten ses forfra). Dersom riktig svar via variabelen "Answer" er satt til "A" vet vi at brukeren har svar rett og roboten gir en muntlig respons ved å lese ut "Number" og korresponderende respons fra listen "Right reponse". Dersom brukeren hadde svar feil, dvs at "Answer" er satt til B ville roboten gå til ELSE-alternativet i IF-ELSE-spørringen. Roboten vilel da lest ut responsen for galt svar på det aktuelle spørsmålet.

Når responsen er gitt skriver vi det riktige svaret til robotens munn. Dette fungerer fint når det er et riktig svar. Det fungerer imidlertid ikke like bra når vi bruker spørsmålet for å sette i gang en diskusjon, dvs når det er ikke er noe riktig eller galt svar.

Varabelen "Quest" settes til "0". Dermed blir det ikke mulig å gi svar før et nytt spørsmål er stilt.

Vi setter også "Answer" til en verdi som hverken er A eller B ( dette er mest for å sjekke dette underveis på stage – se nedenfor).

Til slutt øker vi variabelen "Number" med 1, slik at vi kommer videre i spørsmålsrekken.


Laste ned eksempelkoden

Når du klikker på linken for å laste ned skriptet kommer du til en fil på Google Drive. Siden dette er et skript for ScratchX kommer det ingen forhåndsvisning. Du får en feilmelding, men det er bare å trykke "Download".

Last ned filen. Deretter kobler du deg til roboten, åper ScratchX og laster opp skriptet vis "File"-menyen.

For at du skal kunne programmere roboten i Scratch må du koble datamaskinen din og roboten. Du finner mer informasjon om denne rutinen her.

Se brukermanualen hvis du lurer på noe mer, eller still spørsmål (joh@hvl.no) dersom du står fast.