30 Jul

Pràctiques Snap! 10 – Extensions (Menú)

Estic fent una introducció al llenguatge visual Snap! un sistema de programació molt intuïtiu que funciona per blocs de colors. Hem fet alguns jocs  bàsics i els hi estem posant extensions. A l’última entrada hem fet un joc d’un marcianitu que tenia que sobreviure a una pluja de cometes. Ara, veurem com posar un menú al nostre joc.

RESUM I OBJECTIU

Recapitulem, que hem fet moltes coses des de la primera pràctica! El nostre primer projecte va ser el del ratpenat volador interactiu. El vam fer en quatre pràctiques:

  1. A la primera, vam conèixer alguns blocs de control i moviment per fer moure la fletxa predeterminada.
  2. A la segona, vam veure alguns blocs d’aparença i so, i vam canviar la fletxa pel ratpenat.
  3. A la tercera, vam trastejar alguns blocs de sensors i operadors per fer que el ratpenat preguntés i respongués en funció de la resposta que donava l’usuari i, finalment…
  4. A la quarta pràctica del ratpenat, vam veure els blocs de variables per implementar un marcador de punts al nostre joc.

Snap-Practica-Variables4-marcador-punts-encert-tall-pantalla

A més de programar el projecte del ratpenat, hem après a:

Per posar algunes idees de jocs bàsics, hem programat dos petits jocs:

  1. Un laberint on qui juga, controla, amb les fletxes del teclat, una abella que ha d’arribar a una flor per polinitzar-la :)
  2. Un joc tipus Pong:  horitzontal i per a un/a jugador/a

A les dues últimes entrades, sota el nom d’extensions, hem vist:

A més, per aprendre a clonar objectes i gestionar vides, hem recuperat un projecte base que teníem a la pràctica de coordenades: el marcianitu i el cometa. Si al projecte base només hi sortia un cometa, en aquesta extensió, en sortiran una bona pila: tants que potser et col·lapsen el navegador…

Ara, hem fet un petit joc de supervivència que tracta d’un marcianitu amenaçat per un cometa que es clona a si mateix. Com el joc el donem per acabat, només ens falta polir-lo una mica, com si fos de debò. Per fer-lo més realista, en aquesta entrada, li posarem una caràtula, un menú i unes instruccions.

Gràcies a aquesta millora, podrem reiniciar el joc un cop haguem acabat una partida sense haver de clicar de nou el botó de la bandera verda del projecte.  El disseny s’ha fet amb Inkscape i Gimp. Recordem que podem crear una còpia del nostre projecte i desar-lo amb un altre nom per implementar l’extensió.

Així, podem tenir quatre projectes: el del marcianitu a les coordenades, el del marcianitu amb els clons-cometa, el del marcianitu i els clons-cometa amb puntuació i, el que anem a programar ara: el del marcianitu i els clons-cometa amb puntuació, menú d’inici i reinici de partida.

BOTONS I ESCENARIS

dibuix-marcianitu0-totes-caratules

Per implementar el menú i, per tant, el reinici del joc, programarem tres botons i tres nous escenaris. Recordem que es poden fer les mateixes coses de diferent manera! Nosaltres, ho programarem:

  • Afegint tres nous objectes (tres botons: juga, menú i instruccions)
  • Afegint tres vestits més a l’escenari: un primer per la caràtula que mostra el joc al iniciar i que hi té escrit: “Marcianitu i l’atac dels clon-cometes”. Un segon vestit per l’escenari és pel menú, on es mostren els botons de juga i instruccions i, finalment, un tercer escenari amb les instruccions del joc. 

Fins ara, el nostre projecte tenia un escenari amb un vestit de fons negre i dos objectes: el marcianitu (que només té un vestit) i el cometa (que té dos vestits, un per quan apareix i l’altre per quan col·lisiona amb el marcianitu o el terra).

Ara, tindrem l’escenari amb quatre vestits i un total de cinc objectes: el marcianitu, el cometa, i els tres nous botons. Per programar els nostres botons, haurem de fer ús de l’enviament i recepció de missatges, com vam veure a les pràctiques. En funció del botó que l’usuari prem, l’objecte es mostrarà, s’amagarà i enviarà un missatge per

  • Començar el joc (Juga)
  • Mostrar les instruccions per aprendre a jugar (instruccions)
  • Tornar al menú (menú)

