Hola una pregunta, a donde agrego la definicion de quitar vida cuando este mal escrita y despues de quietar 3 vidas se termine el juego, ya que no hay un actor personalisado no se donde colocarlo

import pilasengine
import random

pilas = pilasengine.iniciar()
class EscenaMenu(pilasengine.escenas.Escena):

    def iniciar(self):
        MenuPrincipal = pilas.fondos.Tarde()
        mennu = pilas.actores.Menu([('Iniciar juego', self.iniciar_juego),
		                            ('Records', self.records),
									('Salir', self.salir_del_juego)])
        mennu.color = "rosa"
        
		

        self._crear_el_titulo_del_juego()
    def volveralmenu(self):
        pilas.escenas.EscenaMenu()

    """class IngresoTexto(pilasengine.interfaz.ingreso_de_texto):"""

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


    def records(self):
        pilas.escenas.EscenaRecords()

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

    def _crear_el_titulo_del_juego(self):
        titulo = self.pilas.actores.Texto("MATA PALABRAS", magnitud=30, y=50)
        titulo.y = 300
        titulo.rotacion = 30
        titulo.y = [100], 1
        titulo.rotacion = [0], 1.2

palabras_posibles_1 = ["pato","papa","dado","dodo","piso","pizza","gota","gato"]
nivel = 1
indice_palabras = 1



class EscenaPrincipal(pilasengine.escenas.Escena):
	def iniciar(self):
		##iniciamos la tarea de crear las palabras
		self.tarea_crear = pilas.tareas.siempre(4, self.crear_palabras)
		##en este caso se crea una palabra cada 2 segundos
		
		self.fondo = pilas.fondos.Cesped()

		self.entrada = pilas.interfaz.IngresoDeTexto(texto="",ancho=200,x=0,y=-220)
		self.entrada.tiene_el_foco=True

		self.puntos = pilas.actores.Puntaje(x=-280,y=220,color=pilas.colores.amarillo)
		self.puntos.valor_inicial = "0"

		self.contador_retrocesos = 0

		self.puntaje_retrocesos = pilas.actores.Puntaje()
		self.puntaje_retrocesos.valor_inicial = 0
		self.puntaje_retrocesos.x=-280
		self.puntaje_retrocesos.y=180
		self.puntaje_retrocesos.color=pilas.colores.rojo
		pilas.eventos.pulsa_tecla.conectar(self.al_pulsar_retroceso)

	def al_pulsar_retroceso(self, tecla):
		if tecla.codigo == 16777219:
			self.contador_retrocesos +=1
			self.puntaje_retrocesos.aumentar(1)
			

	def crear_palabras(self):
		global indice_palabras
						
		if indice_palabras < 12:
			if nivel == 1:
				palabra = random.choice(palabras_posibles_1)
				pala = pilas.actores.Texto(palabra, x=pilas.azar(-260,260), y=230)
				pala.y=[-250],7
				#creadas.append(self.pala.texto)
				indice_palabras += 1
								
				def comprobar():##se comprueban las palabras cada 0.2 segundos
					## estamos anidando la comprobacion en la misma creacion
					if pala.y <= -190:
						#creadas.remove(self.pala.texto)
						pala.eliminar()
				
					elif self.entrada.texto == pala.texto:
						#pala.aprender('puedeexplotar')##DA PROBLEMAS !!!
						pala.eliminar()
						self.puntos.aumentar()
						#creadas.remove(self.pala.texto)
						self.entrada.texto=("")
						
					else:
						pass
					   
				self.tarea_comprobar = pilas.tareas.siempre(0.1, comprobar)	
		
		else:
			pilas.avisar("Fin del Nivel"+ str(nivel))
			self.tarea_crear.terminar()##finalizamos la creacion de palabras
			pilas.tareas.agregar(7, self.final_de_nivel)	

	def final_de_nivel(self):
		##finalizamos todas las tareas por si quedaron abiertas
		pilas.tareas.eliminar_todas()		
		
		tex1 = pilas.actores.Texto("Tu Puntaje fue:",y=200, magnitud=30)
		tex1.color=pilas.colores.amarillo
		tex2 = pilas.actores.Texto(str(self.puntos.valor), y= 150, magnitud=25)
		tex2.color = pilas.colores.Color(255, 255, 0)
		tex3 = pilas.actores.Texto("Total de errores:",y=100, magnitud=25)
		tex3.color=pilas.colores.rojo
		tex4 = pilas.actores.Texto(str(self.contador_retrocesos), y= 60, magnitud=25)
		tex4.color = pilas.colores.Color(255, 0, 0)
						
