Closed bmurtagh01 closed 5 years ago
Hola!
Utilizar un atributo parent para poder acceder a este se conoce como programación circular, personalmente no estoy seguro cual es el problema exacto, pero se nota mucho cuales tareas ocupan señales y cuales no.
Las tareas sin señales y que ocupan programación circular se "lagean" bastante y no permiten más de 10 enemigos, si se colocan más de esa cantidad entonces el programa se detiene o funciona muy lento, mientras una tarea sin programación circular puede fácilmente correr 50 enemigos.
No hay problema con que una ventana contenga a otra, el padre por lo general es muy común que contenga a su hijo (VentanaPrincipal a VentanaJuego por ejemplo), y al crear una clase hijo le puedes entregar información que esta pueda necesitar (Como el usuario), el problema es cuando la clase hijo ingresa a la clase padre para buscar información.
un ejemplo de uso de señales correcto es por ejemplo tener esta función en la clase padre. La cual conectas con señales a un botón en maingame, entonces si aprietas el botón en el juego principal, bajas el juego ya abres una nueva ventana (mainventana).
En general no te podría dar la razón exacta de cual es el error en utilizar programación circular, pero se nota cuando esta implementada y cuando no, y para evitar problemas se tiene que utilizar señales que conecten métodos de los padres con los hijos sin que los hijos se tengan que meter en su clase padre
Espero haber ayudado con tu duda.
Con la correcion de la Tarea 2 tengo la duda de como poder acceder datos entre diferentes clases del mismo universo (ej. backend o frontend). Si tengo en mi frontend un clase
VentanaPrincipal
que es unQMainWindow
y guarda variables importantes como usuario, id_sala, etc. Dentro de esta clase yo instancio diferentes ventanas comoVentanaChat
,VentanaSalas
, etc. Yo pretendía agregar dentro de la instancia de estas salas, el "self" de laVentanaPrincipal
y guardarla en un atributoself.parent
y asi poder acceder a esta Ventana principal (No agrego directamente los atributos especificos porque no siempre estan disponibles o estos cambian), es decir, si el chat quiere el usuario puede acceder de la formaself.parent.usuario
.Hice esto en la Tarea 02 y veo que era muy mala practica, entonces me gustaria saber que formas alternativas (y correctas) hay de comunicacion entre clases, y porque la practica anterior esta mala. Recordar que esto es entre clases del Frontend.
Muchas gracias.