Anuncios Google

Ayudenme con este codigo porfavor (LUA,PSP)

Ya he estado varios dias con este codigo que yo he hecho, es un cuadro que rebota de manera vertical en la pantalla. Si me funciono luego de que lo probe, pero quise hacerlas funciones para hacer mas corto el codigo, y me puse a crear las funciones, pero ya cuando lo pruebo, el cuadro esta inmovil en la pantalla. ya he buscado distintas maneras de acomodar el codigo y nada. Acudo a esta gran pagina para que me ayuden.

-- ***** Variables *****
System.usbDiskModeActivate() 
blanco = Color.new(255,255,255)
amarillo = Color.new(255,255,0)
jabin = {}
jabin.x = 400
jabin.y = 10
jabin.estado = "movimiento"
 
cuadro = Image.createEmpty(25,25)
cuadro:clear(amarillo)
 
function jabin.rebote ()
jabin.y = jabin.y - 2.8
end
 
function jabin.movimiento ()
jabin.y = jabin.y + 2.8
end
 
function movimientocuadro ()
if jabin.estado == "movimiento" then
jabin.movimiento()
end
if jabin.y >= 250 then 
jabin.estado = "rebote"
end
if jabin.estado == "rebote" then
jabin.rebote()
end
if jabin.y <= 0 then
jabin.estado = "movimiento"
end
if jabin.estado == "movimiento" then
jabin.movimiento()
end
if jabin.y >= 250 then 
jabin.estado = "rebote"
end
if jabin.estado == "rebote" then
jabin.rebote()
end
if jabin.y <= 0 then
jabin.estado = "movimiento"
end
end
 
-- ***** Bucle Principal *****
while true do
screen:clear() 
pad = Controls.read()
screen:blit(jabin.x,jabin.y,cuadro)
movimientocuadro()
screen:print(350,100,jabin.estado,blanco)
screen:print(350,110,jabin.y,blanco)
if pad:cross() then
broke()
end
screen.waitVblankStart()
screen.flip()
end

Gracias de antemano y que siga viva esta consola Risa


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.

Ya por fin lo solucione

-- ***** Variables *****
System.usbDiskModeActivate() 
blanco = Color.new(255,255,255)
amarillo = Color.new(255,255,0)
function CC(x2,y2)
jabin = {}
jabin.x = x2
jabin.y = y2
jabin.estado = "movimiento" 
cuadro = Image.createEmpty(25,25)
cuadro:clear(amarillo) 
function jabin.rebote ()
jabin.y = jabin.y - 0.2
end
function jabin.movimiento ()
jabin.y = jabin.y + 0.2
end 
function movimientocuadro ()
if jabin.estado == "movimiento" then
jabin.movimiento()
end
if jabin.y >= 250 then 
jabin.estado = "rebote"
end
if jabin.estado == "rebote" then
jabin.rebote()
end
if jabin.y <= 0 then
jabin.estado = "movimiento"
end
if jabin.estado == "movimiento" then
jabin.movimiento()
end
if jabin.y >= 250 then 
jabin.estado = "rebote"
end
if jabin.estado == "rebote" then
jabin.rebote()
end
if jabin.y <= 0 then
jabin.estado = "movimiento"
end
end
 
-- ***** Bucle Principal *****
while true do
screen:clear()
movimientocuadro()
screen:blit(jabin.x,jabin.y,cuadro)
screen.flip()
end
end
while true do
pad = Controls.read()
CC(50,0)
if pad:cross() then
broke()
end
screen:waitVblankStart()
end

El unico problema es que no se como blitear dos cuadros simultaneamente, necesito su ayuda. GraciasRisa

Imagen de NEKERAFA

Repite el blit

Solo necesitas repetir screen:blit() las veces que quieras 

Ya lo habia considerado esto ;)

Nadamas que no se en que parte del codigo va esto, va en la funcion o en el bucle principal??

Agradesco tu respuesta Risa

Imagen de Jepte

Asunto

-- ***** Variables *****
System.usbDiskModeActivate() 
blanco = Color.new(255,255,255)
amarillo = Color.new(255,255,0)
sph = Image.createEmpty(25,25)
sph:clear(amarillo)
 
