Històries animades

From Edutec Wiki
Jump to: navigation, search

Introducció

És important que abans de començar a programar tinguem el guió de la història estructurat (encara que sempre podem fer-ne modificacions), està bé definir què volem aconseguir. Sigueu creatius i originals!

Per començar amb les històries animades escollim primer dos personatges i també dos escenaris. Recordeu la secció "nous objectes" de la pràctica introductòria, on es parla de la biblioteca d'objectes ja predissenyats i com dibuixar-ne de nous. Com a exemple per a la historia, hem seleccionat de la biblioteca d'objectes d'Scratch el jugador i la pilota de baseball:

RTENOTITLE

Recorda que a la secció "duplicar. eliminar i canviar la seva mida" de la introducció a Scratch, ja vas veure unes maneres de modificar l'aparença de qualsevol personatge, propi o predissenyat, i que a la de la Laika es mostrava com canviar de vestit. A la pràctica del vaixell musical es desenvolupen altres canvis d'aspecte, com el color i la brillantor, i encara hi ha més blocs de la categoria Aspecte que pots provar, t'hi animes?

Pel que fa als escenaris hem escollit la pista de baseball i una imatge d'un arbre:

Dosfons.PNG

 

El resultat de la preparació dels personatges i l'escenari quedaria així: 

RTENOTITLE

 

Com a història, de moment simularem un entrenament de baseball on un jugador rep una pilota i l'agafa al vol.

A continuació trobem diferents pautes d'utilitat per a l’elaboració d’històries, que anirem mostrant amb la nostra esportiva història d'exemple:

 

Col·locar cada personatge al seu lloc

El lloc, o posició, on es troba cada personatge és un dels aspectes essencials a dominar a l'hora de construir una historia o qualsevol altre programa amb Scratch. Recorda com pots saber a quin punt de l'espai es troba el teu personatge.

Per a canviar-lo de lloc, disposem d'un bloc que ens ajuda a situar un objecte en un punt. Aquest bloc detecta automàticament on es troba situat el personatge i en guarda la posició. Així que quan volguem que un personatge comenci o vagi a un punt només cal col·locar-lo manualment allà on volem que es desplaci i seguidament agafem el bloc amb la posició concreta. Veiem a continuació l'exemple de la posició del jugador i de la pilota. Fixem-nos que cada personatge o objecte té la seva propia programació. És a dir, que cal que tinguem seleccionat el personatge al qual volem adjudicar-li l'acció abans de construir el programa. 

RTENOTITLE         RTENOTITLE

Fixa't en la diferència entre fer servir aquest bloc i fer servir el bloc "llisca", que s'usava a la proposta del laberint de la Laika. Aquest bloc posiciona mentre que el "llisca" trasllada de manera que puc veure com s'està desplaçant.

Aquesta és la distribució de l'escenari d'Scratch. El centre és el punt (x:0, Y:0). Lesx són nombres positius a la dreta del centre i negatius a l'esquerra, anant des del -240 fins al 240, mentre que lesy són positives des del centre cap amunt i negatives del centre cap avall, anant des del valor +180 al marge superior fins al -180 a l'inferior. Recorda que els nombres estan ordenats de més petit a més gran d'esquerra a dreta i del terra a dalt respectivament.

Grill.PNG

 

Diàlegs i pensaments

A la categoria Aspecte.PNG es troben tots els blocs que permeten expressar el que els personatges diuen o pensen, com també blocs que es refereixen a l’aspecte físic del personatge com ara la seva mida o aparença (mostra o amaga).

Per exemple, puc fer que al meu personatge li surti una bafarada gràfica, com als còmics, a la que digui alguna cosa del tipus "tinc la pilota!":

 

RTENOTITLE Bafarada 2.PNG   

Prova a fer-ho amb el bloc "pensa...", com creus que es veurà la bafarada? Quina forma tindrà?

En el cas de l'Scatch 3.0 tenim la opció també de programar el personatge perquè se senti, amb so! la frase que diu, tal i com li escribim i en l'entonació i idioma que escollim. Trobem els blocs següents a l'extensió "text to speech".

                                           RTENOTITLE               RTENOTITLE

Mirar cap a un personatge o objecte

En qualsevol historia necessitarem que els personatges es moguin en alguna direcció. Per fer-ho, tenim un bloc que ens permet col·locar el personatge apuntat a la dreta(90), esquerre(-90), amunt(0) o avall(180). També tenim una opció molt pràctica que consisteix en apuntar cap un objecte en concret. Això permet simular que dos personatges es mirin, per exemple, que un vagi o estigui orientat cap a un altre, i altres aplicacions que aporten interacció i vivacitat a la història. Veiem-ne un exemple:

RTENOTITLE   

Si vull que la pilota vagi, o apunti, cap al jugador:

RTENOTITLE

Si a més, vull que el segueixi puc escriure un programa tal com aquest:

