Noticias

Se ha publicado un nuevo servicio, el Portal de Juegos Online

Comunidad Game Maker

Bienvenid@ a la comunidad hispana de Game Maker. Nuestro objetivo es crear videojuegos y dar soporte en castellano de GM. Para mejorar nuestro servicio hemos implantado, como adicion al reglamento general, algunas normas especificas en los subforos más comunes. ¡No olvides informarte antes de participar!.

Autor Tema: timer  (Leído 737 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Mataca

en: Diciembre 17, 2014, 01:14:34 am
Hola. Busque pero las soluciones que encontre no sirven para el GM que uso yo.
Quiero un timer de 3 minutos por room (regresivo), y que haga las siguientes cosas:
Al aparecer 5 objetos llamados "obj_0" termine de contar. Si el tiempo esta entre 3:00 a 2:00 de 1000 de score. Si el tiempo esta entre 2:00 a 1:00 de 750 score. Si el tiempo esta entre 1:00 a 0:01 de 500 score. Si el tiempo llega a 0:00 se pierde el juego.

Alguno tiene idea de como se puede hacer?

 


No Tienes Permisos Para Dar Puntos
point 0 Puntos

Este tema no recibió puntos.


Desconectado penumbra

Respuesta #1 en: Diciembre 17, 2014, 02:28:48 am
Algo como:
CREATE
marca = 0
bonus = 0
alarm[0] = 3*60*room_speed    // 3 minutos

STEP
if (instance_number(obj_0) >= 5) and (marca < 1)
{
     marca = alarm[0]/room_speed         //Guardar registro de tiempo (basado en la alarma)
     alarm[0] = -1                                 //Detener alarma
     if (marca >= 120)
          bonus = 1000
     if (marca < 120) and (marca > 60)
          bonus = 750

}
ALARMA[0]
game_end()                                     //Terminar juego si alarma llega a 0

No lo he probado, puede fallar, le falta una condición para cuando el marcador es de menos de un minuto, pero la idea es esa

 


Desconectado Mataca

Respuesta #2 en: Diciembre 18, 2014, 01:19:23 am
pero como haria para ponerlo en la pantalla? La idea es que el jugador vea cuanto tiempo le queda...

 


Desconectado penumbra

Respuesta #3 en: Diciembre 18, 2014, 02:24:54 am
usando draw_text() para imprimir el valor de la alarma. Si quieres que el valor de la alarma en lugar de STEPS se muestre en segundos, hay que dividir el valor de la alarma entre room_speed y eso dibujarlo mediante draw_text()

 


Desconectado Mataca

Respuesta #4 en: Diciembre 21, 2014, 07:23:36 am
El codigo que me pasaste penumbra funciona perfecto. Modifique el bonus por el score directo. En vez de bonus = X, puse score = score+X.

usando draw_text() para imprimir el valor de la alarma. Si quieres que el valor de la alarma en lugar de STEPS se muestre en segundos, hay que dividir el valor de la alarma entre room_speed y eso dibujarlo mediante draw_text()

Cómo sería para dibujarlo en la pantalla? Me lo dices en un idioma avanzado jaja :P

Como sería el comando draw?

desde ya muchas gracias,
saludos

 


Desconectado penumbra


Desconectado Mataca

Respuesta #6 en: Diciembre 23, 2014, 04:43:55 pm
Y cómo tendria que quedar?.
Probe asi:
Código: [Seleccionar]
alarm[0] = alarm[0]/room_speed
draw_text(80,80, +string(alarm[0]));


Pero no me andubo.

Si uso solo:

Código: [Seleccionar]
draw_text(80,80, +string(alarm[0]));

Me lo muestra pero no en Minutos y segundos como quiero jaja :P.

 


Desconectado Clamud

Respuesta #7 en: Diciembre 23, 2014, 09:06:31 pm
Código: [Seleccionar]
alarm[0] = alarm[0]/room_speed
draw_text(80,80, +string(alarm[0]));
Ese código no va a funcionar porque en la primera línea la alarma se reduce muy rápido en cada paso y no se resta de uno en uno, y en la segunda línea no debe ir el signo + si no hay otra variable antes.

Para dibujar el tiempo usa un código como éste:
ts = alarm[0] / room_speed; //total de segundos
m = ts div 60; //minutos
s = ts mod 60; //segundos
draw_text( x,y, string(m)+" : "+string(s) );

 


Desconectado Mataca

Respuesta #8 en: Diciembre 24, 2014, 05:39:49 am
Código: [Seleccionar]
alarm[0] = alarm[0]/room_speed
draw_text(80,80, +string(alarm[0]));
Ese código no va a funcionar porque en la primera línea la alarma se reduce muy rápido en cada paso y no se resta de uno en uno, y en la segunda línea no debe ir el signo + si no hay otra variable antes.

Para dibujar el tiempo usa un código como éste:
ts = alarm[0] / room_speed; //total de segundos
m = ts div 60; //minutos
s = ts mod 60; //segundos
draw_text( x,y, string(m)+" : "+string(s) );

Va tomando forma el timer ... jaja.

El tema es que me aparecen los milisegundos tambien. 2:59.99. Aparte cada segundo que pasa desaparece todo y aparece de nuevo, parece que pestañea en cada segundo y distrae montones en el room.

 


Desconectado Clamud

Respuesta #9 en: Diciembre 24, 2014, 05:29:36 pm
Para no mostrar los decimales tienes varias opciones: puedes usar el operador div o alguna de las siguientes funciones; round, floor y ceil. Lee el manual y experimenta para que determines qué función te conviene. Sobre el parpadeo, no se qué pueda ocasionarlo, tal vez hay otro código por ahí que está afectando.