La raqueta

En aquest apartat veurem com dibuixar el personatge de la raqueta i com programarem tota la lògica del joc.



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


  • Com podem moure la raqueta?
  • Com podem fer que la pilota reboti amb la raqueta?
  • Com podem controlar el fi del joc?


Construïm la raqueta

Per tenir una raqueta necessitem construir un nou personatge. Hem de procedir tal com vam fer per construir la pilota, però dibuixant una barra:



Ara ja tenim dos personatges al Pong: La pilota i la barra. Cal que situem la barra a la meitat inferior de l'escenari.


La pilota té un programa associat, com podem veure si la seleccionem, però la barra encara no. Quin programa li hem de construir? Els que hem jugat alguna al Pong tenim present que la missió de la barra és que la pilota no arribi a tocar mai el terra del joc. Cada cop que toca el terra es perd. Per tant, el nostre objectiu és tenir alguna manera de controlar el desplaçament lateral de la raqueta sense que variï la seva coordenada y.


El que farem serà controlar aquest desplaçament amb el ratolí. Si fem clic a la categoria Sensors veiem que hi ha una expressió que ens retorna la coordenada x del ratolí.



Ara podem utilitzar assigna el valor … a x de la categoria Moviment per fer coincidir la coordenada x de la barra amb la coordenada x del ratolí. Si això ho fem per sempre, començant quan la bandera verda es premi, ja ho tenim:



Programem al lògica del joc

Si ara premem la bandera verda, què veiem? La pilota va rebotant i podem moure la barra amb el ratolí, però no hi ha cap mena d'interacció entre els dos personatges. Caldrà fer que la pilota reboti en tocar la barra. Així doncs, seleccionem la pilota i anem a modificar el seu programa.


Si fem clic a Sensors veurem que podem detectar si un personatge en toca un altre amb l'expressió lògica (fixeu-vos en el contorn angular) tocant menú desplegable. Precisament en aquest menú podrem triar amb quin altre personatge hem topat:



Si triem l'opció correcte, l'expressió serà:



Afegirem un condicional dins de la iteració per fer alguna cosa quan la pilota toqui la barra (cal que recordem que estem modificant el programa de la pilota):



Què ha de fer la pilota quan toqui la barra? Doncs rebotar amb 180º menys l'angle d'entrada. En el Pong hem de canviar la direcció de la pilota tot fent 180 menys la direcció que tenia la pilota. Amb aquesta operació haurem calculat l'angle de sortida de la pilota quan reboti, és a dir, el canvi que hem de fer a la seva direcció per obtenir l'efecte rebot.


Ja sabem que a la categoria Operadors hi ha l'operació de restar i a la categoria Moviment tenim l'expressió que ens proporciona la direcció del personatge, en aquest cas la pilota. Així doncs, l'expressió que haurem d'utilitzar és aquesta:



Per tant, el nou programa, un cop fets tots els canvis detallats més amunt, és aquest:



Recordeu els valors per a les diferents direccions que poden tenir els personatges:


Perdre el joc

Continuem complicant, i fent més interessant, el joc. Volem saber quan la pilota ha passat la barra sense rebotar, és a dir, quan hem estat incapaços d'interceptar la pilota.


Ja sabem que podem detectar el contacte entre dos personatges, així hem estat capaços de fer rebotar la pilota amb la barra. De la mateixa manera, podem crear un nou personatge per detectar aquestes col·lisions. Hem de crear un nou personatge i dibuixar-hi una barra tan llarga com ample és l'escenari. Ha d'anar de punta a punta. Un cop creat aquest personatge, l'hem d'arrossegar fins la part inferior de l'escenari, que quedi col·locat sota de tot. Veieu com queda la barra vermella de la figura.



Ara, si el que volem és que s'acabi el joc, hi ha una part del programa que hem de modificar. Una cosa que s'ha d'acabar no pot durar per sempre!



Així doncs, haurem de canviar aquest per sempre per alguna estructura que respongui a les nostres necessitats, i n'hi ha una, no? En el mòdul anterior vam conèixer el repetir fins, què és precisament el que ens cal. Però… fins quan? Doncs fins que la pilota toqui la barra vermella. Utilitzarem la mateixa expressió lògica que hem fet servir per detectar el rebot, però amb l'Sprite3, que és com es diu la barra vermella. Ja sabem com combinar-ho tot plegat, i el programa resultant és



Ara hem de jugar molt bé perquè el joc s'acaba de seguida que l'espifiem.