20 Nov

#UOCScratch 3. Blocs avançats

Si la setmana anterior la vam dedicar als blocs més bàsics, aquesta tercera setmana del Mooc de la UOC ens dedicarem a blocs més avançats: enviament de missatges, llistes i clons. Es proposen dues activitats evaluables: un projecte personal i continuar l’Arkanoid que vam engegar la setmana passada.

ENVIAMENT DE MISSATGES

Els missatges permeten la comunicació entre els objectes d’un projecte. Podem, per exemple, sincronitzar accions com converses entre personatges. És el propi objecte que envia una notificació que pot ser captada per qualsevol altre objecte o l’escenari. Per enviar missatges hem de fer servir dos blocs: un d’enviament i un de rebuda:

UOCScratch Setmana3_missatges

A Scratch podem donar el nom que vulguem a un missatge. Si cliquem la pestanyeta que hi ha al costat dret, se’ns despleguen tots els missatges creats al projecte i també dóna la opció de crear un nou missatge. Quan s’envia el missatge arribarà a tots els personatges simultàniament. Els objectes o personatges que tinguin el barret de “Quan rebi (i el missatge)….” executaran el codi que tinguin sota el barret en el moment de la rebuda del missatge.

Per il·lustrar-ho, se’ns presenta un exemple d’enviament i rebuda de missatges on els gats s’envien missatges i diuen coses diferents. Un altre exemple es veu al vídeo del curs: el videotutorial del gat i el gos que tenen una microconversa.

Per practicar, ens han demanat agafar el projecte de blocs de moviment que vam fer la setmana passada i ampliar-lo posant-li un botó més. Aquest botó fará que el personatge llisqui per l’escenari. S’ha de crear un nou personatge en forma de botó i programar-lo: quan es cliqui, ha de fer lliscar el personatge a través de la programació d’enviaments de missatge.

La programació del nou botó “Deslizar” és la següent: quan es cliqui el personatge, enviarà un missatge a tots el missatge “Lliscar” (“Deslizar”, que está en espanyol). Quan el ninotet rebi el missatge “Deslizar”, es desplaçarà del punt inicial fins al mig de la pantalla. Aquí el projecte amb el nou botó:

 

LLISTES

Dins els blocs de dades (i just a sota de les variables) trobarem una opció anomenada “Crea una llista”, és a dir, que clican aquesta opció, podem crear un conjunt seqüencial de variables. Per seqüencial entenem que cada element de la llista té una posició concreta dins la llista. Així, es permet accedir fàciment a cadascun dels elements de la llista: números, text, disfresses…Es recomana que cada llista emmagatzemi elements del mateix tipus.

En una llista es poden dur a terme diverses accions com: insertar un element o eliminar-lo de la llista, consultar l’estat d’un element en particular, etc. Cada acció s’executa com un bloc diferent. Veiem un exemple de llista a Scratch! També se’ns comparteix un altre vídeo per saber com funcionen les llistes.

Per entrenar-nos amb les llistes, se’ns proposa reinventar l’exemple que se’ns ha donat i resoldre un petit repte: crear un botó nou per eliminar un element en funció del seu valor emmagatzemat a la llista (número o text) en lloc de fer-ho per posició.

  • Si la llista conté més d’un element amb el mateix valor s’han d’eliminar tots.
  • Si no hi ha cap element amb el valor buscat, ha d’aparèixer a la pantalla el missatge “No existeix l’element”.

Aquí el meu projecte a Scratch:

 

CLONS

Els clons són còpies idèntiques d’un personatge i permeten replicar el personatge sense tenir que crear múltiples objectes amb la mateixa programació. Per a explicar-ho millor ens posen d’exemple la creació d’un projecte que simula una nevada. En realitat, només hi ha un floc de neu però està programat per clonar-se a si mateix, posicionar-se aleatòriament per la pantalla, fer que cau modificant l’eix y i desapareixent.

També se’ns mostra un projecte i la seva reinvenció amb clons: al projecte d’Space Invaders de l’usuari Supersonic1212 trobem que s’ha creat un objecte per a cada “marcianito dolent”. La cosa es pot simplificar amb clons com es pot veure en la reinvenció del projecte:

  • Al fons trobem que es clons es creen un rere l’altre al pressionar la tecla z. Y creen els personatges origrow1, origrow3 y origrow5.
  • També al fons trobem que, un cop creats tots els clons, s’envia el missatge “invaders come” per iniciar el moviment del clons horitzontalment.

 

Se’ns proposen dos reptes:

1.Fer que nevi en el projecte https://scratch.mit.edu/projects/24707806/

  • Quan els flocs toquin les roques, fer que canvïin de disfressa perquè sembli que les roques es van cobrint de neu poc a poc
  • Crear una variable “Vent” que faci que els flocs de neu es moguin en la mateixa direcció en funció de la direcció i la força del vent

Aquí la meva nevada amb Scratch:

 

2.Continuar millorant la programació del joc Space Invaders

  • Els Sprites 4, 5, 6 i 7 són els que implementen la paret inferior i tenen un codi similar. S’ha de provar d’implementar-los com clons, és a dir, que només pot quedar un personatge (no sé de què em parlen…millorar la programació…del de la setmana passada? No hi ha sprites 4, 5, 6 ni 7…Ja ho aclariré. Seguim, que se m’acumulen els cursos…)

 

ACTIVITATS AVALUABLES: PROJECTE PERSONAL I ARKANOID

En primer lloc, presentar un projecte original de joc fet amb Scratch. Hem d’anar confeccionant un projecte original (no un remix o reinvenció d’altri) que implementarem la darrera setmana del curs. La primera setmana es demana un primer esboç del projecte. L’avaluació es farà en P2P i els objectius són:

  • Ser capaç de programar un projecte complet amb Scratch
  • Saber utilitzar els blocs avançats d’Scratch en funció del projecte
  • Explorar les possibilitats d’Scratch com a eina d’aprenentatge

En aquesta primera setmana es proposa definir el projecte que es programarà la darrera setmana. Es demana definir els objectius i els elemens clau per al desenvolupament del joc i la seva posterior usabilitat, jugabilitat i experiència d’aprenentatge.

Com hi ha molta gent diferent al curs (profes, alumnes, progenitors, professionals, etc.) es proposa crear un videojoc o un joc educatiu. M’han matat…per què ho han proposat així?

  1. Primera, tot i que Scratch ho permet, no ens donen opció per a concebre com a projecte una presentació, una animació o una activitat…
  2. Segona, un joc educatiu, si es programa amb Scratch és també un videojoc, no?  No ho acabo de pillar…

BabyFoodieGen345Text

I m’han matat perquè jo volia reciclar l’animació del “mAtOnEs y sIUx” (sobre diftongs i hiats en espanyol) que vaig començar a MoocBot però encara li queden cosetes per fer. Així seguia avançant el projecte. Bé, veurem…Potser reciclo un altre joc que vaig fer en un curs del MIT “Baby Foodie”.

Crec que al MIT usen els alumnes per fer de testers i no em sembla un mal intercanvi sempre i quan se solucionin els “bugs” o errors de software…que no es feia quan jo feia el curs…i per això el vaig deixar…no avançava…Ni vaig poder acabar el joc de Gen. 3 : 4-5, sobre Adam i Eva, el paradís, la fruita prohibida i la serp…Un problema que trobo a alguns Mooc és justament la falta de feedback i iteració d’instrumental…però clar…és el MIT i fa un curs gratis…

Doncs he pensat de passar “Baby Foodie” a Scratch, tot i que té un “glitch” o problemilla tècnic (a la dreta de l’escenari: sembla que es clavi…) Vaig demanar ajut i mai el vaig rebre, així que…així es va quedar el joc: és jugable, però, i funciona tot: gravetat dels objectes, puntuacions, canvis d’escenari i personatge, etc. Però no sé si classificar-lo com a videojoc o com a joc educatiu. Trobo que és les dues coses…

 

D’altra banda, hem de continuar amb l’Arkanoid i afegir el moviment de la pilota. Al projecte de la setmana anterior vam afegir escenari, nau i blocs. Si per defecte, Scratch té blocs pel moviment i el rebot a les vores, no té per defecte blocs de rebot entre objectes: ho haurem de programar. Primer de tot haurem de guardar el projecte de la setmana anterior com una còpia. Després haurem de fer les següents passes:

  1. Programar el moviment de la pilota dins l’escenari fent que reboti quan toqui les vores. A l’iniciar-se el projecte, la pilota ha de mostrar-se a sobre de la Nau i apuntar a un angle aleatori entre 45 i -45 graus. Com a pista, recordar que l‘estil de rotació (definible al botó d’informació information.png de cada personatge o objecte del projecte) pot millorar l’efecte de rebot de la pilota.
  2. Fer rebotar la pilota quan toqui la Nau i els blocs. S’avisa que el sistema de rebot no és fàcil de resoldre. El que es proposa de fer és girar 90º a l’esquerra la pilota, tot i que el rebot pugui no semblar realista. Pistes: 1) El control del rebot és recomanable ferlo en el personatge de la pilota. 2) Existeix un sensor que permet saber si un personatge està tocant-ne un altre. Una altra opció (que he implementat al joc) és enviar un missatge “Rebota”. S’envia des de la Nau i que respon la pilota apuntant en la direcció oposada i movent-se 10 passes. Hi ha moltes maneres de fer la mateixa cosa!
  3. El joc ha d’aturar-se quan la pilota toqui la part inferior de l’escenari. Pistes: 1) Els límits verticals de l’escenari estan determinats per l’eix Y. Aquest eix va de la posició -180 (vora inferior) a la posició 180 (vora superior). 2) La posició vertical de la pilota es pot consultar mitjançant la instrucció “Posició y”, dins de la categoria de moviment. 3) Tot i que s’atura el projecte dient “Game Over”, la Nau encara es mou. Ho millorarem més endavant.
  4. Crear un comptador de blocs tocats que s’incrementi en una unitat cada vegada que la pilota toca un bloc. Quan n’hagi tocat 5, ha d’acabar el joc. Pista: Es possible que quan la pilota toqui un bloc, el comptador sumi més d’un punt: el rebot realístic de 90º a l’esquerra fa rebotar la pilota múltiples vegades. No fa falta solucionar-ho en aquesta fase. Ho he fet igualment. Els blocs desaparèixen al ser tocats per evitar comptar-los més d’una vegada.

ATENCIÓ!! El projecte s’ha de compartir, sinó no es pot evaluar…Ho van recordant però hi ha gent que encara “pajareja”. De 5 projectes a corregir la setmana passada, 2 ó 3 no estaven compartits…

Aquí el meva implementació de la setmana del projecte Arkanoid:

 

Segueix a #UOCScratch 3 – Projecte Videojoc

 

Deixa un comentari

L'adreça electrònica no es publicarà. Els camps necessaris estan marcats amb *