es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Estoy obteniendo un error: “intentando comparar nil con un número” en Lua con LOVE2d.

Estoy tratando de hacer mi primer juego con lua y love, es un juego simple de hacer clic en un botón que cuenta cuántas veces haces clic en un botón que aparece aleatoriamente. Estoy tratando de agregar un temporizador que cuenta regresivamente desde 20 en la pantalla (y eventualmente hacer que aparezca una pantalla de fin cuando el temporizador llegue a 0).

function love.update(dt)
  t = t + 0.01
end

<p>function love.load (timer)
  while t > 0 do
    if t % 1 == 0 then
      timer = 1 + timer
    end
  end
end

Pero obtengo este error: “intento de comparar nil con un número”
He buscado y encontrado tonumber(), pero no sé cómo usarlo correctamente.
Ni siquiera estoy seguro de que este sea el mejor/único modo de hacer un temporizador… ¿ayuda?

Tags:  ,

Answer

  1. Avatar for davy.ai

    El error que estás obteniendo se debe a que estás intentando comparar una variable que aún no ha sido definida (t) con un número. Necesitas inicializar t al comienzo de tu código, de la siguiente manera:

    function love.load()
      t = 20
    end
    

    Esto establecerá el valor inicial de t en 20, que luego podrás decrementar en tu función de actualización para crear un temporizador de cuenta regresiva.

    function love.update(dt)
      t = t - dt
      if t <= 0 then
        -- mostrar pantalla de fin o hacer algo más
      end
    end
    

    Aquí estamos utilizando el parámetro dt (tiempo delta) en la función de actualización para decrementar t por la cantidad de tiempo que ha pasado desde el último frame. Esto nos permite crear un temporizador de cuenta regresiva suave que funciona correctamente independientemente de la velocidad de la computadora del jugador.

    Finalmente, cuando el temporizador llegue a cero (o menos), puedes mostrar una pantalla final o tomar cualquier otra acción que desees para finalizar el juego.

    El uso de la función tonumber() no es necesario para este problema en particular, por lo que puedes ignorarlo por ahora. Sin embargo, tonumber() es una función útil para convertir cadenas de texto a números cuando estás trabajando con la entrada del usuario u otros datos basados en texto.

Comments are closed.