pilas.escenas.vincular(EscenaPrincipal)
pilas.escenas.EscenaPrincipal()
pilas.escenas.vincular(EscenaMenu)
pilas.escenas.EscenaMenu()
pilas.ejecutar()

Buenas, @jessirodriguez16!

Antes que nada te comento algo que no está en tu pregunta, pero que va a darte problemas:[quote=“jessirodriguez16, post:1, topic:1596”]
pilas.escenas.vincular(EscenaPrincipal)
pilas.escenas.EscenaPrincipal()
pilas.escenas.vincular(EscenaMenu)
pilas.escenas.EscenaMenu()
pilas.ejecutar()
[/quote]

Debes comentar esa linea donde llamas a la escenaprincipal, ya que ahora mismo estás llamando a dos escenas consecutivamente, y lo que tú quieres es que entre directamente a la escena del menú :hushed:

pilas.escenas.vincular(EscenaPrincipal)

#pilas.escenas.EscenaPrincipal() <-- LINEA COMENTADA

pilas.escenas.vincular(EscenaMenu)
pilas.escenas.EscenaMenu()
pilas.ejecutar()

Ahora entrando a tu duda, la mecánica de este juego no está preparada para comprobar palabras erróneas, sólo si la palabra escrita coincide con la que ha sido creda y va bajando por la pantalla.

Por tanto, si intentas controlar eso va a ser un tanto difícil, ya que la comprobación de la palabra se hace cada 0.1 segundos y va a detectar que la palabra no coincide y te va a dar fallo de palabra cada vez. Habría que cambiar la tarea_comprobar, y en vez de hacer la comprobación automáticamente añadirle que la palabra se compruebe (por ejemplo) al pulsar la tecla de ENTER.

Por tanto, deberías anular esta linea:
self.tarea_comprobar = pilas.tareas.siempre(0.1, comprobar)

y crear una def pulsa_tecla dentro de la def comprobar() (como la que comprueba el borrado, pero con la tecla ENTER). De esta manera al pulsar ENTER se comprueba si la palabra es correcta, y en caso de que no sea así se pierda una vida (hay que crear tambien la variable self.vidas e iniciarla en 3 en la def iniciar de la escena del juego)

Otra opción sería aprovechar que el código ya tiene un control de cuantas veces se pulsa la tecla de retroceso (borrado). Podrías aprovechar esto y añadir que si el valor del contador de retrocesos es, por ejemplo 10, se acabe el juego y muestre un mensaje de que perdiste.

EDITO PARA AÑADIR:
Otra opción sería que si las palabras que llegan abajo de la pantalla sin haberse destruido fueran sumando, y al llegar por ejemplo a 10 se acabara la partida.

Creo que sería interesante el implementar varios métodos de “perder” (palabras erróneas, cuantas veces se usa el retroceso, y cuantas palabras llegaron abajo de la pantalla sin ser destruidas) por que haría el juego mucho más completo y difícil. :slight_smile:

Un saludo! :wink:

self.tarea_comprobar = pilas.tareas.siempre

                                                     def vidasdadas=(self,tecla)
                                                        if tecla.codigo == 6
  1. en la parte de comprobar como coloco pilas.tareas.siempre (enter, comprobar)
    y abajo definir ? vidasdadas < 0 y asi ?
  2. estuve viendo y a vidas primero la crean en class y despues la definen, pero creo que seria mas complejo
    MUCHAS GRACIAS POR RESPONDER, soy nueva en todo esto

Buenas, @jessirodriguez16

Como ya te he dicho, debes anular esa linea (con anular me refiero a borrarla del todo).

Despues debes crear una def pulsa_tecla() que compruebe si se pulsó la tecla ENTER y llame a esa def comprobar.

Y debes poner las vidas en la def iniciar(self) de la EscenaPrincipal para poderle hacer referencia más tarde.

self.vidas=3

Un saludo. :wink:

import pilasengine
import random

pilas = pilasengine.iniciar()
class EscenaMenu(pilasengine.escenas.Escena):

    def iniciar(self):
        MenuPrincipal = pilas.fondos.Tarde()
        mennu = pilas.actores.Menu([('Iniciar juego', self.iniciar_juego),
		                            ('Records', self.records),
									('Salir', self.salir_del_juego)])
        mennu.color = "amarillo"
        
		

        self._crear_el_titulo_del_juego()
    def volveralmenu(self):
        pilas.escenas.EscenaMenu()

    """class IngresoTexto(pilasengine.interfaz.ingreso_de_texto):"""

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


    def records(self):
        pilas.escenas.EscenaRecords()

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

    def _crear_el_titulo_del_juego(self):
        titulo = self.pilas.actores.Texto("MATA PALABRAS", magnitud=30, y=50)
        titulo.y = 300
        titulo.rotacion = 30
        titulo.y = [100], 1
        titulo.rotacion = [0], 1.2

