Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWalter Bender <walter@sugarlabs.org>2010-07-10 21:26:41 (GMT)
committer Walter Bender <walter@sugarlabs.org>2010-07-10 21:26:41 (GMT)
commit736e76751c387bafcc0ca1c312558bbae2935ca6 (patch)
tree1da141e2601fb381d1b942f22237cb29a462a741
parent6621b16ae1687be9588005fb6ec4bb951f46a882 (diff)
added beginner level
-rw-r--r--VisualMatchActivity.py49
-rw-r--r--constants.py1
-rw-r--r--deck.py20
-rw-r--r--game.py11
-rw-r--r--grid.py10
-rw-r--r--icons/level2.svg11
-rw-r--r--icons/level3.svg26
-rwxr-xr-xpo/VisualMatch.pot192
8 files changed, 183 insertions, 137 deletions
diff --git a/VisualMatchActivity.py b/VisualMatchActivity.py
index d18938c..eaef6b4 100644
--- a/VisualMatchActivity.py
+++ b/VisualMatchActivity.py
@@ -55,9 +55,9 @@ from constants import DECKSIZE, PRODUCT, HASH, ROMAN, WORD, CHINESE, MAYAN, \
DOTS, STAR, DICE, LINES, DEAL
from game import Game
-level_icons = ['level1', 'level2']
-level_labels = [_('beginner'), _('expert')]
-level_decksize = [DECKSIZE / 3, DECKSIZE]
+LEVEL_ICONS = ['level2', 'level3', 'level1']
+LEVEL_LABELS = [_('intermediate'), _('expert'), _('beginner')]
+LEVEL_DECKSIZE = [DECKSIZE / 3, DECKSIZE, DECKSIZE / 9]
SERVICE = 'org.sugarlabs.VisualMatchActivity'
IFACE = SERVICE
@@ -160,22 +160,24 @@ class VisualMatchActivity(activity.Activity):
self.robot_button.set_icon('robot-on')
def _level_cb(self, button):
- """ Switch between levels """
+ """ Cycle between levels """
if self.vmw.joiner(): # joiner cannot change level
return
- self.vmw.level = 1 - self.vmw.level
+ self.vmw.level += 1
+ if self.vmw.level == len(LEVEL_LABELS):
+ self.vmw.level = 0
self.level_label.set_text(self.calc_level_label(self.vmw.low_score,
self.vmw.level))
- self.level_button.set_icon(level_icons[self.vmw.level])
+ self.level_button.set_icon(LEVEL_ICONS[self.vmw.level])
self.vmw.new_game()
def calc_level_label(self, low_score, play_level):
""" Show the score. """
if low_score[play_level] == -1:
- return level_labels[play_level]
+ return LEVEL_LABELS[play_level]
else:
return "%s (%d:%02d)" % \
- (level_labels[play_level],
+ (LEVEL_LABELS[play_level],
int(low_score[play_level] / 60),
int(low_score[play_level] % 60))
@@ -222,8 +224,6 @@ class VisualMatchActivity(activity.Activity):
self._play_level = int(self.metadata['play_level'])
self._robot_time = int(self.metadata['robot_time'])
self._card_type = self.metadata['cardtype']
- self._low_score = [int(self.metadata['low_score_beginner']), \
- int(self.metadata['low_score_expert'])]
self._numberO = int(self.metadata['numberO'])
self._numberC = int(self.metadata['numberC'])
self._matches = int(self.metadata['matches'])
@@ -231,17 +231,16 @@ class VisualMatchActivity(activity.Activity):
self._total_time = int(self.metadata['total_time'])
self._deck_index = int(self.metadata['deck_index'])
except KeyError: # Otherwise, use default values.
- self._play_level = 0
+ self._play_level = 2
self._robot_time = 60
self._card_type = 'pattern'
- self._low_score = [-1, -1]
self._numberO = PRODUCT
self._numberC = HASH
self._matches = 0
self._robot_matches = 0
self._total_time = 0
self._deck_index = 0
- try: # Some saved games may not have the word list
+ try: # Some saved games may not have the word list.
self._word_lists = [[self.metadata['mouse'], \
self.metadata['cat'], \
self.metadata['dog']], \
@@ -252,14 +251,25 @@ class VisualMatchActivity(activity.Activity):
self.metadata['sun'], \
self.metadata['earth']]]
except KeyError:
- self._word_lists = [[_('mouse'), _('cat'), _('dog')], \
- [_('cheese'), _('apple'), _('bread')], \
+ self._word_lists = [[_('mouse'), _('cat'), _('dog')],
+ [_('cheese'), _('apple'), _('bread')],
[_('moon'), _('sun'), _('earth')]]
try: # Were we editing the word list?
self._editing_word_list = bool(int(
self.metadata['editing_word_list']))
except KeyError:
self._editing_word_list = False
+ try: # We may have different combinations of low scores saved.
+ self._low_score = [int(self.metadata['low_score_intermediate']),
+ int(self.metadata['low_score_expert']),
+ int(self.metadata['low_score_beginner'])]
+ except KeyError:
+ try:
+ self._low_score = [-1,
+ int(self.metadata['low_score_expert']),
+ int(self.metadata['low_score_beginner'])]
+ except KeyError:
+ self._low_score = [-1, -1, -1]
def _find_datapath(self, _old_sugar_system):
""" Find the datapath for saving card files. """
@@ -358,7 +368,7 @@ class VisualMatchActivity(activity.Activity):
self._robot_time_spin_cb,
tools_toolbar)
_separator_factory(tools_toolbar, True, False)
- self.level_button = _button_factory(level_icons[self._play_level],
+ self.level_button = _button_factory(LEVEL_ICONS[self._play_level],
_('Set difficulty level.'),
self._level_cb, tools_toolbar)
self.level_label = _label_factory(self.calc_level_label(
@@ -415,7 +425,7 @@ class VisualMatchActivity(activity.Activity):
self.status_label = _label_factory(_('Find a match.'), toolbar)
_separator_factory(toolbar, True, False)
self.deck_label = _label_factory("%d %s" % \
- (level_decksize[self._play_level]\
+ (LEVEL_DECKSIZE[self._play_level]\
- DEAL, _('cards')), toolbar)
_separator_factory(toolbar, True, False)
self.match_label = _label_factory("%d %s" % (0, _('matches')), toolbar)
@@ -453,7 +463,8 @@ class VisualMatchActivity(activity.Activity):
if hasattr(self, 'vmw'):
self.metadata['play_level'] = self.vmw.level
self.metadata['low_score_beginner'] = int(self.vmw.low_score[0])
- self.metadata['low_score_expert'] = int(self.vmw.low_score[1])
+ self.metadata['low_score_intermediate'] = int(self.vmw.low_score[1])
+ self.metadata['low_score_expert'] = int(self.vmw.low_score[2])
self.metadata['robot_time'] = self.vmw.robot_time
self.metadata['numberO'] = self.vmw.numberO
self.metadata['numberC'] = self.vmw.numberC
@@ -653,7 +664,7 @@ class VisualMatchActivity(activity.Activity):
self.vmw.level = int(text)
self.level_label.set_text(self.calc_level_label(
self.vmw.low_score, self.vmw.level))
- self.level_button.set_icon(level_icons[self.vmw.level])
+ self.level_button.set_icon(LEVEL_ICONS[self.vmw.level])
elif text[0] == 'X':
e, text = text.split(':')
_logger.debug("receiving deck index from sharer " + text)
diff --git a/constants.py b/constants.py
index b804253..b2fde89 100644
--- a/constants.py
+++ b/constants.py
@@ -39,6 +39,7 @@ STAR = 2
HASH = 3
DICE = 4
LOW = 'low'
+MEDIUM = 'medium'
HIGH = 'high'
RED_STROKE = "#FF6040"
RED_FILL = "#FFC4B8"
diff --git a/deck.py b/deck.py
index 87b1ee7..c5c1108 100644
--- a/deck.py
+++ b/deck.py
@@ -15,7 +15,8 @@ pygtk.require('2.0')
import gtk
from random import randrange
-from constants import HIGH, FILLS, SHAPES, NUMBER, COLORS, COLOR_PAIRS
+from constants import HIGH, MEDIUM, LOW, FILLS, SHAPES, NUMBER, COLORS, \
+ COLOR_PAIRS
from card import Card
from gencards import generate_pattern_card, generate_number_card, \
generate_word_card
@@ -29,14 +30,19 @@ class Deck:
""" Create the deck of cards. """
self.cards = []
# If level is 'simple', only generate one fill type
- if level == HIGH:
- fill_range = FILLS
- else:
+ shape_range = SHAPES
+ color_range = COLORS
+ number_range = NUMBER
+ fill_range = FILLS
+ if level == MEDIUM:
+ fill_range = 1
+ elif level == LOW:
fill_range = 1
+ shape_range = 1
# Initialize the deck of cards by looping through all the patterns
- for shape in range(0, SHAPES):
- for color in range(0, COLORS):
- for num in range(0, NUMBER):
+ for shape in range(0, shape_range):
+ for color in range(0, color_range):
+ for num in range(0, number_range):
for fill in range(0, fill_range):
if card_type == 'pattern':
self.cards.append(Card(sprites,
diff --git a/game.py b/game.py
index be85739..07cf7ab 100644
--- a/game.py
+++ b/game.py
@@ -27,16 +27,16 @@ try:
except ImportError:
GRID_CELL_SIZE = 0
-from constants import LOW, HIGH, SELECTMASK, MATCHMASK, ROW, COL,\
+from constants import LOW, MEDIUM, HIGH, SELECTMASK, MATCHMASK, ROW, COL,\
WORD_CARD_INDICIES, MATCH_POSITION, DEAD_DICTS, DEAD_KEYS, WHITE_SPACE,\
- NOISE_KEYS, WORD_CARD_MAP, KEYMAP, CARD_HEIGHT, CARD_WIDTH
+ NOISE_KEYS, WORD_CARD_MAP, KEYMAP, CARD_HEIGHT, CARD_WIDTH, DEAL
from grid import Grid
from deck import Deck
from card import Card
from sprites import Sprites, Sprite
from gencards import generate_selected_card, generate_match_card
-difficulty_level = [LOW, HIGH]
+difficulty_level = [MEDIUM, HIGH, LOW]
class Game():
@@ -272,6 +272,11 @@ class Game():
self.match_timeout_id = gobject.timeout_add(2000,
self._show_matches, 0)
return True
+ elif self.grid.cards_in_grid() == DEAL + 3 and not self._find_a_match():
+ self.set_label("deck", "")
+ self.set_label("clock", "")
+ self.set_label("status", _("unsolvable"))
+ return True
return False
def _test_for_a_match(self):
diff --git a/grid.py b/grid.py
index bb63402..0bcde49 100644
--- a/grid.py
+++ b/grid.py
@@ -35,12 +35,12 @@ class Grid:
def deal(self, deck):
""" Deal an initial set of cards. """
for i in range(ROW * COL):
+ self.grid[i] = None
if i < (ROW - 1) * COL:
- self.grid[i] = deck.deal_next_card()
- self.place_a_card(self.grid[i], self.grid_to_xy(i)[0],
- self.grid_to_xy(i)[1])
- else: # Leave a blank row for extra cards at the bottom.
- self.grid[i] = None
+ if not deck.empty():
+ self.grid[i] = deck.deal_next_card()
+ self.place_a_card(self.grid[i], self.grid_to_xy(i)[0],
+ self.grid_to_xy(i)[1])
def deal_extra_cards(self, deck):
""" Add cards to the bottom row when there is no match.
diff --git a/icons/level2.svg b/icons/level2.svg
index f39695c..ff4e7a6 100644
--- a/icons/level2.svg
+++ b/icons/level2.svg
@@ -19,8 +19,11 @@
y="2.0295029"
id="rect2817"
style="fill:#000000;fill-opacity:1;stroke:#808080;stroke-width:4.05900621;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
- <path
- d="m 12.5,27.5 15,-15 15,15 -15,15 -15,-15 z"
- id="path2821"
- style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1.5px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <rect
+ width="25"
+ height="25"
+ x="15"
+ y="15"
+ id="rect2816"
+ style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none" />
</svg>
diff --git a/icons/level3.svg b/icons/level3.svg
new file mode 100644
index 0000000..f39695c
--- /dev/null
+++ b/icons/level3.svg
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ version="1.0"
+ width="55"
+ height="55"
+ id="svg2">
+ <defs
+ id="defs4" />
+ <rect
+ width="50.94099"
+ height="50.940994"
+ rx="8.1506357"
+ ry="7.0263433"
+ x="2.0295048"
+ y="2.0295029"
+ id="rect2817"
+ style="fill:#000000;fill-opacity:1;stroke:#808080;stroke-width:4.05900621;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ d="m 12.5,27.5 15,-15 15,15 -15,15 -15,-15 z"
+ id="path2821"
+ style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1.5px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+</svg>
diff --git a/po/VisualMatch.pot b/po/VisualMatch.pot
index 7b38006..0ac1368 100755
--- a/po/VisualMatch.pot
+++ b/po/VisualMatch.pot
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-01-14 17:16+0000\n"
+"POT-Creation-Date: 2010-07-07 21:57-0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -16,199 +16,195 @@ msgstr ""
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
-#: activity/activity.info:2 /home/walter/Desktop/set/visualmatch.py:36
-#: /home/walter/Desktop/set/game.py:407
+#: activity/activity.info:2 /home/walter/Desktop/set/visualmatch.py:35
+#: /home/walter/Desktop/set/game.py:408
msgid "Visual Match"
msgstr ""
-#: /home/walter/Desktop/set/constants.py:57
+#: /home/walter/Desktop/set/constants.py:58
msgid "five"
msgstr ""
-#: /home/walter/Desktop/set/constants.py:57
+#: /home/walter/Desktop/set/constants.py:58
msgid "seven"
msgstr ""
-#: /home/walter/Desktop/set/constants.py:57
+#: /home/walter/Desktop/set/constants.py:58
msgid "eleven"
msgstr ""
-#: /home/walter/Desktop/set/constants.py:57
+#: /home/walter/Desktop/set/constants.py:58
msgid "ten"
msgstr ""
-#: /home/walter/Desktop/set/constants.py:58
+#: /home/walter/Desktop/set/constants.py:59
msgid "fourteen"
msgstr ""
-#: /home/walter/Desktop/set/constants.py:58
+#: /home/walter/Desktop/set/constants.py:59
msgid "fifteen"
msgstr ""
-#: /home/walter/Desktop/set/constants.py:58
+#: /home/walter/Desktop/set/constants.py:59
msgid "twenty two"
msgstr ""
-#: /home/walter/Desktop/set/constants.py:59
+#: /home/walter/Desktop/set/constants.py:60
msgid "twenty one"
msgstr ""
-#: /home/walter/Desktop/set/constants.py:59
+#: /home/walter/Desktop/set/constants.py:60
msgid "thirty three"
msgstr ""
-#: /home/walter/Desktop/set/visualmatch.py:37
+#: /home/walter/Desktop/set/visualmatch.py:36
msgid "Click on cards to create sets of three."
msgstr ""
-#: /home/walter/Desktop/set/visualmatch.py:47
+#: /home/walter/Desktop/set/visualmatch.py:40
msgid "Toggle level"
msgstr ""
-#: /home/walter/Desktop/set/visualmatch.py:56
-#: /home/walter/Desktop/set/VisualMatchActivity.py:257
-#: /home/walter/Desktop/set/VisualMatchActivity.py:913
+#: /home/walter/Desktop/set/visualmatch.py:49
+#: /home/walter/Desktop/set/VisualMatchActivity.py:341
msgid "New pattern game"
msgstr ""
-#: /home/walter/Desktop/set/visualmatch.py:60
-#: /home/walter/Desktop/set/VisualMatchActivity.py:264
-#: /home/walter/Desktop/set/VisualMatchActivity.py:920
+#: /home/walter/Desktop/set/visualmatch.py:53
+#: /home/walter/Desktop/set/VisualMatchActivity.py:345
msgid "New number game"
msgstr ""
-#: /home/walter/Desktop/set/visualmatch.py:64
-#: /home/walter/Desktop/set/VisualMatchActivity.py:271
-#: /home/walter/Desktop/set/VisualMatchActivity.py:927
+#: /home/walter/Desktop/set/visualmatch.py:57
+#: /home/walter/Desktop/set/VisualMatchActivity.py:349
msgid "New word game"
msgstr ""
-#: /home/walter/Desktop/set/visualmatch.py:73
+#: /home/walter/Desktop/set/visualmatch.py:66
msgid "Robot on/off"
msgstr ""
-#: /home/walter/Desktop/set/visualmatch.py:77
+#: /home/walter/Desktop/set/visualmatch.py:70
msgid "90 sec."
msgstr ""
-#: /home/walter/Desktop/set/visualmatch.py:81
+#: /home/walter/Desktop/set/visualmatch.py:74
msgid "60 sec."
msgstr ""
-#: /home/walter/Desktop/set/visualmatch.py:85
+#: /home/walter/Desktop/set/visualmatch.py:78
msgid "45 sec."
msgstr ""
-#: /home/walter/Desktop/set/visualmatch.py:89
+#: /home/walter/Desktop/set/visualmatch.py:82
msgid "30 sec."
msgstr ""
-#: /home/walter/Desktop/set/visualmatch.py:93
+#: /home/walter/Desktop/set/visualmatch.py:86
msgid "15 sec."
msgstr ""
-#: /home/walter/Desktop/set/visualmatch.py:102
+#: /home/walter/Desktop/set/visualmatch.py:95
msgid "Product"
msgstr ""
-#: /home/walter/Desktop/set/visualmatch.py:106
+#: /home/walter/Desktop/set/visualmatch.py:99
msgid "Roman"
msgstr ""
-#: /home/walter/Desktop/set/visualmatch.py:110
+#: /home/walter/Desktop/set/visualmatch.py:103
msgid "Word"
msgstr ""
-#: /home/walter/Desktop/set/visualmatch.py:114
-#: /home/walter/Desktop/set/VisualMatchActivity.py:364
+#: /home/walter/Desktop/set/visualmatch.py:107
+#: /home/walter/Desktop/set/VisualMatchActivity.py:383
msgid "Chinese"
msgstr ""
-#: /home/walter/Desktop/set/visualmatch.py:118
-#: /home/walter/Desktop/set/VisualMatchActivity.py:370
+#: /home/walter/Desktop/set/visualmatch.py:111
+#: /home/walter/Desktop/set/VisualMatchActivity.py:387
msgid "Mayan"
msgstr ""
-#: /home/walter/Desktop/set/visualmatch.py:122
+#: /home/walter/Desktop/set/visualmatch.py:115
msgid "Hash"
msgstr ""
-#: /home/walter/Desktop/set/visualmatch.py:126
+#: /home/walter/Desktop/set/visualmatch.py:119
msgid "Dice"
msgstr ""
-#: /home/walter/Desktop/set/visualmatch.py:130
+#: /home/walter/Desktop/set/visualmatch.py:123
msgid "Dots"
msgstr ""
-#: /home/walter/Desktop/set/visualmatch.py:134
+#: /home/walter/Desktop/set/visualmatch.py:127
msgid "Star"
msgstr ""
-#: /home/walter/Desktop/set/visualmatch.py:138
+#: /home/walter/Desktop/set/visualmatch.py:131
msgid "Lines"
msgstr ""
-#: /home/walter/Desktop/set/visualmatch.py:180
-#: /home/walter/Desktop/set/VisualMatchActivity.py:208
+#: /home/walter/Desktop/set/visualmatch.py:171
+#: /home/walter/Desktop/set/VisualMatchActivity.py:255
msgid "mouse"
msgstr ""
-#: /home/walter/Desktop/set/visualmatch.py:180
-#: /home/walter/Desktop/set/VisualMatchActivity.py:208
+#: /home/walter/Desktop/set/visualmatch.py:171
+#: /home/walter/Desktop/set/VisualMatchActivity.py:255
msgid "cat"
msgstr ""
-#: /home/walter/Desktop/set/visualmatch.py:180
-#: /home/walter/Desktop/set/VisualMatchActivity.py:208
+#: /home/walter/Desktop/set/visualmatch.py:171
+#: /home/walter/Desktop/set/VisualMatchActivity.py:255
msgid "dog"
msgstr ""
-#: /home/walter/Desktop/set/visualmatch.py:181
-#: /home/walter/Desktop/set/VisualMatchActivity.py:209
+#: /home/walter/Desktop/set/visualmatch.py:172
+#: /home/walter/Desktop/set/VisualMatchActivity.py:256
msgid "cheese"
msgstr ""
-#: /home/walter/Desktop/set/visualmatch.py:181
-#: /home/walter/Desktop/set/VisualMatchActivity.py:209
+#: /home/walter/Desktop/set/visualmatch.py:172
+#: /home/walter/Desktop/set/VisualMatchActivity.py:256
msgid "apple"
msgstr ""
-#: /home/walter/Desktop/set/visualmatch.py:181
-#: /home/walter/Desktop/set/VisualMatchActivity.py:209
+#: /home/walter/Desktop/set/visualmatch.py:172
+#: /home/walter/Desktop/set/VisualMatchActivity.py:256
msgid "bread"
msgstr ""
-#: /home/walter/Desktop/set/visualmatch.py:182
-#: /home/walter/Desktop/set/VisualMatchActivity.py:210
+#: /home/walter/Desktop/set/visualmatch.py:173
+#: /home/walter/Desktop/set/VisualMatchActivity.py:257
msgid "moon"
msgstr ""
-#: /home/walter/Desktop/set/visualmatch.py:182
-#: /home/walter/Desktop/set/VisualMatchActivity.py:210
+#: /home/walter/Desktop/set/visualmatch.py:173
+#: /home/walter/Desktop/set/VisualMatchActivity.py:257
msgid "sun"
msgstr ""
-#: /home/walter/Desktop/set/visualmatch.py:182
-#: /home/walter/Desktop/set/VisualMatchActivity.py:210
+#: /home/walter/Desktop/set/visualmatch.py:173
+#: /home/walter/Desktop/set/VisualMatchActivity.py:257
msgid "earth"
msgstr ""
-#: /home/walter/Desktop/set/game.py:188
+#: /home/walter/Desktop/set/game.py:195
msgid "Edit the word cards."
msgstr ""
-#: /home/walter/Desktop/set/game.py:266
+#: /home/walter/Desktop/set/game.py:270
msgid "Game over"
msgstr ""
-#: /home/walter/Desktop/set/game.py:293 /home/walter/Desktop/set/game.py:378
-#: /home/walter/Desktop/set/VisualMatchActivity.py:422
-#: /home/walter/Desktop/set/VisualMatchActivity.py:940
+#: /home/walter/Desktop/set/game.py:297 /home/walter/Desktop/set/game.py:378
+#: /home/walter/Desktop/set/VisualMatchActivity.py:419
msgid "cards"
msgstr ""
-#: /home/walter/Desktop/set/game.py:304
+#: /home/walter/Desktop/set/game.py:308
msgid "New record"
msgstr ""
@@ -217,88 +213,86 @@ msgid "match"
msgstr ""
#: /home/walter/Desktop/set/game.py:391 /home/walter/Desktop/set/game.py:393
-#: /home/walter/Desktop/set/VisualMatchActivity.py:432
-#: /home/walter/Desktop/set/VisualMatchActivity.py:952
+#: /home/walter/Desktop/set/VisualMatchActivity.py:421
msgid "matches"
msgstr ""
-#: /home/walter/Desktop/set/VisualMatchActivity.py:71
+#: /home/walter/Desktop/set/VisualMatchActivity.py:59
msgid "beginner"
msgstr ""
-#: /home/walter/Desktop/set/VisualMatchActivity.py:71
+#: /home/walter/Desktop/set/VisualMatchActivity.py:59
msgid "expert"
msgstr ""
-#: /home/walter/Desktop/set/VisualMatchActivity.py:113
-#: /home/walter/Desktop/set/VisualMatchActivity.py:287
-#: /home/walter/Desktop/set/VisualMatchActivity.py:780
+#: /home/walter/Desktop/set/VisualMatchActivity.py:154
msgid "Play with the computer."
msgstr ""
-#: /home/walter/Desktop/set/VisualMatchActivity.py:118
+#: /home/walter/Desktop/set/VisualMatchActivity.py:159
msgid "Stop playing with the computer."
msgstr ""
-#: /home/walter/Desktop/set/VisualMatchActivity.py:311
-#: /home/walter/Desktop/set/VisualMatchActivity.py:807
+#: /home/walter/Desktop/set/VisualMatchActivity.py:333
+msgid "Game"
+msgstr ""
+
+#: /home/walter/Desktop/set/VisualMatchActivity.py:334
+msgid "Tools"
+msgstr ""
+
+#: /home/walter/Desktop/set/VisualMatchActivity.py:335
+msgid "Numbers"
+msgstr ""
+
+#: /home/walter/Desktop/set/VisualMatchActivity.py:355
+msgid "Play with the computer"
+msgstr ""
+
+#: /home/walter/Desktop/set/VisualMatchActivity.py:362
msgid "Set difficulty level."
msgstr ""
-#: /home/walter/Desktop/set/VisualMatchActivity.py:329
-#: /home/walter/Desktop/set/VisualMatchActivity.py:828
+#: /home/walter/Desktop/set/VisualMatchActivity.py:368
msgid "Edit word lists."
msgstr ""
-#: /home/walter/Desktop/set/VisualMatchActivity.py:346
+#: /home/walter/Desktop/set/VisualMatchActivity.py:371
msgid "product"
msgstr ""
-#: /home/walter/Desktop/set/VisualMatchActivity.py:352
+#: /home/walter/Desktop/set/VisualMatchActivity.py:375
msgid "Roman numerals"
msgstr ""
-#: /home/walter/Desktop/set/VisualMatchActivity.py:358
+#: /home/walter/Desktop/set/VisualMatchActivity.py:379
msgid "word"
msgstr ""
-#: /home/walter/Desktop/set/VisualMatchActivity.py:382
+#: /home/walter/Desktop/set/VisualMatchActivity.py:392
msgid "hash marks"
msgstr ""
-#: /home/walter/Desktop/set/VisualMatchActivity.py:388
+#: /home/walter/Desktop/set/VisualMatchActivity.py:396
msgid "dots in a circle"
msgstr ""
-#: /home/walter/Desktop/set/VisualMatchActivity.py:394
+#: /home/walter/Desktop/set/VisualMatchActivity.py:400
msgid "points on a star"
msgstr ""
-#: /home/walter/Desktop/set/VisualMatchActivity.py:400
+#: /home/walter/Desktop/set/VisualMatchActivity.py:404
msgid "dice"
msgstr ""
-#: /home/walter/Desktop/set/VisualMatchActivity.py:406
+#: /home/walter/Desktop/set/VisualMatchActivity.py:408
msgid "dots in a line"
msgstr ""
-#: /home/walter/Desktop/set/VisualMatchActivity.py:452
-#: /home/walter/Desktop/set/VisualMatchActivity.py:976
+#: /home/walter/Desktop/set/VisualMatchActivity.py:415
msgid "Find a match."
msgstr ""
-#: /home/walter/Desktop/set/VisualMatchActivity.py:476
-msgid "Game"
-msgstr ""
-
-#: /home/walter/Desktop/set/VisualMatchActivity.py:478
-msgid "Tools"
-msgstr ""
-
-#: /home/walter/Desktop/set/VisualMatchActivity.py:480
-msgid "Numbers"
-msgstr ""
-
#: /home/walter/Desktop/set/namingalert.py:82
msgid "Describe your activity"
msgstr ""