Pràctica 3. Afegint la lògica de control del joc

Ja que tenim feta la part de reproduir la seqüència, només ens queda comprovar que el que juga ho està fent bé. Per això ho comprovarem cada vegada que premem un objecte que correspon a l'element de la llista que toca. Si no és així haurem de generar algun tipus d'error i tornar a començar. L'element correcte es pot extreure fent servir una variable 'Index' i consultant el valor de la llista. En el nostre cas hem canviat el nom de la llista, l'hem anomenat 'Ninos' i el codi seria:

Només caldria fer una comparació i decidir. Però l'Scratch no pot comprovar directament cadenes de caràcters. El problema es pot resoldre fent servir una variable intermèdia. En aquest cas li direm 'Nino' i veurem que la podem fer servir desprès per fer altres funcions.

El codi aproximat per l'objecte 'BLAU' per comprovar la seqüència seria aquest:

Si encertem, enviarem un missatge 'BLAU'. Aprofitarem que la variable 'Nino' té aquest valor. També canviarem la variable 'Index' per 1 per continuar comprovant la seqüència. Si fallem enviarem un missatge 'Perdut' que ja processarem.

El codi complet del nino 'VERMELL' seria el següent:

La variable 'Jugant', només s'activarà quan ens troben en el procés de comprovació de la seqüència, és a dir, jugant. D'aquesta forma evitem fer comprovacions quan aquesta s'estigui reproduint. És una forma d'aïllar els diferents estats del nostre programa.

Com que tenim tots els elements necessaris, podem crear la part principal del nostre joc. Hem d'inicialitzar les variables 'Nivell' i 'Jugant', generar la seqüència, reproduir-la i esperar la seqüència de resposta, és a dir la jugada. Si tot va bé, incrementarem el nivell. Aquest codi el podem posar a l'etapa del nostre projecte.

El codi principal seria el següent:

Hem posat un limit de 10 nivells i si l'aconseguim donem per guanyat el joc. Hi ha una sèrie de missatges com ara 'Ajuda' i 'Guanyat' que veurem després com es construeixen. Bàsicament són informatius per donar indicacions al jugador de com ho està fent.

Ara ens fixarem en el missatge 'Jugar'. El que s'ha de fer és establir el valor 1 a la variable 'Index' i esperar fins que sigui més gran que el nivell actual. Això voldria dir que aquest nivell s'ha aconseguit. Enviarem un missatge 'MoltBe' de caire informatiu i la jugada estarà feta.

El codi de resposta a jugar, també a l'etapa, serà el següent:

Ja tenim el joc pràcticament acabat. A l'etapa tindrem la part de generació, reproducció i control del joc. Cada objecte serà responsable de la part gràfica, el so, les pulsacions i la comprovació amb la seqüència generada. Només ens queda afegir un nou objecte que serà el responsable de donar les informacions al jugador. Escollirem el nostre estimat gat.

El nostre amic en acció:

El codi és molt senzill, simplement farem servir la instrucció 'digues … durant … segons' de la categoria 'Moviment'. En el cas de rebre 'Guanyat' o 'Perdut' aturarem tot el programa. Es podria fer una versió que tornés a començar però s'ha d'estudiar adequadament el fluix de missatges per no provocar una espera contínua en algun lloc del nostre programa.

El codi de resposta de 'Ajuda', 'Guanyat', 'Perdut' i 'MoltBe' és el següent:

El missatge 'Perdut' s'envia a l'objecte correcte per fer veure al jugador on s'ha equivocat. Potser es podria fer un efecte visual diferent quan es perd.