10 Set

1.1 BJC: Snap!Lab – Exercicis bàsics

Aquesta setmana, al curs d’introducció a la computació de la Berkeley, crearem una primera aplicació, dissenyarem procediments per dibuixar, crear música, animar objectes, etc. Com a tècniques, farem ús de la repetició (loops) i, en general, explorarem conceptes matemàtics i de computació: lògica, atzar, etc. I trastejarem el fòrum…

FÒRUM

A més del laboratori, hi ha el fòrum. Haig de dir que no sóc molt fan dels fòrums dels MOOCs… En aquest hi ha 10.000 persones i només de pensar-hi, ja m’atabalo. Sembla que ens endrecen en petits grups però encara ho hi tinc accés: no sé per què però és una eina externa al MOOC, i un s’ha d’esperar 24h des de que es registra perquè hi ha gestió humana.

No em molesta esperar-me 24h per temes de gestió però sí rebre un mail cada 4 hores… I em diuen que ho puc canviar a l’Account Settings però allà no trobo l’opció. Hi ha alguna cosa que no dec haver entès… Total, que aquesta setmana hi ha un parell d’activitats de fòrum: respondre a una pregunta de tres que proposen i comentar la resposta d’algú altre. Sense voler, les he contestat totes tres ;) Opinar és gratis i els humans som opinòlegs per naturalesa…

  1. Posar un altre exemple d’abstracció (com el del cotxe d’en Brian). El primer que m’ha vingut al cap ha estat una recepta de cuina: tot i els processos químics que se succeeixen a nivell culinari, quan cuinem no pensem en termes de química sinó en termes de sabors, olors, combinació d’aliments. Això sí, si no som molt intuïtius, fem mates per mesurar quantitats. També se m’ha ocorregut que endreçar la nevera és també potser un acte d’abstracció: per tal que hi càpiga tot i en plan Tetris, primer posem els objectes més grans (essència) i, després, els més petits (detall) pels forats que queda (i no al revés). I això sempre em recorda a allò del pot de vidre, les pedres i la sorra. Si en un pot de vidre poses primer la sorra, no t’hi cabran les pedres. Hi cabran si les poses primer i, després, afegeixes la sorra, que s’escolarà entre les pedres. Hi ha una versió “catxonda” de la historieta que diu que, després de posar pedres i sorra, al pot s’hi vessa una cervesa perquè sempre hi ha d’haver lloc per prendre alguna cosa ;)
  2. Explicar el procés d’abstracció. En quin moment es passa de l’essència al detall? Bona pregunta: ni idea. Penso en els meus processos creatius i no sabria explicar certes coses que surten naturalment… Aviam si me’n surto. Faré servir d’exemple un joc de cartes sobre fonts vuitcentistes de Barcelona. A mode de nuvolosa interestel·lar, primer m’apareix una idea estructural del tema (fonts vuitcentistes) i de la tipologia del joc (cartes). El tema em determina el contingut i la tipologia, els elements i la mecànica del joc. Si el dibuixets de les cartes són així o aixà no és massa rellevant en un primer moment. Mentre el creo, no em calen els dibuixos definitius. De fet, si vull posar 4 fonts al joc, només em caldria assignar-els-hi un número o un dibuix abstracte a cadascuna per seguir dissenyant el joc. Crec que passo al detall en el moment que el joc té la mecànica assentada…
  3. Hi ha algun procés en el que no s’usi l’abstracció i el detall sigui imprescindible? Ha sigut llegir això i pensar en el Sherlock, jeje. Ell fa ús dels detalls per resoldre els casos. Suposo que és cosa de mètode de raonament. En Sherlock fa servir un mètode inductiu i troba un tot (resol el cas) a partir de certs detalls (pistes).

Al final, he respòs la segona pregunta. Atenció al meu inglish pitinglish:

“Creative processes are hard to explain because they come naturally from chaos…but I will try. Excuse my english. I hope you’ll understand what I mean :)

When I design a game I need to use abstraction in order to save time and energy. First, I think about theme and kind: the theme delimits content (exemple of my last game theme: XIX century fountains of Barcelona) and kind delimits mechanics (it’s a cards game). In this first part of the creative process I don’t really need details about the exact design every card will have (I can use numbers o letters instead). Then, when mechanics and elements have been structured, I can work on details.

Because I know this game will be hard for someone who doesn’t know about art history or the city itself, mechanics are familiar with another classic card games (like “Remigio” I don’t know the name in english).”

ENTORN D’SNAP!

