Tanto, las imágenes del terreno, como la de los personajes, etc... se gestionarán de la misma forma.
Aquí tenéis un ejemplo de como es la imagen del terreno:

Primero debéis descargaros las imagenes.
Las imágenes las puedes descargar desde aquí:
Angband
Una vez descargadas, las descomprimimos en la carpeta data/imagenes/Angband.
Dentro se os crearán subcarpetas como Characters, Ground, etc ...
Allí podéis ver las imágenes que usaremos para el juego.
Bueno empezamos, un tileset es lo que veis en la imagen de arriba un conjunto de imágenes pequeñas que forman una más grande.
Una vez descargadas, las descomprimimos en la carpeta data/imagenes/Angband.
Dentro se os crearán subcarpetas como Characters, Ground, etc ...
Allí podéis ver las imágenes que usaremos para el juego.
Bueno empezamos, un tileset es lo que veis en la imagen de arriba un conjunto de imágenes pequeñas que forman una más grande.
Como podéis observar, todas las porciones (tiles) de la imagen tienen el mismo tamaño, en este caso 32x32 pixels.
Para poder trabajar con esa imagen tan grande, lo que vamos a hacer es crear un array unidimensional en el que cada uno de sus elemento va a ser un trocito de esa imagen tan grande.
Así, si luego queremos imprimir el tile del césped, solo deberemos acceder a la posición 10 del array y obtener la imagen.
Es muy sencillo, ahora veréis.
NOTA: mucha de la información que veréis en este tutorial la he sacado de esta página http://razonartificial.com.
Creamos la carpeta utilidades/ y dentro el archivo imagen.py.
Como podeis ver el metodo cargar_imagen lo que hace es cargar una imagen del disco simple y llanamente.
NOTA: mucha de la información que veréis en este tutorial la he sacado de esta página http://razonartificial.com.
Creamos la carpeta utilidades/ y dentro el archivo imagen.py.
import pygame
from pygame.locals import *
def cargar_imagen(filename, transparent=False, pixel=(0, 0)):
""" Carga una imagen y estblece un color como transparente si se desea. """
try: image = pygame.image.load(filename)
except pygame.error, message:
raise SystemExit, message
image = image.convert()
if transparent:
color = image.get_at(pixel)
image.set_colorkey(color, RLEACCEL)
return image
def cortar_tileset(filename, (w, h), con_None=False):
""" Corta un tilest y lo almacena en un array unidimensional. """
image = cargar_imagen(filename, True)
rect = image.get_rect()
col = rect.w / w
fil = rect.h / h
sprite = []
if con_None:
sprite = [None]
for f in range(fil):
for c in range(col):
sprite.append(image.subsurface((rect.left, rect.top, w, h)))
rect.left += w
rect.top += h
rect.left = 0
return sprite
Como podeis ver el metodo cargar_imagen lo que hace es cargar una imagen del disco simple y llanamente.
Ahora el cortar_tileset lo que hace es obtener recortes de la imagen grande y almacenarlos en un array.
Lo interesante de este método es como obtiene el numero de de tiles que forman la imagen.
Para ello al metodo le tenemos que indicar que vamos a trabajar con tiles de 32x32 pixeles.
Y luego él obtiene el numero de filas y columnas que tiene esa imagen con una simple fórmula:
col = rect.w / w
fil = rect.h / h
fil = rect.h / h
En nuestro caso rect.w (es decir el width de la imagen) es de 288 y el rect.h (height) es de 608.
col = 288 / 32 = 9
fil = 608 / 32 = 19