Anuncios Google

Dos errores, analogy() valor nulo? S:

Hola:

Bueno haciendo un mini-juego me marca error en la linea donde está math.abs, que es la funcion que mueve el objeto con el analogo, lo marca como valor nulo, y ah otra cosa los objetos no se mueven.

tcolors = {}
tcolors[1] = color.new(139,0,0)
tcolors[2] = color.new(0,139,139)
tcolors[3] = color.new(139,0,139)
 
c1 = {img=image.create(20,50,tcolors[1]),dir=="l",x=50,y=50,x2=100,y2=120}
c2 = {img=image.create(20,50,tcolors[2]),dir=="l",x=80,y=80,x1=150,y2=180}
c3 = {img=image.create(50,70,tcolors[3]),x=20,y=0}
 
 
function move(object,vl)
if object.dir=="r" then 
	object.x=object.x+vl
elseif object.dir=="l" then 
	object.x=object.x-vl
elseif object.dir=="u" then 
	object.y=object.y-vl
elseif object.dir=="d" then 
	object.y=object.y+vl
end
if object.dir=="r" and object.x>=object.x2+1 then
	object.dir="l"
end
if object.dir=="l" and object.x<=object.x1-1 then
	object.dir="r"
end
if object.dir=="d" and object.y>=object.y2+1 then
	object.dir="u"
end
if object.dir=="u" and object.y<=object.y1-1 then
	object.dir="d"
end
end
 
 
function mvm(object)
if controls.up() then
	object.y=object.y+1
elseif controls.down() then
	object.y=object.y-1
elseif controls.right() then
	object.x=object.x+1
elseif controls.left() then
	object.x=object.x-1
end
end
 
function Analogmove(object)
if math.abs(controls.analogy())>20 then object.y = object.y + object.analogy()/10 end
if math.abs(controls.analogx())>20 then object.x = object.x + object.analogx()/10 end
end
 
while true do
controls.read()
c1.img:blit(c1.x,c1.y)
c2.img:blit(c2.x,c2.y)
c3.img:blit(c3.x,c3.y)
mvm(c3)
move(c1,4)
move(c2,4)
Analogmove(c3)
screen.flip()
end

Ahorita voy a intentar mover los dos con tan solo llmara la fncion solo 1 vez.

Saludos.


Anuncios Google

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de Chimecho

¿?

El problema no es la función, Lua tiene razón, en esa línea si que está el error:

object.analogy()/10

dos cosas, no veo ni que esté declarado el objeto, ni que la función analogy() exista en el objeto (claro, si no veo objeto... xD)

Edito: no había visto que estaba dentro de una funcion



PSP FAT [5.00 M33-6] [6.60 ME] [Hard Moded] / Nintendo Wii [4.1U] [cIOS Hermes] [D2X cIOS] / iPhone 3G [4.2.1] [BB 05.13.04] [redsn0w] / iPod Touch 4 [6.1] [evasi0n]

07/05/10: Tuve el placer de llamarle con todo derecho "N00B" a molotovi xDDD

Recuerda: Sé el intérprete -_-

Imagen de barney77

Mira

Mira abajo ya lo solucione solo que me falta que se muevan los objetos, te pogno el code:

tcolors = {}
tcolors[1] = color.new(139,0,0)
tcolors[2] = color.new(0,139,139)
tcolors[3] = color.new(139,0,139)
 
c1 = {img=image.create(20,50,tcolors[1]),dir=="r",x=50,y=50,x1=100,y1=100,x2=100,y2=120}
c2 = {img=image.create(20,50,tcolors[2]),dir=="r",x=80,y=80,x1=100,y1=100,x2=150,y2=180}
c3 = {img=image.create(50,70,tcolors[3]),x=20,y=0}
 
 
function move(object,vl)
if object.dir=="r" then 
	object.x=object.x+vl
elseif object.dir=="l" then 
	object.x=object.x-vl
elseif object.dir=="u" then 
	object.y=object.y-vl
elseif object.dir=="d" then 
	object.y=object.y+vl
end
if object.dir=="r" and object.x>=object.x2+1 then
	object.dir="l"
end
if object.dir=="l" and object.x<=object.x1-1 then
	object.dir="r"
end
if object.dir=="d" and object.y>=object.y2+1 then
	object.dir="u"
end
if object.dir=="u" and object.y<=object.y1-1 then
	object.dir="d"
end
end
 
 
function mvm(object)
if controls.up() then
	object.y=object.y+1
elseif controls.down() then
	object.y=object.y-1
elseif controls.right() then
	object.x=object.x+1
elseif controls.left() then
	object.x=object.x-1
end
end
 
 
 
 
while true do
controls.read()
c1.img:blit(c1.x,c1.y)
c2.img:blit(c2.x,c2.y)
c3.img:blit(c3.x,c3.y)
if math.abs(controls.analogy())>13 then c3.y=c3.y+controls.analogy()/15 end
if math.abs(controls.analogx())>13 then c3.x=c3.x+controls.analogx()/15 end
mvm(c3)
move(c1,c2,4)
screen.flip()
end

Imagen de NauTiluS1

Que no lleva un punto?

Que no lleva un punto?

Imagen de barney77

¿En donde?

¿EN donde? S:

function Analogmove(object)
if math.abs(controls.analogy())>20 then object.y = object.y + object.analogy()/10 end
if math.abs(controls.analogx())>20 then object.x = object.x + object.analogx()/10 end
end

AHora he probado haciendolo sin funcion, en el búcle, pero sigue igual.

Yo veo algo raro, esta parte:

Yo veo algo raro, esta parte: object.analogy()

No será controls.analogy() ?

Imagen de barney77

He

He pues ya lo solucione y exactamente erá eso, bueno ahora sabes porque no se mueven los objects?.

