Bonus

 "El primer fantasma capturado después de haber comido un energizador siempre vale 200 puntos. Cada fantasma adicional capturado del mismo energizador valdrá el doble de puntos que el anterior: 400, 800 y 1.600 puntos, respectivamente. Si los cuatro fantasmas son capturados en los cuatro energizadores, se pueden ganar casi 12,000 puntos adicionales en estos niveles anteriores".
Dosier fantasma.

Un buen motivo para prestar más atención al juego. Perfecto, es lo que queremos, que los jugadores o jugadoras ansíen alcanzar retos, generar expectativas, aumentar la emoción. Al mismo tiempo añadimos un elemento estratégico nuevo al juego.

Para comunicarle el jugador o jugadora la existencia de estos premios por su maestría usaremos marcadores de Bonus que aparezcan en el laberinto en el lugar del fantasma cuando este es capturado por Pac-man.

OBJETOS BONUS

Abre el editor MPAGD. Abre el proyecto Pacman. Selecciona la opción "Objects" del menú "Editor". Añade los siguientes objetos. Ahora ya sabemos cómo hacerlo. No le asignes una habitación (room), asegúrate que son del tipo "Carrying" ("los estoy llevando") para que no aparezcan en la pantalla a no ser que los invoquemos.

Object 004

Object 005

Object 006

Object 007

Guarda el proyecto.

EVENT PLAYER

El encargado de publicar estos marcadores será sin duda Pac-man en el momento que habíamos programado anteriormente.

Selecciona la opción "Player" del menú "Events". Busca el código siguiente:

IF COLLISION 3 ; COME FANTASMAS
    ; BEEP 4 ; come fantasma "eatghost"
    OTHER
        LET TYPE = 1        ; tipo "ojos incorpóreos"
        LET IMAGE = 6       ; nueva imagen
        LET FRAME = 0       ; fotograma de inicio animación
    ENDSPRITE
ENDIF

Dentro de esta sección inserta nuevo código para que quede así:

IF COLLISION 3 ; COME FANTASMAS
    READ A              ; lee multiplicador A
    REPEAT A
        SCORE 200           ; añade A veces 200 puntos al SCORE 
        ADD 1 TO J          ; suma contador BONUS
    ENDREPEAT
    READ A              ; lee el índice del objeto A para pintar
    PUT X Y A           ; pinta el objeto A
    LET B = 1           ; inicia cronómetro del marcador BONUS
    IF A = 7            ; si A es el cuarto marcador/fantasma
        RESTORE             ; restablece la serie 
    ENDIF
    AT 22 2
    SHOWSCORE           ; actualiza el marcador
    ADD 1 TO G          ; suma contador FANTASMAS atrapados
    ; BEEP 4            ; sonido "eatghost"

    OTHER
        LET TYPE = 1        ; tipo "ojos incorpóreos"
        LET IMAGE = 6       ; nueva imagen
        LET FRAME = 0       ; fotograma de inicio animación
    ENDSPRITE
ENDIF

Justo al final de todo el script EVENT PLAYER coloca esta última línea de código:

; multiplicador, objeto
DATA 1 4 2 5 4 6 8 7          ; serie bonus por fantasma

Por último en la sección de comprobaciones, justo antes de comprobar si Pac-man termina el tablero insertamos las siguientes líneas.

IF M < 200       ; si deja el modo asustado
    RESTORE     ; restaura serie BONUS FANTASMAS
ENDIF

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

No podemos manejar números mayores de 256 en nuestras variables (hemos elegido trabajar con 8 bits). El programa leerá de una serie de datos DATA. El primer numero de la serie multiplicado por 200 da como resultado el BONUS 200, 400, 800, 1600 (valores mayores de 256). El segundo número nos proporciona el Objeto que tenemos que pintar.
DATA debe siempre estar situado al final del script.
El comando READ recoge valores de la serie de forma secuencial. La variable "A" la usamos para recoger ese valor.
El comando SCORE 200 añade 200 puntos al marcador las veces necesarias.
El comando PUT coloca en la posición X Y el objeto correspondiente.

NUEVAS VARIABLES

La variable "B" controla el tiempo que permanece el objeto en pantalla. Iniciamos el cronómetro en 1.
Nos vemos obligados a contar los fantasmas que capturamos y las veces que sumamos 200 puntos para hacer el recuento final. Para eso usamos las variables J y G.

Selecciona la opción "Game initialisation" del menú "Events" añade estas variables:

LET B = 0        ; cronómetro marcador de BONUS en pantalla
LET J = 0        ; contador PACKS 200 BONUS 
LET G = 0        ; contador fantasmas 

MAIN LOOP 1

Una última cosa por hacer, cronometrar el tiempo del marcador BONUS en pantalla.

Selecciona la opción "Main loop 1" del menú "Events" edita el script para poder añadir modificaciones al principio, justo antes del gestor de modos, quedando así:

EVENT MAINLOOP1

; CRONOMETRO

LET A = CLOCK
SUBTRACT O FROM A
IF A >= 50
    ADD 50 TO O    ; variable O (letra o) es última lectura de CLOCK.
    ADD 1 TO M     ; cronómetro MODOS
    ADD 1 TO B     ; cronómetro BONUS
ENDIF

IF B > 0           ; hay marcador BONUS en el tablero
    IF B < 3
        ; agota 3 segundos
    ELSE
LET B = 4 
WHILE B < 8
            GET B         ; borra marcadores BONUS
    ADD 1 TO B
ENDWHILE
LET B = 0         ; restaura cronómetro
    ENDIF
ENDIF

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

"Estos logros son mérito exclusivo del jugador o jugadora, deberán ser recompensados por ello".


Comentarios

Entradas populares de este blog

El laberinto