kokoro

"Toru Iwatani se inspiró en una historia infantil sobre una criatura que protegía a los niños de los monstruos al comerlos. Uno de los métodos de diseño de Iwatani incluía tomar palabras clave asociadas con una historia para ayudarlo a desarrollar sus ideas. La palabra kanji taberu ("comer") se convirtió en la premisa del juego.

La historia de los niños también incluía el concepto de kokoro ("espíritu") o una fuerza vital utilizada por la criatura que le permitió comerse a los monstruos. Toru incorporó este aspecto de la historia como cuatro bolitas de poder comestibles en el laberinto que cambian las suerte de los fantasmas, haciéndolos vulnerables a ser comidos por Pac-man".

El dossier de Pac-Man

OBJECTS

Vamos a cambiar las reglas de juego introduciendo objetos mágicos. Abrimos el editor MPAGD. Abrimos el proyecto Pacman.
Selecciona la opción "Objects" del menú "Editor" de tu MPAGD.

Object 000 Room 000

Dibuja pixel a pixel. Toma referencias contando los pixeles para que te salga idéntico al de la figura. Una vez dibujado, con las teclas "AvPág" y "RePág" le asignamos una pantalla. En nuestro caso será "el laberinto" (Room 000)
"kokoro" puede tomar la apariencia del "Object 000".

Pulsamos "x" (insertar nuevo Objeto) y dibujamos el siguiente:

Object 001 Room 000

Uno más. Volvemos a pulsar "x" para insertar un objeto más:

Object 002 Room 000

Le toca al último:

Object 003 Room 000

Colocaremos ahora cada objeto (kokoro) en su lugar. Hazlo de esta manera: Empieza en la opción "Objects" del menú "Editor". Con las teclas "1" y "2" selecciona el objeto, presiona la tecla "p" y te transportas a la habitación (nivel o pantalla) correspondiente (el concepto "habitación" te puede dar una idea de la utilidad de los objetos en un juego de aventuras).

Coloca cada objeto en su sitio repitiendo el proceso.

Posición del objeto 000

Posición del objeto 001

Posición del objeto 002

Posición del objeto 003

BLOQUES, PLAYER, SPRITES Y OBJETOS

Una parada en el camino. Vamos a reflexionar sobre cuándo, cómo y dónde usar estos cuatro elementos en nuestros juegos.

El bloque (8x8, tinta y papel) es un adorno, es el fondo de escena. Hay bloques especiales (LADDERBLOCK, FODDERBLOCK, DEADLYBLOCK, CUSTOMBLOCK, COLLECTABLE) pero siempre los usaremos como elementos de escenario. Para juegos como el Pac-man y juegos de plataformas, de niveles o vertical, en los que el escenario define la lógica y mecánica, la elección es contar con ellos.

El objeto (16x16, sólo tinta). tiene más significado narrativo, es mas grande y se puede cargar en un inventario. Cada objeto es único y está asociado a una pantalla, la manera de coleccionar objetos es a través del inventario mediante los comandos INV, PUT, GET y la variable OBJ. Tiene mucha utilidad en género de aventuras.

Sprites (16x16, tinta y papel). Suelen ser enemigos o mecanismos, artefactos, poseen animación y un script tipo para programación. Además gestionan propiedades y Datos.

Player (16x16, tinta y papel). Es un Sprite especial por que se puede controlar con el teclado. La elección es clara. Todo lo que quieras controlar será a través de él. Podemos animar 12 Sprites a una velocidad más que suficiente.

GETBLOCKS

Este comando devuelve el tipo de bloque con el que colisiona el Sprite y lo reserva en la variable BLOCK.
Según esto. Es correcto usar un Bloque para "Kokoro" (CUSTOMBLOCK).
GETBLOCK nos proporciona el mecanismo para detectar EMPTYBLOCK, PLATFORMBLOCK, WALLBLOCK, LADDERBLOCK, FODDERBLOCK, DEADLYBLOCK y CUSTOMBLOCK. Podemos editar algo así:

GETBLOCKS                 ; COME COCOS

IF BLOCK = CUSTOMBLOCK
; COME BOLA ENERGIZANTE
ENDIF

DETECTOBJ

En nuestro caso, escogemos el comando DETECTOBJ. Usaremos un Objeto para representar a "kokoro" por su tamaño (16x16). La herramienta "inventario" que integra DETECTOBJ no la vamos a necesitar. No es la decisión más correcta. Para nuestra defensa diré que "Kokoro" es algo más que un bloque de 8x8.

Para usar esto insertaremos después de la sección de control en EVENT PLAYER.

DETECTOBJ ; Para las PILDORAS