palabras_posibles_1 = ["mama","papa","dado","flor","piso","cama","puma","nene"]
nivel = 1
indice_palabras = 1
#creadas = [] NO HACE FALTA !!!


class EscenaPrincipal(pilasengine.escenas.Escena):
	def iniciar(self):
		##iniciamos la tarea de crear las palabras
		self.tarea_crear = pilas.tareas.siempre(4, self.crear_palabras)
		##en este caso se crea una palabra cada 2 segundos
		
		self.fondo = pilas.fondos.Cesped()
                           self.vidas= 3
		self.entrada = pilas.interfaz.IngresoDeTexto(texto="",ancho=200,x=0,y=-220)
		self.entrada.tiene_el_foco=True

		self.puntos = pilas.actores.Puntaje(x=-280,y=220,color=pilas.colores.amarillo)
		self.puntos.valor_inicial = "0"

		self.contador_retrocesos = 0

		self.puntaje_retrocesos = pilas.actores.Puntaje()
		self.puntaje_retrocesos.valor_inicial = 0
		self.puntaje_retrocesos.x=-280
		self.puntaje_retrocesos.y=180
		self.puntaje_retrocesos.color=pilas.colores.rojo
		pilas.eventos.pulsa_tecla.conectar(self.al_pulsar_retroceso)

	def al_pulsar_retroceso(self, tecla):
		if tecla.codigo == 16777219:
			self.contador_retrocesos +=1
			self.puntaje_retrocesos.aumentar(1)
			#print(str(self.contador_retrocesos))
            def tecla_enter(self, enter)
            if tecla.enter == 6 
                self.comprobar <= pala.texto
                self.vidas -=1 
            
	def crear_palabras(self):##se crean las palabras
		global indice_palabras
						
		if indice_palabras < 10:#ponemos un límite al tiempo de juego
			if nivel == 1:
				palabra = random.choice(palabras_posibles_1)
				pala = pilas.actores.Texto(palabra, x=pilas.azar(-260,260), y=230)
				pala.y=[-250],7
				#creadas.append(self.pala.texto)
				indice_palabras += 1
								
				def comprobar():##se comprueban las palabras cada 0.2 segundos
					## estamos anidando la comprobacion en la misma creacion
					if pala.y <= -190:
						#creadas.remove(self.pala.texto)
						pala.eliminar()
				
					elif self.entrada.texto == pala.texto:
						#pala.aprender('puedeexplotar')##DA PROBLEMAS !!!
						pala.eliminar()
						self.puntos.aumentar()
						#creadas.remove(self.pala.texto)
						self.entrada.texto=("")
						
					else:
						pass
					   
				self.tarea_comprobar = pilas.tareas.siempre(0.1, comprobar)	
		
		else:
			pilas.avisar("Fin del Nivel"+ str(nivel))
			self.tarea_crear.terminar()##finalizamos la creacion de palabras
			pilas.tareas.agregar(7, self.final_de_nivel)	

	def final_de_nivel(self):
		##finalizamos todas las tareas por si quedaron abiertas
		pilas.tareas.eliminar_todas()		
		
		tex1 = pilas.actores.Texto("Tu Puntaje fue:",y=200, magnitud=30)
		tex1.color=pilas.colores.amarillo
		tex2 = pilas.actores.Texto(str(self.puntos.valor), y= 150, magnitud=25)
		tex2.color = pilas.colores.Color(255, 255, 0)
		tex3 = pilas.actores.Texto("Total de errores:",y=100, magnitud=25)
		tex3.color=pilas.colores.rojo
		tex4 = pilas.actores.Texto(str(self.contador_retrocesos), y= 60, magnitud=25)
		tex4.color = pilas.colores.Color(255, 0, 0)
						
pilas.escenas.vincular(EscenaPrincipal)
pilas.escenas.EscenaPrincipal()
pilas.escenas.vincular(EscenaMenu)
pilas.escenas.EscenaMenu()
pilas.ejecutar()

cree la definicion de enter y puse como usted me dijo self vidas, pero no me aparecieron las vidas y al final cuando sale el puntaje no vuelve a la pantalla de inicio