sábado, 8 de octubre de 2011

Colisiones del personaje con el mapa

Hoy vamos a detectar las colisiones con el mapa y no permitir el movimiento en las zonas no "pisables".

Para ello vamos a usar la capa llamada "Pisable" que creamos con las X rojas para indicar que por allí no se podría pasar.


Primero en la clase Mapa (mapa.py) vamos a crear un método que nos dirá si se puede pisar o no en la celda indicada.

def es_pisable(self, fila, columna):
        # Si se intenta mover fuera del mapa, no se permite
        if ((fila >= self.height) or (fila < 0) or (columna >= self.width) or (columna < 0)):
            return False
        else:
            return not (self.capas[Mapa.LAYER_PISABLE][fila][columna])

jueves, 6 de octubre de 2011

El Personaje

Bueno hoy vamos a crear un personaje que se mueva por nuestro mapa. Lo vamos a hacer inicialmente sin animaciones, solo que se mueva de celda en celda del mapa.


Inicialmente vamos a añadir un método en la clase Mapa para que nos devuelva la posición central de una celda del mismo.

class Mapa:

    ...

    def obtener_centro_celda(self, fila, columna):
        x = (self.tam_tiles[0] * columna) + (self.tam_tiles[0] / 2)
        y = (self.tam_tiles[1] * fila) + (self.tam_tiles[1] / 2)
        return (x,y)



Este método nos servirá para centrar el personaje en la celda en la que se encuentra.

Ahora vamos a crear la clase Personaje en un archivo en el directorio raíz llamado personaje.py.

# -*- coding: utf-8 -*-
from pygame.locals import *

from utilidades.imagen import *

class Personaje():

miércoles, 5 de octubre de 2011

Cargar mapas en el juego

Bueno llegó el momento de cargar el mapa creado en el articulo "Crear mapas con Tiled Map Editor".

Para ello primero crearemos el archivo mapa.py en la raiz del proyecto.

# -*- coding: utf-8 -*-
from xml.dom import minidom
import base64
import gzip
import StringIO

from utilidades.imagen import *
from utilidades.archivo import *

class Mapa:

    LAYER_PISABLE = 0
    LAYER_SUELO = 1
    LAYER_OBJETOS = 2
    LAYER_OBJETOS_SUPERPUESTOS = 3
    LAYER_CIELO = 4