Primer se’ns indica com crear un compte d’usuari a Snap! i com entrar al nostre compte. Una de les coses xules d’Snap! i que no explica el curs és que, amb el mateix compte d’Snap!, pots fer servir dos programes més -molt vius, per cert-,  que s’estan desenvolupant paral·lelament: Snap4Arduino (un software per programar enginys robòtics) i Beetleblocks (un altre software per dissenyar en 3D). De res, folks ;)

També se’ns ensenya a com desar, obrir i compartir un projecte, i se’ns mostra una mica com funciona el botó de play i stop de l’entorn gràfic.

ANIMACIO, ATZAR I COORDENADES

Al primer exercici ens fan treballar en parelles (pair programming) per animar l’Alonzo, que  no és que estigui deprimit… L’Alonzo és la mascota d’Snap!, com el gat Scratch ho és del llenguatge de programació Scratch, d’on surt el codi d’Snap!, per cert… “El zoo de computación” és el millor article que he llegit per entendre l’evolució dels llenguatges de programació visual. No em canso de recomanar-lo: gràcies de nou per escriure’l, Bernat!

Alonzo

Què li diu un .gif a un .png? Vinga, anima’t!

Doncs això, que hem d’animar l’Alonzo… Jo és que em vaig passar dies i dies publicant un tuto que havia de ser petit i que no ho és tant. En fi, que mola animar l’Alonzo per començar a trastejar el Ferrari però, per fer-ho, també podem animar un ratpenat volador i fer-lo interactiu en un tres i no-res ;) Per cert, si treballem per parelles és convenient canviar de rol. Normalment un compi controla el ratolí i, l’altre, la situació. Se’ns recomana un article de l’Stuart Wray titulat “How Pair Programming Really Works“.

Al segon exercici se’ns anima a fer servir un bloc d’operadors “el bloc d’atzar” i el bloc de moviment “Mou-te passes”. Al tuto que no és petit, he dedicat una entrada a la paleta de blocs. La gràcia de l’exercici que se’ns planteja és el fet de programar un objecte, en aquest cas l’Alonzo, de manera que, cada cop que el cliquem, es posicioni a un lloc diferent de la pantalla. Amb això, a més del moviment i de l’operador, se’ns explica com funcionen les coordenades de l’escenari per tal de posicionar-hi els objectes dels nostres jocs o animacions.

M’agrada molt que els exercicis estiguin integrats. Al mateix temari, hi ha un requadre que simula l’entorn d’Snap! Des d’allà, podem localitzar i utilitzar els blocs que necessitem per l’exercici i, un cop hem acabat, podem clicar el botó de “Get Feedback” per comprovar si la nostra nostra resposta és correcta. He hagut d’inventar-me un PseudoAlonzo perquè no em deixava carregar els personatges des de la galeria predeterminada:

bjc-x12-feedback1

bjc-x12-feedback2

DEURES 1 – APP-LONZO

Com a deures, hem de programar un joc/app que consisteix en que:

  1. Quan comença el joc (hem premut la bandera verda que és el play), apareix un personatge (l’Alonzo) que ens diu que el cliquem.
  2. Quan el cliquem, desapareix el missatge i, a partir de llavors, el personatge canvia de posició cada 2 segons.
  3. Nosaltres hem d’intentar atrapar l’Alonzo, clicant-lo. Si el cliquem, es difumina una mica i torna a veure’s del tot quan ha canviat la posició de nou.

Per fer tot això, sens anima a fer ús de bloc de control com “esperar segons” o “per sempre” i blocs d’aparença per canviar l’efecte de la imatge. Primer, però, entrem al nostre compte d’Snap! i creem un projecte nou per aquest exercici.

El problema que tinc (i que més d’un/a alumne tindrà, suposo) és que se’ns demana que l’Alonzo mostri el missatge fins que sigui clicat per l’usuari… Sincerament, no sé fer-ho, així que, fins que no ho esbrini, li faré mostrar el missatge 3 segons.

Per fer un pas més enllà, un cop creat el projecte, el publiquem/compartim i juguem des del telèfon a través de la URL que ens dóna la publicació/compartició. Bé, jo no tinc catxarro operatiu, així que m’hauré de buscar un/a Beta Tester ;) Qui s’anima? Aquí el link del projecte de l’Alonzo “cul d’angúnies”, jeje. Aviam si enllaça bé perquè ja m’ha passat que clico l’enllaç però no arribo al projecte sinó a la pàgina principal d’un projecte buit…

DEURES 2 – CIRCUMFERÈNCIA INSCRITA

