De Què Va?
En aquest projecte, creareu un joc per a la micro:bit. Fent servir els botons, el jugador mourà un escut per atrapar meteors que cauen i salvar la Terra.
Les tècniques que aprendreu en aquest projecte es poden utilitzar per fer molts d'altres jocs per a la BBC micro:bit o equivalents, com, per exemple, els clàssics Pong i Space Invaders.
Què Heu de Saber?
Els que estigueu familiaritzats amb algun llenguatge de blocs com Scratch, i hàgiu utilitzat bucles per sempre, blocs condicionals Si… i variables us trobareu còmodes fent aquest projecte.
També animem a aquells que mai hagin programat a provar-ho. És divertit i les instruccions pas a pas expliquen com funciona el codi mentre s'avança.
Els programadors experimentats podeu avançar i construir els scripts que es mostren a la secció Tots els Scripts per tenir el joc funcionant el més aviat possible. Després podeu explorar els suggeriments de remix o pensar en les vostres pròpies millores.
Què Necessiteu?
Una placa BBC micro:bit:
També us caldrà un ordinador amb un port USB, un cable USB per connectar la micro:bit a l'ordinador i el programari (lliure!) MicroBlocks.
Procediment
Pas 1: Crear l'Escut
En aquest joc, el jugador farà servir els botons A i B per moure un escut a dreta i esquerra per protegir la Terra de la caiguda de meteors. L'escut serà un LED il·luminat a la pantalla de 5 x 5 leds i sempre estarà a la fila inferior. Caldrà controlar a quina distància està del marge dret o esquerre. Els leds estan numerats de l'1 al 5 d'esquerra a dreta. És necessària una variable per guardar la posició de l'escut.
Què és una Variable?
En la programació, una variable s'utilitza per recordar un valor per poder-lo utilitzar més endavant. Es pot inserir un bloc arrodonit amb el nom de la variable en qualsevol lloc on es pugui escriure un valor. Per exemple, si teniu una variable score, la podeu utilitzar amb el bloc digues:
Podeu utilitzar el bloc augmenta en per incrementar el valor en 1:
Podeu utilitzar el bloc assigna a per restablir la puntuació a zero al començament del joc:
Amb la micro:bit connectada, podreu fer clic sobre una variable per veure el seu valor. Al costat de la variable apareixerà una petita "bafarada" amb el seu valor.
No us preocupeu si les variables són un concepte nou per a vosaltres; veureu com funcionen a mesura que avanceu.
Per a crear una variable, feu clic a la categoria Variables a la part esquerra de la pantalla MicroBlocks i, a continuació, feu clic al botó Crea una variable.
MicroBlocks demanarà el nom de la variable. Introduïu shield x i feu clic al botó D'acord.
Un nou bloc shield x apareixerà a la categoria Variables. En el programa fareu servir aquest bloc per guardar la posició de l'escut. Feu clic en aquest bloc per veure el seu valor actual:
Algun Problema?
Comproveu que la micro:bit estigui correctament configurada i connectada. El cercle indicador de connexió ha de ser verd. Si no ho és, comproveu que heu instal·lat el firmware a la placa micro:bit, que la micro:bit està connectada a l'ordinador amb un cable USB i que no teniu un cable USB en mal estat o "només de càrrega".
Ara, afegiu un script per a fer que l'escut aparegui a la pantalla LED. Arrossegueu la imatge inferior a MicroBlocks o munteu blocs per obtenir un script com aquest:
Quan l'script tingui els blocs anteriors, feu clic al botó d'execució en forma de triangle que hi ha a la part superior dreta de la pantalla. Una línia de color groc envoltarà els blocs de l'script per indicar que s'està executant.
S'encendrà un LED al mig de la fila inferior:
Pas 2: Moure l'Escut
Arrossegueu un bloc augmenta var en 1 des de la categoria Variables, seleccioneu shield x al menú i feu clic al bloc:
Si encara teniu l'script en funcionament, veureu com el led es desplaça una posició cap a la dreta. Podeu fer servir aquesta idea per moure l'escut cap a la dreta quan es premi el botó B:
Quan hàgiu construit l'script, feu clic al botó d'execució i després pressioneu el botó B (dreta) de la placa micro:bit. El led encès es mou cap a la dreta. Visca!
Però, espereu! Després desplaçar el LED encès uns quants llocs cap a la dreta, desapareix! Sembla que el programa té un error.
Depuració
No us preocupeu. Fins i tot els programadors professionals més experts escriuen codi amb errors. La cerca i la correcció d'errors forma part del procés normal de programació, de la mateixa manera que la correcció de l'ortografia i dels errors gramaticals forma part del procés d'escriptura. Depurar és divertit! Com un detectiu, busqueu pistes, i com un científic feu experiments per aprendre més sobre l'error.
En aquest cas, fer clic al bloc shield x ens proporciona una pista valuosa:
Aquest nombre és més gran que 5. Donat que la matriu LED de micro:bit només té 5 leds d'ample, això significa que l'escut s'ha mogut més enllà de la vora dreta de la pantalla. Per a comprovar aquesta teoria, establiu shield x a un nombre entre 1 i 5:
El led encès reapareixerà. Fent clic al botó d'execució també tornarà a aparèixer perquè el primer bloc de l'script estableix el valor de shield x a 3. (Algú pensava en el futur quan va incloure aquest bloc!)
Per corregir l'errada, utilitzeu un bloc si de manera uqe l'escut només es mogui cap a la dreta si això no fa que surti de la pantalla:
Ara construïu un script similar per fer que el botó A (esquerre) desplaci l'escut cap a l'esquerra:
Per començar a fer aquest script podeu duplicar el del botó B. Feu clic amb el botó dret del ratolí al començament de l'script botó B i seleccioneu duplica fins a baix.
Tingueu en compte que l'script botó A és una mena de versió mirall de l'script botó B. Augmenta shield x en -1 i el bloc si assegura que shield x sempre és més gran que un; és a dir, que l'escut té espai per moure un pas a l'esquerra sense sortir de la vora de la pantalla.
Feu clic al botons i proveu de moure l'escut cap a la dreta i cap a l'esquerra. No hauria de desaparèixer encara que intenteu anar més enllà dels límits de la pantalla.
Fins ara tot bé. Però l'escut es mou massa lentament per poder atrapar un meteorit que cau a tota velocitat.
Per accelerar les coses, en el bloc espera 500 mil·lisegons canvieu el valor a un de més petit, per exemple 50 o 100.
Tingueu en compte que si poseu un nombre massa petit, com ara 5, l'escut anirà d'un costat a l'altre massa ràpid i serà difícil aturar-lo en algun lloc del mig. Experimenteu per trobar un valor que vagi bé.
Pas 3: Afegir Meteors que Cauen
Anem a afegir un meteor que comenci a la part superior de la pantalla led i caigui cap avall. D'igual manera que l'escut, caldrà una variable per controlar la seva posició horitzontal. També caldrà una altra variable per controlar la seva posició vertical. Utilitzeu el botó Crea una variable per afegir les dues noves variables: meteor x i meteor y. Acabareu tenint tres variables:
Ara, afegiu aquest script per a fer que el meteor caigui:
Aquest script estableix la posició horitzontal del meteor a un nombre aleatori entre 1 (extrem esquerre) i 5 (extrem dret). La variable meteor y s'estableix a 0 de manera que comença just per sobre de la pantalla LED. (Les files de la pantalla LED estan numerades de l'1 al 5 de dalt a baix). Els blocs del bucle per sempre augmenten el valor de meteor y, fent que el meteorit es mogui cap avall de fila en fila, llavors espera 200 mil·lisegons (és a dir, 0,2 segons) de manera que no caigui massa ràpid. Canviar aquest temps d'espera farà que el meteor es desplaci més lentament o més ràpida.
Ara, afegiu un bloc a l'script que dibuixa l'escut per fer que també dibuixi el meteorit:
Per provar aquests canvis, fes clic al botó d'execució unes quantes vegades. Hauries de veure un meteorit aparèixer en un lloc aleatori a la part superior de la pantalla de LEDs i moure's cap avall fins que desaparegui per la part inferior.
Però hi ha un problema. No volem que el joc s'acabi després d'un sol meteor. Volem que els meteors continuïn caient mentre el jugador els pugui atrapar. Per solucionar aquest problema, utilitzarem un bloc Si per detectar quan el meteor ha caigut de la part inferior i tornar a començar des de dalt:
Escollir Entre Múltiples Solucions
Per què l'script compara meteor y amb 7? Després de tot, el meteor estarà fora de la pantalla tant aviat com el valor de meteor y sigui superior a 5.
Fer que aquest nombre sigui una mica més gran que 5 deixa una petita pausa entre la caiguda dels meteors. Aquest mateix efecte s'hauria pogut aconseguir amb un bloc espera mil·lisegons. Sovint hi ha moltes maneres de resoldre un problema determinat i una de les parts creatives de la programació és decidir quina solució utilitzar.
Inseriu aquest bloc si a l'script que fa caure el meteor:
Feu clic al botó "play" per a provar aquesta versió.
Pas 4: Afegiu la Detecció de Col·lisions
El joc ara té els meteors que cauen i un escut que es mou amb els botons, però no passa res quan el meteor toca l'escut. Es necessita afegir allò que els programadors de jocs anomenen "detecció de col·lisions".
Com podem saber quan l'escut ha bloquejat un meteor? S'han de complir dues condicions. En primer lloc, el meteor ha d'haver arribat a la part inferior de la pantalla:
En segon lloc, l'escut i el meteor han d'estar a la mateixa posició esquerra-dreta:
Aquestes dues comprovacions es poden combinar mitjançant un bloc i:
El bloc i es pot utilitzar en un bloc si per fer que passi alguna cosa quan es detecti una col·lisió, com ara mostrar un esclat d'estrelles:
Afegiu aquest si a l'script de dibuix:
Resum: Tots els Scripts
Felicitats per completar el joc. Ara ets un programador de jocs de micro:bit experimentat!
Aquí teniu tots els scripts del joc:
Feu clic al botó de reproducció i proveu el joc. Mentre jugueu, penseu si el joc és massa fàcil o massa difícil. Els meteors cauen a la velocitat adequada per ser un repte però no és impossible atrapar-los? L'escut es mou a una bona velocitat? Si no és així, quins canvis podríeu fer per tenir una millor sensació?
Què Hi Ha a Continuació?
Podeu desconnectar la vostra micro:bit de l’ordinador, connectar una bateria i jugar a aquest joc a qualsevol lloc.
Poseu-vos a prova i als vostres amics per veure quants meteors podeu atrapar!
Variants
Feu una ullada a les següents propostes de variacions del joc per afegir funcions addicionals que podríeu incloure, o bé penseu en millores de la vostra invenció. Fins i tot podeu utilitzar el que heu après per fer versions per a micro:bit d’altres jocs, com ara el Pong o l'Space Invaders.
Variant 1: Detectar el Final del Joc
Seria fantàstic que el joc acabés quan els jugadors fallin diversos meteors. Aquí teniu una manera de fer-ho.
Creeu una nova variable anomenada misses i afegiu un bloc a l’script de dibuix per posar misses a zero quan comenci el joc.
Ara afegiu un altre bloc si a l’script de dibuix:
Quan els usuaris fallin un meteor, augmentarà la variable misses en una unitat. També augmentarà meteor y en una unitat -- això evita que aquest codi s’executi més d’una vegada per cada fallada. Finalment, si misses és més gran que tres, dibuixarà una "X" i s'aturarà el joc. Aquí teniu l'script de dibuix modificat:
Variant 2: Puntuació
Com controlaríeu quants meteorits ha atrapat el jugador? Sí, amb una altra variable! Recordeu posar la puntuació a zero al principi del joc. Quan el joc acabi, podria mostrar un símbol en funció de la puntuació per indicar com ho ha fet el jugador. Per exemple, podria mostrar una cara somrient si el jugador ha aconseguit més de 10 punts.
Variant 3: Més Difícl!
Una manera de fer el joc més difícil és fer caure els meteorits més ràpid. Podeu esbrinar quin bloc espera mil·lisegons controla la rapidesa amb què cauen els meteors? Proveu diferents números per veure a quina velocitat podeu fer caure els meteors i encara poder-los atrapar.
Si heu afegit una variable de puntuació, per exemple score, potser podríeu augmentar la velocitat de caiguda dels meteors a mesura que el jugador aconsegueixi més punts.