diff options
author | Walter Bender <walter@sugarlabs.org> | 2010-07-10 21:26:41 (GMT) |
---|---|---|
committer | Walter Bender <walter@sugarlabs.org> | 2010-07-10 21:26:41 (GMT) |
commit | 736e76751c387bafcc0ca1c312558bbae2935ca6 (patch) | |
tree | 1da141e2601fb381d1b942f22237cb29a462a741 | |
parent | 6621b16ae1687be9588005fb6ec4bb951f46a882 (diff) |
added beginner level
-rw-r--r-- | VisualMatchActivity.py | 49 | ||||
-rw-r--r-- | constants.py | 1 | ||||
-rw-r--r-- | deck.py | 20 | ||||
-rw-r--r-- | game.py | 11 | ||||
-rw-r--r-- | grid.py | 10 | ||||
-rw-r--r-- | icons/level2.svg | 11 | ||||
-rw-r--r-- | icons/level3.svg | 26 | ||||
-rwxr-xr-x | po/VisualMatch.pot | 192 |
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" @@ -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, @@ -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): @@ -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 "" |