import pilasengine
pilas = pilasengine.iniciar()
fondo = pilas.fondos.Fondo()
fondo.imagen = pilas.imagenes.cargar( 'fondo13.jpg')
puntos = pilas.actores.Puntaje( x=300, y=-200, color= pilas.colores.blanco)
def iniciar_juego():
a=pilas.escenas.Normal()
fondo = pilas.fondos.Fondo()
fondo.imagen = pilas.imagenes.cargar( 'fondo13.jpg')
actor = pilas.actores.Torreta()
disparo_misil = pilasengine.actores.Misil
actor.aprender("disparar",angulo_salida_disparo=90,municion=disparo_misil)
actor2 = pilas.actores.Mapa()
palta=pilas.actores.Aceituna()*10
canasta=pilas.actores.Ovni()
canasta.y=-200
canasta.x = [0, 30, 300] *1000, 3
palta.imagen="palta3.png"
#palta.aprender("PuedeExplotarConHumo")
palta.escala=0.1
actor2.imagen="arbol.png"
actor2.x=220
actor2.y=-50
#actor.imagen="a.jpg"
actor.x=-300
actor.y=-200
#actor.aprender("disparar", municion="bala")
arbol = pilas.actores.Globo("disparame ")
def ayuda_juego():
pilas.escenas.Normal()
texto = pilas.actores.Texto("Nivel 1 .- tenemos que disparar alas paltas apra poder recojeralas ")
boton= pilas.interfaz.Boton("JUGAR")
boton.x=280
boton.y=-200
boton.conectar(iniciar_juego)
def salir_del_juego():
pilas.terminar()
menu=pilas.actores.Menu(
[
('iniciar juego', iniciar_juego),
('ayuda juego',ayuda_juego),
('salir', salir_del_juego),
])
pilas.ejecutar()
import pilasengine
pilas = pilasengine.iniciar()
def iniciar_juego():
def matar(misil, enemigo):
enemigo.eliminar()
puntos.aumentar()
a=pilas.escenas.Normal()
fondo = pilas.fondos.Tarde()
###fondo.imagen = pilas.imagenes.cargar( 'fondo13.jpg')
puntos = pilas.actores.Puntaje( x=300, y=-200, color= pilas.colores.blanco)
###fondo = pilas.fondos.Fondo()
###fondo.imagen = pilas.imagenes.cargar( 'fondo13.jpg')
actorTorreta = pilas.actores.Actor()
actorTorreta.imagen = "torreta.png"
###actorTorreta.imagen="a.jpg"
actorTorreta.x=-300
actorTorreta.y=-200
actorTorreta.aprender("dispararConClick", angulo_salida_disparo=90,frecuencia_de_disparo=1, municion="Misil")
actorTorreta.aprender("rotarconmouse")
actor2 = pilas.actores.Mapa()
###actor2.imagen="arbol.png"
actor2.x=220
actor2.y=-50
canasta=pilas.actores.Ovni()
canasta.y=-200
canasta.x = [0, 30, 300] *1000, 3
palta=pilas.actores.Aceituna()*10
###palta.imagen="palta3.png"
#palta.aprender("PuedeExplotarConHumo")
palta.escala=0.3
arbol = pilas.actores.Globo("disparame ")
pilas.colisiones.agregar("Misil","Aceituna", matar)
def ayuda_juego():
pilas.escenas.Normal()
texto = pilas.actores.Texto("Nivel 1 .- tenemos que disparar alas paltas apra poder recojeralas ")
boton= pilas.interfaz.Boton("JUGAR")
boton.x=280
boton.y=-200
boton.conectar(iniciar_juego)
def salir_del_juego():
pilas.terminar()
def menu():
menu=pilas.actores.Menu(
[
('iniciar juego', iniciar_juego),
('ayuda juego',ayuda_juego),
('salir', salir_del_juego)
])
menu()
pilas.ejecutar()
Buenas, @jos
Ahí te hice unos cambios. bastantes comentarios a hacerte, pero te los hago mañana pq hoy ya es muy tarde, de momento revisa este código, ok?
Un saludo!
gracias
De nada!
Comentarios:
-
El problema principal era que estabas intentando asignar una munición al actor “torreta”. Parece ser que a este actor no se le puede asignar una munición que no sea la que lleva programada de clase. No sé si @hugoruscitti podría solucionar eso en un futuro…
-
Tambien estabas intentando asignar como munición un actor instanciado, lo cual siempre te va a dar problemas[quote=“jos, post:1, topic:1420”]
disparo_misil = pilasengine.actores.Misil
actor.aprender(“disparar”,angulo_salida_disparo=90,municion=disparo_misil)
[/quote] -
Al final, como puedes ver, he creado un actor que tiene la imagen de una torreta, se mueve como una torreta y dispara como una torreta, pero no es una torreta
-
En lo posible, intenta no dar el nombre “actor” a un actor, no tiene por que dar problemas, pero es mejor evitar confusiones…
-
Fíjate en la colisión programada, y que esta colisión llama a una def “anidada” dentro de la def inicia_juego. Esto es porque al no estar tu juego programado en escenas es la manera más práctica de hacerlo.
-
Tambien te he puesto el menú dentro de una def separada y a la que se llama nada más empezar el juego.
-
Al revisar tu código he estado copiando y pegando de aquí para allí, y es posible que te dé algún problema de indexación. Puedes usar la opción en tu editor de eliminar todos los espacios, o en un caso extremo puedes reescribir el programa, que no es muy largo.
Y por último un pequeño consejo si me lo permites… Intenta siempre adaptarte a las “buenas prácticas” y ser ordenado en tu código. Es buena costumbre que todos los atributos y definiciones de un mismo actor esten juntas y ordenadas, más que nada por que si el código es muy largo te va a costar mucho encontrar en qué punto le cambiaste uno u otro atributo (y es mucho más fácil de entender para una persona que revisa tu código).
Espero que disfrutes mucho con Pilas-Engine y que sigas haciendo buenos juegos !
Un saludo
Buenas!
Haciendo pruebas con el actor torreta he visto que se le puede pasar la munición a disparar al instanciarlo:
mi_torreta=pilas.actores.Torreta(“Misil”)
Lo que no se puede es pasarle la munición con el “aprender disparar” pero si con el “aprender dispararConClick”
Entonces en vez de este código
actorTorreta = pilas.actores.Actor()
actorTorreta.imagen = "torreta.png"
###actorTorreta.imagen="a.jpg"
actorTorreta.x=-300
actorTorreta.y=-200
actorTorreta.aprender("dispararConClick", angulo_salida_disparo=90,frecuencia_de_disparo=1, municion="Misil")
actorTorreta.aprender("rotarconmouse")
Puedes usar este otro más sencillo:
actorTorreta = pilas.actores.Torreta("Misil")
###actorTorreta.imagen="a.jpg"
actorTorreta.x=-300
actorTorreta.y=-200
actorTorreta.aprender("dispararConClick", angulo_salida_disparo=90,frecuencia_de_disparo=1, municion="Misil")
Un saludo!