Interacció entre elements

En aquest apartat veurem quines opcions tenim per moure un element per la pantalla com a pas previ per fer un joc.



Més concretament es pretén donar resposta a les preguntes següents:


  • Com podem moure un element per la pantalla?
  • Com podem programar la interacció amb un element en moviment?
  • Què és una variable i com la podem utilitzar?
  • Com podem fer un control de temps?


Ara que ja sabem com programar el moviment d'un element anem a programar la interacció amb un altre element. Comencem creant un nou ImageSprite i assignant-li una imatge. En el nostre exemple hi hem posat una creu



Ara hem de fer el programa que controla el contacte entre la fletxa i la creu. El control de la interacció la fem amb aquesta instrucció:



Fixem-nos que amb aquesta instrucció podem controlar que passarà quan la fletxa toqui un altre objecte (other), sense especificar quin. Així doncs hem de posar un condicional per als diferents comportaments que pugui tenir la fletxa en tocar diferents elements. En aquest cas només n'hi ha un, que és la creu, i el comportament que hem programat és que s'aturi la fletxa:



Ara mateix com a joc és força avorrit. En lloc d'acabar el joc quan la fletxa toqui la creu, farem que la creu desaparegui i aparegui en un altre lloc de la pantalla:



Els valors màxims de les coordenades x i y els podem trobar movent la ImageSprite pel Canvas i mirant les seves propietats:



Control de temps

El joc, tal i com el tenim ara mateix no s'acaba mai. Anem a convertir-lo en "Quantes creus pots tocar en un minut".


El primer que farem és afegir dues etiquetes a la part superior de la pantalla per comptar el temps i els punts. Això implicarà que que el Canvas serà una mica més petit i haurem de canviar els límits màxims. A més a més, com que volem portar un control de temps haurem d'afegir el component no visible Clock.



Comencem pel control de temps. A les propietat del rellotge (Clock) podem veure que està configurat per defecte per tal que el timer estigui habilitat i l'interval sigui de 1000 milisegons:



El timer envia un impuls de rellotge cada cert temps (TimeInterval), que podem utilitzar per controlar diferents esdeveniments en el programa.


Comencem declarant una variable per definir el temps que durarà el joc i li anem restant "1" cada impuls de rellotge (TimeInterval), és a dir, cada segon (1000 milisegons). El resultat el mostrem en pantalla i ja tenim el cronòmetre:



Tal i com està el codi, el cronòmetre no s'atura mai, i un cop arribi a zero continuarà amb valors negatius. Hem de tenim present que el cronòmetre que hem dissenyat no és un cronòmetre de veritat, sinó que només és una variable que compta enrere.


Anem, doncs, a posar-li un límit. Farem que quan el cronòmetre arribi a zero s'aturin el cronòmetre i la fletxa:



Control de puntuació

Per afegir la puntuació farem el mateix que hem fet amb el temps, és a dir, utilitzarem el control de col·lisió per augmentar la puntuació en "1" cada cop que la fletxa toqui la creu. Prèviament, però, haurem d'haver declarat la variable corresponent: