🎮 “Aprende programación de videojuegos con Pygame y Python” 🐍
Si eres fanático de los videojuegos y estás interesado en aprender a programar, ¡Pygame y Python son las herramientas que necesitas! Pygame es una biblioteca de Python que te permite crear videojuegos de manera sencilla y divertida, mientras que Python es un lenguaje de programación fácil de aprender y muy popular en la industria.
Con Pygame, puedes construir juegos interactivos y animaciones desde cero, y personalizarlos de acuerdo con tus gustos y habilidades. Además, como Pygame se integra perfectamente con Python, puedes utilizar todas las funciones y características de Python en tus juegos, como la manipulación de datos, la creación de interfaces de usuario y la conexión con bases de datos.
En nuestro sitio web, encontrarás una serie de tutoriales y ejemplos para ayudarte a comenzar con Pygame y Python. Desde la creación de un juego básico de Pong hasta la programación de un juego más complejo de laberinto, nuestros tutoriales te guiarán paso a paso en el proceso de creación de tus propios juegos. También puedes unirte a nuestra comunidad de programadores de videojuegos, donde podrás compartir tus proyectos, hacer preguntas y obtener ayuda de otros miembros.
¡No esperes más para aprender programación de videojuegos con Pygame y Python! 🚀 ¡Explora nuestro sitio web y descubre todo lo que puedes hacer con estas increíbles herramientas! 🎉
Este post se lo dedico a mi primo Ernestico que es un crack jugando videojuegos, creo que desde los 3 años ya jugaba en la consola de Nintendo y ahora está a punto de terminar el instituto y no sabe qué estudiar, quizás este tutorial le pueda servir para que estudie programación y pueda crear los juegos que tanto le gustan.
Crearemos un juego clásico unos de los más conocidos, que estoy seguro que muchos han jugado cuando eran niño, al menos yo “Pared” usaremos el lenguaje de programación Python y la librería Pygame.
Lo primero debemos tener instalado en nuestro ordenador Python si nos es así, aquí te dejo el link para que te lo descargues:
https://www.python.org/downloads
También un editor de código como Visual Studio Codeo Anaconda que los puedes descargar en los siguientes link e instalar:
https://code.visualstudio.com/download
https://www.anaconda.com
¡Todo listo, manos al teclado!.
Creamos una carpeta en nuestro escritorio con el nombre Mis juegos dentro de ella creamos un fichero y le ponemos como nombre Pared.py y lo guardamos con extensión .py que por los general son tipo de archivos de Python, pero para ir probando el código por partes, yo voy a usar Jupiter Lab guardes ese archivo como Pared.ipynb y VSC detecta que es un tipo de archivo de ipynb y te da la opción para instalarlo:
También necesitamos importar la librería del sistema operativo y random
import sys, random
Iniciaremos el módulo de pygame
pygame.init()
Ahora iniciaremos la ventana o superficie del dibujo con el tamaño de
640 por 480 el cual puedes cambiarlo a tu gusto:
ventana = pygame.display.set_mode((640,480))
Le ponemos un nombre a nuestra venta con la propiedad
set_caption:
pygame.display.set_caption(“Juego Pared”)
Nos toca adentrarnos un poco en la programación, crear un buclewhile:
Nota: “Un bucle while permite repetir la ejecución de un grupo de instrucciones mientras se cumpla una condición (es decir, mientras la condición tenga el valor True”).
jugando = True
while jugando:
# Comprobamos los eventos
#Comprobamos si se ha pulsado el botón de cierre de la ventana
for event in pygame.event.get():
if event.type == pygame.QUIT:
jugando = False
La parte central del programa el bucle que repite las siguientes instrucciones:
El método pygame.event.get() nos devuelve una lista con los posibles eventos que han sucedido en el juego. Usamos una instrucción for para comprobar esta lista de eventos.
En este ejemplo, comprobamos el evento de pulsar el botón de cierre de la ventana. Esto ocurre cuando el tipo de evento (event.type) es igual al valor pygame.QUIT. Si esta condición ocurre se modificará la variable jugando que hará que el bucle principal del juego termine.
En el bucle principal se actúa sobre los elementos de la ventana. En nuestro caso no tenemos ninguno.
Se borran los posibles elementos que tengamos, pintando la pantalla de un color: ventana.fill((0, 0, 255)). en este caso usando la notación RGB lo pintamos de azul.
Volvemos a pintar los elementos en su nueva posición: pygame.display.flip(), controlando en todo momento que la frecuencia de refresco de la imagen sea de 60 fps.
Salimos del bucle principal se ha terminado el programa: pygame.quit().
Ahora vamos a comprobar si lo que hemos hecho esta bien, ejecutando la celda. Si logras que te muestre la ventana, ya tienes el 50 % de tu juego.
Añadimos la pelota a nuestro juego
Vamos a crear una variable en python que almacena nuestra bola o pelota, en realidad puedes ponerle el nombre que tu quieras, yo le puese ball:
ball = pygame.image.load(“beach-ball.png”)
La bola va a ser una imagen que tenemos en nuestro directorio raíz con el nombre ball.png
que podemos crear o descargar, yo la descargue de una página, aquí el link:
Hante tenemos que saber como posicionamos y movemos un objeto dentro de nuestra ventana. Cada objeto se representa por el rectángulo que ocupa, y se posiciona en la ventana indicando la ordenada X (posición horizontal) y la coordenada Y (posición vertical). Tenemos que saber que el origen de coordenadas (0,0) se encuentra en la esquina superior izquierda.
Inicializamos una lista con dos valores, que llamamos speed. El primer valor representa el desplazamiento horizontal, y el segundo el desplazamiento vertical. Lo utilizaremos para mover la pelota.
Posicionamos la pelota en el origen de coordenadas:
ballrect.move_ip(0,0).
Dentro del bucle del juego: movemos la pelota con los datos guardados en la lista speed
ballrect = ballrect.move(speed)
Y comprobamos si ha llegado a algún borde:
Podemos obtener la posición del rectángulo que representa la pelota con ballrect.left (posición izquierda), ballrect.rigth (posición derecha), ballrect.top (posición superior) y ballrect.bottom (posición inferior).
Si la posición izquierda es menor que 0 o la posición derecha es mayor que la anchura de la ventana ventana.get_width() habremos tocado los bordes laterales.
En esta situación cambiamos el signo del primer dato guardado en speed, es decir, si se movía a la derecha ahora se moverá a la izquierda, y al contrario.
Si la posición superior es menor que cero (0) la posición inferior es mayor que la altura de la ventana ventana.get_height() habremos tocado los bordes superior o inferior.
En esta situación cambiamos el signo del segundo dato guardado en speed, es decir, si se movía hacía abajo ahora se moverá hacia arriba, y al contrario.
Finalmente volvemos a pintar la pelota en la ventana
ventana.blit(ball, ballrect)
Añadimos el bate a nuestro juego
Vamos a añadir otro objeto a nuestro juego: un bate, que controlaremos con el cursor derecho e izquierdo. La pelota al tocar el bate rebotará.
Ahora el objeto bate se crea a partir de otra imagen:
bate = pygame.image.load(“bate.png”)
Obtenemos el rectángulo que ocupa:
baterect = bate.get_rect()
Lo colocamos en su posición inicial:
baterect.move_ip(240,450)
Dentro del bucle, comprobamos si hemos pulsado alguna tecla.
keys = pygame.key.get_pressed()
Obtenemos una lista con las teclas que se han pulsado.
Si hemos pulsado el cursor izquierdo
if keys[pygame.K_LEFT]
Movemos el bate tres posiciones a la izquierda
baterect = baterect.move(-3,0)
Si hemos pulsado el cursor derecho
if keys[pygame.K_RIGHT]
Movemos el bate tres posiciones a la derecha
baterect = baterect.move(3,0)
Finalmente, volvemos a pintar el bate en la ventana
ventana.blit(bate, baterect)
Referencia del bate, pero lo que encontré fue un ladrillo, pero sirve igual.
Después estar unos días estudiando, como hacer juegos con pygame casi que me hecho un experto, si viste el video Demo más arriba podrás apreciar que el ladrillo se pasa de los bordes de la venta, el código lo copie tal cual de la referencia code.intef.es solo agreque mi pelota y mi ladrillo.
Este error se puede resolver agregando unas pocos lineas de código después de la instrucción que comprobamos si hemos pulsado alguna tecla:
keys = pygame.key.get_pressed()
aquí te dejos el código que resuelve el problema, que el ladrillo no se salga de los bordes de la ventana:
if baterect.right > WIDTH:
baterect.right =WIDTH
if baterect.left < 0:
baterect.left = 0
Hasta aquí dejo por cerrado este proyecto, si quieren que termine el juego dejame un comentarios.
En cada ejecución la pelota tiene una velocidad distinta.
Ahora la pelota al rebotar, puede cambiar el ángulo de rebote.