PONG

Adaptació a Snap4Arduino del projecte pong publicat a Classe de Tecnologies Creatives (CTC) : Pong

És una versió simplificada del clàssic joc d'arcade Pong.

En aquest joc, un “pong” es mourà a través de cinc leds. A mesura que els jugadors vagin prement el botó, rebotarà d’una banda a l’altra. Els jugadors han de prémer el botó en el moment precís amb l’objectiu de retornar el pong.

El projecte amb Snap4Arduino permet combinar la simulació amb el muntatge real. Es pot veure en el següent vídeo com es pot jugar tant amb els botons físics com amb els simulats:


Material

  • 1 placa Arduino
  • 1 Arduino Educational Shield
  • 2 botons Tinkerkit
  • 2 cables Tinkerkit
  • 5 LEDs
  • 5 resistències de 220 ohm
  • 5 cables negres
  • 5 cables de colors




Muntatge





Aquest muntatge també es pot fer sense la placa Arduino Educational Shield.


Com funciona?

El joc comença amb una intermitència (blink) dels cinc leds i després s'indica el sentit del desplaçament inicial parpellejant el led del costat cap a on es desplaçarà el "pong". El sentit del desplaçament inicial es determina aleatòriament a l'inici de cada partida. Quan l’últim led s’apaga, el botó del costat corresponent ha de ser premut dins el temps establert. Si es fa, el "pong" es desplaçarà de nou cap a l'altra banda. Una altra vegada, quan l’últim s'apaga, cal prémer el botó corresponent dins el temps màxim de pulsació. Si es fa així el procés s'inverteix i el joc continua. Quan un dels jugadors triga més del permès a prémer al botó el joc finalitza (gameOver). En aquest cas, tots els leds parpellejaran i una intermitència final d'un sol led indicarà el costat guanyador.


Una proposta del pong amb Snap4Arduino

Quan es treballa amb Snap4Arduino es poden combinar el món real i el virtual. En aquest exemple s'ha optat per virtualitzar el muntatge de manera que es pugui jugar encara que no es disposi de la placa Arduino.

L'escenari

Reprodueix els elements actius del muntatge i el seu comportament. Conté tres elements sobre els quals es pot interactuar:

  • Dos botons (button1 i button2): responen als clics del ratolí i a la pressió sobre els botons reals. Si es programa, també poden respondre a pulsacions de tecles. El joc es pot realitzar indistintament amb els dos tipus de botons.
  • La targeta (board): permet indicar si el projecte s'executa amb una placa connectada o no .


L'escenari també conté cinc leds per completar la simulació del joc.

El programa

Seqüència principal de blocs A la imatge es pot veure la seqüència principal del programa:

  1. Inicialització :
    1. Inicialització de variables (gameOver, pressTime, speed) i indicació dels pins de connexió dels leds i els botons (llista ledPins, button1, button2).
    2. Efectes visuals d'inici de partida.
    3. Determinació aleatòria del desplaçament inicial del "pong".
    4. Indicació lluminosa del sentit inicial.




  2. Bucle principal controlat per la variable que s'inicialitza amb el valor fals en el bloc d'inicialització:
    1. Encesa i apagada seqüencial dels leds segons el sentit del desplaçament.
      La velocitat de propagació és inversament proporcional al paràmetre temps

    2. Comprovació del temps de reacció . Aquest és un bloc de tipus "reporter". El seu valor serà cert o fals en funció de la resposta del jugador. Si reacciona a temps s'invertirà el sentit del desplaçament del "pong" i el joc continua. \\En cas contrari, s'estableix a cert. Això provoca la sortida del bucle.

  3. Final del joc: s'executa el bloc que s'encarrega dels efectes lluminosos de final de partida amb indicació del costat guanyador acabant així el programa.

Fitxer del projecte pong per Snap4Arduino


Per continuar experimentant...

  1. Fer que el joc no s'acabi quan un dels jugadors no respon dins del temps màxim permès.
  2. Fer que el joc acabi després d'un nombre determinat d'errades d'algun dels dos jugadors.
  3. Incorporar un comptador de punts guanyats per a cada participant i mostrar-ho a l'escenari.
  4. Incrementar progressivament la velocitat de desplaçament del "pong".
  5. Fer que el temps màxim de resposta permès es redueixi progressivament al llarg de la partida.
  6. Introduir nous efectes lluminosos per indicar inici, final i guanyador de partida.