Anuncios Google

Persecucion en LUADev

Tutoriales Avanzados Homebrewes

Seguramente muchas veces te has preguntado como hacer que te persigan en LUADev, de manos del coder jorge_97 nos llega este simple, pero estupendo tutorial que nos enseñara una manera sencilla de lograrlo.

Autor: jorge_97.

Como usar:

  • Creamos nuestros dos obj:

En nuestro caso dos cuadrados:

personaje = {x=240,y=180,w=30,h=30,imagen = image.create(10,10,color.new(255,0,0))}
enemigo = {x=200, y=20, w=0, h=0,imagen=image.create(10,10,color.new(0,255,0))}

  • Iniciamos el bucle y llamamos a nuestra función:

seguir(obj1,obj2,velocidad)

en "obj1" pondremos lo que queremos que persiga

en "obj2" pondremos el perseguidor

"velocidad" corresponde al movimiento, recomiendo que pongan un numero entre 0.3 y 1...

while true do
controls.read()
personaje.imagen:blit(personaje.x,personaje.y)
enemigo.imagen:blit(enemigo.x,enemigo.y)
 
 
seguir(personaje, enemigo,0.5)
 
if controls.right() then personaje.x=personaje.x+1 end
if controls.left() then personaje.x=personaje.x-1 end
if controls.up() then personaje.y=personaje.y-1 end
if controls.down() then personaje.y=personaje.y+1 end
if controls.start() then broke() end
screen.flip()
end

  • ¡Ya esta, nada mas empezar nos perseguirá.

Código Completo

function seguir(obj1,obj2,velocidad)
		if obj1.y-obj2.y>0 then obj2.y=obj2.y+velocidad end
		if obj2.x-obj1.x>0 then obj2.x=obj2.x-velocidad end
		if obj1.x-obj2.x>0 then obj2.x=obj2.x+velocidad end
		if obj2.y-obj1.y>0 then obj2.y=obj2.y-velocidad end
end
 
 
 
personaje = {x=240,y=180,w=30,h=30,imagen = image.create(10,10,color.new(255,0,0))}
enemigo = {x=200, y=20, w=0, h=0,imagen=image.create(10,10,color.new(0,255,0))}
 
 
 
while true do
controls.read()
personaje.imagen:blit(personaje.x,personaje.y)
enemigo.imagen:blit(enemigo.x,enemigo.y)
 
 
seguir(personaje, enemigo,0.5)
 
if controls.right() then personaje.x=personaje.x+1 end
if controls.left() then personaje.x=personaje.x-1 end
if controls.up() then personaje.y=personaje.y-1 end
if controls.down() then personaje.y=personaje.y+1 end
if controls.start() then broke() end
screen.flip()
end

4.118645
Tu voto: Ninguno Votos totales: 4.1 (59 votos)

Anuncios Google

Comentarios

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.

Intresante IA

Buen aporte, gracias :D

Hace falta un tutorial para

Hace falta un tutorial para esto?? Para eso que la gente se lea los codigos que no están de adorno.

Imagen de PerezRE

Buen tuto

Excelente tutorial jorge_97 :D

no esta bien explicado

pero donde tengo que poner los codigos?

en un txt con formato iso..... bat...... cso.........

o como lo pongooooooooooooooooooooooooooooooo ayuda por que no encuentro en ningun tutorial encuentro donde se ponen

 


fhghfgh

Si está bien explicado, lo

Si está bien explicado, lo que pasa es que no sabes que es LuaDEV, si lo supieras lo entenderias perfectamente.

Imagen de NauTiluS1

Solo sirve para programadores

Solo sirve para programadores

Imagen de sting18

Solo funcionara usando la

Solo funcionara usando la pantalla del psp si quieres hacer un juego tipo plataforma(de esenario alargado) no funcionara.

 

 

Despues que tenga tiempo ago tutos saludos a todos.


Imagen de jorge_97

By Jorge_97

Lo adaptare...

Salu2

Imagen de NauTiluS1

Buen Tutorial son puras

Buen Tutorial son puras condiciones y algoritmos no hace falta explicar mas ya que simplemente el usuario que lo utilize en su code debe aver condiciones
Y eso es lo que se usa en el Tutorial cualquier usuario que se haya leído los totorales de chimecho u otro lo entendería.
Saludos


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 User170294

Buen aporte. Esto les servirá

Buen aporte. Esto les servirá a los más novatos.

PD: ¿No debería ir en Snnipets?

Un saludo.

Imagen de jorge_97

by jorge_97

xD... bien! Jajaja que son los snippets?

Imagen de User170294

Es una sección de los

Es una sección de los Tutoriales Lua para PSP de Scenebeta.http://psp.scenebeta.com/tutorial/fragmentos-de-codigo-lua-snippets