La novetat, a més, radica en què, un cop acabem una partida i el marcianitu ens ha dit la nostra puntuació, envia el missatge de menú, amb el que es torna a posar l’escenari del menú amb els seus botons, amb el que rejuguem des del propi joc, sense haver de recomençar el joc clicant la bandera verda de nou.

En funció de la programació dels botons, l’escenari actua en conseqüència.

  1. Al iniciar el projecte amb la bandera verda, es posa l’escenari de la caràtula i espera una miqueta perquè la puguem llegir.
  2. Després de dos segons, envia a tots el missatge de Menú.
  3. Al rebre el missatge, l’escenari canvia al vestit que hem dissenyat per al menú.
  4. Si cliquem juga, comença el joc i, per tant, posem el fons negre.
  5. Si cliquem instruccions, es mostrarà el vestit amb l’explicació del joc.

 

BLOCS ESCENARI

A més dels scripts de velocitat, freqüència i punts que ja teníem al projecte anterior, l’escenari tindrà aquests altres scripts. El missatge de fi, com veurem, l’envia el marcianitu un cop ja no té vides. Les variables es poden mostrar i amagar a voluntat:

Snap-Practica-Extensions5-menu-rejuga1-blocs-escenari-tall

BLOCS BOTÓ MENÚ

Aquí deixo els blocs dels botons. El fet de jugar amb la mida és el que fa aquest efecte de botó intermitent: tècnicament, augmenta i disminueix la mida (com amb els passos o les variables es resta sumant en negatiu).

Snap-Practica-Extensions5-menu-rejuga6-blocs-boto-menu-tall

BLOCS BOTÓ INSTRUCCIONS

Si ens fixem, al joc, qui remena les cireres és la variable “Vides”. Fins ara, tots els objectes i escenari actuen quan el valor d’aquesta variable és més petita que 1, és a dir, quan no li queden vides al marcianitu.

La cosa és que, als blocs dels botons hem programat el bucle de repetició amb la variable punts per un motiu: no és necessari que repeteixi aquest efecte si no es mostra l’objecte. Al començar a jugar, tot i que no els veiem perquè estan amagats, els tres objectes segueixen en bucle repetint l’efecte fins que el marcianitu es queda sense vides: no cal.

Poden deixar de fer l’efecte abans i és per això que hem aprofitat la variable punts que, com hem vist al projecte anterior, suma un a cada segon que passa. Per tant, al començar a jugar, només passa un segon fins que s’atura el bucle de repetició.

Snap-Practica-Extensions5-menu-rejuga5-blocs-boto-instruccions-tall

La gràcia és que hi ha tantes solucions com persones. Les mateixes coses es poden programar diferentment. La qüestió, sempre, és com solucionem el problema que trobem pel camí.

BLOCS BOTÓ JUGA

Snap-Practica-Extensions5-menu-rejuga4-blocs-boto-juga-tall

BLOCS MARCIANITU

Com en aquest projecte estem reciclant blocs del projecte anterior, hem de pensar que, a més dels que es mostren a la imatge, falten:

  • El de bandera verda que amaga el personatge al començar
  • El de recepció de missatge juga.

Important: Al final del bucle de repetició, hem de pensar a afegir el missatge “envia a tots a Fi”. El marcianitu i l’escenari reben aquest missatge: l’escenari amaga les variables i el marcianitu ens diu la puntuació. Tot seguit, envia el missatge menú per tal de mostrar, de nou, el botó de juga. I així, podem començar una altra partida.

Snap-Practica-Extensions5-menu-rejuga2-blocs-marcianitu-tall

BLOCS COMETA

El cometa no varia gaire, reciclem tots els blocs que ja tenim al projecte anterior per aquest objecte i afegim un script més: és la manera que he trobat per parar els clons… Si no es posa, quan es juga una altra partida, surten desenes de clons a la pantalla que encara no han tocat el terra o al marcianitu.

Pensem que, arriba un punt, que es genera un clon cada 0.3 segons

  1. Prova de desactivar aquest script,
  2. Juga una partida i, quan perdis les vides,
  3. Clica de nou al botó de jugar per veure com passa.

Snap-Practica-Extensions5-menu-rejuga3-blocs-cometa-tall

RESULTAT

Aquí deixo el projecte del marcianitu amb menú :) Aviam si enllaça…

Em sembla que ja dono per acabat el tutorial introductori a Snap! Amb la tonteria, he escrit una vintena d’entrades! Espero que hagi sigut útil!

Deixa un comentari

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