AYUDA URGENTE...por favor pedi ayuda en todos lado y vi los tutoriales pero no lo entiendo..y el juego lo tengo que entregar en unas horas

ya cree el menu principal y el desarrollo del juego…pero no puedo vincularlos…para que desde el menu se inicie el juego…ayuda por favor

ESTE ES EL MENU

import pilasengine
pilas = pilasengine.iniciar()
pilas.fondos.Noche()
def iniciar_juego():
    pilas.escenas.Normal()
    actor=pilas.actores.Mono()
    actor.decir("Bienvenido al juego")
  
def salir_del_juego():
   pilas.terminar()
    
def ayuda_del_juego():
    pilas.escenas.Normal()
    actor=pilas.actores.Mono()
    actor.decir("hola")
pilas.actores.Menu(    
        [
            ('iniciar juego', iniciar_juego),
            ('salir', salir_del_juego),
            ("ayuda",ayuda_del_juego),
        ])

pilas.ejecutar()

ESTE ES EL JUEGO

import pilasengine
import random
from pilasengine.actores.actor import Actor
pilas = pilasengine.iniciar()
#fondos,sonidos
#buscar porque no tiene sonido
pilas.fondos.Selva()
pilas.actores.Sonido()
#contador
puntos = pilas.actores.Puntaje(x=250, y=180, color=pilas.colores.negro)
puntos.magnitud=20

#funciones
def asignar_arma_simple():
    torreta.municion = municion_bala_simple

def crear_enemigo():
    enemigo = pilas.actores.Mono()
    #posicion del enemigo
    x = random.randrange(-320, 320)
    y = random.randrange(-240, 240)
 
    #tamaño,posicion del enemigo y habilidades
    pilas.utils.interpolar(enemigo, 'escala', 0.5, duracion=0.5, tipo='elastico')
    enemigo.aprender("PuedeExplotar")
    if x >= 0 and x <= 100:
        x = 180
    elif x <= 0 and x >= -100:
        x = -180
    if y >= 0 and y <= 100:
        y = 180
    elif y <= 0 and y >= -100:
        y = -180
    enemigo.x = x
    enemigo.y = y
    #agregar a la lista de enemigos
    enemigos.append (enemigo)
    #interpolaciones
    tipo_interpolacion = ["lineal",
                          "aceleracion_gradual",
                          "desaceleracion_gradual",
                          "gradual"]

    interpolacion = random.choice(tipo_interpolacion)
    pilas.utils.interpolar(enemigo, 'x', 0, duracion=tiempo, tipo=interpolacion)
    pilas.utils.interpolar(enemigo, 'y', 0, duracion=tiempo, tipo=interpolacion)
                                                   
    if fin_de_juego:
        return False
    else:
        return True

#disminuir la variable que acelera el movimiento
def reducir_tiempo():
    global tiempo
    tiempo= 1
    pilas.avisar("dese prisa el enemigo se acerca!!!")
    if tiempo < 1:
        tiempo = 0.5
    return True

def destruir_enemigo(disparo, enemigo):
    enemigo.eliminar()
    puntos.escala = 0
    pilas.utils.interpolar(puntos, "escala", 1, duracion=0.5, tipo='elastico')
    puntos.aumentar(1)
#indicar fin de juego
def perder(torreta, enemigo):
    global fin_de_juego
    enemigo.sonreir()
    torreta.eliminar()
    pilas.escena_actual().tareas.eliminar_todas()
    fin_de_juego = True
    #avisar una vez terminado el juego y puntos obtenidos
    pilas.avisar("GAME OVER. Conseguiste %d puntos" %(puntos.obtener()))
#variables constantes
tiempo = 6
enemigos = []
fin_de_juego = False
#municiones
municion_bala_simple = pilasengine.actores.Bala
#torreta del jugador
torreta = pilas.actores.Torreta(municion_bala_simple=municion_bala_simple,
                                enemigos=enemigos,
                                cuando_elimina_enemigo=destruir_enemigo)

#crear enemigos..usar tareas porque no se usa mas mundo
pilas.tareas.siempre(1, crear_enemigo)
pilas.tareas.siempre(20, reducir_tiempo)
#colisiones
pilas.colisiones.agregar(torreta, enemigos, perder)
#anuncio constante en pantalla
pilas.avisar("Pulsa y mueve el mouse para destruir a tus enemigos")
pilas.ejecutar()

Hola @yuki, para implementar el menú y el juego por separado tendrías que usar escenas. Esta es una versión funcional de lo que me parece que querías hacer:

