From dcc249afa76b1af5e63d30547959c9403544bd7a Mon Sep 17 00:00:00 2001 From: Walter Bender Date: Sun, 03 Feb 2013 15:13:31 +0000 Subject: more robust bounds checks --- diff --git a/page.py b/page.py index 076aae5..0cd77be 100644 --- a/page.py +++ b/page.py @@ -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]: -- cgit v0.9.1