Anuncios Google

Lua Dev(Duda de Array)

Bueno, va.

Ya tengo todo el script, ya hice que se meuva de arriba hacia abajo y no de enmedio hacia abajo como hace un rato(gracias nau), pero ahora quiero que tenga limites, para que hací pueda moverse de abajo hacia arriba.

Y no solo quiero que teng alimite para un objeto, si no también para el objeto bola.1.

Aqui mi code:

--Nivel 1
bola1= {}
bola1.img = image.load("bolas/bola1.png")
bola1.x = 430
bola1.y = 136
porteria={img=image.load("porterias/porteria1.png"),x1=0,y1=0,x=0,y=0,x2=0,y2=0,dir="u",velocidad=2}
function move(porteria)
if porteria.dir=="u" then
	porteria.y=porteria.y+porteria.velocidad
end
if porteria.dir=="d" then
	porteria.y=porteria.y+porteria.velocidad
end
if porteria.dir=="u" and porteria.y>=porteria.y2+1 then
end
if porteria.dir=="d" and porteria.y>=porteria.y2+1 then
end
end
 
while true do
controls.read()
porteria.img:blit(porteria.x,porteria.y)
porteria.h=porteria.img:height()
bola1.img:blit(bola1.x,bola1.y)
if controls.up() then
	bola1.y=bola1.y-1
end
if controls.down() then
	bola1.y=bola1.y+1
end
if controls.press("start") and controls.press("cross") then
	causaerror()
end
move(porteria)
screen.flip()
end

Los limites ya los habia añadido antes con esto:

if x<0 then
   x=0
elseif x+80>480 then
  x=480-80
end
if y<0 then
   y=0
elseif y+44>272 then
  y=272-44
end

Le sumo a X la cordenada X d emi imagne(80) y es mayor que 480(X) y así mismo con Y, pero me marca un erro de: attenmp a nil wiht numper o algo así de number de comparacion S:.


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 barney77

Ahora pruebo rber

Ahora pruebo rober, y, Irving, quiero que la porteria se mueva de arriba hacia abajo, lo logre hacer, pero, se mueve desde enmedio hacia abajo, y quiero que seá desde enmedio hacia arriba y abajo, y qe no tenga limites(eso ahorit alo estoy arreglando):

Imagen de NauTiluS1

Aver te lo explicare mas sencillo, y será de arriba a abajo, izq

uierda y derecha T.T

objeto={img=image.load("imagenes/objeto.png"),x1=0,y1=0,x=0,y=0,x2=0,y2=0,dir="r",vel=8}
function move(object)
if object.dir=="r" then 
	object.x=object.x+object.vel
elseif object.dir=="l" then 
	object.x=object.x-object.vel
elseif object.dir=="u" then 
	object.y=object.y-object.vel
elseif object.dir=="d" then 
	object.y=object.y+object.vel
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
--"x" y "y" es  la coordenada T.T
--"x2" quiere decir que desde "x" irá a "x2" si es de izquierda a derecha T.T
--"y2" quiere decir que viajará de "y" a "y2" si es de arriba a abajo T.T
-- Ahora, donde dice "dir="r" va lo siguiente, lo mas sencilo T.T
-- si pones r o l quiere decir izquierda y derecha
-- y si pones u o d es arriba a abajo
-- Más de ahy nose explicartelo

Y lo compruebas dentro del bucle con move(miobjeto)


Follow me twitter nautilus1_jmccu!!
Sony, ya a nadie le interesa tus UMD si alguien compra una psp es por nosotros los coders. Madura y has un FW que haga la diferencia y anime a las personas en comprar un PSP

Imagen de barney77

Listo ya quedo

Listo ya queddo!

Ahora solo falta los limites, para que se peuda mover de abajo a arriba y viceversa.

Sobre tu segundo error... no

Sobre tu segundo error... no definiste x,y (definiste bola1.x y bola1.y)

Imagen de barney77

Me sale

Me sale el mismo error, aunque veo innecesario definir, ya que eso lo defini en la tabla.

Exacto

Los definiste en la tabla, pero no fuera de ella.

