diff options
-rw-r--r-- | gridtest.py | 53 | ||||
-rw-r--r-- | model.py | 18 | ||||
-rw-r--r-- | playview.py | 16 |
3 files changed, 45 insertions, 42 deletions
diff --git a/gridtest.py b/gridtest.py index 9220746..53c6fe1 100644 --- a/gridtest.py +++ b/gridtest.py @@ -1,24 +1,35 @@ import gtk import os +import random from playview import PlayView -from model import Game +from model import Model + +GAME_PATH = os.path.join(os.path.dirname(__file__),'games/drumgit') +IMAGES_PATH = os.path.join(os.path.dirname(__file__),'games/drumgit/images') - class Test(object): def __init__(self): - - self.games = {} - os.path.walk(os.path.join(os.path.dirname(__file__), 'games'), self._find_games, None) - - gamelist = self.games.keys() - gamelist.sort() - - print 'gamelist: %s' %gamelist - print 'pairs: %s' %self.games[gamelist[0]].pairs - self.pv = PlayView(self.games[gamelist[0]].pairs) - + self.model = Model(GAME_PATH, os.path.dirname(__file__)) + self.model.read('drumgit.mson') + print 'pairs: %s' %self.model.pairs + + ### create grid from pairs information + self.grid = [] + for key in self.model.pairs.iterkeys(): + self.grid.append((key, 0)) + self.grid.append((key, 1)) + print 'self.grid: %s'%self.grid + + ### shuffle the grid tiles + random.shuffle(self.grid) + print 'self.grid after shufle: %s'%self.grid + + self.pv = PlayView( len(self.grid) ) + for tile in self.pv.tiles: + tile.connect('button-press-event', self._button_press_cb, self.pv.tiles.index(tile)) + window = gtk.Window() window.connect('destroy', gtk.main_quit) window.connect('key-press-event', self.key_press_cb) @@ -33,14 +44,14 @@ class Test(object): if gtk.gdk.keyval_name(event.keyval) in ('Escape', 'q'): gtk.main_quit() - def _find_games(self, arg, dirname, names): - for name in names: - if name.endswith('.mson'): - game = Game(dirname, os.path.dirname(__file__)) - game.read(name) - self.games[name.split('.mson')[0]] = game - - + def _button_press_cb(self, tile, event, tilenum=None): + print 'selected tile=%s'%str(tilenum) + pairkey, moch = self.grid[tilenum] + obj = os.path.join(IMAGES_PATH, self.model.pairs[pairkey][moch]) + color = self.model.pairs[pairkey][2] + print 'obj=%s color=%s'%(obj, color) + self.pv.flip(tilenum, obj, color) + if __name__ == '__main__': Test() @@ -2,7 +2,7 @@ import libxml2 import os import logging -class Game(object): +class Model(object): def __init__(self, gamepath, dtdpath, name='noname'): self.name = name self.pairs = {} @@ -71,19 +71,19 @@ class Game(object): if __name__ == '__main__': print "[Read game from file] " - game = Game() - game.read('memosono.xml') - print " name=" + game.name - print " pairs=%s" %game.pairs + model = Model() + model.read('memosono.xml') + print " name=" + model.name + print " pairs=%s" %model.pairs elemkey = '0' - if game.pairs.has_key(elemkey): - del game.pairs[elemkey] + if model.pairs.has_key(elemkey): + del model.pairs[elemkey] - game.pairs['2'] = ['frettchen.jpg', 'frettchen.wav'] + model.pairs['2'] = ['frettchen.jpg', 'frettchen.wav'] print "[Write game to file] " - game.save('memosono.xml') + model.save('memosono.xml') diff --git a/playview.py b/playview.py index 13bfc45..45d478f 100644 --- a/playview.py +++ b/playview.py @@ -9,7 +9,7 @@ from sugar.graphics import font from playtile import PlayTile class PlayView(hippo.Canvas): - def __init__(self, pairs): + def __init__(self, numtiles): hippo.Canvas.__init__(self) root = hippo.CanvasBox() @@ -20,31 +20,23 @@ class PlayView(hippo.Canvas): root.append(tilebox) self.tiles = [] - self.turn = 1 tile_num = 0 - numtiles = len(pairs)*2 + while tile_num < numtiles: if tile_num == 0 or ((tile_num)%4) == 0: box = hippo.CanvasBox() box.props.orientation = hippo.ORIENTATION_HORIZONTAL tilebox.append(box) - tile = PlayTile(tile_num) - tile.connect('button-press-event', self._button_press_cb, tile.num) + tile = PlayTile(tile_num) self.tiles.append(tile) box.append(tile) - tile_num+=1 + tile_num+=1 self.set_root(root) self.show() - - def _button_press_cb(self, tile, event, data=None): - if self.turn: - print data - else: - print 'it is not your turn' def flip(self, tile_num, obj, color): tile = self.tiles[tile_num] |