Bloque de aprendizaje · Detalle

Bomberman ligero: Bomba en cuadrícula

Este bloque de aprendizaje introduce conceptos centrales del desarrollo de juegos basados en cuadrículas en Python 2 usando frameCraft. El foco está en el modelado paso a paso del campo de juego, el movimiento, la lógica de bombas, las explosiones y los estados del juego en un proyecto de Bomberman ligero intencionalmente pequeño.

Tiempo 90 minutos
Tecnología frameCraft
Tareas 21
Imagen previa: Bomberman ligero: Bomba en cuadrícula

Desarrollo de proyecto con soporte de IA

Programación estructurada con Codificación con IA y ProtoTypeFirst

Este curso fue desarrollado específicamente para aprendices que desean programar de forma estructurada con soporte de IA y mejorar aún más el código existente.

Codificación con IA en estado del proyecto

La codificación con IA integra una IA consciente del contexto directamente en CodeRoom. Amplía el código existente, explica los errores, establece cambios dirigidos y apoya el desarrollo adicional en el estado actual del proyecto.

Desarrollo de código transparente

El curso se enfoca en el soporte didácticamente integrado, cambios transparentes y resultados inmediatamente testables. Las sugerencias, los cambios y las versiones permanecen transparentes para la guía instruccional.

Formato ProtoTypeFirst

Todo el contenido comienza con un prototipo funcional que se desarrolla gradualmente mediante codificación asistida por IA, de modo que cada extensión empieza desde un punto visible.

Introducción

El siguiente fragmento muestra la entrada del módulo de lección en forma abreviada.

No comienzas con un juego terminado, sino con una obra en construcción preparada. La escena ya está en marcha, mostrando un título, un campo de juego rectangular simple, una figura de reemplazo y un marcador. El juego real de Bomberman se crea únicamente mediante tus modificaciones utilizando el Programación Estructurada con Codificación Asistida por IA y ProtoTypeFirst.

Clasificación didáctica

El módulo está clasificado de forma compacta en términos de contenido e instrucción práctica.

Objetivo subjetivo

El módulo hace visible el desarrollo de un juego basado en rejilla como resultado de pequeños pasos de modelado testables. Los conceptos centrales son la conversión de rejilla a píxel, lógica de juego basada en estados, listas de datos para objetos del juego y la separación de reglas de inicio y reglas de ejecución.

Desarrollo de competencias

  • Modelado: Los campos de rejilla, las figuras de juego, las bombas y los bloques se representan como datos estructurados en el proyecto.
  • Algoritmización: El movimiento, bloqueo, cuenta regresiva, explosión y condiciones de victoria surgen de comprobaciones claras de reglas.
  • Abstracción: Una función auxiliar para convertir posiciones de rejilla a píxeles reduce repeticiones y hace comprensible la lógica de coordenadas.
  • Prueba: Cada extensión puede ser verificada y evaluada por su efecto sobre el prototipo visible.

Valor añadido del profesor

  • La prototipo de inicio funcional proporciona un punto claro de partida para extensiones paso a paso.
  • La secuencia de tareas descompone un sistema de juego en sub-mecanismos manejables.
  • Las tareas de extensión permiten diferenciar mediante enemigos, estados objetivo, reinicios y puntos.

Secuencia de la unidad de lección

Las tareas se presentan en el orden del JSON y se resumen como pasos de desarrollo del proyecto.

1

Hacer visibles las líneas de malla

El área existente del campo de juego se complementa con simples líneas de malla. Esto convierte el espacio reservado en una superficie de juego claramente estructurada sin necesidad de construir reglas o colisiones aún.

2

Diseñar al jugador como una figura de Bomberman

La figura de marcador se desarrolla gráficamente en una pequeña figura similar a Bomberman. La posición y la lógica permanecen sin cambios, permitiendo trabajar por separado en la representación y el comportamiento.

3

Guardar la posición raster del jugador

Se crean valores propios de escena para columna y fila del jugador. Esta estructura de datos prepara anticipadamente el movimiento campo a campo más adelante sin mover aún automáticamente la figura.

4

Alinear al jugador con el campo raster

La posición inicial de la figura se calcula a partir de la columna de malla, fila de malla y tamaño del campo. Esto hace que por primera vez el objeto de juego sea visible sobre el modelo de cuadrícula del tablero.

5

Convertir la posición raster en posición pixel

Una función auxiliar calcula el centro en píxeles de una celda de malla a partir de columna y fila. Esta conversión central se utiliza luego para la posición del jugador y constituye la base para otros objetos.

