En la lección Juegos con pygame: Pong se muestra la elaboración del juego de Pong en una serie de pasos.
Los ejercicios de esta página proponen variaciones sobre estos pasos y se pueden hacer a medida que se va leyendo la lección, o se pueden hacer al terminar de leer la lección completa.
A partir del programa propuesto en el Paso 1, escriba un programa que abra una ventana:
de tamaño 640 x 480 px (la resolución VGA original)
de color de fondo gris claro (por ejemplo #ccc)
con el título Ejercicio 1-1
Pong (1) - Paso 2
A partir del programa propuesto en el Paso 2, escriba un programa en el que:
la pelota sea de color verde (uno de los ficheros proporcionados en las plantillas)
la pelota sea una imagen más realista (busque en Internet una imagen de pelota y redúzcala al tamaño adecuado)
la posición inicial de la pelota sea la esquina inferior izquierda
la pelota se mueva justo en diagonal, hacia la esquina superior derecha (la velocidad no es importante, pero que no vaya demasiado deprisa)
Más difícil:
la pelota tenga un tamaño cuatro veces más grande que la imagen (por ejemplo, 50 x 50 en vez de 25 x 25). Para ello, busque en la documentación de pygame el método scale.
Pong (1) - Paso 3
A partir del programa propuesto en el Paso 3, escriba un programa en el que:
la pelota aumente de velocidad tras cada rebote (tenga en cuenta que el aumento de velocidad puede realizarse con valores decimales)
la pelota cambie de color en cada rebote (por ejemplo, usando los ficheros proporcionados en las plantillas, que cuando rebote arriba cambie a amarillo, que cuando rebote a la izquierda cambie a rojo, que cuando rebote abajo cambie a verde, que cuando rebote a la izquierda cambie a verde)
A partir del programa propuesto en el Paso 3, escriba un programa en el que:
al llegar la pelota a un lado, en vez de rebotar, aparezca por el lado contrario moviéndose en la misma dirección que tenía
Un poco más difícil (hay que crear nuevos atributos y/o métodos):
que la pelota cambie de color al azar en cada rebote (si el color puede repetirse es más fácil, si el color tiene que cambiar es un poco más difícil). Esto se puede conseguir sin crear un nuevo método, pero para evitar la repetición de bloques de código de varias líneas, es mejor crear un método.
que la pelota aumente de velocidad en cada rebote hasta una velocidad determinada y después reduzca su velocidad en cada rebote hasta la velocidad inicial y repita el ciclo indefinidamente
que la pelota cambie de color en cada rebote, no cambiando de fichero, sino rellenando la imagen con un color. El color puede ser un color RGB elegido al azar entre todos los posibles. Para ello, busque en la documentación de pygame el método fill.
Pong (1) - Paso 4
A partir del programa propuesto en el Paso 4, escriba un programa en el que:
la dirección no sea en diagonal, sino en cualquier dirección (excepto en vertical, porque no se saldría nunca de la ventana).
Haga una imagen png que sea una raya vertical color negro de tres o cuatro px de ancho y de altura menor que la ventana (por ejemplo, la mitad). Dibuje sendas rayas negras pegadas a los lados izquierdo y derecho, centradas en vertical. Estas rayas representarían las porterías del juego. Si la pelota atraviesa la raya, la partida se reinicia, pero si la pelota llega al lado fuera de la raya, debe rebotar.
Pong (1) - Paso 5
A partir del programa propuesto en el Paso 5, escriba un programa en el que:
cada raqueta tenga una imagen de color distinto (prepare una segunda imagen de raqueta)
Pong (1) - Paso 6
A partir del programa propuesto en el Paso 6, escriba un programa en el que:
la raqueta se desplace con las flechas arriba y abajo. Para ello, busque en la documentación de pygame el método key.
la raqueta también se pueda desplazar en horizontal, sin salirse por la izquierda ni entrar en la mitad derecha de la ventana. El movimiento se controlaría con las flechas izquierda y derecha o con las teclas a y d. Puede dibujar también una línea vertical que indique la separación entre campos.
Pong (1) - Paso 7
A partir del programa propuesto en el Paso 7, escriba un programa en el que:
si la raqueta se está desplazando, cambie la dirección del rebote. Por ejemplo, si se está moviendo en la misma dirección que la pelota, el ángulo de salida debería ser menor que el de entrada, pero si se está moviendo en la dirección contraria, el ángulo debería ser mayor
si la raqueta también se puede desplazar en horizontal, que pueda golpear hacia atrás