como crear un sistema para manejar niveles - Printable Version +- Tilengine - The 2D retro graphics engine forum (http://tilengine.org/forum) +-- Forum: Foros en español (http://tilengine.org/forum/forumdisplay.php?fid=5) +--- Forum: Soporte (http://tilengine.org/forum/forumdisplay.php?fid=8) +--- Thread: como crear un sistema para manejar niveles (/showthread.php?tid=521) |
como crear un sistema para manejar niveles - Hokuto40 - 03-29-2020 Ya tengo la primera prueba para manejar dos niveles y no ha salido muy bien,tengo dos funciones y en cada una meto los objetos para cada nivel y luego tengo unos condicionales para decirle que nivel mostrar primero.En el bucle del juego le digo que si pulsa el boton A que elimine los objetos y pase al nivel 2,pero se queda un fondo sin eliminar y no pasa al siguiente nivel,no se muy bien como solucionar esto. Te paso el archivo. https://drive.google.com/file/d/1Z8iYzUeMbNp7wp0lf1wD8BO20u4_MAYC/view?usp=sharing RE: como crear un sistema para manejar niveles - megamarc - 03-29-2020 Buenas! Te lo adjunto funcionando, he puesto algunos comentarios en el código donde he cambiado. Así por encima:
RE: como crear un sistema para manejar niveles - Hokuto40 - 03-29-2020 Gracias por toda la ayuda que me estas dando,mañana me pongo con ello que ya es muy tarde y la vista me hecha la bronca por usarla tanto. Se me olvidaba comentarte algo,fijate que en la carpeta hero y sotb solo estan los graficos de los sprites,los graficos de los fondos los tuve que quitar de hay porque me daba error al cargarlos,tal vez un bug o fallo mio,no se... pruebalo tu. RE: como crear un sistema para manejar niveles - Hokuto40 - 03-29-2020 Ya tengo montado lo de los niveles y despues de realizar algunas pruebas tengo algunas dudas. 1-Las variables hero y fondos tienen la palabra "None",hay alguna diferencia entre poner None o poner 0. 2-En la funcion init_level() tienes puesto la variables con la palabra "global",si estas variables ya son globales al estar arriba porque se les pone "global" 3-En la funcion init_level(n) tiene como parametro la "n" y luego se la asignas a la variable niveles,no se podria haber puesto directamente en el parametro la variable niveles 4-En la funcion deinit_level() veo que no has utilizado un for para recorrer la lista de actores,supongo que sera porque solo es un actor y un fondo en cada nivel,pero lo que no entiendo es porque no has desactivado los layers al igual que el sprite hero. RE: como crear un sistema para manejar niveles - megamarc - 03-30-2020 Hola! De nada por la ayuda, para esto está el foro La carga de niveles no te funciona desde una subcarpeta haciendo "xxx.fromfile("carpeta/archivo") porque el tmx a su vez carga un png, pero no lo encuentra porque lo busca en la raíz, no en la subcarpeta. Para eso puse la función engine.set_load_path("carpeta"), para que el cargador busque lo que necesite ahí dentro. Si miras cualquiera de los ejemplos que tengo en el proyecto del wrapper o en el "PythonPlatformer" verás que siempre lo hago así, en una subcarpeta "assets" pongo todo, y al iniciar el programa hago "engine.set_load_path("assets"). Todo lo que intentes cargar a partir de sese momento lo buscará en la carpeta "assets". http://www.tilengine.org/doc_python/tilengine.html#tilengine.Engine.set_load_path 1- A efectos prácticos da igual, pero como hero y fondo son instancias de objetos, la forma correcta de decir que no contienen nada es None. Si pones un 0 puedes dar a entender que esas variables almacenan números, cuando no es así. 2- Si no pones global, hero y fondos se crearían localmente dentro de la función init_level() y luego se perderían. Como lo que quieres es que actualice las variables globales en vez de crear unas locales, se usa la palabra global https://micro.recursospython.com/recursos/como-declarar-un-objeto-global.html 3- Sí se podría, pero siempre es mejor actualizar una variable dentro del contexto de una función relacionada, que modificarlo directamente fuera, hace más fácil el mantenimiento. 4- Es porque sólo tenías un actor. Si hubiese muchos, en efecto lo correcto sería destruir la lista entera. No deshabilito las capas porque las gestionas directamente en la aplicación, independientemente del nivel siempre usas la 0 y la 1, que es lo correcto. No necesitas desactivarlas para asignarles otro mapa. En cambio en los sprites, como dejas a Tilengine que te los administre con la función get_available_sprite(), sí que tienes que deshabilitarlo expresamente para que sepa que ese sprite está nuevamente disponible. |