IF OBJ < 4 ; es una PILDORA DE PODER
    ADD 1 TO D     ; cuenta PILDORAS PODER.
    SCORE 50       ; suma 50 al marcador.       
    ;BEEP 3        ; "gulp"
    AT 22 2
    SHOWSCORE      ; actualizar marcador.
    LET M = 200    ; activar modo Asustado, encender cronómetro.
    GET OBJ        ; COME
ENDIF

El comando DETECTOBJ devuelve el objeto que colisiona con el jugador en la variable OBJ.

Si OBJ corresponde a nuestros objetos 0,1,2 o 3 entonces desencadenamos los siguientes mecanismos: activar modo Asustado, encender cronómetro, contar píldoras, sumar marcador, coger objeto y actualizar marcador, reproducir un efecto de sonido (Estos mecanismos los vamos a dejar para otra micro-sesión.).

EVENT PLAYER

Selecciona la opción "Player" del menú "Events". Deberás editarlo para quedar así:

EVENT PLAYER
; Pacman

AT 0 15 DISPLAY N

SPRITEINK  14

; Control
IF KEY UP
    IF CANGOUP
        DIRECTION = UP
    ENDIF
ENDIF
IF KEY DOWN
    IF CANGODOWN
        DIRECTION = DOWN
    ENDIF
ENDIF
IF KEY LEFT
    IF CANGOLEFT
        DIRECTION = LEFT
    ENDIF
ENDIF
IF KEY RIGHT
    IF CANGORIGHT
        DIRECTION = RIGHT
    ENDIF
ENDIF

; movimiento
IF DIRECTION = UP
    IF CANGOUP
        SPRITEUP
        LET IMAGE = 2
ANIMATE
    ENDIF
ENDIF

IF DIRECTION = DOWN
    IF CANGODOWN
        SPRITEDOWN
LET IMAGE = 3
ANIMATE
    ENDIF
ENDIF

IF DIRECTION = LEFT
    IF X <= LEFTEDGE
        LET X = RIGHTEDGE
        EXIT
    ELSE
        IF CANGOLEFT
    SPRITELEFT
    LET IMAGE = 1
            ANIMATE
        ENDIF
    ENDIF
ENDIF

IF DIRECTION = RIGHT
    IF X >= RIGHTEDGE
        LET X = LEFTEDGE
        EXIT
    ELSE
        IF CANGORIGHT
    SPRITERIGHT
            LET IMAGE = 0
            ANIMATE
        ENDIF
    ENDIF
ENDIF

; detectar

GETBLOCKS ; COME COCOS

DETECTOBJ ; Para las PILDORAS

IF OBJ < 4 ; es una PILDORA DE PODER
    ADD 1 TO D     ; cuenta PILDORAS PODER.
    SCORE 50       ; suma 50 al marcador.       
    ;BEEP 3        ; "gulp"
    AT 22 2
    SHOWSCORE      ; actualizar marcador.
    LET M = 200    ; activar modo Asustado, encender cronómetro.
    GET OBJ        ; COME
ENDIF

; comprobaciones

IF N > 193
LET N = 0
ENDGAME
ENDIF

LET V = X                ; Revela tu POSICION X
LET W = Y                ; Revela tu POSICION Y
LET I = DIRECTION        ; Revela tu DIRECCION.

Guarda el script, cierra el editor de texto y guarda el proyecto.

EVENT GAMEINIT

Hemos introducido las variables globales M y D. Comentamos el significado de cada variable que incorporamos en el EVENT GAMEINIT, de esta manera tenemos un diccionario y una guía.
Selecciona la opción "Game initialisation" del menú "Events". Deberás editarlo para quedar así:

EVENT GAMEINIT

; VARIABLES GLOBALES

LET LIVES = 3
LET N = 0    ; contador PILDORAS
LET D = 0    ; contador PILDORAS DE PODER
LET M = 0    ; Modo/cronómetro. "DISPERSION o DESPLIEGUE", "PERSECUCION", "ASUSTADO".
LET Q = 0    ; TARJET X
LET R = 0    ; TARJET Y
LET T = 0    ; coordenada X de BLINKY
LET U = 0    ; coordenada Y de BLINKY
LET V = 0    ; coordenada X de PACMAN
LET W = 0    ; coordenada Y de PACMAN
LET I = 0    ; DIRECCION de PACMAN
; MARCADORES

AT 22 16
DISPLAY LIVES
AT 22 14
AT 22 2
SHOWSCORE
AT 22 24
SHOWHIGH

Guarda el script, cierra el editor de texto y guarda el proyecto.

"Estamos en el segundo acto, esto debe ser casi dos tercios de la representación. El tiempo juaga un papel importante en nuestra historia, la vida de los personajes depende en cierta medida de él". 
 

Comentarios

Entradas populares de este blog

El laberinto