Premio
"La segunda forma de aumentar su puntaje en cada ronda es
comiendo los símbolos de bonificación (comúnmente conocidos como frutas) que
aparecen directamente debajo de la guarida fantasma dos veces en cada ronda
para obtener puntos adicionales.
Cada fruta vale entre 100 y 5,000 puntos, dependiendo del nivel
en que se encuentre el jugador actualmente. Cada vez que aparece una fruta, la
cantidad de tiempo que permanece en la pantalla antes de desaparecer es siempre
entre nueve y diez segundos".
Dosier fantasma.
BONUS SPRITES
Otra manera de proporcionar Bonus al juego es mediante Sprites. El Sprite nos deja intervenir en su script tipo una vez cada ciclo de juego. Vamos a aprovechar esta característica para las frutas. Otra ventaja de usar Sprites es que podríamos animarlos para hacer más atractivo el juego, en nuestro caso no es necesario.
Abre el editor MPAGD. Abre el proyecto Pacman. Selecciona la opción "Sprites" del menú "Editor" del MPAGD.
Es momento de dibujar. Para añadir los Sprites pulsa "x". A continuación se muestra la lista de Imágenes correspondientes. Dibújalas en el mismo orden.
Sprite 008 frame 000
Sprite 009 frame 000
Sprite 010 frame 000
Sprite 011 frame 000
Sprite 012 frame 000
Sprite 013 frame 000
Guarda tu trabajo.
EVENT MAINLOOP1
Selecciona la opción "Main loop 1" del menú "Events".
Modifica el código del cronómetro para que cuente ahora los segundos que permanecen las frutas en pantalla, debe quedar así:
; 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 marcador BONUS
ADD 1 TO S ; cronómetro FRUTAS
ENDIF
Inserta el código siguiente justo después de la sección de marcador de BONUS que está al inicio del script.
; frutas
IF S = 15 ; primera aparición de BONUS FRUTAS
LET S = 0 ; restauramos cronómetro
READ A ; lee FRUTA
SPAWN 5 A ; instancia una FRUTA
SPAWNED
LET X = 112
LET Y = 96 ; posición GET READY
SUBTRACT 7 TO A
MULTIPLY A BY 2
SUBTRACT 1 TO A ; posición en la serie = (A-7)*2-1
LET SETTINGB = A ; guardar índice en SETTINGB
READ SETTINGA ; leer color y guardar en SETTINGA
ENDSPRITE
ENDIF
Añade los datos al final del script, los datos deben colocarse siempre allí. El código es el siguiente:
; datos: fruta, color
DATA 8 2 9 2 10 3 11 6 12 2 13 7
El programa se ejecuta cuando el cronómetro "S" llega a 15 segundos. Entonces lee un número de la serie DATA que corresponde a la imagen del Sprite BONUS que hay que instanciar y lo guarda en la variable "A". El comando "SPAWN 5 A" se encarga de la aparición en escena del Sprite tipo 5 (FRUTAS). El comando SPAWNED debe usarse a continuación si queremos acceder a las propiedades de las "frutas" que acabamos de instanciar. Definimos su POSITION "GET READY" en pantalla, guardamos en SETTINGB la posición que ocupa en la serie de datos (índice). Leemos de nuevo la serie con READ SETTINGA quedando guardado en SETTINGA el color obtenido de la lectura. Seguidamente usamos ENDSPRITE para finalizar ese acceso a las propiedades de las "frutas".
En palabras más sencillas. A los 15 segundos de haber desaparecido la última fruta, reaparece otra con un nuevo índice y color.
Enhorabuena! has logrado el 100% del código para este evento. Premio!
Guarda tu trabajo.
EVENT SPRITETYPE5
Aprovechamos el evento que nos proporciona el Sprite para hacer las siguientes tareas:
Ser invocado en la posición "GET READY", pintar la "fruta" del color SETTINGA, detectar si Pac-man colisiona ("Gulp"), borrarse a sí mismo (cosa que no puede hacerse de otro modo) cuando pasen 10 segundos desde su aparición o cuando sea tragado por Pac-man, calcular los puntos que suben al marcador y presentarlos en pantalla, sumar uno al contador de Frutas y actualizar SCORE en pantalla.
Usamos números pseudoaleatorios para restaurar el cronómetro "S".
EVENT SPRITETYPE5
; FRUTAS
; deben permanecer 10 segundos
SPRITEINK SETTINGA
IF S = 10 ; si agotamos 10 segundos en pantalla
REMOVE ; desaparece
GETRANDOM 5
LET S = RND ; restaurar cronómetro FRUTAS
ENDIF
IF COLLISION PLAYER ; somos capturados
GETRANDOM 5
LET S = RND ; restaurar cronómetro FRUTAS
REPEAT SETTINGB
READ A ; lee multiplicador en posición SETTINGB de la serie
ENDREPEAT
REPEAT A
SCORE 200 ; suma 200 puntos al SCORE
ADD 1 TO J ; cuenta BONUS FRUTAS
ENDREPEAT
READ A ; lee marcador BONUS
LET B = 4
WHILE B < 8
GET B ; borra marcadores BONUS de fantasmas
ADD 1 TO B
ENDWHILE
PUT X Y A ; pinta marcador en pantalla
LET B = 1 ; inicia cronómetro marcador BONUS
AT 22 2
SHOWSCORE ; actualiza marcador SCORE
; BEEP 3 ; sonido "Gulp"
RESTORE ; restaura serie DATA
REMOVE ; desaparece
ADD 1 TO H ; suma 1 al contador de FRUTAS
ENDIF
; diccionario: multiplicador, marcador Bonus
DATA 1 4 2 5 2 5 4 6 4 6 8 7
La variable "H" cuenta las frutas que comemos a lo largo del juego.
Nos vemos obligados a contar las frutas que comemos y las veces que sumamos 200 puntos para hacer el recuento final.
Selecciona la opción "Game initialisation" del menú "Events" añade estas variables:
LET H = 0 ; contador FRUTAS
Premio otra vez! El script está completo al 100%.
Guarda tu trabajo. Cada vez que quieras puedes probar tu juego. Hazlo cuando terminemos un bloque de programación. Ahora puede ser un buen momento, recuerda revisar la ventana de comandos para depurar errores.
"Los símbolos de bonificación se agregaron al juego en algún momento y los fantasmas finalmente recibieron nombres: Akabei, Pinky, Aosuke y Guzuta. Los efectos de sonido y la música fueron algunos de los toques finales que se agregaron a medida que el desarrollo se acercaba al final junto con ajustes constantes del comportamiento de los fantasmas".
Japón 22 de mayo de 1980.
Comentarios
Publicar un comentario