Duda sobre desvinculacion de habilidades

Hola muy buenas a todos, pude identificar cual es el problema en mi codigo, pero necesito ayuda sobre como solucionarlo.

El tema: Cuando la pelota, entra al arco, se ejecuta reiniciar, que elimina todo exepto el puntaje y el fondo. Entonces yo defini una funcion inicio que es la creacion de la todo sobre la escena. La pongo al final de reiniciar() y cuando llega a la parte de:

pilas.habilidades.vincular(MoverFiguraConTeclado)

me aparece: Ya hay una habilidad vinculada…

Me puse a investigar y a probar borrando habilidades, cambiando de lugar las cosas pero no hay caso.

Quiero saber si hay alguna forma de “desvincular” esa habilidad o de eliminarla cuando se ejecute reiniciar.

Descargue esta carpeta, dentro esta la imagen y .py

Muchas Gracias.

Buenas @MatsimusTrolling !

Me alegra mucho ver que tu proyecto progresa. La verdad, me ha impresionado que incluso hayas construido un tiled para tu fondo, cuando lo más sencillo hubiera sido bajarse un PNG más o menos chulo (yo, que soy más vago, es lo que hubiera hecho :smile: )

He probado tu juego, que se ve muy bueno. Pero no veo esa funcion que dices para “reiniciar” cuando se marca gol. Quizás es que te daba problemas y la borraste???

Como ves en la imagen, he marcado varios goles en cada porteria sin más problema…

Me parece entender que lo que quieres es que cuando la pelota entre en el arco el juego se “reinicie” pero manteniendo los puntajes. Quizás te estás complicando innecesariamente, y bastaria con que al colisionar la pelota con el arco, las masas y la pelota volvieran a la posición inicial, sin tener que “reiniciar” nada. Al menos, eso es lo que yo haría !

Para eso bastaria con incluir ese poco de código en las def gol y gol2.

Te paso esta primera idea y sigo revisando tu código, por que he visto un par de cosas que me parecen no muy “ortodoxas” (aunque extrañamente, el juego sigue siendo funcional :astonished: )

Un abrazoy hasta pronto.

Buenas!!!

Ya tengo tu código rectificado, es un poco largo de explicar lo que hice, pero básicamente lo he ordenado e indexado correctamente. Tambien he cambiado los parametros de algunos actores para que esten incluidos en su propia def iniciar(), ya que así queda todo más claro y los actores son más fáciles de crear (o al menos así lo veo yo).

Tambien he incorporado nuevas funciones en las def gol y gol 2, para que el juego se reinicie a cada gol al cabo de 3 segundos.

Te paso una muestra

	def gol():
		puntaje.aumentar()
		pilas.avisar('GOOOOOOOOOOL')
		pelota.eliminar()
		pelota.figura.eliminar()
                masaroja.eliminar()
		masaroja.figura.eliminar()
		masaazul.eliminar()
		masaazul.figura.eliminar()
		pilas.tareas.agregar(3, iniciar_juego)
			
	def gol2():
		puntaje2.aumentar() 
		pilas.avisar('GOOOOOOOOOOL')
		pelota.eliminar()
                pelota.figura.eliminar()
		masaroja.eliminar()
		masaroja.figura.eliminar()
		masaazul.eliminar()
		masaazul.figura.eliminar()
		pilas.tareas.agregar(3 ,iniciar_juego)
		
	pilas.colisiones.agregar(pelota, arco1, gol2)
	pilas.colisiones.agregar(pelota, arco2, gol)  
			
iniciar_juego()
pilas.ejecutar()

Fijate que lo que he hecho es eliminar las masas y la pelota (y sus figuras, ya que si no lo haces siguen en pantalla aunque no se vean :wink: ) y volver a crear de nuevo las dos masas y la pelota.

Si quieres te puedo pasar todo el código, o si me das tu permiso lo subo aquí (no he querido hacerlo sin tu permiso).

Un abrazo.

Genial, ahora que lei lo de volverlos a la poscion, era simplemente eso, lo que pasa que me deje llevar por los ejemplos en los que ponian reiniciar.

Era una pavada…:sweat_smile:

Muchas Gracias, el codigo eviamelo a: martin.olivari01@gmail.com

Buenas!

Ya te envié el e-mail… te lo tuve que enviar 2 veces por que la primera vez me equivoqué en el nombre :blush:

Por favor confirma que lo recibiste, ok? (por mail si quieres para no seguir actualizando este tema).

Un saludo!