domingo, 11 de diciembre de 2011

Objetos del Mundo

Hola a todos, durante estos días que no he publicado nada he ido mejorando la estructura del juego para que nos sea más fácil de entender a todos.
No os asustéis, todo lo que hemos visto hasta ahora no cambia mucho. Lo que he hecho es redefinir y reubicar los métodos de algunas clases y crear otras que nos será de utilidad en futuras entregas.
Hoy voy a presentar la clase Objeto_Mundo. Esta clase establece los valores por defecto y los métodos comunes de todos los objetos con los que se quiere interactuar en el juego (Jugador, NPC, Objetos varios, etc..).
Os adjunto el código fuente con los comentarios correspondientes para que no os perdáis mucho.
# -*- coding: utf-8 -*-
import pygame
from utilidades.imagen import cortar_tileset

jueves, 13 de octubre de 2011

Hola Mundo

... y con ello no me refiero al típico programa de iniciación en todos los lenguajes de programación.

Hasta ahora teníamos un mapa y un personaje que se movía por él sin problemas.

Bien, ¿y si queremos tener más estados de juego y más personajes?, ¿en cada estado del juego tendremos que repetir el código de dibujar el mapas y los personajes?.
Pues no, para eso vamos a crear una Clase Mundo a la que le pasaremos el mapa y los personajes que van a intervenir.

Para ello creamos en el raiz del proyecto un archivo llamado mundo.py con el siguiente codigo:
# -*- coding: utf-8 -*-

import pygame
from pygame.locals import *

from mapa import *
from personaje import *

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])