🎮 “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.
¿Puede una máquina programar sola? La respuesta hasta no hace mucho era un rotundo no, pero eso ya no es tan cierto, y lo demuestra GitHub Copilot, un sistema capaz de generar código de forma autónoma y ayudar así a los desarrolladores a ahorrar tiempo y ser más eficientes.
La pregunta, claro, es hasta dónde puede llegar Copilot. Para responderla hemos contactado con cuatro desarrolladores españoles que nos dejan clara una cosa: esto no les va a quitar el trabajo, pero puede llegar a ayudarles notablemente.
Un prodigio descendiente de GPT-3
La capacidad de GPT-3 para sorprendernos parece ilimitada. Este sistema que genera texto a partir de un entrenamiento previo ya ha demostrado que es capaz de conversar y escribir de forma sorprendentemente convincente, y su aplicación a cosas como hacer nuestras compras de forma automática también parece más que probable a corto o medio plazo.
Sus posibilidades han sido aprovechadas ahora para algo que de hecho ya parecía inevitable: que escribiera código de forma autónoma y a partir de una pequeña entrada por parte del desarrollador
Microsoft ya avanzó datos sobre su integración en sus herramientas de desarrollo en su conferencia BUILD 2021, y ahora eso se complementa con el lanzamiento de GitHub Copilot, un sorprendente servicio capaz de asistir a los desarrolladores escribiendo porciones de código y sugerencias que les ayuden en su día a día.
El sistema de Microsoft y GitHub no tiene como objetivo reemplazar a los desarrolladores, sino ser un asistente para que puedan trabajar de forma más ágil evitando la carga de algunas tareas repetitivas.
El sistema está basado en Codex, un nuevo sistema de inteligencia artificial creado por OpenAI, que es la misma organización que se encargó de desarrollar el motor GPT-3. Codex funciona de forma similar, y como explican sus responsables “entiende significativamente más contexto que la mayoría de asistentes de código” y “sintetiza código” a partir del contexto proporcionado por el programador.
De hecho es capaz de convertir comentarios en código: el programador puede describir la lógica que desea implementar, y GitHub Copilot se encargará de generar el código necesario para implementarla.
También puede “autorellenar” cuando es necesario programar código repetitivo a partir de algunos ejemplos o mostrar alternativas al código que el desarrollador ha preparado por si alguna de ellas es más eficiente.