Anuncios Google

Duda con Tiles

Hola a todos!!!!!

Llevo tiempo por aqui pero hasta ahora no habia posteado. Me he leido todos los tutos de LUA que teneis y solo deciros que OLE!!!, son geniales y me han ayudado mucho pero tengo un apartado que no comprendo bien y por eso os lo pegunto. Fijo que es una chorrada pero no lo entiendo.

Mi duda es como usar los tiles o baldosas a la hora de construir el fondo de un juego. Me he leido el codigo de Pucelano sobre su juego Smiley Scape (por cierto, que pasada de juego, ya voy por el nivel 53) y no lo entiendo, no se como va el tema ese de poner un map del juego y que lua lo interprete a partir del .png del tile en cuestion como el mapa que quieres para la pantalla del juego.
Resumiendo, no se como construir a partir de este archivo .png y por tanto no se tampoco como hacer animaciones de figuras a partir de estos tiles o sprite que hay en la red de redes, vamos, que no se nada sobre este apartado y me gustaria que me ayudarais como bien podais, si no es mucha molestia.

Mil gracias de antemano!!!!!!
Saludos!!!!!


Anuncios Google

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de pucelano

En la función

En la función DibujarBaldosa() utilizamos el número contenido en la variable baldosa para indicar que parte de la imagen baldosas (tiles.png) queremos poner en la pantalla.

Y puede que te preguntes ahora ¿ y por qué no hemos llamado a cada tile directamente con un número en vez de con una letra? Se podría haber hecho así en el caso de que el número de tiles fuera igual o menor que 10, ya que podríamos utilizar los números del 0 al 9 para nombrar a cada tipo de tile. En el caso de este juego, ya tenia definidas estas 10 baldosas, pero ante la posibilidad de que me pudiera surgir un nuevo modelo de baldosa durante el desarrollo del juego, opté por nombrar las baldosas con letras. Con letras se pueden llegar a definir más de 20 modelos de tiles diferentes, y con números sólo 10.

En mi caso he trabajado con los tiles de este modo, pero seguro que se puede hacer de otras formas.

Cada programador puede utilizar su propio método, en función de su experiencia y de las necesidades concretas de cada programa.

 

Un saludo


Descargar Homebrew de BETA, gratis. Visualizar un tutorial, gratis. Iniciarse en la programacion en español, gratis. Colaborar a que la scene PSP en español crezca, no tiene precio.


Descargar Homebrew de BETA, gratis. Visualizar un tutorial, gratis. Iniciarse en la programacion en español, gratis. Colaborar a que la scene PSP en español crezca, no tiene precio.

Imagen de Daggoth

Gracias otra vez

Gracias otra vez iyo!!!!

Ahora ya lo tengo claro y me parece que me voy a lanzar con una prueba de esto haciendo mi propia pantalla para tu juego para ver asi como funciona ya que tu codigo esta hecho ya y solo tengo que modificar ciertas cosas para ver como afectan al mismo.

Gracias, nos vemos qiyo!!!!!

Imagen de pucelano

Me parece estupendo. Es una

Me parece estupendo. Es una buena forma de aprender.

Y si alguna instrucción no te queda claro como funciona, puedes hacer un pequeño programa que la utilice para ver como se comporta.

Te animo a que sigas aprendiendo e intentes hacer algun programilla. 

Un saludo, aqui estamos para ayudarte


 

Descargar Homebrew de BETA, gratis. Visualizar un tutorial, gratis. Iniciarse en la programacion en español, gratis. Colaborar a que la scene PSP en español crezca, no tiene precio.


Descargar Homebrew de BETA, gratis. Visualizar un tutorial, gratis. Iniciarse en la programacion en español, gratis. Colaborar a que la scene PSP en español crezca, no tiene precio.

Imagen de Daggoth

Pucelano iyo, hay una cosa

Pucelano iyo, hay una cosa que me ha quedado en el tintero que no comprendo.

Segun tu explicacion conviertes cada letra de la A a la J a un numero de 1 al 10, se que cada letra representa a cada una de las 10 baldosas de nuestro tile. Pues bien, lo que no entiendo es esa necesidad de pasar nuestras letras a numeros para dibujar el mapa de la pantalla en cuestion.
Y luego, esa operacion de transformacion es siempre asi??, supongo que variara algo en funcion del tile, o no, no lo se.

