Necesito ayuda con mi juego

hola!! necesito de su ayuda… he tenido que hacer un juego en que las palabras caen para aprobar … saque ideas del foro que me sirvieron un montón… pero el profe me modifico el código y ahora me sale en el juego la puntuación y errores mientras van cayendo las palabras todas pegadas y no se como corregir:
1º que las palabras caigan de a una y en diferentes lugares
2º que cuando termine el juego recién allí muestre la puntuación y los errores

desde ya mil gracias …

import pilasengine
import random

pilas = pilasengine.iniciar()

palabras_posibles_1 = ["mama","papa","dado","flor","piso","cama","puma","nene"]
nivel = 1
indice_palabras = 1
creadas = []


class EscenaPrincipal(pilasengine.escenas.Escena):
	def iniciar(self):
		self.fondo = pilas.fondos.Noche()

		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(tecla):
		if tecla.codigo == 16777219:
			self.contador_retrocesos +=1
			self.puntaje_retrocesos.aumentar(1)
			print(str(self.contador_retrocesos))


	def actualizar(self):
		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=[-260],7
				creadas.append(pala.texto)
				indice_palabras += 1

			if pala.y < -250:
				creadas.remove(pala.texto)
				pala.eliminar()
			elif self.entrada.texto == pala.texto:
				pala.aprender('puedeexplotar')
				pala.eliminar()
				puntos.aumentar()
				creadas.remove(pala.texto)
				self.entrada.texto=("")
			else:
				pass
			   
		else:
			pilas.avisar("Fin del Nivel"+ str(nivel))
			self.final_de_nivel()

	def final_de_nivel(self):
		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.ejecutar()

Buenas, @merymolina !

Veo que adaptaste mi ejemplo de matar palabras a una escena… bien!!!

No sé qué rectificaciones te hizo tu profesor, pero poner la creación de las palabras (o cualquier otro método) dentro de la def actualizar no es buena idea, ya que cualquier cosa que pongas ahí se ejecutará 60 veces por segundo. :scream:

Te paso el código un tanto rectificado, a ver si puedes adaptarlo más a tu gusto. Verás que he eliminado la def actualizar (por lo que te he explicado) y que he cambiado algunas cosas para que funcione mejor. He tenido que eliminar el aprender(‘puedeexplotar’) por que da algún problemilla, y he reestructurado un poco las tareas, que son fundamentales para que funcione correctamente el juego.

Espero que te sirva!

Un saludo :wink:

import pilasengine
import random

pilas = pilasengine.iniciar()

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(2, self.crear_palabras)
		##en este caso se crea una palabra cada 2 segundos
		
		self.fondo = pilas.fondos.Noche()

		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 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=[-260],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 <= -250:
						#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.ejecutar()

muchísimas gracias!!!..me ayudaste un montón !!..ahora tengo que ponerle otras cosas como el menú de inicio …cualquier cosa te voy a pedir ayuda nuevamente…gracias… gracias…!!!