diff options
author | José Darío Giménez <jgimenez@localhost.localdomain> | 2010-05-27 02:45:50 (GMT) |
---|---|---|
committer | José Darío Giménez <jgimenez@localhost.localdomain> | 2010-05-27 02:45:50 (GMT) |
commit | 4a70bd95781bc6c1b8711ddf37c26377fbe9b8b2 (patch) | |
tree | 6220065d2a52f514e4946b667db99877291b72ef | |
parent | a4b82a3c05866e2372a2c8632b7500d8a1507e4c (diff) |
The datastore funtionality has been implemented!!! It's only save a state if a session has already been started. It's saves all the data that has been entered by the user (selected category,difficuty,user answer, messages for the evaluated answer if ths answer has already been evualuated). Some of the modularity has been broken to implement this because of the little time left, in a next commit it will be corrected.
-rw-r--r-- | activity.py | 13 | ||||
-rw-r--r-- | controller.py | 51 | ||||
-rwxr-xr-x | puzzles/1/Matematica/prueba2.txt | 7 | ||||
-rw-r--r-- | session.py | 17 |
4 files changed, 61 insertions, 27 deletions
diff --git a/activity.py b/activity.py index 2abc797..785a750 100644 --- a/activity.py +++ b/activity.py @@ -2,8 +2,21 @@ from sugar.activity import activity import logging import controller +import cPickle class SugarBrainActivity(activity.Activity): def __init__(self, handle): activity.Activity.__init__(self, handle) self.controller=controller.Controller(self) + + def write_file(self, filename): + print 'write:'+filename + datastored=open(filename, 'w') + cPickle.dump(self.controller.getSessionForDataStore(), datastored) + datastored.close() + + def read_file(self, filename): + print 'read:'+filename + datastored=open(filename,'r') + self.controller.setSessionFromDataStore(cPickle.load(datastored)) + datastored.close() diff --git a/controller.py b/controller.py index 4b3cef4..a2b8e41 100644 --- a/controller.py +++ b/controller.py @@ -8,19 +8,15 @@ class Controller(): def newGame(self,widget): self.session=session.Session(self.get_active_text(self.view.toolbar.categorias),self.get_active_text(self.view.toolbar.dificultades)) - self.answered=True - self.continues=True self.nextPuzzle(widget) def evaluateAnswer(self,widget): - if self.continues: - if not self.answered: - self.answered=True - if self.session.evaluateAnswer(self.view.respT.get_text()): - status='Correcto.' - else: - status='Incorrecto.' - self.view.showAnswer(status,self.session.currentPuzzle().answer) + if not self.session.isAnswered(): + if self.session.evaluateAnswer(self.view.respT.get_text()): + status='Correcto.' + else: + status='Incorrecto.' + self.view.showAnswer(status,self.session.currentPuzzle().answer) def hasClue(self,widget): return self.session.currentPuzzle().hasClue() @@ -29,23 +25,16 @@ class Controller(): return self.session.currentPuzzle().getClue() def nextPuzzle(self,widget): - if self.continues: - if not self.answered: - self.evaluateAnswer(widget) - else: - self.continues=self.session.nextPuzzle() - if self.continues: - self.answered=False - self.view.refreshQuestion(self.session.currentPuzzle().question) - self.view.hideAnswer() - self.view.cleanUserAnswer() + self.session.nextPuzzle() + self.view.refreshQuestion(self.session.currentPuzzle().question) + self.view.hideAnswer() + self.view.cleanUserAnswer() def pause(self,widget): return self.session.pause() def end(self,widget): self.session.end() - self.answered=True self.nextPuzzle(widget) def get_active_text(self,combobox): @@ -54,3 +43,23 @@ class Controller(): if active < 0: return None return model[active][0] + + def getSessionForDataStore(self): + if 'session' in self.__dict__: + self.session.categorias=self.view.toolbar.categorias.get_active() + self.session.dificultades=self.view.toolbar.dificultades.get_active() + self.session.userAnswer=self.view.respT.get_text() + self.session.message=self.view.answer.get_text() + return self.session + else: + return None + + def setSessionFromDataStore(self,session): + if session!=None: + self.session=session + self.view.refreshQuestion(self.session.currentPuzzle().question) + self.view.toolbar.categorias.set_active(self.session.categorias) + self.view.toolbar.dificultades.set_active(self.session.dificultades) + self.view.respT.set_text(self.session.userAnswer) + self.view.answer.set_text(self.session.message) + self.view.answer.show() diff --git a/puzzles/1/Matematica/prueba2.txt b/puzzles/1/Matematica/prueba2.txt new file mode 100755 index 0000000..9c14442 --- /dev/null +++ b/puzzles/1/Matematica/prueba2.txt @@ -0,0 +1,7 @@ +question = 'La pregunta 2' +image = '/home/algo.svg 2' +answer = 'La respuesta 2' +topic = 'matematica' +difficulty = 'facil' +score = '5' + @@ -31,22 +31,27 @@ class Session: i = random.randrange(0, l) self.old_puzzles.append(self.list_puzzles[i]) self.current=self.list_puzzles.pop(i) - return True + self.answered=False else: self.current.question='Juego Terminado\nPuntaje='+str(self.score) - return False + self.answered=True def currentPuzzle(self): return self.current def evaluateAnswer(self,answer): - test=self.currentPuzzle().evaluateAnswer(answer) - if test: - self.score+=self.currentPuzzle().getScore() - return test + if not self.isAnswered(): + self.answered=True + test=self.currentPuzzle().evaluateAnswer(answer) + if test: + self.score+=self.currentPuzzle().getScore() + return test def end(self): self.list_puzzles=[] + + def isAnswered(self): + return self.answered def __str__(self): return 'Sesión de topico = ' + str(self.topic) + ' y dificultad = ' + str(self.difficulty) |