diff options
author | Walter Bender <walter.bender@gmail.com> | 2013-02-03 15:13:31 (GMT) |
---|---|---|
committer | Walter Bender <walter.bender@gmail.com> | 2013-02-03 15:13:31 (GMT) |
commit | dcc249afa76b1af5e63d30547959c9403544bd7a (patch) | |
tree | bc110b24eeaa7a1b244e37f46fc7e0a11eb24480 | |
parent | d7c67e0135d9db3ce3b3a01220a564201ce3f91f (diff) |
more robust bounds checksgtk2
-rw-r--r-- | page.py | 18 |
1 files changed, 11 insertions, 7 deletions
@@ -92,7 +92,7 @@ class Page(): self._release = None self.timeout = None self.target = 0 - self.answers = [0, 0, 0, 0, 0, 0] + self.answers = [] self._my_canvas = Sprite( self._sprites, 0, 0, svg_str_to_pixbuf(genblank( @@ -135,6 +135,9 @@ class Page(): ''' Load a page of cards ''' if self.timeout is not None: gobject.source_remove(self.timeout) + self.answers = [] + for i in range(min(6, len(self._cards))): + self.answers.append(0) self._hide_cards() self._hide_feedback() self.new_target() @@ -228,12 +231,13 @@ class Page(): _('Click on the card that corresponds to the sound.')) self.target = int(uniform(0, len(self._cards))) - for i in range(6): - self.answers[i] = self.target - for i in range(6): + for i in range(min(6, len(self._cards))): + self.answers[i] = int(uniform(0, len(self._cards))) + for i in range(min(6, len(self._cards))): while self._bad_answer(i): - self.answers[i] = int(uniform(0, len(self._cards))) - i = int(uniform(0, 6)) + self.answers[i] += 1 + self.answers[i] %= len(self._cards) + i = int(uniform(0, min(6, len(self._cards)))) self.answers[i] = self.target if self.timeout is not None: @@ -244,7 +248,7 @@ class Page(): ''' Make sure answer is unique ''' if self.answers[i] == self.target: return True - for j in range(6): + for j in range(min(6, len(self._cards))): if i == j: continue if self.answers[i] == self.answers[j]: |