X-Git-Url: https://git.ctpug.org.za/?a=blobdiff_plain;f=erdslangetjie%2F__main__.py;h=9802657cf1dc9bb22bb68c9fb59818c77d3d94a1;hb=e3780ba39fb721ade60cb9823d24f2174a4762e8;hp=dbb20cdcb69d062620e282449bc3fbba07922f91;hpb=e9fc58543d2b9f385d0bf245828fdeea1b60c0ae;p=erdslangetjie.git diff --git a/erdslangetjie/__main__.py b/erdslangetjie/__main__.py index dbb20cd..9802657 100644 --- a/erdslangetjie/__main__.py +++ b/erdslangetjie/__main__.py @@ -1,4 +1,84 @@ +import sys +import os +import kivy + +kivy.require('1.6.0') + +from kivy.app import App +from kivy.uix.widget import Widget +from kivy.uix.floatlayout import FloatLayout +from kivy.graphics import Color, Rectangle + +from erdslangetjie.data import filepath, load +from erdslangetjie.level import Level +from erdslangetjie.player import ThePlayer, Nemesis + + +class GameWindow(FloatLayout): + + def __init__(self, level): + super(GameWindow, self).__init__(size=(960, 960)) + if os.path.exists(filepath(level)): + level_data = load(level) + self.level = level + elif os.path.exists(filepath('levels/' + level)): + level_data = load('levels/' + level) + self.level = 'levels/' + level + else: + print 'Unable to find %s - treating this as a new level' % level + sys.exit(1) + self.level_obj = Level() + self.level_obj.load(level_data) + level_data.close() + + self.player = ThePlayer() + self.level_obj.load_tiles() + if not self.level_obj.enter_pos: + raise RuntimeError('No entry point') + + self.player.pos = self.level_obj.enter_pos + + def build(self): + self.clear_widgets() + tiles = self.level_obj.get_tiles() + tile_size = 24 + bx, by = 0, 0 + for tile_line in tiles: + bx = 0 + for tile in tile_line: + node = Widget(size=(tile_size, tile_size), pos=(bx, by)) + with node.canvas: + Color(1, 1, 1) + Rectangle(pos=node.pos, size=node.size, + texture=tile.texture) + self.add_widget(node) + bx += tile_size + by += tile_size + + player_pos = (self.player.pos[0] * tile_size, + self.player.pos[1] * tile_size) + player_tile = Widget(size=(tile_size, tile_size), + pos=player_pos) + with player_tile.canvas: + Color(1, 1, 1) + Rectangle(pos=player_pos, size=player_tile.size, + texture=self.player.sprite.texture) + self.add_widget(player_tile) + + +class GameApp(App): + + def __init__(self): + self.level = 'level1.txt' + super(GameApp, self).__init__() + + def build(self): + game = GameWindow(self.level) + game.build() + return game + def main(): - """ your app starts here + """ Erdslangetjie, a maze game of eluding nemesis """ + GameApp().run()