Explicació del codi pong
El primer que explicaré és com funciona una pala intel·ligent:
Here's how to make a list:
- Mira el dibuix de més amunt. Has d'entendre que la pala intel·ligent s'anomana aiPaddle per les sigles en anglés artificial intelligence Paddle. No oblidis que aquesta pala seguiex de form automatica a la bola i sempre guanyará. El jugador té una altre pala que s'anomena playerPaddle que pot moure amb les fletxes del teclat.
- El primer que hem de fer és situar el centre de la pala intel·ligent respecte a la alçada o eix y perqué he de comparara tota la estona aquest centre de la pala intel·ligent anomenat middle of Paddle amb la posició y de la bola (ball.y). Si ball.y és més gran que middleofPaddle, el que he de fer, es baixar la pala. Si ball.y és més petita que middleofPaddle, el que hem de fer és pujar la pala.
- L'anterior s'aconsegueix primer definint middleofPaddle amb codi: let middleofPaddle = aiPaddle.y + aiPaddle.height/2;. Aquesta línia s'escriu així perque necessito calcular la posició de la meitat de la pala intel·ligent. Recordem que el 0,0 es la contanada superior esquerre i la pala intel3ligent està a la cantonada esquerra i la pala intel·ligent està al costat dret. Per arribar al centre de la pala intel·ligent hem de sumar des de 0,0 fins a l'extrem superior de la pala (es diu aipaddle.y) sumant la meitad de la alçada de la pala(aiPaddle.y + aiPaddle.height/2;).
Per saber quan xoca la bola i la pala he de calcular el front de la bola i el front de la pala, perquè són les parts que xocarran. El front de la bola el calculem restant ball.x i ball.r, perquè ball.x calcula fins el centre de la bola i necessitem ball.r per restar el radi perquè no xocara per el centre si no per un costat. Si xoca amb l'altre pala hem de calcular un altre front de bola, perquè xoca per l'altre costat i ara el càlcul es diferent: ball.x + ball.r. La pala el seu càlcul del front és totalment diferent la pala de la dreta respecte a la pala de l'esquerra. La pala de l'esquerra es intel·ligent i per calcular el seu front s'ha de fer aiPaddle.x + aiPaddle.width i el front de la pala del jugador seria playerPaddle.x perquè no hem de sumar l'amplada perquè xocaria per darrera.
La puntuació ha de complir les condicions de la pala que no xoqui amb la bola i que sobrepassi aiPaddle.x o playerPaddle.x + player.Paddle.with