Hola, perdon por el titulo, pero no sabia que poner para especificarlo jeje.
Tengo este codigo:
x = {} x[0] = 10 y = {} y[0] = 26 c = {x,y,estado} c.estado = 1 c.x = math.random(5,475) c.y = math.random(5,267) if (x[0] + 16) >= c.x and x[0] <= (c.x + 10) and (y[0] + 16) >= c.y and y[0] <= (c.y + 10) then c.estado = 0 end
y me da de error: line 40 (la del if) attempo to perform arithmetic on field ? (a nil value)
Nose como solucionarlo, porque creo que todas las variables tienen valor...tiene que ser un error en las tablas, porque lo he probado con variables y no me da error...
Gracias ;)
Me vuelve el error, esta vez
Me vuelve el error, esta vez os pongo el codigo entero a ver si vosotros sabeis que pasa...
Estoy intentado hacer el snake de toda la vida...porque pense que era facil y para practicar un poco, pero...me quedo atascado aqui, que nose que pasa.
Lo mismo hay barbaridades asique no os asusteis...jaja
gracias ;)
Pero, que error y en qué
Pero, que error y en qué línea? (Así es más rápido solucionarlo :P)
uy, perdon, se me fue la olla
uy, perdon, se me fue la olla jeje
El error es: attempo to perform arithmetic on field ? (a nil value)
y me lo da al pulsar X en la linea que esta en negrita:
elseif dir == 3 then
snake.x[1] = snake.x[1] +1
snake.x[i] = snake.x[i-1]
Perdon por no ponerlo antes...
El error está una línea
El error está una línea después de la que marcaste en negritas: de nuevo el problema con los índices. En la primera pasada del for, i vale 1.
1-1 = 0
snake.x[1] = snake[0] --igualas a nil, por eso dará error en las sucesivas pasadas del for.
mm ok muchas gracias jeje,
mm ok muchas gracias jeje, nose porque xro me he acordao antes cuando iba por la calle de poner i+1 = i xD
ahora....a ver si consigo hacer lo que quiero.
Muchas gracias ;)
Ahora veo que habias creado
Ahora veo que habias creado una tabla para las x xD
En Lua los índices de las
En Lua los índices de las tablas empiezan en 1, no en 0. Con eso en cuenta, no debería darte error :P
he vuelto a escribir el
he vuelto a escribir el codigo y ahora no me da error :S no se que habra pasado, perdon por las molestias y gracias.
Eso mismo le dije yo, pero ya
Eso mismo le dije yo, pero ya los cambio a 1 y sigue igual.
Pues... no lo habrá hecho
Pues... no lo habrá hecho bien, porque yo acabo de probar el código con la modificación que sugerí, y va perfecto
._.
En fin, ya lo soluciono.
En fin, ya lo soluciono.
Que extraño code, nunca me
Que extraño code, nunca me había topado con algo así, pues la verdad ahora si que necesito que me expliques algo xD, para que son los parentesis en las comparaciones?
PD: intenta de cambiar los indices de las tablas, ejemplo tienes y[0], cambialo por y[1]
Seguro que sabe programar en
Seguro que sabe programar en C ya que en C los arrays empiezan por 0 no como en Lua que empiezan por el 1 y en C los if llevan paréntesis:
nada, mismo error. He probado
nada, mismo error. He probado poniendo [1] en vez de [0] y quitando los parentesis, pero todo sigue igual...a ver si alguien sabe la solucion, gracias de todas formas :)
Mmm pues ni idea .
Mmm pues ni idea .
los parentesis...la verdad
los parentesis...la verdad que no tienen ninguna funcion, pero estoy acostumbrado a ponerlos, para que realice esa operacion antes jeje nuse, esque veo yo mas claramente que tiene que hacer primero el x[0] + 16 antes de comparar, funcion?? ninguna jeje. Es mania mia.
No se si tiene mucho que ver,
No se si tiene mucho que ver, pero aver, quita los parentesis.