From e5763dd9972f3d5f2f9e580d32510522ac83923e Mon Sep 17 00:00:00 2001 From: José Darío Giménez Date: Wed, 26 May 2010 01:48:26 +0000 Subject: The activity detects when the puzzle db is exhausted and show a message and the score of the Session. There is a bug to be repaired: an atribute from the controller loses his value between events. Maybe there is a problem with the "serialization" of the object? --- diff --git a/controller.py b/controller.py index 3c9cde5..9992666 100644 --- a/controller.py +++ b/controller.py @@ -8,15 +8,20 @@ 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.view.refreshQuestion() + self.answered=True + self.continues=True + self.continues=self.nextPuzzle(widget) def evaluateAnswer(self,widget): - if self.session.currentPuzzle().answered: - if self.session.currentPuzzle().evaluateAnswer(self.view.respT.get_text()): - status='Correcto.' - else: - status='Incorrecto.' - self.view.showAnswer(status) + print self.continues + 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) def hasClue(self,widget): return self.session.currentPuzzle().hasClue() @@ -25,10 +30,17 @@ class Controller(): return self.session.currentPuzzle().getClue() def nextPuzzle(self,widget): - if self.session.currentPuzzle().answered: - return self.session.nextPuzzle() - else: - return self.evaluateAnswer(widget) + if self.continues: + if not self.answered: + self.evaluateAnswer(widget) + else: + self.continues=self.session.nextPuzzle() + if self.continues: + self.answered=False + else: + self.view.hideAnswer() + self.view.refreshQuestion(self.session.currentPuzzle().question) + print self.continues def pause(self,widget): return self.session.pause() @@ -42,4 +54,3 @@ class Controller(): if active < 0: return None return model[active][0] - diff --git a/puzzle.py b/puzzle.py index 9834d2e..2022f10 100644 --- a/puzzle.py +++ b/puzzle.py @@ -28,7 +28,6 @@ class Puzzle: self.clue=dic['clue'] else: self.clue='' - self.answered=False except KeyError: print 'Falta un atributo.' except: @@ -39,11 +38,13 @@ class Puzzle: return self.question def evaluateAnswer(self,answer): - self.answered=True - return self.answer==answer + return self.answer.lower()==answer.lower() def hasClue(self): self.clue!='' def getClue(self): return self.clue + + def getScore(self): + return self.score diff --git a/session.py b/session.py index 81fc3b3..47b105c 100644 --- a/session.py +++ b/session.py @@ -17,7 +17,7 @@ class Session: self.list_puzzles.append(Puzzle('./puzzles/' + str(self.difficulty) + '/' + self.topic + '/' + item)) self.time = datetime.datetime.now() self.old_puzzles = [] - self.nextPuzzle() + self.score=0 def nextPuzzle(self): l=len(self.list_puzzles) @@ -25,12 +25,19 @@ class Session: i = random.randrange(0, l) self.old_puzzles.append(self.list_puzzles[i]) self.current=self.list_puzzles.pop(i) - return self.current + return True else: + self.current.question='Juego Terminado\nPuntaje='+str(self.score) return False def currentPuzzle(self): return self.current + + def evaluateAnswer(self,answer): + test=self.currentPuzzle().evaluateAnswer(answer) + if test: + self.score+=self.currentPuzzle().getScore() + return test def __str__(self): return 'Sesión de topico = ' + str(self.topic) + ' y dificultad = ' + str(self.difficulty) diff --git a/view.py b/view.py index c1fa4c8..6059563 100644 --- a/view.py +++ b/view.py @@ -44,10 +44,13 @@ class View(): self.l1.show() self.controller.activity.set_canvas(self.l1) - def refreshQuestion(self): - self.question.set_text(self.controller.session.currentPuzzle().question) + def refreshQuestion(self,question): + self.question.set_text(question) self.question.show() - def showAnswer(self,status): - self.answer.set_text(status+' La respuesta correcta es:'+self.controller.session.currentPuzzle().answer) + def showAnswer(self,status,correctAnswer): + self.answer.set_text(status+' La respuesta correcta es: '+correctAnswer) self.answer.show() + + def hideAnswer(self): + self.answer.set_text(None) -- cgit v0.9.1