import pilasengine
import random


pilas = pilasengine.iniciar()


class EscenaMenu(pilasengine.escenas.Escena):

    def iniciar(self):
        pilas.fondos.Noche()
        pilas.actores.Menu(
        [
            ('iniciar juego', self.iniciar_juego),
            ('salir', self.salir_del_juego),
            ("ayuda", self.ayuda_del_juego),
        ])


    def iniciar_juego(self):
        self.pilas.escenas.EscenaJuego()

    def salir_del_juego(self):
       self.pilas.terminar()

    def ayuda_del_juego(self):
        pilas.avisar("Tienes que crear esta escena...")




class EscenaJuego(pilasengine.escenas.Escena):

    def iniciar(self):
        #fondos,sonidos
        #buscar porque no tiene sonido
        pilas.fondos.Selva()
        pilas.actores.Sonido()
        #contador
        puntos = pilas.actores.Puntaje(x=250, y=180, color=pilas.colores.negro)
        puntos.magnitud=20

        #funciones
        def asignar_arma_simple():
            torreta.municion = municion_bala_simple

        def crear_enemigo():
            enemigo = pilas.actores.Mono()
            #posicion del enemigo
            x = random.randrange(-320, 320)
            y = random.randrange(-240, 240)

            #tamaño,posicion del enemigo y habilidades
            pilas.utils.interpolar(enemigo, 'escala', 0.5, duracion=0.5, tipo='elastico')
            enemigo.aprender("PuedeExplotar")
            if x >= 0 and x <= 100:
                x = 180
            elif x <= 0 and x >= -100:
                x = -180
            if y >= 0 and y <= 100:
                y = 180
            elif y <= 0 and y >= -100:
                y = -180
            enemigo.x = x
            enemigo.y = y
            #agregar a la lista de enemigos
            enemigos.append (enemigo)
            #interpolaciones
            tipo_interpolacion = ["lineal",
                                  "aceleracion_gradual",
                                  "desaceleracion_gradual",
                                  "gradual"]

            interpolacion = random.choice(tipo_interpolacion)
            pilas.utils.interpolar(enemigo, 'x', 0, duracion=tiempo, tipo=interpolacion)
            pilas.utils.interpolar(enemigo, 'y', 0, duracion=tiempo, tipo=interpolacion)

            if fin_de_juego:
                return False
            else:
                return True

        #disminuir la variable que acelera el movimiento
        def reducir_tiempo():
            global tiempo
            tiempo= 1
            pilas.avisar("dese prisa el enemigo se acerca!!!")
            if tiempo < 1:
                tiempo = 0.5
            return True

        def destruir_enemigo(disparo, enemigo):
            enemigo.eliminar()
            puntos.escala = 0
            pilas.utils.interpolar(puntos, "escala", 1, duracion=0.5, tipo='elastico')
            puntos.aumentar(1)
        #indicar fin de juego
        def perder(torreta, enemigo):
            global fin_de_juego
            enemigo.sonreir()
            torreta.eliminar()
            pilas.escena_actual().tareas.eliminar_todas()
            fin_de_juego = True
            #avisar una vez terminado el juego y puntos obtenidos
            pilas.avisar("GAME OVER. Conseguiste %d puntos" %(puntos.obtener()))
        #variables constantes
        tiempo = 6
        enemigos = []
        fin_de_juego = False
        #municiones
        municion_bala_simple = pilasengine.actores.Bala
        #torreta del jugador
        torreta = pilas.actores.Torreta(municion_bala_simple=municion_bala_simple,
                                        enemigos=enemigos,
                                        cuando_elimina_enemigo=destruir_enemigo)

        #crear enemigos..usar tareas porque no se usa mas mundo
        pilas.tareas.siempre(1, crear_enemigo)
        pilas.tareas.siempre(20, reducir_tiempo)
        #colisiones
        pilas.colisiones.agregar(torreta, enemigos, perder)
        #anuncio constante en pantalla
        pilas.avisar("Pulsa y mueve el mouse para destruir a tus enemigos")




pilas.escenas.vincular(EscenaMenu)
pilas.escenas.vincular(EscenaJuego)


# INICIA EL MENU
pilas.escenas.EscenaMenu()


pilas.ejecutar()
1 Like

hola…muchas gracias por responder…yo lo habia hecho mas o menos parecido…pero mi profesor me advirtiov que me iba a desaprobar si usaba classs…por eso queria saber como armar el juego con menu sin usar classs…gracias