Buenas, @Maria !
Antes que nada, disculpa por decirte que quitaras el
pilas.escenas.Normal()
ya que testando tu código me he dado cuenta de su utilidad, al iniciar una nueva “escena” en un juego sin escenas.
Seguro que el hecho de no poder usar class en tu juego limita algunas funcionalidades, pero me has demostrado que es posible hacer un juego con menú en Pilas-Engine sin necesidad de usar ninguna class. Nunca es tarde para aprender, y yo agradezco cada nueva oportunidad de hacerlo que este foro me aporta. En este sentido tu código me ha enseñado unas cuantas cosas que hasta ahora desconocia!
Pero pasemos a lo que interesa, que es la corrección de algunas cosas que no te funcionaban. Más abajo te expongo tu código con algunas modificaciones.
Lo primero, las colisiones. Verás que he modificado tu actor principal, y le he cambiado de “Actor” a “Mono”. Esto es para poder usar las etiquetas en las colisiones. Tus actores ahora son “mono”, “pelota” y “aceituna”, y eso nos permite usar las etiquetas para detectar las colisiones. Te recomiendo que repases este tema en el manual de Pilas_Engine…
Lo segundo, que “aceituna” no usa el motor de física, lo que nos permite eliminarlo si sale de pantalla, simplemente aprendiendo esa habilidad.
Lo tercero, “pelota” si usa el motor de física y tiene programado el rebote al tocar con las paredes y el suelo, por lo que para eliminarlo he usado una simple tarea, en la que es eliminada al cabo de unos segundos.
Algunos cambios menores para lograr una funcionalidad más fluida, algunas def nuevas que lo unifican mejor todo… bueno echa un vistazo y decide tú misma si es lo que tú buscabas y si te sirve…
Verás que he anulado todas las líneas que hacen referencia a la música, las imágenes de actores, y los fondos. Esto ha sido simplemente para poder testar tu código, ya que yo no tengo esos ficheros y me daría error.
Mención especial al actor principal:
def crear_miactor():
esponja=pilas.actores.Mono() #Actor()
#esponja.imagen=pilas.imagenes.cargar("data/bob2.png")
esponja.escala = 0.25
esponja.y = -144
esponja.aprender('MoverseConElTeclado')
esponja.aprender('LimitadoABordesDePantalla')
esponja.radio_de_colision= 20
esponja.aprender('puedeexplotar')
ya que le he limitado para que no salga de pantalla, que explote al morir, y le he cambiado el radio de colisión (que era demasiado grande). Si al volver a usar tu imagen el radio de colisión es demasiado grande o demasiado pequeño podrás modificarlo desde ahí.
Bueno, seguro que aún quedan muchos ajustes por hacer, pero espero que esto sirva como punto de partida, y como ejemplo a futuras personas que no puedan usar “class” por exigencias de sus profesores
###coding utf8###
import pilasengine
pilas = pilasengine.iniciar(500,400)
def entrada():
pilas.escenas.Normal()
pilas.actores.Menu( [ ( " Iniciar Juego" , iniciar_juego ) , ( " Instrucciones " , instrucciones_juego ) , ( " Salir " , salida ) , ] )
#mi_fondo = pilas.fondos.Fondo("data/lau.png.")
cartel= pilas.actores.Banana()
#cartel.imagen = "data/cartel.png."
cartel.escala = 0.3
cartel.x = -2
cartel.y = 132
def iniciar_juego():
pilas.escenas.Normal()
#pilas.fondos.Fondo("data/casa.png.")
puntaje = pilas.actores.Puntaje(color = pilas.colores.amarillo)
puntaje.x = 200
puntaje.y = 180
def crear_miactor():
esponja=pilas.actores.Mono()#Actor()
#esponja.imagen=pilas.imagenes.cargar("data/bob2.png")
esponja.escala = 0.25
esponja.y = -144
esponja.aprender('MoverseConElTeclado')
esponja.aprender('LimitadoABordesDePantalla')
esponja.radio_de_colision= 20
esponja.aprender('puedeexplotar')
def crear_hamburguesa():
hamburguesa = pilas.actores.Pelota(x = pilas.azar(-250,250), y = 180)
#hamburguesa.imagen = ("data/hambu.png")
hamburguesa.escala = 0.25
def eliminar_hamburguesa():
hamburguesa.eliminar()
pilas.tareas.agregar(4,eliminar_hamburguesa)
def crear_medusas():
medusa = pilas.actores.Aceituna(x = pilas.azar(-250,250), y = 200)
medusa.y = [200,-220],3
#medusa.imagen = ("data/medusin.png")
medusa.escala = 0.25
medusa.aprender('eliminarsesisaledepantalla')
def comer_rico(crear_miactor , crear_hamburguesa):
crear_hamburguesa.eliminar()
puntaje.aumentar(10)
def comer_feo(crear_miactor , crear_medusas) :
crear_miactor.eliminar()
#sonido_de_musica.detener()
texto = pilas.actores.Texto("P E R D I S T E")
texto.color = pilas.colores.Color(0, 0, 0)
TSK.terminar()
TSL.terminar()
pilas.tareas.agregar(5, entrada)
pilas.colisiones.agregar('mono', 'pelota', comer_rico)
pilas.colisiones.agregar('mono', 'aceituna', comer_feo)
TSK = pilas.tareas.siempre(5 , crear_hamburguesa)
TSL = pilas.tareas.siempre(10 , crear_medusas)
crear_miactor()
def instrucciones_juego():
pilas.escenas.Normal()
texto = pilas.actores.Texto("Instrucciones")
texto.color = pilas.colores.Color(0, 0, 0)
texto.y = 150
texto.x = 0
texto1 = pilas.actores.Texto("Atrapa las hamburguesas")
texto1.color = pilas.colores.Color(0, 0, 0)
texto.escala = 1.5
texto1.escala = 0.5
texto1.y = 65
texto1.x = 40
in1 = pilas.actores.Aceituna()
#in1.imagen = "data/hambu.png."
in1.escala = 0.3
in1.x = -100
in1.y = 65
texto2 = pilas.actores.Texto("Evita las medusas")
texto2.color = pilas.colores.Color(0, 0, 0)
texto2.escala = 0.5
texto2.x = 20
in2 = pilas.actores.Banana()
#in2.imagen = "data/medusin.png."
in2.escala = 0.3
in2.x = -100
in2.y = -5
in3 = pilas.actores.Estrella()
#in3.imagen = "data/bob1.png."
in3.escala = 0.2
in3.x = 115
in3.y = -100
ins = pilas.interfaz.Boton("S")
ins.x = -100
ins.y = -75
textoins = pilas.actores.Texto("Salir")
textoins.color = pilas.colores.Color(0, 0, 0)
textoins.escala = 0.5
textoins.x = 20
textoins.y = -75
ini = pilas.interfaz.Boton("I")
ini.x = -100
ini.y = -130
textoini = pilas.actores.Texto(" instrucciones ")
textoini.color = pilas.colores.Color(0, 0, 0)
textoini.escala = 0.5
textoini.x = 20
textoini.y = -130
salir1 = pilas.interfaz.Boton("salir")
salir1.conectar(salir_juego)
salir1.y = -175
#fondo_instruc = pilas.fondos.Fondo("data/die.png.")
def salir_juego():
pilas.escenas.Normal()
#pilas.fondos.Fondo("data/juegoi.png.")
textofinal = pilas.actores.Texto(" Gracias por jugar conmigo ")
textofinal.color = pilas.colores.Color(255, 0, 0, 128)
textofinal.x = 80
textofinal.y = 100
salir = pilas.interfaz.Boton("salir")
salir.conectar(salida)
salir.y = -150
salir.x = 200
def salida():
pilas.terminar()
#sonido_de_musica = pilas.musica.cargar("data/bob.wav")
#sonido_de_musica.reproducir(repetir=True)
entrada()
pilas.ejecutar()