Laboratorio 4: "The Pong Game"

posted Feb 8, 2013, 12:34 AM by Camilo Rocha   [ updated Feb 8, 2013, 9:57 AM ]
El objetivo de este laboratorio es repasar algunas de las características del lenguaje de programación Python y aprender sobre librerias del lenguaje disponibles a través de CodeSkulptor. Para ello, el estudiante deberá modificar una versión del juego "Pong" en CodeSkulptor y entregar una versión "más interesante" de este juego.

"The Pong Game" es uno de los juegos clásicos de Atari. Puede revisar parte de su historia y también jugar en linea visitando http://www.ponggame.org/.

El taller se desarrollará en CodeSkulptor utilizando esta plantilla. Es importante que siga las convenciones e instrucciones allí expuestas.

Siguiendo la plantilla, identifique:
  1. Las constantes y variables globales que allí se encuentran definidas.
  2. La función init(); esta función se invoca cada vez que se inicia una partida del juego.
  3. La función draw(c); esta función se invoca aproximadamente 60 veces por segundo y su objetivo es actualizar el estado del juego y de la interfaz gráfica. La mayoría de cambios se harán en el cuerpo de esta función.
  4. Las funciones keydown(key) y keyup(key); estas funciones se encargan de registrar los eventos asociados al teclado. En la versión actual del juego las teclas 'w' y 's' controlan la paleta izquierda, mientras que las teclas 'arriba' y 'abajo' la paleta derecha.
Una vez familiarizados con el código de la plantilla, lleve a cabo las siguientes tareas sobre el código en la plantilla:
  1. Cambiar el color de la 'bola' de blanco a amarillo.
  2. Aumentar el tamaño del texto que muestra el marcador del juego a 28 unidades; actualmente el tamaño es 18.
  3. Cada vez que la 'bola' rebota en una pared o en una paleta, su velocidad aumenta un 10%; modifique esta proporción para que aumente 15% en lugar de 10%.
  4. Cambiar los controles de la paleta izquierda para que usen las teclas 'a' (arriba) y 'z' (abajo).
  5. Aumentar la velocidad de las paletas, al menos en un 100%; actualmente son lentas y esto hace el juego algo aburridor.
  6. Actualmente cada vez que se inicia un punto, la bola inicia hacia arriba y en contra de quien ganó el último punto. Cambie esto para que la bola aleatoreamente inicie hacie arriba o hacia abajo, pero manteniendo la regla de que se moverá en contra de quien ganó el último punto.
  7. (Bono) Las paletas no tienen ningún color de relleno. Modifique el código de tal manera que el borde de las paletas sea gris y su relleno blanco.
El laboratorio es individual y cada estudiante debe entregar:
  • El código impreso del laboratorio
    • El código debe ser ejecutable en CodeSkulptor
    • El encabezado del archivo debe indicar, usando comentarios de Python,
      • Su nombre en la primera línea
      • Su código de estudiante en la segunda línea
  • Suministrar, junto con el código impreso, un vínculo a su solución del laboratorio