Anuncios Google

[Tutorial] Cursor en LuaDev

Hoy traigo un tutorial de un cursor en LuaDev con la posibilidad de poder moverlo por panalla.

El motivo por el cual lo hago es para que la gente que acaba de dempezar a programar pueda hacerlo, aparte de que el Tuto que hay por esta Web esta mal.

Empezemos.

Creamos una tabla con las coordenadas en pantalla y la imagen del cursor:

cur = {x=240,y=136,imagen = image.load("cur.png")}

Creamos la función para poder mover el cursor por la pantalla.

En este caso nos permitira moverlo con el Pad Analógico:

function movimiento() 
      if controls.analogx() > 40 and cur.x < 480 then cur.x = cur.x + 4 end
      if controls.analogx() < -40 and cur.x > 0 then cur.x = cur.x - 4 end
      if controls.analogy() > 40 and cur.y < 272 then cur.y = cur.y + 4 end
      if controls.analogy() < -40 and  cur.y > 0 then cur.y = cur.y - 4 end
end

Hasta ahora facil ¿Verdad? pues seguimos.

3º Iniciamos el bucle y nombramos las funciones, imprimimos el cursor en pantalla y hacemos el Flip:

while true do
 
controls.read()
 
movimiento()
limite()
 
cur.imagen:blit(cur.x,cur.y) 
 
screen.flip()
 
end

Pues ya tenemos nuestro cursor hecho xD

Aqui dejo el code entero y comentado:

--Cursor By: Tutos14
--Solo para PSP.Scenebeta
 
    cur = {x=240,y=136,imagen = image.load("cur.png")} --Creamos una tabla con las coordenadas en pantalla y la imagen que usaremos
 
 
  function movimiento() 
      if controls.analogx() > 40 and cur.x < 480 then cur.x = cur.x + 4 end
      if controls.analogx() < -40 and cur.x > 0 then cur.x = cur.x - 4 end
      if controls.analogy() > 40 and cur.y < 272 then cur.y = cur.y + 4 end
      if controls.analogy() < -40 and  cur.y > 0 then cur.y = cur.y - 4 end
end
 
 
 
 
 
 
while true do --Iniciamos el bucle
 
controls.read() --Iniciamos la lectura de los botones
 
movimiento() --Nombramos la función del movimiento
 
 
cur.imagen:blit(cur.x,cur.y) --Mostramos el cursor
 
screen.flip() --Hacemos el Flip
 
end --Cerramos bucle

Por último nos quedaria guardarlo en un script.lua y probarlo

Aqui dejo el cursor que use yo en este caso:

PD: Guardarlo con el nombre cur.png y guardarlo en la carpeta donde se encuetra el Script.lua

Captura:

Un saludo y espero que haya valido la pena ;)




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 PerezRE

By PerezRE

Excelente tutorial. Muy bien explicado

Imagen de Dioni0396

Mas facil...

--Cursor By: Tutos14
--Solo para PSP.Scenebeta
 
    Pelota = {x=240,y=136,imagen = image.load("Pelota.png")} --Creamos una tabla con las coordenadas en pantalla y la imagen que usaremos
 
 
  function movimiento(cur) 
      if controls.analogx() > 40 and cur.x < 480 then cur.x = cur.x + 4 end
      if controls.analogx() < -40 and cur.x > 0 then cur.x = cur.x - 4 end
      if controls.analogy() > 40 and cur.y < 272 then cur.y = cur.y + 4 end
      if controls.analogy() < -40 and  cur.y > 0 then cur.y = cur.y - 4 end
      cur.imagen:blit(cur.x,cur.y)
end
 
 
 --PODEMOS usar cuantas veces queramos con la funcion de arriba siempre y cuando tengamos la misma tabla que Pelota.
 
 --Codigo mas automatico con la funcion solo tiene que poner el nombre de la imagen donde cur.
 
while true do --Iniciamos el bucle
 
controls.read() --Iniciamos la lectura de los botones
 
movimiento(Pelota) --Nombramos la función del movimiento
 
 --Mostramos el cursor
 
screen.flip() --Hacemos el Flip
 
end --Cerramos bucle

Imagen de Tutos14

En el bucle te faltaria

En el bucle te faltaria esto:

pelota.imagen:blit(pelota.x,pelota.y)

Imagen de Dioni0396

error

analiza la funcion movimiento.

La funcion que he puesto sirve para infinitas imagenes.

Imagen de Tutos14

xD, no me di cuenta

xD, no me di cuenta

Imagen de NEKERAFA

Bueno

Si seguimos así con que el usuario sepa como se copia van a tener una aplicación entera hecha.

Ya hay tutoriales de como mover personajes (Que es lo mismo) y después en el tutorial de modulación sale algo parecido. Aparte de que parte del código se puede simplificar.

if controls.analogx() > 40 and cur.x < 480 then cur.x = cur.x + 4 end

  • controls.analogx() devuelve un número de 128 a -128, y sabiendo que 128÷32 = 4, podríamos poner if math.abs(controls.analogx()) > 40 then cur.x+controls.analogx()/32 end, ahorrandonos 2 líneas, y lo mismo con controls.analogy().

Desde que descubrí las funciones math.max()  y math.min()  gracias a chimecho, he visto que te puedes ahorar 4 lineas en 1.

También es mejor que utilices cur = {image.load("cur.png"), x = 240-cur.image:width()/2, y = 136-cur.image:height()/2}  para tener el cursor mejor centrado.


NekeOS, el nuevo shell para PSP

PS4 500GB OFW, PS3 320GB OFW, PS3 500GB OFW, PSP 6.39 PRO-C Fix4.

Sony Xperia Z1 Compact con Android 5.1.1

Portatil Lenovo z50-70 Intel® Core™ i7-4510U y NVIDIA GeForce 840M con Elementary OS 0.3.2 Freya (64 bits) y Windows 10 (64 bits).

Imagen de m.rr

Buen Tuto. Seguro que los más

Buen Tuto. Seguro que los más novatos lo aprecian.

Imagen de Tutos14

Si, eso creo. Antes cuando no

Si, eso creo.

Antes cuando no sabia nada de programación estaba como loco para encontrar como hacer un cursor xD

Imagen de m.rr

Creo que todos xD

Creo que todos xD

Pues si integras los límites

Pues si integras los límites a la función de movimiento queda más limpio el code:

function movimiento() 
      if controls.analogx() > 40 and cur.x < 480 then cur.x = cur.x + 4 end
      if controls.analogx() < -40 and cur.x > 0 then cur.x = cur.x - 4 end
      if controls.analogy() > 40 and cur.y < 272 then cur.y = cur.y + 4 end
      if controls.analogy() < -40 and  cur.y > 0 then cur.y = cur.y - 4 end
end

Y funciona igual =)

Imagen de Tutos14

Muchas gracias Rober. No se

Muchas gracias Rober.

No se me habia ocurrido hacerlo asi ;)

Ahora edito.

No hace falta crear 2

No hace falta crear 2 funciones.

Se puede meter todo en el mismo buble ^^

Saludos.

Imagen de Ayrton990

para moi es tener más orden

para moi es tener más orden al final de cuentas, porque así las puedes almacenar en un fichero, las llamas con un dofile y despues ya en el bucle sólo las pones, es cuestion de gustos el resultado es el mismo.

Un saludo


Administrador de www.SceneBeta.com y Android

Imagen de Tutos14

Ya, pero ami me gusta más

Ya, pero ami me gusta más haciendo funciones y dejar el bucle más limpio ;)

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.