Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/model.py
diff options
context:
space:
mode:
authorSimon Schampijer <simon@schampijer.de>2007-07-12 20:45:24 (GMT)
committer Simon Schampijer <simon@schampijer.de>2007-07-12 20:45:24 (GMT)
commit8a2defe196f4f1d1edd7845ca871d58a57c717e1 (patch)
tree9244672f0969a47ab7dc509bac0427c51df5dfe4 /model.py
parent1c2728aad09cf28fd194f20c01138fc53e0f4b68 (diff)
Started to merge the memosono game and the meorize game into one activity.
Diffstat (limited to 'model.py')
-rw-r--r--model.py152
1 files changed, 120 insertions, 32 deletions
diff --git a/model.py b/model.py
index bb7870a..d85f603 100644
--- a/model.py
+++ b/model.py
@@ -5,7 +5,8 @@ import random
import gobject
IMAGES_PATH = 'games/drumgit/images'
-GAME_PATH = 'games/drumgit'
+SOUNDS_PATH = 'games/drumgit/sounds'
+GAME_PATH = ''
_logger = logging.getLogger('model')
@@ -14,8 +15,10 @@ class Pair(gobject.GObject):
__gproperties__ = {
'aimg' : (str, None, None, None, gobject.PARAM_READWRITE),
'asnd' : (str, None, None, None, gobject.PARAM_READWRITE),
+ 'achar' : (str, None, None, None, gobject.PARAM_READWRITE),
'bimg' : (str, None, None, None, gobject.PARAM_READWRITE),
'bsnd' : (str, None, None, None, gobject.PARAM_READWRITE),
+ 'bchar' : (str, None, None, None, gobject.PARAM_READWRITE),
'color': (gobject.TYPE_INT, 'Base', 'Base', 0, 10, 0, gobject.PARAM_READWRITE)
}
@@ -30,10 +33,14 @@ class Pair(gobject.GObject):
return self._properties["aimg"]
elif pspec.name == "asnd":
return self._properties["asnd"]
+ elif pspec.name == "achar":
+ return self._properties["achar"]
elif pspec.name == "bimg":
return self._properties["bimg"]
elif pspec.name == "bsnd":
return self._properties["bsnd"]
+ elif pspec.name == "bchar":
+ return self._properties["bchar"]
elif pspec.name == "color":
return self._properties["color"]
@@ -42,10 +49,14 @@ class Pair(gobject.GObject):
self._properties['aimg'] = value
elif name == "asnd":
self._properties["asnd"] = value
+ elif name == "achar":
+ self._properties["achar"] = value
elif name == "bimg":
self._properties["bimg"] = value
elif name == "bsnd":
self._properties["bsnd"] = value
+ elif name == "bchar":
+ self._properties["bchar"] = value
elif name == "color":
self._properties["color"] = int(value)
'''
@@ -60,19 +71,20 @@ class Model(object):
information.
'''
def __init__(self, gamepath, dtdpath, name='noname'):
- self.name = name
+ self.data = {}
self.gamepath = gamepath
self.dtdpath = dtdpath
+
try:
- self.dtd = libxml2.parseDTD(None, os.path.join(self.dtdpath, 'memosono.dtd'))
+ self.dtd = libxml2.parseDTD(None, os.path.join(self.dtdpath, 'memorize.dtd'))
except libxml2.parserError, e:
- _logger.error('No memosono.dtd found ' +str(e))
+ _logger.error('No memorize.dtd found ' +str(e))
self.dtd = None
self.ctxt = libxml2.newValidCtxt()
self.pairs = {}
self.grid = []
-
+
# used by the leader of the game to keep track of the game state
self.players = {}
self.player_active = 0
@@ -81,7 +93,6 @@ class Model(object):
self.started = 0
self.count = 0
-
def read(self, filename):
''' reades the configuration from an xml file '''
try:
@@ -97,18 +108,34 @@ class Model(object):
for elem in res:
attributes = elem.get_properties()
pair = Pair()
- for attribute in attributes:
- if(attribute.name == 'text'):
- pass
- else:
- pass
- pair.set_property(attribute.name, attribute.content)
if( elem.name == 'pair' ):
+ for attribute in attributes:
+ if(attribute.name == 'text'):
+ pass
+ else:
+ pair.set_property(attribute.name, attribute.content)
self.pairs[self.idpair] = pair
- self.idpair+=1
- elif( elem.name == 'memosono' ):
- self.name = attribute.content
-
+ self.idpair+=1
+ elif( elem.name == 'memorize' ):
+ for attribute in attributes:
+ if(attribute.name == 'text'):
+ pass
+ elif(attribute.name == 'name'):
+ self.data['game_name'] = attribute.content
+ elif(attribute.name == 'scoresnd'):
+ self.data['scoresnd'] = attribute.content
+ elif(attribute.name == 'winsnd'):
+ self.data['winsnd'] = attribute.content
+ elif(attribute.name == 'divided'):
+ self.data['divided'] = attribute.content
+ elif(attribute.name == 'divided'):
+ self.data['divided'] = attribute.content
+ elif(attribute.name == 'face'):
+ self.data['face'] = attribute.content
+ elif(attribute.name == 'face1'):
+ self.data['face1'] = attribute.content
+ elif(attribute.name == 'face2'):
+ self.data['face2'] = attribute.content
xpa.xpathFreeContext()
else:
_logger.error('Error in validation of the file')
@@ -120,8 +147,9 @@ class Model(object):
def save(self, filename):
''' saves the configuration to an xml file '''
doc = libxml2.newDoc("1.0")
- root = doc.newChild(None, "memosono", None)
- root.setProp("name", self.name)
+ root = doc.newChild(None, "memorize", None)
+ root.setProp("name", self.data['game_name'])
+ ### Fixme: add other attributes here
for key in self.pairs:
elem = root.newChild(None, "pair", None)
@@ -129,10 +157,14 @@ class Model(object):
elem.setProp("aimg", self.pairs[key].props.aimg)
if self.pairs[key].props.asnd != None:
elem.setProp("asnd", self.pairs[key].props.asnd)
+ if self.pairs[key].props.achar != None:
+ elem.setProp("achar", self.pairs[key].props.achar)
if self.pairs[key].props.bimg != None:
elem.setProp("bimg", self.pairs[key].props.bimg)
if self.pairs[key].props.bsnd != None:
elem.setProp("bsnd", self.pairs[key].props.bsnd)
+ if self.pairs[key].props.bchar != None:
+ elem.setProp("bchar", self.pairs[key].props.bchar)
elem.setProp("color", str(self.pairs[key].props.color))
if doc.validateDtd(self.ctxt, self.dtd):
@@ -140,15 +172,27 @@ class Model(object):
doc.freeDoc()
- def def_grid(self):
+ def def_grid(self, size):
''' create the grid for the play from the pairs information
and shuffles the grid so they always appear in a different
- place
+ place
+ grid [pair_key, a_or_b, flipstatus]
'''
_logger.debug(' pairs: %s', self.pairs)
+ i=0
for key in self.pairs.iterkeys():
- self.grid.append([key, 0, 0])
- self.grid.append([key, 1, 0])
+ if i < size:
+ self.grid.append([key, 0, 0])
+ self.grid.append([key, 1, 0])
+ i+=1
+ else:
+ break
+
+ numpairs = len(self.pairs)
+ if numpairs < size:
+ _logger.debug('We did not have enough pairs. requested=%s had=%s' %(numpairs, size))
+
+ self.data['size'] = numpairs
random.shuffle(self.grid)
_logger.debug(' grid: %s', self.grid)
@@ -156,10 +200,24 @@ class Model(object):
def gettile(self, tilenum):
''' gets the information of an object associated with a tile number '''
- pairkey, moch, state = self.grid[tilenum]
- obj = os.path.join(IMAGES_PATH, self.pairs[pairkey][moch])
- color = self.pairs[pairkey][2]
- return (obj, color)
+ img = None
+ snd = None
+ char = None
+ pairkey, moch, state = self.grid[tilenum]
+ if moch == 0:
+ if self.pairs[pairkey].props.aimg != None:
+ img = os.path.join(IMAGES_PATH, self.pairs[pairkey].props.aimg)
+ if self.pairs[pairkey].props.asnd != None:
+ snd = os.path.join(SOUNDS_PATH, self.pairs[pairkey].props.asnd)
+ char = self.pairs[pairkey].props.achar
+ if moch == 1:
+ if self.pairs[pairkey].props.bimg != None:
+ img = os.path.join(IMAGES_PATH, self.pairs[pairkey].props.bimg)
+ if self.pairs[pairkey].props.bsnd != None:
+ snd = os.path.join(SOUNDS_PATH, self.pairs[pairkey].props.bsnd)
+ char = self.pairs[pairkey].props.bchar
+ color = self.pairs[pairkey].props.color
+ return (img, snd, char, color)
def same(self, a, b):
@@ -173,11 +231,41 @@ class Model(object):
if __name__ == '__main__':
model = Model(GAME_PATH, os.path.dirname(__file__))
- model.read('drumgit.mson')
- print '%s' %model.pairs[0].props.color
- print '%s' %model.pairs[1]._properties
- print '%s' %model.pairs[2]._properties
+ model.read('drumgit.mem')
+ print '%s' %model.pairs[0]._properties
+ print 'name=%s' %model.data['game_name']
+ print 'scoresnd=%s' %model.data['scoresnd']
+ print 'winsnd=%s' %model.data['winsnd']
+ print 'div=%s' %model.data['divided']
+ model.def_grid(8)
+ print 'grid size=%d'%model.data['size']
+ print model.grid
+
+ i=0
+ while i < model.data['size']:
+ pairkey, moch, state = model.grid[i]
+ if moch == 0:
+ if model.pairs[pairkey].props.aimg != None:
+ print model.pairs[pairkey].props.aimg
+ if moch == 1:
+ if model.pairs[pairkey].props.bimg != None:
+ print model.pairs[pairkey].props.bimg
+ i+=1
- model.def_grid()
+
+ '''
+ print '\n_______________________________\n'
+
+ model.read('addition.mem')
+ print '%s' %model.pairs[0]._properties
+ print 'name=%s' %model.data['game_name']
+ print 'scoresnd=%s' %model.data['scoresnd']
+ print 'winsnd=%s' %model.data['winsnd']
+ print 'div=%s' %model.data['divided']
+
+ model.def_grid(12)
print model.grid
- #model.save('/tmp/mod.txt')
+ print model.gettile(0)
+ print model.gettile(1)
+ model.save('/tmp/mod.txt')
+ '''