RTENOTITLEMoviment.PNG

 

Acostar i allunyar objectes

Es pot crear la il·lusió òptica de que un personatge o un objecte s'acosta o s'allunya de qui mira a la pantalla fent servir un truc de perspectiva. Si es va fent petit pot semblar que s'allunya i si creix que s'acosta. Per modificar la mida d’un personatge podem fer-ho a través del bloc “fixa la mida a” per establir una mida determinada del personatge o ve canviar la mida d’aquest a mesura que fa una altre acció, com per exemple caminar (amb el bloc “augment la mida en 10").

En el cas de voler reduir la mida del personatge només cal posar el nombre en negatiu, usant el mametis bloc "augmenta" (per exemple, "augmenta la mida en -10" la fa disminuir en 10).

També es pot modificar la mida segons el percentatge de la mida actual. Novament, pot fer-se més petita, si el percentatge és inferior al 100% (per exemple, un 50% la redueix a la meitat), o més gran del 100% per a aumentar el tamany (per exemple el 200% per a que sigui el doble del tamany de partida).

Generalment, anirem augmentant o disminuint a ull, mirant com queda a l'escenari, fent iteracions d'assaig-error fins a aconseguir el tamany desitjat.

RTENOTITLE   

Per a fer que un objecte vagi canviant de tamany, puc anar fent proves enfocades a fixar quin tamany vull a l'inici i quin al final, o també puc posar el focus a com vull que vagi augmentant o disminuint. Un canvi de tamany molt gran indicarà un desplaçament en l'eix de profunditat molt gran, i un petit poc produir l'efecete de menys velocitat o de menys espai recorregut.

A continuació es mostra un exemple de programa modificant la mida de la pilota, de més petita a més gran, a mesura que s'apropa cap al jugador:

RTENOTITLE           Bola1.PNG

 

 

Fer apareixer nous personatges o elements

Com passa a una pel·lícula, per exemple, pot ser útil canviar de seqüència. O també que hi hagi elements que apareguin, com per exemple una persona en obrir una porta. Dos dels blocs més interessants de la categoria Aspecte són precisament "mostrar" i "amagar". Per exemple, puc fer que un objecte o un personatge (o més) estigui "invisible" i que aparegui a la pantalla en un moment determinat, o, al contrari, que deixi de ser visible, com per exemple si simulo que un personatge es fica per un forat dibuixat al fons.

RTENOTITLE

De cara a la programació, i concretament a la seva inicialització, és important tenir en compte que cada vegada que amaguem l’objecte aquest romandrà sempre amagat fins que no se li indiqui una altra vegada, específicament mitjançant el bloc "mostra", que torni a ser visible. Per això, cal inicialitzar amb un "mostra" qualsevol programa on es faci desaparèixer un personatge (i, al contrari, fer-lo desparéixer amb un bloc "amaga" cada vegada ue el programa el faci aparèixer). En general, just després de la bandera verda, cal afegir als programes els blocs necessaris per a restablir totes les condicions inicials que es volen, com per exemple fer tornar a la Laika a l'inici del laberint a l'activitat passada. En aquest exemple, pel que fa a la pilota, vull que sempre comenci veient-se, en el mateix punt de partida i mirant cap al jugador.

Per exemple, puc fer que la pilota vagi avançant cap al jugador, i per tant es desplaça "lliscant" (i si vull afegir la perspectiva tridimensional, que vagi fent-se poc a poc més gran) i que desaparegui en tocar el jugador, simulant així que el jugador l'ha agafat:

RTENOTITLE

 

He perdut al meu personatge!

De vegades, programant amb Scratch et pots trobar programant un objecte i que de sobtes mires a l'escenari i no el veus. Usualment és per algun d'aquests dos motius, ha anat desplaçant-se fins a sortir fora de la pantalla, o ha quedat en estat "amaga't". Per tant, quan passi això, gairebé sempre el tornaràs a trobar clicant sobre el bloc "mostra't" i, si això no ha funcionat, clicant sobre el bloc, de la categoria de Moviment, "vés a x:... y:..." i dient-li que vagi al centre, per exemple. És a dir, "vés a x:0 y:0".

El temps a les accions: enviament de missatges

En qualsevol història amb més d'un personatge cal donar peus d'entrada per a coordinar les seves accions al llarg del temps. És conegut que en teatre els actors tenen peus que els indiquen quan han de dir una frase o fer una acció física, també ocorre a algunes coreografies, de manera més o menys explícita a jocs i esports, a la vida quotidiana (per exemple, començo a parlar quan tothom hagi acabat de parlar), etc. Justament aquesta coordinació entre diferents elements (objectes i fons!) és el que produeix interactivitat entre ells, com per exemple fer que es mostri el sol quan desapareguin les estrelles, o fer que un personatge digui "Uix!" quan li caigui una pinya al cap.

A la programació per blocs, aquesta coordinació d'accions es pot fer per mitjà de missatges. Qualsevol element (objecte o fons) pot enviar missatges, que poden ser rebuts per altres elements, i també qualsevol element pot fer o començar alguna cosa (incloent mostrar-se o amagar-se) en rebre el missatge. Així, per exemple, puc programar una pinya per a que llisqui d'una posició fins a una altra més avall i que quan arribi envïi el missatge (que ningú no veu) "cau la pinya", i a part, al personatge li puc escriure un programa que digui que, en rebre el missatge "cau la pinya" digui "Uix!". T'atreveixes a fer-lo?

Anem pas a pas. Hem dit que per definir la temporalitat en que s’executen les accions es pot fer ús del bloc “envia a tots...”, de la categoria Control. Aquest bloc ens permet indicar quan es vol iniciar una acció i tenir un control de la seqüència d'ordres del nostre programa. Anem a veure com ho apliquem al nostre exemple del baseball:

La "imatge 1" correspon al programa que té la pilota, de manera que és la pilota qui envia la informació. Fixa't que l'envia a tothom, però que no passarà res si cap altre element té alguna cosa programada a fer quan rebi el missatge "Agafar pilota". Nota que el nom del missatge l'escull la persona programadora, podria posar "missatge1", "missatge2", "missatge3", etc. O podria posar "visca el barça!", però és una bona pràctica que sigui alguna cosa descriptiva del que passa en aquell moment o del que es vol indicar. En aquest cas, per indicar que la pilota arriba al jugador i aquest l'agafa, "Agafar pilota", per exemple:

Imatge 1

 RTENOTITLE

Qui rep la pilota és el jugador i tal com observem a la "imatge 2" el personatge comença la seva seqüència d'accions (canvi de postura, canviant el vestit; i córrer, utilitzant el bloc "llisca...") quan arriba la pilota. És a dir que farà els seus moviments "quan rebi el missatge Agafar pilota":

Imatge 2

RTENOTITLE

Provant el programa fent el canvi de vestit i el desplaçament de cop, directament en "agafar pilota", resulta molt ràpid. Per donar accent a l'arribada de la pilota li puc posar una petita pausa (o espera), per exemple de dos segons, per donar temps al cervell a que imagini que agafa la pilota abans de començar a córrer. Això ho faig amb el bloc "espera .. segons".

Una altra manera de coordinar aquestes accions entre la pilota i el jugador podria ser mitjançant una (gran) espera. Seria alguna cosa del tipus calcular amb un cronòmetre quant triga a fer la pitota el seu recorregut, per exemple cinc segons, i començar les accions del jugador també en clicar la bandera verda però començant amb aquests cinc segons d'espera. Aquest mètode en general no és una bona pràctica perquè limita molt les modificacions a la programació i el creixement de la història. Per exemple, què passa si vull afegir que algú salti abans de que es mogui la pilota? Cada vegada que afegeixi, tregui o modifiqui alguna cosa hauré de recalcular el temps, i això per a cada acció que s'hi encadeni. Si, per exemple, vull fer un partit de ping-pong, a cada vegada que la pilota toqui la raqueta hauria de calcular tots els temps acumulats dels passis anteriors. És preferible el mètode dels missatges al de les esperes.

A més, el missatge s'asembla molt, tot i que d'una manera molt simplificada, a altres estructures (crida, subrutina, etc.) presents i molt utilitzades a altres llenguatges de programació, raó per la qual és una bona idea començar a utilitzar-les des d'Scratch.

Canvi de vestit

Per aconseguir un efecte visual de moviment mitjançant la programació dels personatges, podem fer ús dels vestit. No tots els personatges tenen incroporats vestits. Per comprovar si en tenen o no cal que en dirigim a la pestanya "vestits" i els consultem.  

RTENOTITLE

Afegim al programa que ja teniem aquest bloc de codi, de manera que així un cop el personatge rep la pilota canvia de vestit a una posició normal (ja deixant de realitzar l'acció d'agafar la pilota). 

Sencervestits.PNG

 

Canvi de fons

Per acabar, qualsevol història pot ser que contingui més d’un fons. El procés per aconseguir aquest efecte és semblant al de canviar un vestit.

Dins la categoria “Aspecte”, disposem d’un bloc que serveix per canviar d’un fons a un altre. Veiem la imatge inferior per comprendre-ho millor.

RTENOTITLE

 

 

Exemples

Un exemple d'història senzilla el trobareu aquí. A la web d'Scratch hi ha altres exemples, com per exemple per a explicar l'evolució del disseny del gat Scratch, un projecte del prinicipi d’Arquimedes  o una cursa de tortugues. A la wiki d'Edutec també hi ha exemples, com la història completa dels tres porquets explicada pas a pas.

A les properes activitats, vaixell musical i invasió de globus, hi ha més eines que et permetran fer històries encara més riques i interactives!

Som-hi!

Com les aplicaràs a les teves noves històries?