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-07-17 09:44:32 (GMT)
committer Simon Schampijer <simon@schampijer.de>2007-07-17 09:44:32 (GMT)
commit7d5fe0a996bb5708c6c03988596e78dabfc36f26 (patch)
tree580a9f2658dbd4e72a235c036f549134e89ef71c
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
-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']