Pràctica 2. Afegint els objectes per canviar de fons

Per passar les pàgines de la nostra presentació ho podem fer per temps, com a la pràctica anterior, o mitjançant uns botons que permetin controlar la presentació. Posarem 3 objectes un per anar cap endavant, un per anar cap enrere i un per tornar a la pàgina d'inici.

L'Scratch disposa de 3 botons per crear un objecte nou:

El botó de l'esquerra obre l' "Editor de dibuixos" que permet dibuixar el nostre objecte, el botó del mig ens deixa escollir una animació que ja tinguem a l'ordinador i el botó dret crea un objecte amb una animació a l'atzar de les que venem quan instal·lem l'Scracth. Per aquesta pràctica farem unes fletxes senzilles i un botó d'Inici.

Començarem pel botó "Següent" que hauria de canviar el fons de l'Escenari, fem servir la mateixa instrucció que teníem a la pràctica 1 "Següent fons de pantalla". Però aquesta instrucció no la trobarem dins de la categoria "Aspecte" del nostre objecte. Aquesta instrucció pertany a l'Escenari i per fer-la servir haurem de trobar un mecanisme per comunicar el botó i l'escenari. Aquest mecanisme és el d'enviament de missatges. A la categoria "Control" (color groc) hi trobarem les peces "envia a tots Missatge", "envia a tots Missatge i espera " i "al rebre Missatge".

Per crear un nou missatge polsem la fletxa que desplega la llista de missatges, on l'última opció es "nou…". Ens sortira una finestra per introduir el nom del missatge.

Una vegada hem creat el missatge "Següent" el codi del botó és força senzill. Simplement hem d'enviar el missatge quan es premi el botó "Següent" fem servir la peça "al prémer Següent" que trobarem a la categoria "Control".

Veure com canvia la descripció de la peça "al rebre Següent" modificant el nom del nostre objecte.

El codi per enviar el missatge seria aquest:

Hem afegit una peça "aturar el bloc" com acabament del nostre codi. En aquest cas no es del tot necessari, però és convenient acostumar-se a definir acabaments pels blocs de codi.

Enviant aquest missatge deixem la responsabilitat de canviar de pàgina a l'escenari, que per altra banda es qui ho sap fer. L'Escenari ha d'interceptar aquest missatge i fer la feina. El codi és molt simple, només hem de respondre al missatge "Següent" amb la instrucció "següent fons de pantalla". Per escriure aquest codi hem de prémer sobre l'Escenari i escollir la pestanya "Programes".

El codi per a la resposta de l'Escenari seria el següent:

El mateix hem de fer pels altres dos botons de control de la presentació. El botó "Inici" enviarà el missatge "Inici" i el botó "Anterior" el missatge "Anterior".

El codi de resposta del botó "Inici" ha d'establir el fons de pantalla al primer. Hem de fer sevir la peça "canvia el fons a fons1" de la categoria "Aspecte".

El codi de resposta de l'Escenari al missatge "Inici" seria:

Per canviar el fons a l'anterior podríem pensar en fer servir la instrucció "anterior fons de pantalla", però no existeix a Scratch. L'haurem de fabricar. Si examinen les instruccions referents a l'aspecte de l'Escenari tenim una peça que és "#fons'. Aquesta peça conté el número de fons que està mostrant l'Escenari. És a dir, si l'Escenari només té un fons tindrà sempre valor 1, i si en té més anirà canviant cada vegada que fem "següent fons de pantalla". Podem veure el valor marcant a la casella que hi ha al costat de la peça. Veurem que apareix un quadre a la pantalla de presentació de l'Scratch.

Provar les opcions del visualitzador del fons que surten quan premem el botó dret del ratolí.

Si aconseguim restar 1 al valor que tingui el fons i canviem el fons per aquest nou valor ja tenim la "peça" que ens canvia al fons anterior. Per això hem de fer servir la resta de la categoria "Operadors" (color verd). Hem de posar com operadors el fons i un 1.

Ja ho tenim. Només hem d'introduir aquesta operació a la peça "canvia el fons a …" .

El codi de resposta al missatge "Anterior" per par de l'Escenari seria el següent:

Veure què passa quan el fons és 1 i li traiem 1.

A vegades haurem de treballar solucions d'aquest tipus per implementar accions que no existeixen a l'Scratch. Això també ens demostra la facilitat d'extensió d'Scratch amb un nombre de peces reduït però molt ben escollit.

Finalment seria interessant definir un punt d'entrada pel nostre programa que podria ser simplement establir el fons de pantalla al primer o forçar l'enviament d'un missatge d'Inici.

Codi pel començament:

Codi equivalent aprofitant la resposta al missatge "Inici":