6

Implementar movimiento en una sola casilla del grid

Las acciones de dirección modifican la posición rasterizada almacenada cada vez por un campo. La figura se reubicará luego mediante la función de conversión, sin comprobación de paredes ni animación aún.

7

Movimiento desbloqueado

Un bloqueo simple de movimiento impide que un botón de dirección mantenido active más pasos en cada fotograma. Solo después de soltarlo será posible realizar un nuevo paso único.

8

Preparar paredes fijas

Se crea una lista de campos de paredes fijas y se muestran sobre la cuadrícula. Las paredes aún no bloquean el movimiento, pero se introducen como objetos del juego por separado.

9

Bloquear movimiento contra paredes

La regla de movimiento verifica antes de cada paso si el campo objetivo está en la lista de paredes. El jugador podrá moverse solo a campos libres.

10

Mostrar bloques destructibles

Además de las paredes fijas, se añade una lista de bloques destructibles. Estos campos reciben su propia visualización, pero inicialmente carecen de lógica de explosión o eliminación.

11

Colocar bomba como objeto de datos

Al colocar una bomba, se almacena una entrada con la posición actual del jugador. Inicialmente, solo se permite una bomba a la vez; visibilidad, contador y explosión serán añadidas más adelante.

12

Colocar una bomba solo una vez por presionar el botón

Un bloqueo de bombas impide que un botón de bomba mantenido cree nuevas entradas repetidamente. La colocación solo se libera nuevamente tras soltar la acción.

13

Hacer visible la bomba durante la ejecución

Las entradas existentes de bombas se renderizan como caracteres durante el juego. La tarea muestra claramente que los objetos dinámicos no pueden configurarse solo al inicio de la escena.

14

Añadir contador de bombas

Cada bomba recibe un contador temporal que disminuye con el tiempo de marco. Después de su expiración, se marca para explotar sin dibujar la explosión aún.

15

Mostrar explosión cruzada

De una bomba preparada, surge una forma corta en cruz de campos de explosión. La eliminación de bloques y el daño aún están excluidos para que la geometría de la explosión pueda mostrarse aislada.

16

Eliminar bloques mediante explosión

Los campos de explosión se comparan con los bloques destructibles. Solo los bloques afectados se eliminan de la lista; las paredes sólidas permanecen sin cambios.

17

Mostrar puntos por bloques destruidos

Se añade un valor de puntos y una pantalla HUD. Los puntos aumentan cuando un bloque destructible desaparece mediante una explosión.

18

Comprobar daño al jugador

La lógica del juego verifica si la posición del jugador está sobre un campo de explosión. En este caso, se establece el estado de pérdida y se muestra un mensaje simple de Game Over.

19

Añadir enemigos simples

Se añade un enemigo como su propio campo de cuadrícula y se muestra en el campo de juego. Aún no se mueve ni causa daño, pero amplía inicialmente el modelo de objetos del juego.

20

Añadir objetivo de nivel y condición de victoria

Se define un objetivo simple: si todos los bloques removibles han sido eliminados, el estado del juego cambia a ganado. Un mensaje visible de victoria hace reconocible el final del nivel.

21

Reiniciar mediante teclado y toque

Una acción de inicio o reinicio se conecta con el teclado y el toque. Después de un estado ganado o perdido, una pulsación de tecla inicia la escena nuevamente de forma segura.

Fragmento de código

El fragmento muestra la estructura del estado preparado y el lugar donde se añadirán gradualmente movimiento, bombas y reglas.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
SZENE(
    'start',
    puntos=0,
    estado_juego='baustelle',
    columnas_rejilla=11,
    filas_rejilla=9,
    tamaño_celda=16,
    bombas=[],
    bloques=[],
    enemigos=[]
)
def reglas_baustelle(ctx):
    jugador = figura_de(ctx, 'jugador')
    if jugador is None:
        return
    estado = valor_de(ctx, 'estado_juego', 'baustelle')
    if estado == 'baustelle':
        # TODO: Aquí se añadirán más adelante movimiento, bombas y reglas de juego.
        if accion_activa(ctx, 'bombe'):
            pass
Un prototipo visible se va transformando gradualmente en un juego de cuadrícula jugable con estados claros y reglas verificables.

El bloque de construcción apoya una organización clara de lecciones porque cada extensión se basa en un proyecto en curso y produce resultados verificables. Es posible la diferenciación mediante adversarios adicionales, condiciones de objetivo, puntos o lógica de reinicio.

Solicite acceso demo y pruebe el bloque de construcción en su propio contexto de curso.