"Los snippets son fragmentos de codigo en algun lenguaje de programacion, en este caso en LUA. Es codigo dedicado a realizar ciertas funciones muy concretas. Podemos reutilizar facilmente este codigo en nuestros juegos, lo que nos ayudara mucho a la hora de su programacion y nos ahorrara unas cuantas horas de trabajo y algun que otro quebradero de cabeza."

Un saludo, THC_HaCk.


Imagen de jorge_97

By Jorge_97

Ok Gracias!!

Salu2 THC

Imagen de ESBAAC

xce

¡Excelente tutorial! Cuando aprenda (dentro de otros 2 años xD) me servirá.

P.D: Todos los que comentaron este post son coders o.O (a excepción de yo y Onekraffo)


¿Te interesa las apuestas? ¿Quieres ganar (o perder muhahaha) unos cuantos bitos? Haz click aquí y actualízate de las apuestas actuales.

Imagen de jorge_97

By Jorge_97

Por favor aprende ya programacion si es sencillisima xD! Solo te faltan ganas...

Ammm y Nekrafa tmb es Coder:

URL

Salu2

Imagen de NEKERAFA

XDDD

Pero eso en PS3, no en PSP

Imagen de barney77

Me parece muy útil para los

Me parece muy útil para los novatos, pero concuerdo con nekerafa esto deberiade ir en snnipets, aparte de que no esta tan explicado.

Saludos coder!(Jorge).

Imagen de jorge_97

By Jorge_97

Ok! xD

Gracias por tu comentario ya tengo lista la V2.0...

Ahora se la mando a Vic explico hasta el ultimo punto solo me falta "Simplificarla"

Salu2 Bro


Risa Dos años en SCENEBETA Risa

Click aquí para ver la Entrada de Bitácora.

Imagen de Dioni0396

y porque la haces tu xD

Con el nuevo editor HTML Full ya puedes crear tus propias noticias, xD

Imagen de NEKERAFA

Al equipo de editores

Solo una cosa. Porque no ponen estos tutoriales en Snippets, ya que no son tutoriales completos de programación, sino trozos de código para hacer algo especifico...

Otra cosa jorge_97, explica un poco el código ¿no? Sino los nuevos programadores tirarán del copy-paste ya que no se enteran de nada.

Todo esto es una sugerencia. Saludos a [email protected] ^-^


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 jorge_97

By Jorge_97

Yeah!! En la proxima version lo hare...

Salu2 a todos!! y gracias por vuestros consejos!

También se puede hacer con

También se puede hacer con trigonometría.

Imagen de jorge_97

By Jorge_97

Yeah!!!

ang =math.atan2(obj2.y-obj1.y,obj2.x-obj1.x)
180+math.deg(ang)

Por que se le suma 180???

Salu2

Porqué eso te da el ángulo

Porqué eso te da el ángulo contrario donde está, le sumas 180 para obtener el ángulo bueno.

Imagen de markef

.

Porque el ángulo 180 es una horizontal con lo que tu estás acostumbrado a ver (y 0 es nada obviamente) :P

Imagen de jorge_97

By Jorge_97

ammmm ok xD!!!

Imagen de markef

.

para alguien que empieze a programar mejor que vea un código lineal y poca tabla sino dirá "apaga y vamonos".

Imagen de markef

.

Lo hago con un poco de explicación... Por si le sirve a alguien

function seguir(obj1,obj2,velocidad) -- declaramos una función donde los dos primeros parámetros son los objetvos que se mostrarán y el tercero será el valor de la velocidad
 
		if obj1.y-obj2.y>0 then obj2.y=obj2.y+velocidad end -- si la posición y del objeto 1 menos la posición y del objeto 2 son mayores a 0 entonces la posición y del objeto 2 será igual a la posición y del objeto 2 más la velocidad que pusimos anteriormente
		if obj2.x-obj1.x>0 then obj2.x=obj2.x-velocidad end -- si la posición x del objeto 2 menos la posición x del objeto 1 son mayores a 0 entonces la posición x del objeto 2 será igual a la posición x del objeto 2 menos la velocidad que pusimos anteriormente
		if obj1.x-obj2.x>0 then obj2.x=obj2.x+velocidad end -- si la posición x del objeto 1 menos la posición x del objeto 2 son mayores a 0 entonces la posición x del objeto 2 será igual a la posición x del objeto 2 más la velocidad que pusimos anteriormente
		if obj2.y-obj1.y>0 then obj2.y=obj2.y-velocidad end -- si la posición y del objeto 2 menos la posición y del objeto 1 son mayores a 0 entonces la posición y del objeto 2 será igual a la posición y del objeto 2 menos la velocidad que pusimos anteriormente
 
end -- finalizamos la función
 
 
 
