Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Schampijer <simon@schampijer.de>2007-06-30 15:27:04 (GMT)
committer Simon Schampijer <simon@schampijer.de>2007-06-30 15:27:04 (GMT)
commit89a8709e6fbcb3ac29c0ccedc58aa6c5bab14f82 (patch)
treebf66e36cf7acda0bf46a41cbadd155423e7d6247
parent6b66d6c927518508b3ca6f4aa13cea630790026e (diff)
- moved signal of tile change out of the playview widget
- added shuffle function to the model - adopted gridtest to these changes
-rw-r--r--gridtest.py53
-rw-r--r--model.py18
-rw-r--r--playview.py16
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()
diff --git a/model.py b/model.py
index 723e27c..6d2811d 100644
--- a/model.py
+++ b/model.py
@@ -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]