function CC(c,x2,y2,sph)
c = {} 
c.x = x2
c.y = y2
c.estado = "movimiento"
 
end
function c.rebote () --lo siento, no se como convocar una funcion adentro de otra
    c.y = c.y - 2.8
end
 
function c.movimiento () --lo mismo
c.y = c.y + 2.8
end
 
function movimientocuadro () --lo mismo
     if c.y >= 250 then 
        c.estado = "rebote"
     end
     if c.estado == "rebote" then
         c.rebote()
		 --c.y = c.y - 2.8 -- podrias utilizar directamente los valores
     end
     if c.y <= 0 then
        c.estado = "movimiento"
     end
	 if c.estado == "movimiento" then
         c.movimiento()
		 --c.y = c.y + 2.8 -- podrias utilizar directamente los valores
     end
end
 
 
-- ***** Bucle Principal *****
while true do
screen:clear() 
pad = Controls.read()
 
movimientocuadro() --tengo duda si esto va aqui
 
CC(c1,100,100,s1)
 
 
if pad:cross() then
     broke()
end
 
 
screen:blit(c.x,c.y,sph)
 
screen.waitVblankStart()
screen.flip()
end
 

 

no lo habia visto

gracias, no me habia fijado que podia colocar directamente los valores

Gracias

esta bien el codigo que me enviaste, pero lo que yo quiero hacer es convertirlo en una funcion, como este programa:

-- ***** Variables *****
System.usbDiskModeActivate() 
blanco = Color.new(255,255,255)
amarillo = Color.new(255,255,0)
function CC(c,x2,y2,sph)
c = {}
c.x = x2
c.y = y2
c.estado = "movimiento"
 
sph = Image.createEmpty(25,25)
sph:clear(amarillo)
 
function c.rebote () --lo siento, no se como convocar una funcion adentro de otra
c.y = c.y - 2.8
end
 
function c.movimiento () --lo mismo
c.y = c.y + 2.8
end
 
function movimientocuadro () --lo mismo
if c.estado == "movimiento" then
c.movimiento()
end
if c.y >= 250 then 
c.estado = "rebote"
end
if c.estado == "rebote" then
c.rebote()
end
if c.y <= 0 then
c.estado = "movimiento"
end
if c.estado == "movimiento" then
c.movimiento()
end
if c.y >= 250 then 
c.estado = "rebote"
end
if c.estado == "rebote" then
c.rebote()
end
if c.y <= 0 then
c.estado = "movimiento"
end
end
screen:blit(c.x,c.y,sph)
end
 
-- ***** Bucle Principal *****
while true do
screen:clear() 
pad = Controls.read()
movimientocuadro() --tengo duda si esto va aqui
CC(c1,100,100,s1)
if pad:cross() then
broke()
end
screen.waitVblankStart()
screen.flip()
end

Imagen de PerezRE

?

No logro tener en claro que es lo que realmente quieres. ¿Podrías ser un poco más explícito?

Imagen de PerezRE

Con respecto al lenguaje Lua,

Con respecto al lenguaje Lua, tengo bastante sin tocarlo pero espero poder ayudar de alguna manera.

 

i = 2.8
 
function rebote_abajo()
   for i, i >= 0, i = i- .5 then
        scrren:print(jabin.x,jabin.y,cuadro);
        jabi.y = i 
   end
end
 
 
function rebote_arriba()
   for i, i <= 2.8, i = i +.5 then
        screen:print(jabin.x,jabin.y,cuadro)
        jabi.y = i
   end
end
 
 
while true do
  if i >= 2.8 then rebote_abajo() elseif i <= 0 rebote_arriba() end
end

 

Saludos


--[NO EXISTEN LOS LIMITES =D]--

Imagen de gdljjrod

Pues asi simple vista

Donde aumentas tus coordenadas x,y????

Solo el cuadro rebota de

Solo el cuadro rebota de arriba hacia abajo es:

function jabin.rebote ()
jabin.y = jabin.y - 2.8
end
 
function jabin.movimiento ()
jabin.y = jabin.y + 2.8
end

Todo este codigo que puse anteriormente funciona bien, solo lo que quiero es convertirlas en funcion
Imagen de gdljjrod

Puedes poner el code

funcional porfa...XD

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.