personaje = {x=240,y=180,w=30,h=30,imagen = image.create(10,10,color.new(255,0,0))} -- creamos una imagen del personaje en un eje de coordenadas x y y con anchura (w) y alzária (h) de color rojo
enemigo = {x=200, y=20, w=0, h=0,imagen=image.create(10,10,color.new(0,255,0))} -- lo mismo que con el personaje pero esta vez será el enemigo y es de color verde
 
 
 
while true do -- iniciamos el bucle principal que englobará las funciones u otros
controls.read() -- realizamos una lectura de controles
personaje.imagen:blit(personaje.x,personaje.y) -- bliteamos el personaje con unos valores que augmentarán o disminuirán dependiedo de los controles y en función del sitio donde préviamente aparece sobre el eje de coordenadas
enemigo.imagen:blit(enemigo.x,enemigo.y)  -- bliteamos el enemigo con unos valores que augmentarán o disminuirán dependiedo de los controles y en función del sitio donde préviamente aparece sobre el eje de coordenadas
 
 
seguir(personaje, enemigo,0.5) -- para crear ese efecto de seguimiento declaramos esto
 
if controls.right() then personaje.x=personaje.x+1 end -- si pulsamos derecha el personaje/enemigo augmenta en valor 1 el eje de coordenadas x (por lo que se mueve horizontalmente)
if controls.left() then personaje.x=personaje.x-1 end -- -- si pulsamos izquierda el personaje/enemigo disminuye en valor 1 el eje de coordenadas x (por lo que se mueve horizontalmente)
if controls.up() then personaje.y=personaje.y-1 end -- si pulsamos arriba el personaje/enemigo disminuye en valor 1 el eje de coordenadas y (por lo que se mueve verticalmente)
if controls.down() then personaje.y=personaje.y+1 end -- si pulsamos abajo el personaje/enemigo augmenta en valor 1 el eje de coordenadas y (por lo que se mueve verticalmente)
if controls.start() then broke() end -- salimos del homebrew pulsando start
screen.flip() -- mostramos todo en pantalla
end -- cerramos el bucle principal

Y si deseamos activar el analógico para mover el personaje basta con...

controls.analogtodigital(127)  


Dicen que soy programador... Eso dicen.

Imagen de Dioni0396

Realmente

No puedo decir que este bien, no esta bien explicado para un novato.

Imagen de jorge_97

By Jorge_97

Te invito a que lo expliques tu mejor... ademas un novato no creo que se pare a leer la funcion...el/ella se dedicara a ponerla y a hacerla funcionar.

¿¿Tu quieres que explique la funcion??

Por mi no hay problema:

--Y: Posicion en vertical
--X: Posicion en horizontal
 
function seguir(obj1,obj2,velocidad)--Ahi ponemos los objetos 
 
		if obj1.y-obj2.y>0 then obj2.y=obj2.y+velocidad end
		if obj2.x-obj1.x>0 then obj2.x=obj2.x-velocidad end
		if obj1.x-obj2.x>0 then obj2.x=obj2.x+velocidad end
		if obj2.y-obj1.y>0 then obj2.y=obj2.y-velocidad end
end
 
-Solo explico la primera porque son todas iguales...
--Aqui decimos: Si perseguido.y-perseguidor.y es mayor a 0 luego perseguidor se --mueve en funcion a la velocidad.

 

Mejor, Dioni??

Salu2


Risa Dos años en SCENEBETA Risa

Click aquí para ver la Entrada de Bitácora.

Imagen de Dioni0396

Hombre, asi ya va mejorando.

Ademas el/ella debe aprender no copiar.

No critico el trabajo solo digo que explicado daria mas ejemplo, es como si mis tutoriales en lua de NDS dijera mira copiar y pegar y punto, no.

Imagen de jorge_97

By Jorge_97

Hombre no creo que lo mas adecuado para un novato sea lo principal ponerse a estudiar y examinar una funcion que el mismo no ha creado, aunque sea sencillisima...

Por otro lado es cierto que no lo explique "A fondo"... pero bueno xD. En la V2 lo hare con un script añadire mas opciones de persecucion, funciones... y lo explicare...

Gracias por tus comentarios Dioni!!!

Salu2 a todos


Risa Dos años en SCENEBETA Risa

Click aquí para ver la Entrada de Bitácora.

Imagen de roilivethelife

Pues....

Pues aveces es muy util que esté bien explicada, porque si quieres modificarla a tu gusto no vas a poder.

Te lo digo porque estoy empezando en C para la psp y es todo un caos.... Pero me las voy arreglando :)

 

De todas formas.. Excelente aporte!!


Proyectos[PSP]

-The playbook: Fase 1"traduccion...."                Traducion al español del libro de las jugadas de la serie Como conocí a vuestra madre

-Wifi craker: pausada (En pausa debido a aprendizaje a aplicaciones en kernel mode :D)

-Cronometro Rubik:100%!!  Lastima que no la admitiesen en concurso!

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.