Creo que he indicado todo perfectamente para que se muevan xD.

Te pongo el code actualizado.

tcolors = {}
tcolors[1] = color.new(139,0,0)
tcolors[2] = color.new(0,139,139)
tcolors[3] = color.new(139,0,139)
 
c1 = {img=image.create(20,50,tcolors[1]),dir=="r",x=50,y=50,x1=100,y1=100,x2=100,y2=120}
c2 = {img=image.create(20,50,tcolors[2]),dir=="r",x=80,y=80,x1=100,y1=100,x2=150,y2=180}
c3 = {img=image.create(50,70,tcolors[3]),x=20,y=0}
 
 
function move(object,vl)
if object.dir=="r" then 
	object.x=object.x+vl
elseif object.dir=="l" then 
	object.x=object.x-vl
elseif object.dir=="u" then 
	object.y=object.y-vl
elseif object.dir=="d" then 
	object.y=object.y+vl
end
if object.dir=="r" and object.x>=object.x2+1 then
	object.dir="l"
end
if object.dir=="l" and object.x<=object.x1-1 then
	object.dir="r"
end
if object.dir=="d" and object.y>=object.y2+1 then
	object.dir="u"
end
if object.dir=="u" and object.y<=object.y1-1 then
	object.dir="d"
end
end
 
 
function mvm(object)
if controls.up() then
	object.y=object.y+1
elseif controls.down() then
	object.y=object.y-1
elseif controls.right() then
	object.x=object.x+1
elseif controls.left() then
	object.x=object.x-1
end
end
 
 
 
 
while true do
controls.read()
c1.img:blit(c1.x,c1.y)
c2.img:blit(c2.x,c2.y)
c3.img:blit(c3.x,c3.y)
if math.abs(controls.analogy())>13 then c3.y = c3.y + controls.analogy()/5 end
if math.abs(controls.analogx())>13 then c3.x = c3.x + controls.analogx()/5 end
mvm(c3)
move(c1,c2,4)
screen.flip()
end

Imagen de Chimecho

um

Me asombra que no te de error, pues le pasas un objeto (c2) como vl a la funcion move...

de todos modos, no seria mejor poner el code en el post principal?



PSP FAT [5.00 M33-6] [6.60 ME] [Hard Moded] / Nintendo Wii [4.1U] [cIOS Hermes] [D2X cIOS] / iPhone 3G [4.2.1] [BB 05.13.04] [redsn0w] / iPod Touch 4 [6.1] [evasi0n]

07/05/10: Tuve el placer de llamarle con todo derecho "N00B" a molotovi xDDD

Recuerda: Sé el intérprete -_-

Imagen de barney77

Gracias

Gracias, pero D=, no se mueven, mira:

He llamado a la funcion dos veces.

tcolors = {}
tcolors[1] = color.new(139,0,0)
tcolors[2] = color.new(0,139,139)
tcolors[3] = color.new(139,0,139)
 
c1 = {img=image.create(20,50,tcolors[1]),dir=="r",x=50,y=50,x1=100,y1=100,x2=100,y2=120}
c2 = {img=image.create(20,50,tcolors[2]),dir=="r",x=80,y=80,x1=100,y1=100,x2=150,y2=180}
c3 = {img=image.create(50,70,tcolors[3]),x=20,y=0}
 
 
function move(object,vl)
if object.dir=="r" then 
	object.x=object.x+vl
elseif object.dir=="l" then 
	object.x=object.x-vl
elseif object.dir=="u" then 
	object.y=object.y-vl
elseif object.dir=="d" then 
	object.y=object.y+vl
end
if object.dir=="r" and object.x>=object.x2+1 then
	object.dir="l"
end
if object.dir=="l" and object.x<=object.x1-1 then
	object.dir="r"
end
if object.dir=="d" and object.y>=object.y2+1 then
	object.dir="u"
end
if object.dir=="u" and object.y<=object.y1-1 then
	object.dir="d"
end
end
 
 
function mvm(object)
if controls.up() then
	object.y=object.y+1
elseif controls.down() then
	object.y=object.y-1
elseif controls.right() then
	object.x=object.x+1
elseif controls.left() then
	object.x=object.x-1
end
end
 
 
 
 
while true do
controls.read()
c1.img:blit(c1.x,c1.y)
c2.img:blit(c2.x,c2.y)
c3.img:blit(c3.x,c3.y)
screen.print(100,100,"Presiona X y se activa el USB XD",tcolors[2])
if controls.press("cross") then
	usb.on()
end
screen.print(100,200,"Presiona O y se desactiva el USB =(",tcolors[1])
if controls.press("circle") then
	ubs.off()
end
if math.abs(controls.analogy())>13 then c3.y=c3.y+controls.analogy()/15 end
if math.abs(controls.analogx())>13 then c3.x=c3.x+controls.analogx()/15 end
mvm(c3)
move(c2,4)
move(c1,4)
screen.flip()
end

Imagen de Chimecho

sabes...

lo complicado que es estar moviendo la barra para ver el código? por que no lo pones en el post principal?

bueno... el problema es que tu pones dir=="r" y no dir="r" a como debería de ser...

Saludos!



PSP FAT [5.00 M33-6] [6.60 ME] [Hard Moded] / Nintendo Wii [4.1U] [cIOS Hermes] [D2X cIOS] / iPhone 3G [4.2.1] [BB 05.13.04] [redsn0w] / iPod Touch 4 [6.1] [evasi0n]

07/05/10: Tuve el placer de llamarle con todo derecho "N00B" a molotovi xDDD

Recuerda: Sé el intérprete -_-

Imagen de barney77

Uh

Uh, perdoname man!, bueno gracias.

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.