Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: alvitofr en Agosto 23, 2015, 02:26:46 PM

Título: Problema con mejor puntuación
Publicado por: alvitofr en Agosto 23, 2015, 02:26:46 PM
En mi juego, cuando pierdes, te lleva a una room en la que tengo este código:
global.record=score
draw_self()
draw_text(250,120,"Score: "+string(score))
if(score==global.record) draw_text(250,200,"Best: "+string(score))
else draw_text(250,200,"Best: "+string(global.record))
Mi intención es que salga la puntuación de esa partida y que si bates el récord, abajo ponga Best:(puntuación), y si no lo bates, que ponga Best:(récord).
Mi problema es que en "Best", nunca sale el récord "histórico", sólo sale la puntuación.
¿Me podríais ayudar con esto, por favor?
Título: Re:Problema con mejor puntuación
Publicado por: Guacusio en Agosto 23, 2015, 06:39:27 PM
Al hacer global.record=score obligas a la condición del if de abajo a que siempre se cumpla, por eso siempre te muestra Best (score). Prueba lo siguiente:

draw_self()
draw_text(250,120,"Score: "+string(score))
if(score>=global.record) draw_text(250,200,"Best: "+string(score))
else draw_text(250,200,"Best: "+string(global.record))


tampoco es la manera más eficiente para hacer algo así (deberías comprobar si se bate el récord una sola vez en otro evento en vez de hacerlo permanentemente en draw). Lo que yo haría sería:

En un evento anterior:
global.record=max(global.record,score);
score_text="Score: "+string(score);
record_text="Best: "+string(global.record);


En Draw:
draw_self();
draw_text(250,120,score_text);
draw_text(250,200,record_text);
Título: Re:Problema con mejor puntuación
Publicado por: alvitofr en Agosto 23, 2015, 09:37:25 PM
Cita de: Guacusio en Agosto 23, 2015, 06:39:27 PM
Al hacer global.record=score obligas a la condición del if de abajo a que siempre se cumpla, por eso siempre te muestra Best (score). Prueba lo siguiente:

draw_self()
draw_text(250,120,"Score: "+string(score))
if(score>=global.record) draw_text(250,200,"Best: "+string(score))
else draw_text(250,200,"Best: "+string(global.record))


tampoco es la manera más eficiente para hacer algo así (deberías comprobar si se bate el récord una sola vez en otro evento en vez de hacerlo permanentemente en draw). Lo que yo haría sería:

En un evento anterior:
global.record=max(global.record,score);
score_text="Score: "+string(score);
record_text="Best: "+string(global.record);


En Draw:
draw_self();
draw_text(250,120,score_text);
draw_text(250,200,record_text);


Muchas gracias y perdón por las molestias, pero no me han servido ninguna de las dos formas :(
Título: Re:Problema con mejor puntuación
Publicado por: Marth en Agosto 23, 2015, 10:49:29 PM
¿Nada ha funcionado?
Te recuerdo una cosa: game_restart() y game_en() resetea las variables globales. ¿Como lo haces para guardar el récord?