Eso es lo unico que aun se me escapa.

Gracias ota vez por tu paciencia conmigo!!!!!!
Saludos!!!!!!

Imagen de pucelano

Intentaré explicarte

Intentaré explicarte brevemente como se crean las imágenes de los niveles del juego Smiley Scape, utilizando tiles.

El fichero tiles.png contiene las imágenes de las 10 baldosas que se utilizan para crear cada una de las pantallas. Las llamaremos A, B, C, D, E, F, G, H, I y J. Esta formado por 10 imágenes de 36x36 pixels, es decir, mide 360x36 pixels.

Llamamos baldosas a la imagen tiles.png.

baldosas = Image.load("Imagenes/tiles.png")

 

En primer lugar se lee el fichero del nivel que se quiere crear. Este contiene el array mapa que indica la distribución de tiles. La pantalla de juego esta formada por 8 x 8 tiles. Es decir mide 288x288 pixels. Como vemos el mapa que forma el nivel-1.txt lo forman letras de la A a la J.

mapa = {

            "AAAAAAAA",

            "AFCCCCGA",

            "ABJACDGA",

            "ABCAAADA",

            "ABAAAADA",

            "ABAAAADA",

            "AIEEAHHA",

            "AAAAAAAA",

}

Tras cargar el array mapa, leemos todas sus filas y columnas.

for y = 1, 8 do

            linea = mapa[y]

            for x = 1, 8 do

                        baldosa = string.byte(linea, x) - string.byte("A") + 1

                        DibujarBaldosa(baldosa, x , y )

            end

end

Leemos de izquierda a derecha y de arriba hacia abajo, cada una de las letras del array.

La variable linea nos devuelve el valor de una fila del array mapa, es decir , 8 letras. En nuestro ejemplo, para y = 1 linea = "AAAAAAAA", para y = 2 linea = "AFCCCCGA", etc.

La expresión baldosa = string.byte(linea, x) - string.byte("A") + 1 convierte cada letra a un número del 1 al 10. Si la letra es A, baldosa = 1; si la letra es B, baldosa = 2; etc. Lo utilizaremos para leer la parte de la imagen que corresponda.

De esta forma, para cada pareja de valores x-y, tenemos un número baldosa en función de la letra que se ha leído.

La función DibujarBaldosa(baldosa, x , y ) dibuja la pantalla.

function DibujarBaldosa(baldosa, x, y)

            pantallajuego:blit(78+32*x, -26+32*y, baldosas, 36*baldosa-36, 0, 36, 36, true)   

end

Donde pantallajuego:blit(posición x en que colocamos la imagen, posición y en que colocamos la imagen, nombre de la imagen, posición x desde la que empezamos a mostrar la imagen, posición y desde la que empezamos a mostrar la imagen, ancho que mostramos de la imagen, alto que mostramos de la imagen, modo transparente activo).

Un saludo

P.D. Me alegra mucho que te haya gustado el juego.


Descargar Homebrew de BETA, gratis. Visualizar un tutorial, gratis. Iniciarse en la programacion en español, gratis. Colaborar a que la scene PSP en español crezca, no tiene precio.


Descargar Homebrew de BETA, gratis. Visualizar un tutorial, gratis. Iniciarse en la programacion en español, gratis. Colaborar a que la scene PSP en español crezca, no tiene precio.

Imagen de Daggoth

PEASO DE CRACK!!!!

Carajo qiyo, eres un crack!!!!

Lo he entendio a la perfeccion, y de forma facil.

Mil gracias por tu ayuda iyo, de verdad, gracias.

Saludos qiyo!!!!

Imagen de Unicorn

A ver si alguien sabe responderte

y mientras, puedes mandarle un correo privado a puce pinchando en su nick, es un tio genial, seguro que se vuelca para echarte una mano ;-). Un saludo pesepero, y nos alegramos de que los tutos te hayan sido utiles.



Para recibir ayuda más rápidamente, recomendamos que pongas títulos descriptivos y no utilices abreviaturas (estilo MSN) en tus post de los foros. Recuerda revisar el Manual del perfecto forero y las Normas de la Comunidad.

Imagen de Daggoth

Muchas gracias qiyo!!! Ya he

Muchas gracias qiyo!!!

Ya he enviado un mensage a pucelano y a la espera estoy de su respuesta o de cualquier otro que me pueda ayudar.

Saludos iyo!!!!

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.