Mercurial > mamba
changeset 8:66ae99f6903e
First stab at tile/level stuff.
author | Jeremy Thurgood <firxen@gmail.com> |
---|---|
date | Sun, 11 Sep 2011 12:50:55 +0200 |
parents | 621a04bf1feb |
children | be8412c77e7b |
files | data/levels/dev.txt data/tiles/dev/randomtile.png mamba/data.py mamba/level.py |
diffstat | 4 files changed, 73 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/data/levels/dev.txt Sun Sep 11 12:50:55 2011 +0200 @@ -0,0 +1,11 @@ +dev +aaaaaaaaaa +a........a +a........a +a........a +a........a +a........a +a........a +a........a +a........a +aaaaaaaaaa
--- a/mamba/data.py Sun Sep 11 12:33:59 2011 +0200 +++ b/mamba/data.py Sun Sep 11 12:50:55 2011 +0200 @@ -10,6 +10,9 @@ import os +import pygame + + data_py = os.path.abspath(os.path.dirname(__file__)) data_dir = os.path.normpath(os.path.join(data_py, '..', 'data')) @@ -17,12 +20,25 @@ def filepath(filename): '''Determine the path to a file in the data directory. ''' + filename = os.path.join(filename.split('/')) return os.path.join(data_dir, filename) -def load(filename, mode='rb'): +def load_file(filename, mode='rb'): '''Open a file in the data directory. "mode" is passed as the second arg to open(). ''' return open(os.path.join(data_dir, filename), mode) + + +IMAGES = {} + + +def load_image(filename): + if filename not in IMAGES: + IMAGES[filename] = pygame.image.load(filepath(filename)) + if pygame.display.get_init(): + IMAGES[filename] = IMAGES[filename].convert_alpha( + pygame.display.get_surface()) + return IMAGES[filename]
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mamba/level.py Sun Sep 11 12:50:55 2011 +0200 @@ -0,0 +1,45 @@ +""" +Level for our shiny game. +""" + +from mamba.data import load_file, load_image + + +TILE_MAP = { + '.': 'empty', + 'a': 'randomtile', + } + + +class Tileset(object): + def __init__(self, tileset_name): + self.name = tileset_name + self.tiles = {} + + def load_tiles(self): + for k, v in TILE_MAP.items(): + if v == 'empty': + img = None + else: + img = load_image('tiles/%s/%s.png' % (self.name, v)) + self.tiles[k] = img + + def __getitem__(self, key): + return self.tiles[key] + + +class Level(object): + def __init__(self, level_name): + self.level_name = level_name + self.load_level_data() + + def load_level_data(self): + """ + This file format it potentially yucky. + """ + level_data = load_file('levels/%s.txt' % (self.level_name,)) + self.tileset_name = level_data.readline() + self.tiles = Tileset(self.tileset_name) + tiles_ascii = level_data.readlines() + print "Tileset:", self.tileset_name + print "Tiles:", tiles_ascii