Hola, soy muy nuevo en esto de la programacion, y sabia un poco HM, pero he estado leyendo cosas sobre LuaDEV y he decidido pasarme a este. Estoy intentando crear un pequeño homebrew.
Les dejo una parte del codigo:
tiempo = timer.new() crono = tiempo:time()/1000 if controls.press("circle") then tiempo:stop() end screen.print(10,70,"Crono: "..crono) screen.flip()
Como puedo hacer para que aparezca el tiempo que va en pantalla?? esque con el screen.print() me aparece 0 y al lado parpadeando un numero (q supongo sera lo que lleva)
Gracias.
Al final conseguir hacerlo
Al final conseguir hacerlo con el timer.
Asi me quedo:
Muchas gracias a todos por vuestra ayuda.
PD: Edito y pongo solucionado o lo hacen los moderadores??
ponlo tu ;)
.
modulo timer
el modulo timer es aún algo que puede sufrir, y sufrirá, modificaciones. ( :P )
Es un módulo bastante... inútil, la verdad, puesto que hace automático algo que se puede hacer en dos lineas de código, amos, que si un luaplayer no lo tuviera sería tan fácil implementarlo como...
timer = {
running = false,
offset = 0,
time = function(self) return os.clock() - self.offset; end,
start = function(self) if not self.running then self.running = true; self.offset = os.clock(); end end,
stop = function(self) self.running = false; end,
new = function(self,o) o = o or { }; setmetatable(o,self); self.__index = self; return o; end,
}
Hale, ya teneis módulo timer para todos, y este seguro no falla xD.
Igualmente con un tiempoinicial = os.clock(); y tiempo = os.clock() - tiempoinicial; nos devolvería el tiempo transcurrido, así que, no sé, si os dan problemas los timers, probar os.clock().
P.D: Este módulo casero timer, devuelve el resultado en segundos directamente. Para esperar medio segundo seria:
abc = timer:new();
abc:start();
while abc:time() < 0.5 do screen.waitvblankstart(); end
abc:stop();
abc = nil;
Actualmente desarrollando nuestra web y UXCode : http://www.gcrew.es
Dejo un poco aparte lo de las
Dejo un poco aparte lo de las milesimas, ya lo retomare mas tarde.
Una duda que me surge:
Tengo este codigo:
Yo lo que quiero es que al pulsar X comience el cronometro. El problema esque empieza a funcionar antes de presionar X.
Otra pregunta. Porque si pongo tiempo = timer.new() dentro de la funcion el cronometro se queda a 0 ?? no funciona ni pulsando X ni nunca si lo pongo dentro, cual es la razon??
Muxas gracias ;)
Algo más
Algo más limpio:
math.floor, redondea hacia abajo, eso te dara el tiempo en SEGUNDOS y no MILISEGUNDOS.
Funciona perfecto, muchisimas
Funciona perfecto, muchisimas gracias. Otra duda mas, si quiero poner que salgan los segundos y despues las decimas y centesimas??? Como lo podria hacer?? Porque si quitas lo de redondear te sale en milisegundos parpadeando y no pasa del 0...Gracias de nuevo
Bien, usa variables,
Bien, usa variables, así:
OJO, que no lo he probado y no estoy al 100% seguro de que sirva, pero probar no cuesta nada.
Saludos.
En el print, quita math.floor
En el print, quita math.floor y tendrás el tiempo en segundos y milésimas.
pues nada, sigue igual, me
pues nada, sigue igual, me sale el 0 quieto y parpadeando .001 lo he probado de las dos formas que me habeis puesto y no me sale.Ademas doy a circulo y sigue pasando lo mismo, sigue parpadeando, pero no cambia de ese numero nunca. Gracias de todas formas. Si alguien sabe que puedo hacer que lo diga porfa jeje
Ponlo así: tiempo =
Ponlo así:
Una cosa, supongo que eso lo tienes en un bucle, no?
xerpi...
Se te ha olvidado iniciar el timer (tiempo:start()), quizás por eso se queda en 0 todo el tiempo...
Prueba...
Prueba separando los puntitos (concatenación). O el fallo puede estar en que no has iniciado el tiempo (tiempo:start())
Un saludo.