pilas-engine

Un "diseñador de niveles" o "creador de mapas"

Hola a todos!
La manera en la que Pilas permite crear mapas nunca me llamó especial atención. Sin embargo al ver algunas consultas y leer el manual, se me ocurrió que sería un buen desafío (estoy de vacaciones, no me juzguen :joy:) crear una especie de diseñador de niveles con la peculiaridad de que nos permita obtener la “grilla” que luego le pasaremos al método:

this.pilas.crear_mapa()

Después de muchas páginas sobre cómo manipular strings logré un diseñador de niveles de 10x10 con cada cuadrado de 32x32 pixeles.
Hagan click sobre el cuadrado blanco y verán que cambia a negro, les invito a dibujar lo que sea y luego clickar donde el actor Logo. El Logo realiza toda la magia y convierte ese dibujo en una grilla que podemos pasarle al comando crear_mapa(), además agrega esa grilla al portapapeles para poder pegarla con CTR + V:
Abrir este proyecto en el editor de pilas


…xxxx…
…x…x…
.x…x.
.x…x.
.x…x.
.x…x.
…x…x…

Algunas cosas para comentar:
Manipular strings y listas es tremendamente horrible :joy:
En un momento use un método sort() el cual funciona sin saber porqué, según yo estaba incompleto.
En otro momento le agrego, cada 10 caracteres, un renglon a la grilla y quise usar un For, pero no me salió y agradecería que alguien me ayude:

let text = this.grilla.slice(0, 10) + "\n" + this.grilla.slice(10, 20) + "\n" + this.grilla.slice(20, 30) + "\n" + this.grilla.slice(30, 40) + "\n" + this.grilla.slice(40, 50) + "\n" + this.grilla.slice(50, 60) + "\n" + this.grilla.slice(60, 70) + "\n" + this.grilla.slice(70, 80) + "\n" + this.grilla.slice(90) + "\n"

Usar un bucle For en vez de esa suma permitiría que el usuario pase un largo y un ancho y se generara el mapa del tamaño que pidiese. Pero va pasar un tiempo antes que quiera volver a meterme con las listas y los strings, capaz haga un video en mi canal sobre como usar y modificar el proyecto…

Wooow!!, esto está buenísimo!!!, mi idea a futuro es que podamos tener un
editor de niveles para pilas, o al menos un modo dentro del editor para facilitar
un poco las cosas. Me gusta que se pueda dibujar simplemente haciendo click, como si fuera un programa de pixelart.

¡Me gusta!, si queres a futuro nos ponemos a tirar algunas ideas y ver cómo se podría hacer un editor de niveles para el editor, ¿que te parece?.

1 Like

Poder dibujar el mapa haciendo click, al estilo pixel art, creo que es la manera más fácil de diseñar un nivel. Supongo que este “diseñador de niveles” que hice se puede incorporar en un solo actor.
Aunque creo que sería mucho mejor se pudiera editar el nivel desde una pestaña, al estilo las animaciones. Suponte que al apretar en diseñar niveles, te abra algo parecido al “diseñador de niveles” que hice, pero permitiendo que uno elija el actor que será el bloque negro por ejemplo. Luego en el código de la escena puedas decir algo como:

this.nivel = "nombre_del_nivel_diseñado"

Se me acaba de ocurrir la verdad, pero creo que así quedaría bastante bien. Cuando gustes lo charlamos bien @hugoruscitti