Houston! Aquí el primer sot… Ens fan trastejar blocs de control, moviment i llapis per dibuixar un quadrat de 100 píxels de llarg. Fins aquí, tot controlat. Ara, la conya marinera és que hem de dibuixar una circumferència dins del quadrat que, per cert, he vist que es deia “circumferència inscrita” (de fet, es diu així a totes les circumferències que es troben dins un polígon).

Jo sé fer el quadrat i la circumferència per separat, però no sé posar-la dins… Si poso una ordre sota l’altra en un mateix script, lògicament, dibuixa el quadrat i, tot seguit, la circumferència es comença a dibuixar allà on ha parat de dibuixar el quadrat, és a dir, a la coordenada 0,0. Per això, posem una ordre d’avançar 50 després de que dibuixi el quadrat i abans de començar a dibuixar la circumferència. Atenció nyap…

bjc-x12-quadrat-cercle-problema

Entenc que el radi de la circumferència ha de ser la meitat d’un costat del quadrat, és a dir, 50. Però no sé com expressar-ho amb els blocs perquè només sé fer la circumferència així, movent un pas i un grau… Suposo que, d’alguna manera, puc indicar-li a la circumferència que comenci a dibuixar-se en funció de la mida del quadrat… I que el prengui com a referència per posar-s’hi dins. O, no? En fi, que seria molt bonic fer-ho matemàticament però, de moment, ho faré “xapucerament”, és a dir, modificant el nombre de passos de la circumferència per fer-la més petita…

DEURES 3 – GATS, GOSSOS, POLÍGONS I NIUS

Ara, tenim la missió de programar dos objectes-personatges o sprites. Un objecte es mourà amb el ratolí i, l’altre, perseguirà el primer. Quan es trobin, tindran una petita conversa. Jo he posat un gos perseguint un gat: si el gos atrapa al gat, li diu: “Game Over”.

Actualització de l’11 de setembre de 2016: aviam, que m’adono que no ho he fet bé… Els animalons han de tenir una conversa i el meu gos fa un monòleg… Ho canvio: els faré explicar l’acudit del .gif i el .png, hehe. El gos dirà: “Què li diu un .gif a un .png?” I el gat dirà: “Doncs no ho sé…” I el gos respondrà: “Vinga, anima’t!“. El gat riurà en català: “Hahaha!, és boníssim!“. I el gos, tot cofoi, dirà: “Gràcies, gatet!, tu sí que m’animes!“.  No sé com traduir aquest acudit, sorry folks…

Per cert, és magnífic el bloc-bucle de control “tell sprite” que trobem a les eines addicionals: s’ha de clicar a la icona del document i després a “Importa eines”. Pots fer parlar els personatges sense enviar missatges, que és com ho feia fins ara… Fi de l’actualització de l’11 de setembre de 2016″.

Els animalons els he agafat de la llibreria predeterminada i, sense ànim d’ofendre, no són molt llustrosos, pel meu gust. Tant de bo Snap! tingués padrins com Scratch en aquest sentit…Amb Scratch col·labora la Cartoon Network i trobo que és un WIN-WIN… Estaria bé alguna col·laboració amb dissenyadors gràfics / il·lustradors per tenir personatges i ítems bàsics en vector… El software és la canya però, en quant a l’entorn gràfic, Scratch li dóna cent voltes… Personalment, dibuixo abans amb Inkscape (que també és programari lliure) i després pujo les imatges al programa… L’editor d’Snap! no em fa prou el pes, encara… També manca una galeria però sembla que està de camí, quan reciclin la de Beetleblocks ;)

Després, hem de crear triangles amb nius de bucles de repetició, és a dir, posar bucle dins bucle i canviar la mida del triangle a cada cop… Sense dir-nos-ho encara, estem treballant la recursivitat. I aquí un altre acudit: per entendre la recursivitat hem d’entendre primer la recursivitat, hehe. bjc-x12-u1l3-triangles-recursivitatCom fem aquest dibuix amb Snap!? Primer hem de crear un triangle vermell de 100 (repeteix 3 vegades mou-te 100 i gira dreta 120 graus), després un de blau de la meitat que el vermell i, finalment, un de verd, la meitat del blau. Per aconseguir aquesta figura, haurem de posar el bloc del triangle blau entre el bloc de passos i el de graus del triangle vermell; i, amb el mateix sistema, el verd anirà dins el blau. Apali! A dibuixar!

Actualització del 12 de setembre de 2016: Si ja ho has provat tot i no te’n surts gens gens, aquí deixo la solució ;) Fi de l’actualització del 12 de setembre de 2016.

Deixa un comentari

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