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-17 09:44:32 (GMT)
committer Simon Schampijer <simon@schampijer.de>2007-07-17 09:44:32 (GMT)
commit7d5fe0a996bb5708c6c03988596e78dabfc36f26 (patch)
tree580a9f2658dbd4e72a235c036f549134e89ef71c /model.py
parent7764c04a64923beb40e070b8aea531622520cf7d (diff)
Shuffle pairs before selecting them to avoid only taking the first ones when there are more pairs in the config file then the grid is using
Added memorize properties to the save method
Diffstat (limited to 'model.py')
-rw-r--r--model.py58
1 files changed, 46 insertions, 12 deletions
diff --git a/model.py b/model.py
index d068e89..0015f26 100644
--- a/model.py
+++ b/model.py
@@ -164,20 +164,38 @@ class Model(object):
self.data['face2'] = attribute.content
xpa.xpathFreeContext()
else:
- _logger.error('Error in validation of the file')
+ _logger.error('Read: Error in validation of the file')
+ doc.freeDoc()
return 1
doc.freeDoc()
return 0
except libxml2.parserError, e:
- _logger.error('Error parsing file ' +str(e))
+ _logger.error('Read: Error parsing file ' +str(e))
return 2
def save(self, filename):
''' saves the configuration to an xml file '''
doc = libxml2.newDoc("1.0")
root = doc.newChild(None, "memorize", None)
- root.setProp("name", self.data['name'])
- ### Fixme: add other attributes here
+
+ if(self.data.get('name', None) != None):
+ root.setProp("name", self.data['name'])
+ else:
+ _logger.error('Save: No name is specified. Can not save game.')
+ return 1
+ if(self.data.get('scoresnd', None) != None):
+ root.setProp("scoresnd", self.data['scoresnd'])
+ if(self.data.get('winsnd', None) != None):
+ root.setProp("winsnd", self.data['winsnd'])
+ if(self.data.get('divided', None) != None):
+ root.setProp("divided", self.data['divided'])
+ if(self.data.get('face', None) != None):
+ root.setProp("face", self.data['face'])
+ if(self.data.get('face1', None) != None):
+ root.setProp("face1", self.data['face1'])
+ if(self.data.get('face2', None) != None):
+ root.setProp("face2", self.data['face2'])
+
for key in self.pairs:
elem = root.newChild(None, "pair", None)
@@ -193,11 +211,16 @@ class Model(object):
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))
+ # elem.setProp("color", str(self.pairs[key].props.color))
if doc.validateDtd(self.ctxt, self.dtd):
doc.saveFormatFile(filename, 1)
- doc.freeDoc()
+ else:
+ _logger.error('Save: Error in validation of the file')
+ doc.freeDoc()
+ return 2
+ doc.freeDoc()
+ return 0
def def_grid(self, size):
@@ -211,7 +234,13 @@ class Model(object):
temp1 = []
temp2 = []
i=0
- for key in self.pairs.iterkeys():
+
+ # shuffle the pairs first to avoid only taking the first ones when there are more
+ # pairs in the config file then the grid is using
+ keys = model.pairs.keys()
+ random.shuffle(keys)
+
+ for key in keys:
if i < psize:
elem = {}
elem['pairkey'] = key
@@ -248,7 +277,7 @@ class Model(object):
numpairs = len(self.pairs)
if numpairs < psize:
- _logger.debug('We did not have enough pairs. requested=%s had=%s' %(psize, numpairs))
+ _logger.debug('Defgrid: We did not have enough pairs. requested=%s had=%s' %(psize, numpairs))
self.data['size'] = str(size)
if self.data['divided'] == '1':
@@ -259,14 +288,20 @@ class Model(object):
temp1.extend(temp2)
random.shuffle(temp1)
self.grid = temp1
- _logger.debug(' grid( size=%s ): %s' %(self.data['size'], self.grid))
+ _logger.debug('Defgrid: grid( size=%s ): %s' %(self.data['size'], self.grid))
if __name__ == '__main__':
model = Model(os.path.dirname(__file__))
- model.read('drumgit')
+ model.read('numbers')
+
+ model.def_grid(8)
+ print 'grid %s'%model.grid
+
+ model.save('/tmp/save.mem')
+ '''
print 'name=%s scoresnd=%s winsnd=%s div=%s' %(model.data['name'], model.data['scoresnd'],
model.data['winsnd'], model.data['divided'])
@@ -301,8 +336,7 @@ if __name__ == '__main__':
print 'we got no pic so prepare for sound game'
print '\n_______________________________\n'
-
- '''
+
if model.read('addition') == 0:
print '%s' %model.pairs[0]._properties
print 'name=%s' %model.data['name']