Fuera de la tabla, se llamarían x,y, pero dentro de ella ya no (ahora serían tabla.x, tabla.y).

Te lo digo, porque en la línea que te da error, estás usando x,y sin haberles dado un valor antes. Si usas bola1.x ya no te dará error :)

Imagen de barney77

Pero

Pero..

aqui como haria eso S:

if x<0 then
   x=0
elseif x+80>480 then
  x=480-80
end
if y<0 then
   y=0
elseif y+44>272 then
  y=272-44
end

Lo hago así, porque es de la forma en la que lo entendi xD..

Para empezar... x,y en ese

Para empezar... x,y en ese trozo de código que representan? xD

Imagen de barney77

Bien..

Bien..

pues X,Y son las cordenadas de la pantlla del PSP(480X272), y lo que hago ahí es poner un limite a la pantalla, por ejemplo en:

elseif x+80>480 then
   x=480-80
end
 
--X + 80(80 es la cordenada X de mi objeto) y X es la coordenada de la pantalla del Psp-
--Esta suma(X+80) es mayor que 480
--Entonces sí es mayor, x=480-80, restamos la cordenada X de mi objeto a la Coordenada X de la pantalla del Psp para poner un límite.

Espero haberme explicado bien xD.

xDDDDD

A lo que me refería es... se las vas a pasar de argumento a algo? un blit o algo así?

Imagen de barney77

Pues

Pues, esas cordenadas son de mi porteria, y, pues son para ponerle limite, o sea que se mueva de arriba hacia abajo y viceversa sin que traspase la pantalla, pero me marca error de with a number no se que :(.

Muy bien... Pues lo que debes

Muy bien... Pues lo que debes hacer es darles un valor inicial a x,y (x = algo ; y = algo) que de otra manera te va seguir dando ese error :P

Imagen de barney77

Pues

Pues este es mi code:

--Nivel 1
bola1= {}
bola1.img = image.load("bolas/bola1.png")
bola1.x = 430
bola1.y = 136
porteria={img=image.load("porterias/porteria1.png"),x1=0,y1=0,x=0,y=0,x2=0,y2=0,dir="u",velocidad=2}
function move(porteria)
if porteria.dir=="u" then
	porteria.y=porteria.y+porteria.velocidad
end
if porteria.dir=="d" then
	porteria.y=porteria.y+porteria.velocidad
end
if porteria.dir=="u" and porteria.y>=porteria.y2+1 then
end
if porteria.dir=="d" and porteria.y>=porteria.y2+1 then
end
end
 
while true do
controls.read()
porteria.img:blit(porteria.x,porteria.y)
porteria.h=porteria.img:height()
bola1.img:blit(bola1.x,bola1.y)
if controls.up() then
	bola1.y=bola1.y-1
end
if controls.down() then
	bola1.y=bola1.y+1
end
if controls.press("start") and controls.press("cross") then
	causaerror()
end
move(porteria)
screen.flip()
end

Y el valor inicial de X y Y es 0... pero en realidad es X=80 Y=44 pero eso está así para que X=0 se mueva a X1 que se le sumara 1 a una velocidad de 8.

Y si quiero poner dos limites, el de bola1 y porteria, como le hago D:?

Perdona por tantas preguntas peor no entiendo :(.

Imagen de iRVing_Prog

yo lo hago de está forma:

porteria = {img =imga.load("nombre.png"),x=20,y=150,posicion="ariba",w=100,h=50}
 
--w es width = ancho
-- h = height = alto
 
function move(objeto)--servira para mover cualquier objeto que le pases como parametro
 
if objeto.posicion == "abajo" then
objeto.y = objeto.y - 1
 if objeto.y == 20 then
   objeto.posicion = "arriba"
 end
elseif objeto.posicion == "arriba" then
objeto.y = objeto.y + 1
 if objeto.y == 150 then
  objeto.posicion == "abajo" 
end
end
end
 
 
while true do
controls.read()
 
--la funcion
move(porteria)
 
screen.flip()
end

Espero te sirva :)


 

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.