Pong, el juego

Hola de nuevo.

En la entrada anterior se ha explicado cómo comenzar a programar el juego Pong, vimos qué variables y constantes son necesarias y dimos algún consejo de buenas prácticas. Vimos también los eventos de teclado para que cada jugador disponga de dos teclas para mover su pala. Hoy vamos a terminar el código para que el juego funcione y nos permita medir nuestra pericia con algún compañero o amigo.

Si recapitulamos a entradas anteriores donde se explicaba la forma de animar objetos en un DrawingArea, recordaremos que usábamos un Timer con un delay de 16ms, que equivale mas o menos a 60 fps. El evento del timer se dispara 60 veces por segundo refrescando el DrawingArea que a su vez dispara su evento Draw. Todo el código que situemos dentro del evento Draw se ejecutará 60 veces por segundo, código que en su mayoría son rutinas y cálculos de dibujo, dando la sensación de animación. Veamos el código completo de ese evento y después lo analizamos:
Leer más Pong, el juego

Pong y los números mágicos

Hola de nuevo

Después de una temporada sin publicaciones debido al trabajo y a unas merecidas vacaciones, volvemos a la carga con el esperado juego Pong, una demostración muy sencilla de cómo en alrededor de 200 líneas de código se puede realizar un juego entretenido usando sólo el control DrawingArea de Gambas.

Pong (o Tele-Pong) fue un videojuego de la primera generación de videoconsolas publicado por Atari, creado por Nolan Bushnell y lanzado el 29 de noviembre de 1972. Pong está basado en el deporte de tenis de mesa (o ping pong). La palabra Pong es una marca registrada por Atari Interactive, mientras que la palabra genérica “pong” se usa para describir el género de videojuegos “pala y bola”. Podéis ver la información completa en Wikipedia.

Magic numbers

Antes de meternos en harina con el código, me gustaría hacer un apunte respecto de algo que seguramente os sonará: magic numbers o números mágicos. ¿Y eso qué es?… os preguntaréis algunos. Bien, simplemente son esos valores numéricos que se asignan en nuestro código y que realmente nadie sabe de dónde vienen, pero hacen que el programa funcione. Si, efectivamente estoy en “modo irónico”, porque a decir verdad, estamos hablando de una mala práctica. Veamos un ejemplo:

DrawingArea1.Width = 800
DrawingArea1.Height = 600
$ball_pos = [800 / 2, 600 / 2]
$paddle1_vel = [0, 0]
$paddle2_vel = [0, 0]
$paddle1_pos = [10, (600 / 2) - 50]
$paddle2_pos = [800 - 10, (600 / 2) - 50]

¿Qué significan todos esos números y de dónde vienen? Un programador que lea nuestro código tendría problemas para entenderlo y mantenerlo; incluso nosotros mismos aunque lo hayamos escrito, olvidaremos su significado tras un periodo de tiempo corto.

Leer más Pong y los números mágicos