Bienvenidos sean a este post, hoy veremos como crear nuestro sistema de puntajes para los juegos.
Para trabajar con nuestro sistema de puntajes usaremos a nuestro ultimo proyecto, les recomiendo visitar el post anterior donde tendran el proyecto para descargarlo pero si ya lo tienen vamos a abrirlo con nuestro programa para comenzar a editarlo, una vez dentro del proyecto iremos al objeto de la plataforma y agregaremos un evento Create, despues de creado le agregaremos esta linea:
toque = false;
Esta sera utilizada para saber que hemos tocado la plataforma, lo siguiente sera ir al evento Step donde agregaremos el siguiente bloque:
jugador = collision_line(
x,
y,
x + sprite_width,
y + sprite_height,
obj_Pepe,
false, false);
if (jugador!=noone && !toque)
{
score += 10;
toque = true;
}
En este caso primero crearemos un nuevo collision_line, no rectangulo, con los valores de nuestro objeto (obj_Plataforma), luego tenemos un condicional donde verificamos si esta variable que creamos anteriormente es distinta de noone y toque tiene el valor false, si cumple esta condicion incrementamos el valor de score, variable interna del game engine usada para almacenar los puntajes, en 10 y seteamos a toque en true para que no este incrementando a score constantemente, el siguiente paso sera crear una nueva condicion para incrementar a nuestro puntaje por medio de los enemigos, para ello debemos ir al objeto de nuestro jugador, obj_Pepe, en el evento Step busquen este condicional:
if (abajo != noone)
{
no_colisiono_enemigo = false;
vspeed = 10;
}
else if (arriba != noone)
{
instance_destroy(arriba);
}
Al cual lo modificaremos de la siguiente manera:
if (abajo != noone)
{
no_colisiono_enemigo = false;
vspeed = 10;
}
else if (arriba != noone)
{
score += 15;
with(arriba)
{
instance_destroy();
}
}
En este caso primero incrementaremos el valor de score en 15 y luego por medio de with veremos que valor de instancia es y la destruiremos, tal como hacia antes, con todas estas modificaciones ya tenemos un sistema de puntaje funcional pero todavia nos falta como mostrarlo.
Para ello debemos crear un objeto nuevo, al cual llamaremos obj_Puntaje, una vez hecho la agregaremos un nuevo evento llamado Create y en este agregaremos el siguiente bloque:
depth = -90;
score = 0;
El primero seteara la profundidad del objeto y la siguiente reseteara el valor de score a 0, lo sigueinte sera crear dentro de obj_Puntaje un nuevo evento de tipo Step y le agregaremos el siguiente codigo:
if (keyboard_check_pressed(vk_space))
show_message(score);
Con esto verificamos si se presiono la barra espaciadora y en caso de ser verdadero nos mostrara, de forma temporal, el puntaje que tenemos actualmente por medio de la notificacion en pantalla, lo unico que nos falta es agregar este nuevo objeto en el room rm_main, pueden ubicarlo donde quieran y les resulte mas comodo, una vez hecho podemos compilar y probar como funciona mediante el siguiente video
En el video al comienzo les muestro como ubique al nuevo objeto al comienzo de la rm_main, luego podemos ver como el juego sigue funcionando perfecto pero cada vez que presionemos la barra espaciadora nos sale una mensaje con la notificacion del puntaje actual, tambien en un momento vemos como al repetir el salto sobre una plataforma el puntaje no aumenta.
Nota: Les recuerdo que la notificacion es solo de forma temporal en el proximo post lo cambiaremos.
En resumen, hoy hemos visto como GameMaker posee una variable interna para almacenar el puntaje, tambien hemos visto como podemos manejarla, hemos hecho las modificaciones necesarias para poder incrementarla con un valor para las plataformas y otro para los enemigos, tambien hemos visto como hacer para que no se incremente cuando se repite la plataforma, espero les haya gustado sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.


Donación
Es para mantenimento del sitio, gracias!
$1.50
