IIC2233 / Syllabus-2022-1

Repositorio oficial del curso IIC2233 Programación Avanzada 🚀✨
https://iic2233.ing.puc.cl/
45 stars 40 forks source link

Error al volver a entrar al juego #205

Closed Ilancf closed 2 years ago

Ilancf commented 2 years ago

Prerrequisitos

(Marcar colocando una X entre los corchetes los ítems que ya hiciste, así: "[X]")

Duda

Mi juego corre bien, pero al ganar y querer jugar el siguiente nivel a pesar de entregarle los datos en una señal al inicio igualmente quedan los de la partida pasada y se sobreponen, por ejemplo en la ProgressBar trata de avanzar desde 0, pero también trata de avanzar desde el valor que quedo anteriormente, a pesar de que le seteo el valor en 0 al inicio del juego. También por ejemplo, la mira cuando comienza aparece en donde le puse que aparezca pero luego al apretar para moverla se coloca automáticamente en donde se quedó en el nivel anterior

[De ser necesario, coloca tu pregunta de manera explícita utilizando este formato]

CristobalPerez-Cotapos commented 2 years ago

Hola!! lo que comentas es un error muy común, y tiene que ver con como reinicias los datos de la partida pasada. Para la mira, me imagino que el problema es que actualizas la posición en la ventana pero no en el backend, por lo que se inicia correctamente pero luego se actualiza desde los valores guardados en el backend. Para la progres bar me imagino que puede pasar algo similar, pero además se te pueden mezclar dos timers en un mometo determinado, por lo que actúa de dos maneras distintas, ten ojo en como terminas los timers al cerrar la ventana de juego. Mi concejo es que reinicies TODOS los valores necesarios (tanto en el frontend como backend) al momento de cerrar la ventana de juego, y que detengas todos los timers y threads de una partida para que no afecten la siguiente. Suerte!!

Ilancf commented 2 years ago

Y como se reinician correctamente todos los datos, porque creo que lo estoy haciendo bien, pero no me resulta, ademas cuando hago self.hide() al final igual al entrar de nuevo se me sobreponen los datos de la partida nueva sobre la pasada y esto solo se arregla poniendo al final "nombre de lo que quiero ocultar".hide(), pero esto me trae otros errores despues entonces no entiendo. a demas cada ves que comienzo el juego devuelta le seteo el valor de la progrrsbar en 0, pero igual no se setea bien, entonces no entiendel error ni como solucionarlo.

CristobalPerez-Cotapos commented 2 years ago

Hola!! Si es que se te sobreponen en el codigo eso es por qué estás instanciando los labels y la progress bar de nuevo, por lo que se cargarán y una tapará la otra. Ahí las alternativas son dos: o recetas todos los labels a sus valores iniciales al terminar la partida (y dejas de instanciarlosnde nuevo) o borras los labels de la partida anterior y mantienes solo los nuevos. Cuéntame si te resulta alguna de estas!! 😉

Ilancf commented 2 years ago

Pero aun no me dices como lo puedo hacer, si se que debo borrar el label, pero busque en internet y en los apuntes y no encontré como se hace se hace self."nombre".clear() o como se hace para poder borrar el anterior?

CristobalPerez-Cotapos commented 2 years ago

No estoy seguro si existe un método que lo "borre" pero puedes hacerles hide(), que en la práctica es similar.

Ilancf commented 2 years ago

Así lo hago, pero igual hay veces que falla y no se oculta la info anterior, es muy raro, yo creo que eso ya es una problema de pyqt5 porque he estado desde el viernes con el mismo problema y es puntual para 2 casos que falla a pesar que se hace lo mismo que en las demás ocaciones.

CristobalPerez-Cotapos commented 2 years ago

Hola!! Seguramente hay algún problema en la forma que estás usando hide, pero ahora revisándolo no lo he podido encontrar. Cómo estamos en la fecha de entrega, te recomiendo para esos dos elementos no complicarte y solo cambiarles el contenido, con métodos como setText() y similares