Máquina arcade retro con la palabra Arcade en la parte superior y un logo de Python en la pantalla, invitando a programar.

Primeros pasos con Arcade y Python

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:

  1. Configurar la ventana (tamaño, título, color de fondo).
  2. Dibujar en pantalla (líneas, círculos, imágenes…).
  3. Actualizar lo que sucede en el juego (movimientos, colisiones…).
  4. 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í?

  1. import arcade: Cargamos la librería.
  2. arcade.Window: Creamos la ventana del juego.
  3. on_draw(): Todo lo que dibujemos va dentro de esta función.
  4. arcade.draw_text(): Dibuja texto en la pantalla.
  5. 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 con arcade.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

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.