Introducción
Bienvenido a la primera lección de programación con Python y la librería Arcade. En esta unidad aprenderemos a escribir nuestros primeros programas, dibujar en la pantalla y entender cómo funciona un videojuego desde dentro.
Aunque nunca hayas programado antes, no te preocupes. Partiremos de cero, utilizando lo que ya sabes sobre pensamiento computacional y diagramas de flujo para convertir tus ideas en código.
¿Qué es Arcade?
Arcade es una librería de Python que permite crear videojuegos en 2D de manera sencilla y divertida. Con ella, podrás dibujar gráficos, mover personajes y hacer que las cosas pasen en tu juego sin necesidad de ser un experto en programación.
1. ¿Cómo funciona un programa de Arcade?
Un programa con Arcade sigue siempre la misma estructura:
- Configurar la ventana (tamaño, título, color de fondo).
- Dibujar en pantalla (líneas, círculos, imágenes…).
- Actualizar lo que sucede en el juego (movimientos, colisiones…).
- Escuchar eventos del teclado o el ratón.
Lo vamos a ver con un ejemplo.
2. Hola Mundo (¡Vamos a dibujar algo!)
El primer programa que vamos a hacer es muy sencillo: una ventana con un fondo de color.
Código:
import arcade
# Tamaño de la ventana
ANCHO = 600
ALTO = 400
class MiJuego(arcade.Window):
def __init__(self):
super().__init__(ANCHO, ALTO, "Mi primer programa")
arcade.set_background_color(arcade.color.SKY_BLUE)
def on_draw(self):
self.clear()
arcade.draw_text("¡Hola, Arcade!", 200, 200, arcade.color.BLACK, 24)
juego = MiJuego()
arcade.run()
¿Qué está pasando aquí?
- import arcade: Cargamos la librería.
- arcade.Window: Creamos la ventana del juego.
- on_draw(): Todo lo que dibujemos va dentro de esta función.
- arcade.draw_text(): Dibuja texto en la pantalla.
- arcade.run(): Lanza el juego.
3. Dibujar formas básicas
Vamos a añadir más elementos al dibujo para aprender cómo se crean los gráficos.
Código:
import arcade
class Dibujos(arcade.Window):
def __init__(self):
super().__init__(600, 400, "Dibujando formas")
arcade.set_background_color(arcade.color.WHITE)
def on_draw(self):
self.clear()
arcade.draw_circle_filled(300, 200, 50, arcade.color.RED)
# Para dibujar un rectángulo centrado en (100, 100) con ancho 80 y alto 40,
# usamos arcade.draw_rect_filled pasando un objeto rect creado con arcade.rect.XYWH.
# Como XYWH recibe la esquina inferior izquierda, calculamos: (100 - 40, 100 - 20) = (60, 80)
arcade.draw_rect_filled(arcade.rect.XYWH(60, 80, 80, 40), arcade.color.BLUE)
arcade.draw_line(0, 0, 600, 400, arcade.color.BLACK, 3)
ventana = Dibujos()
arcade.run()
Explicación:
Código | ¿Qué hace? |
---|---|
arcade.draw_circle_filled() | Dibuja un círculo relleno |
arcade.draw_rect_filled(arcade.rect.XYWH(...)) | Dibuja un rectángulo relleno utilizando un objeto rect con coordenadas XYWH (x, y, ancho, alto) |
arcade.draw_line() | Dibuja una línea |
4. Movimiento básico
Vamos a hacer que una pelota se mueva por la pantalla usando la función on_update().
Código:
import arcade
class Movimiento(arcade.Window):
def __init__(self):
super().__init__(600, 400, "Movimiento básico")
arcade.set_background_color(arcade.color.WHITE)
self.x = 100
def on_draw(self):
self.clear()
arcade.draw_circle_filled(self.x, 200, 30, arcade.color.RED)
def on_update(self, delta_time):
self.x += 2
if self.x > 600:
self.x = 0
ventana = Movimiento()
arcade.run()
¿Qué hemos añadido?
- self.x: Una variable para guardar la posición de la pelota.
- on_update(): Función que se ejecuta muchas veces por segundo para actualizar la posición de los objetos.
- delta_time: Tiempo entre actualizaciones (aquí no se utiliza, pero es parte de la función).
5. Interacción con el teclado
Vamos a hacer que el jugador controle un cuadrado con las teclas.
Código:
import arcade
class Control(arcade.Window):
def __init__(self):
super().__init__(600, 400, "Control con teclado")
self.x = 300
self.y = 200
def on_draw(self):
self.clear()
# Dibujamos un cuadrado centrado en (self.x, self.y) con lado 40
# Calculamos la esquina inferior izquierda restando 20 a cada coordenada.
arcade.draw_rect_filled(arcade.rect.XYWH(self.x - 20, self.y - 20, 40, 40), arcade.color.BLUE)
def on_key_press(self, key, modifiers):
if key == arcade.key.RIGHT:
self.x += 10
if key == arcade.key.LEFT:
self.x -= 10
if key == arcade.key.UP:
self.y += 10
if key == arcade.key.DOWN:
self.y -= 10
ventana = Control()
arcade.run()
Explicación:
- on_key_press(): Función que detecta si se ha pulsado una tecla.
arcade.key.RIGHT
, etc.: Permiten comprobar qué tecla se ha pulsado.- Usamos
arcade.draw_rect_filled
junto conarcade.rect.XYWH
para definir el rectángulo (en este caso, un cuadrado) de forma correcta.
Conclusión
Con estos primeros ejemplos ya podemos dibujar, mover objetos y hacer que nuestro juego responda al teclado usando la nueva API de Arcade. En la siguiente lección, crearemos nuestro primer minijuego combinando todo lo aprendido, incluyendo colisiones y más interactividad.
Recuerda: la programación es como resolver un rompecabezas, ¡prueba, equivócate y diviértete!
Si tienes dudas, vuelve a leer los ejemplos y experimenta modificándolos para ver qué sucede.
Deja una respuesta