[Tux4kids-commits] r1489 - in tuxmath/trunk: . data data/images/comets data/images/sprites data/images/status data/missions/multiplay doc intl linebreak nsis po src

David Bruce dbruce-guest at alioth.debian.org
Sat Sep 5 02:31:44 UTC 2009


Author: dbruce-guest
Date: 2009-09-05 02:31:43 +0000 (Sat, 05 Sep 2009)
New Revision: 1489

Added:
   tuxmath/trunk/Info.plist
   tuxmath/trunk/data/images/sprites/lan2.png
   tuxmath/trunk/data/images/sprites/lan3.png
   tuxmath/trunk/intl/Makefile.in
   tuxmath/trunk/server/
   tuxmath/trunk/src/mathcards.c
   tuxmath/trunk/src/mathcards.h
   tuxmath/trunk/src/network.h
   tuxmath/trunk/src/throttle.c
   tuxmath/trunk/src/throttle.h
   tuxmath/trunk/src/transtruct.h
Removed:
   tuxmath/trunk/nsis/tuxmath.nsi
   tuxmath/trunk/nsis/tuxmath_with_conf.nsi
   tuxmath/trunk/src/mathcards.c
   tuxmath/trunk/src/mathcards.h
Modified:
   tuxmath/trunk/
   tuxmath/trunk/CMakeLists.txt
   tuxmath/trunk/Makefile.am
   tuxmath/trunk/configure.ac
   tuxmath/trunk/data/
   tuxmath/trunk/data/images/comets/Makefile.am
   tuxmath/trunk/data/images/status/Makefile.am
   tuxmath/trunk/data/missions/multiplay/ace
   tuxmath/trunk/data/missions/multiplay/commando
   tuxmath/trunk/data/missions/multiplay/scout
   tuxmath/trunk/doc/
   tuxmath/trunk/doc/changelog
   tuxmath/trunk/linebreak/
   tuxmath/trunk/po/
   tuxmath/trunk/po/ar.gmo
   tuxmath/trunk/po/ar.po
   tuxmath/trunk/po/cs.gmo
   tuxmath/trunk/po/cs.po
   tuxmath/trunk/po/de.gmo
   tuxmath/trunk/po/de.po
   tuxmath/trunk/po/en at boldquot.gmo
   tuxmath/trunk/po/en at boldquot.po
   tuxmath/trunk/po/en at quot.gmo
   tuxmath/trunk/po/en at quot.po
   tuxmath/trunk/po/en_GB.gmo
   tuxmath/trunk/po/en_GB.po
   tuxmath/trunk/po/es.gmo
   tuxmath/trunk/po/es.po
   tuxmath/trunk/po/fi.gmo
   tuxmath/trunk/po/fi.po
   tuxmath/trunk/po/fr.gmo
   tuxmath/trunk/po/fr.po
   tuxmath/trunk/po/ga.gmo
   tuxmath/trunk/po/ga.po
   tuxmath/trunk/po/he.gmo
   tuxmath/trunk/po/he.po
   tuxmath/trunk/po/hu.gmo
   tuxmath/trunk/po/hu.po
   tuxmath/trunk/po/it.gmo
   tuxmath/trunk/po/it.po
   tuxmath/trunk/po/ja.gmo
   tuxmath/trunk/po/ja.po
   tuxmath/trunk/po/nb.gmo
   tuxmath/trunk/po/nb.po
   tuxmath/trunk/po/nl.gmo
   tuxmath/trunk/po/nl.po
   tuxmath/trunk/po/nn.gmo
   tuxmath/trunk/po/nn.po
   tuxmath/trunk/po/oc.gmo
   tuxmath/trunk/po/oc.po
   tuxmath/trunk/po/pl.gmo
   tuxmath/trunk/po/pl.po
   tuxmath/trunk/po/pt.gmo
   tuxmath/trunk/po/pt.po
   tuxmath/trunk/po/pt_BR.gmo
   tuxmath/trunk/po/pt_BR.po
   tuxmath/trunk/po/ru.gmo
   tuxmath/trunk/po/ru.po
   tuxmath/trunk/po/sk.gmo
   tuxmath/trunk/po/sk.po
   tuxmath/trunk/po/sv.gmo
   tuxmath/trunk/po/sv.po
   tuxmath/trunk/po/tr.gmo
   tuxmath/trunk/po/tr.po
   tuxmath/trunk/po/tuxmath.pot
   tuxmath/trunk/po/zh_CN.gmo
   tuxmath/trunk/po/zh_CN.po
   tuxmath/trunk/src/
   tuxmath/trunk/src/Makefile.am
   tuxmath/trunk/src/game.c
   tuxmath/trunk/src/globals.h
   tuxmath/trunk/src/highscore.c
   tuxmath/trunk/src/highscore.h
   tuxmath/trunk/src/network.c
   tuxmath/trunk/src/options.c
   tuxmath/trunk/src/options.h
   tuxmath/trunk/tuxmath.desktop
Log:
Merge of lan branch into trunk, with fix of enough bugs to allow make, make install, make distcheck, and running of program.
Still needs functioning lan menu entry in new menu system.




Property changes on: tuxmath/trunk
___________________________________________________________________
Modified: svn:ignore
   - *~
*.o
CMakeFiles
Makefile
Makefile.in
autom4te.cache
configure
config.h
config.h.in
config.log
config.status
autoscan.log
aclocal.m4
tuxmath.spec
tuxmath_preview.spec
stamp-h1

   + *~
*.o
Makefile
Makefile.in
autom4te.cache
configure
config.h
config.h.in
config.log
config.status
autoscan.log


Modified: tuxmath/trunk/CMakeLists.txt
===================================================================
--- tuxmath/trunk/CMakeLists.txt	2009-09-04 19:47:19 UTC (rev 1488)
+++ tuxmath/trunk/CMakeLists.txt	2009-09-05 02:31:43 UTC (rev 1489)
@@ -119,6 +119,7 @@
   endif(RSVG_FOUND)
 endif(PKG_CONFIG_FOUND)
 
+
 ## Run configure checks
 if (TUXMATH_BUILD_INTL)
   include(ConfigureChecksIntl)

Added: tuxmath/trunk/Info.plist
===================================================================
--- tuxmath/trunk/Info.plist	                        (rev 0)
+++ tuxmath/trunk/Info.plist	2009-09-05 02:31:43 UTC (rev 1489)
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>CFBundleDevelopmentRegion</key>
+	<string>English</string>
+	<key>CFBundleExecutable</key>
+	<string>tuxmath</string>
+	<key>CFBundleIconFile</key>
+	<string>tuxmath.icns</string>
+	<key>CFBundleIdentifier</key>
+	<string>application/x-vnd.tuxmath.oxyd</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>6.0</string>
+	<key>CFBundleName</key>
+	<string>TuxMath</string>
+	<key>CFBundlePackageType</key>
+	<string>APPL</string>
+	<key>CFBundleSignature</key>
+	<string>????</string>
+	<key>CFBundleVersion</key>
+	<string>0.80</string>
+	<key>NSMainNibFile</key>
+	<string>SDLMain</string>
+	<key>NSPrincipalClass</key>
+	<string>NSApplication</string>
+</dict>
+</plist>

Modified: tuxmath/trunk/Makefile.am
===================================================================
--- tuxmath/trunk/Makefile.am	2009-09-04 19:47:19 UTC (rev 1488)
+++ tuxmath/trunk/Makefile.am	2009-09-05 02:31:43 UTC (rev 1489)
@@ -12,6 +12,7 @@
 	intl	\
 	linebreak \
 	po	\
+	server	\
 	src
 
 ACLOCAL_AMFLAGS = -I m4

Modified: tuxmath/trunk/configure.ac
===================================================================
--- tuxmath/trunk/configure.ac	2009-09-04 19:47:19 UTC (rev 1488)
+++ tuxmath/trunk/configure.ac	2009-09-05 02:31:43 UTC (rev 1489)
@@ -89,6 +89,23 @@
              ,
              [AC_MSG_ERROR([SDL_mixer not found! http://www.libsdl.org/projects/SDL_mixer])])
 
+dnl SDL_Net is enabled by default 
+dnl unless SDL_net is disabled at configure time.
+
+AC_ARG_WITH([sdlnet],
+            [AS_HELP_STRING([--without-sdlnet],[don't use SDL_Net even if available])],
+            [with_sdlnet=no],
+            [with_sdlnet=yes])
+
+if test "x$with_sdlnet" != xno; then
+AC_CHECK_LIB([SDL_net],
+             [SDLNet_Init],
+             ,
+             [with_sdlnet=no;
+              AC_MSG_FAILURE([SDL_Net test failed (--without-sdlnet to disable LAN support)])])
+fi
+
+
 dnl SDL_Pango is enabled by default.
 dnl If SDL_Pango disabled at configure time, or if we can't find it,
 dnl we look for SDL_ttf:
@@ -143,6 +160,18 @@
   AC_DEFINE([HAVE_RSVG],[1],[Define to 1 if you have the `libRSVG` library])
 fi
 
+if test "x$with_rsvg" = xyes; then
+  CAIRO_CFLAGS=""
+  CAIRO_LIBS=""
+  PKG_CHECK_MODULES([CAIRO],
+                    [cairo >= 1.4.10],
+                    ,
+                    [AC_MSG_FAILURE([cairo test failed (--without-rsvg to disable svg support)])])
+  CFLAGS="$CFLAGS $CAIRO_CFLAGS"
+  LIBS="$LIBS $CAIRO_LIBS"
+  AC_DEFINE([HAVE_RSVG],[1],[Define to 1 if you have the `libRSVG` library])
+fi
+
 dnl Check for (somewhat) higher-level math functions - needed for SDL_extras
 dnl AC_CHECK_LIB([m],
 dnl              [csin],
@@ -150,6 +179,7 @@
 dnl              [AC_MSG_ERROR([Math library not found - functions in <math.h> may not be available.])])
 
 
+
 # --------------------------------------------------------------------------------------
 # Checks for header files.
 # --------------------------------------------------------------------------------------
@@ -278,6 +308,7 @@
 doc/Makefile
 nsis/tuxmath.nsi
 nsis/tuxmath_with_conf.nsi
+server/Makefile
 src/Makefile
 intl/Makefile
 linebreak/Makefile


Property changes on: tuxmath/trunk/data
___________________________________________________________________
Modified: svn:ignore
   - *~
*.o
CMakeFiles
Makefile
Makefile.in

   + *~
*.o
Makefile
Makefile.in


Modified: tuxmath/trunk/data/images/comets/Makefile.am
===================================================================
--- tuxmath/trunk/data/images/comets/Makefile.am	2009-09-04 19:47:19 UTC (rev 1488)
+++ tuxmath/trunk/data/images/comets/Makefile.am	2009-09-05 02:31:43 UTC (rev 1489)
@@ -24,3 +24,4 @@
   mini_comet1.png \
   mini_comet2.png \
   mini_comet3.png
+

Copied: tuxmath/trunk/data/images/sprites/lan2.png (from rev 1488, tuxmath/branches/lan/data/images/sprites/lan2.png)
===================================================================
(Binary files differ)

Copied: tuxmath/trunk/data/images/sprites/lan3.png (from rev 1488, tuxmath/branches/lan/data/images/sprites/lan3.png)
===================================================================
(Binary files differ)

Modified: tuxmath/trunk/data/images/status/Makefile.am
===================================================================
--- tuxmath/trunk/data/images/status/Makefile.am	2009-09-04 19:47:19 UTC (rev 1488)
+++ tuxmath/trunk/data/images/status/Makefile.am	2009-09-05 02:31:43 UTC (rev 1489)
@@ -1,4 +1,3 @@
-## Makefile.am for tuxmath data/images/status:
 ## Process with AutoMake:
 
 statusdir = $(pkgdatadir)/images/status

Modified: tuxmath/trunk/data/missions/multiplay/ace
===================================================================
--- tuxmath/trunk/data/missions/multiplay/ace	2009-09-04 19:47:19 UTC (rev 1488)
+++ tuxmath/trunk/data/missions/multiplay/ace	2009-09-05 02:31:43 UTC (rev 1489)
@@ -59,4 +59,3 @@
 bonus_comet_interval = 20
 allow_pause = 0
 bonus_speed_ratio = 2.0
-

Modified: tuxmath/trunk/data/missions/multiplay/commando
===================================================================
--- tuxmath/trunk/data/missions/multiplay/commando	2009-09-04 19:47:19 UTC (rev 1488)
+++ tuxmath/trunk/data/missions/multiplay/commando	2009-09-05 02:31:43 UTC (rev 1489)
@@ -58,4 +58,3 @@
 bonus_comet_interval = 20
 allow_pause = 0
 bonus_speed_ratio = 2.0
-

Modified: tuxmath/trunk/data/missions/multiplay/scout
===================================================================
--- tuxmath/trunk/data/missions/multiplay/scout	2009-09-04 19:47:19 UTC (rev 1488)
+++ tuxmath/trunk/data/missions/multiplay/scout	2009-09-05 02:31:43 UTC (rev 1489)
@@ -47,4 +47,3 @@
 bonus_comet_interval = 10
 allow_pause = 0
 bonus_speed_ratio = 1.5
-


Property changes on: tuxmath/trunk/doc
___________________________________________________________________
Modified: svn:ignore
   - *~
*.o
CMakeFiles
Makefile
Makefile.in

   + *~
*.o
Makefile
Makefile.in


Modified: tuxmath/trunk/doc/changelog
===================================================================
--- tuxmath/trunk/doc/changelog	2009-09-04 19:47:19 UTC (rev 1488)
+++ tuxmath/trunk/doc/changelog	2009-09-05 02:31:43 UTC (rev 1489)
@@ -1,3 +1,17 @@
+2009.Sep.04 (svn.debian.org/tux4kids - revision 1489)
+        LAN project branch merged back into trunk.
+	Graphical LAN play tested and functional in branch prior to merge.
+	New menu entry code for LAN game needs to be written to actually use LAN mode
+	in trunk build.
+
+	David Bruce <davidstuartbruce at gmail.com>
+
+2009.Jul.03 (svn.debian.org/tux4kids - revision 1141)
+        LAN project - basic TCP/IP server and test client implemented in branches/lan.
+        The client and server provide multiplayer command-line tuxmath over tcp.
+        Akash Gangil <akashg1611 at gmail.com>
+	David Bruce <davidstuartbruce at gmail.com>
+
 2009.Jun.24 (svn.debian.org/tux4kids - revision xxx)
         i18n - new languages from launchpad.
         Asturian by Xuacu
@@ -10,10 +24,6 @@
 2009.Mar.12 (svn.debian.org/tux4kids - revision 954
 	one-liner tweak of campaign.c to fix display problem in scrolling text
         that strangely is only apparent in Windows and Mac
-
-	David Bruce <davidstuartbruce at gmail.com>
-
-
 2009.Mar.12 (svn.debian.org/tux4kids - revision 937)
 Version 1.7.2
         Build- some minor tweaks to tuxmath.desktop and specfiles.

Copied: tuxmath/trunk/intl/Makefile.in (from rev 1488, tuxmath/branches/lan/intl/Makefile.in)
===================================================================
--- tuxmath/trunk/intl/Makefile.in	                        (rev 0)
+++ tuxmath/trunk/intl/Makefile.in	2009-09-05 02:31:43 UTC (rev 1489)
@@ -0,0 +1,587 @@
+# Makefile for directory with message catalog handling library of GNU gettext
+# Copyright (C) 1995-1998, 2000-2007 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Library General Public License as published
+# by the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Library General Public License for more details.
+#
+# You should have received a copy of the GNU Library General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+# USA.
+
+PACKAGE = @PACKAGE@
+VERSION = @VERSION@
+
+SHELL = /bin/sh
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+top_builddir = ..
+
+# The VPATH variables allows builds with $builddir != $srcdir, assuming a
+# 'make' program that supports VPATH (such as GNU make). This line is removed
+# by autoconf automatically when "$(srcdir)" = ".".
+# In this directory, the VPATH handling is particular:
+# 1. If INTL_LIBTOOL_SUFFIX_PREFIX is 'l' (indicating a build with libtool),
+#    the .c -> .lo rules carefully use $(srcdir), so that VPATH can be omitted.
+# 2. If PACKAGE = gettext-tools, VPATH _must_ be omitted, because otherwise
+#    'make' does the wrong thing if GNU gettext was configured with
+#    "./configure --srcdir=`pwd`", namely it gets confused by the .lo and .la
+#    files it finds in srcdir = ../../gettext-runtime/intl.
+VPATH = $(srcdir)
+
+prefix = @prefix@
+exec_prefix = @exec_prefix@
+transform = @program_transform_name@
+libdir = @libdir@
+includedir = @includedir@
+datarootdir = @datarootdir@
+datadir = @datadir@
+localedir = $(datadir)/locale
+gettextsrcdir = $(datadir)/gettext/intl
+aliaspath = $(localedir)
+subdir = intl
+
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+
+# We use $(mkdir_p).
+# In automake <= 1.9.x, $(mkdir_p) is defined either as "mkdir -p --" or as
+# "$(mkinstalldirs)" or as "$(install_sh) -d". For these automake versions,
+# @install_sh@ does not start with $(SHELL), so we add it.
+# In automake >= 1.10, @mkdir_p@ is derived from ${MKDIR_P}, which is defined
+# either as "/path/to/mkdir -p" or ".../install-sh -c -d". For these automake
+# versions, $(mkinstalldirs) and $(install_sh) are unused.
+mkinstalldirs = $(SHELL) @install_sh@ -d
+install_sh = $(SHELL) @install_sh@
+MKDIR_P = @MKDIR_P@
+mkdir_p = @mkdir_p@
+
+l = @INTL_LIBTOOL_SUFFIX_PREFIX@
+
+AR = ar
+CC = @CC@
+LIBTOOL = @LIBTOOL@
+RANLIB = @RANLIB@
+YACC = @INTLBISON@ -y -d
+YFLAGS = --name-prefix=__gettext
+WINDRES = @WINDRES@
+
+# -DBUILDING_LIBINTL: Change expansion of LIBINTL_DLL_EXPORTED macro.
+# -DBUILDING_DLL: Change expansion of RELOCATABLE_DLL_EXPORTED macro.
+DEFS = -DLOCALEDIR=\"$(localedir)\" -DLOCALE_ALIAS_PATH=\"$(aliaspath)\" \
+-DLIBDIR=\"$(libdir)\" -DBUILDING_LIBINTL -DBUILDING_DLL -DIN_LIBINTL \
+-DENABLE_RELOCATABLE=1 -DIN_LIBRARY -DINSTALLDIR=\"$(libdir)\" -DNO_XMALLOC \
+-Dset_relocation_prefix=libintl_set_relocation_prefix \
+-Drelocate=libintl_relocate \
+-DDEPENDS_ON_LIBICONV=1 @DEFS@
+CPPFLAGS = @CPPFLAGS@
+CFLAGS = @CFLAGS@ @CFLAG_VISIBILITY@
+LDFLAGS = @LDFLAGS@ $(LDFLAGS_ at WOE32DLL@)
+LDFLAGS_yes = -Wl,--export-all-symbols
+LDFLAGS_no =
+LIBS = @LIBS@
+
+COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS)
+
+HEADERS = \
+  gmo.h \
+  gettextP.h \
+  hash-string.h \
+  loadinfo.h \
+  plural-exp.h \
+  eval-plural.h \
+  localcharset.h \
+  lock.h \
+  relocatable.h \
+  tsearch.h tsearch.c \
+  xsize.h \
+  printf-args.h printf-args.c \
+  printf-parse.h wprintf-parse.h printf-parse.c \
+  vasnprintf.h vasnwprintf.h vasnprintf.c \
+  os2compat.h \
+  libgnuintl.h.in
+SOURCES = \
+  bindtextdom.c \
+  dcgettext.c \
+  dgettext.c \
+  gettext.c \
+  finddomain.c \
+  hash-string.c \
+  loadmsgcat.c \
+  localealias.c \
+  textdomain.c \
+  l10nflist.c \
+  explodename.c \
+  dcigettext.c \
+  dcngettext.c \
+  dngettext.c \
+  ngettext.c \
+  plural.y \
+  plural-exp.c \
+  localcharset.c \
+  lock.c \
+  relocatable.c \
+  langprefs.c \
+  localename.c \
+  log.c \
+  printf.c \
+  version.c \
+  osdep.c \
+  os2compat.c \
+  intl-exports.c \
+  intl-compat.c
+OBJECTS = \
+  bindtextdom.$lo \
+  dcgettext.$lo \
+  dgettext.$lo \
+  gettext.$lo \
+  finddomain.$lo \
+  hash-string.$lo \
+  loadmsgcat.$lo \
+  localealias.$lo \
+  textdomain.$lo \
+  l10nflist.$lo \
+  explodename.$lo \
+  dcigettext.$lo \
+  dcngettext.$lo \
+  dngettext.$lo \
+  ngettext.$lo \
+  plural.$lo \
+  plural-exp.$lo \
+  localcharset.$lo \
+  lock.$lo \
+  relocatable.$lo \
+  langprefs.$lo \
+  localename.$lo \
+  log.$lo \
+  printf.$lo \
+  version.$lo \
+  osdep.$lo \
+  intl-compat.$lo
+OBJECTS_RES_yes = libintl.res
+OBJECTS_RES_no =
+DISTFILES.common = Makefile.in \
+config.charset locale.alias ref-add.sin ref-del.sin export.h libintl.rc \
+$(HEADERS) $(SOURCES)
+DISTFILES.generated = plural.c
+DISTFILES.normal = VERSION
+DISTFILES.gettext = COPYING.LIB-2.0 COPYING.LIB-2.1 libintl.glibc README.woe32
+DISTFILES.obsolete = xopen-msg.sed linux-msg.sed po2tbl.sed.in cat-compat.c \
+COPYING.LIB-2 gettext.h libgettext.h plural-eval.c libgnuintl.h \
+libgnuintl.h_vms Makefile.vms libgnuintl.h.msvc-static \
+libgnuintl.h.msvc-shared Makefile.msvc
+
+all: all- at USE_INCLUDED_LIBINTL@
+all-yes: libintl.$la libintl.h charset.alias ref-add.sed ref-del.sed
+all-no: all-no- at BUILD_INCLUDED_LIBINTL@
+all-no-yes: libgnuintl.$la
+all-no-no:
+
+libintl.a libgnuintl.a: $(OBJECTS)
+	rm -f $@
+	$(AR) cru $@ $(OBJECTS)
+	$(RANLIB) $@
+
+libintl.la libgnuintl.la: $(OBJECTS) $(OBJECTS_RES_ at WOE32@)
+	$(LIBTOOL) --mode=link \
+	  $(CC) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS) $(LDFLAGS) -o $@ \
+	  $(OBJECTS) @LTLIBICONV@ @INTL_MACOSX_LIBS@ $(LIBS) @LTLIBTHREAD@ @LTLIBC@ \
+	  $(OBJECTS_RES_ at WOE32@) \
+	  -version-info $(LTV_CURRENT):$(LTV_REVISION):$(LTV_AGE) \
+	  -rpath $(libdir) \
+	  -no-undefined
+
+# Libtool's library version information for libintl.
+# Before making a gettext release, the gettext maintainer must change this
+# according to the libtool documentation, section "Library interface versions".
+# Maintainers of other packages that include the intl directory must *not*
+# change these values.
+LTV_CURRENT=8
+LTV_REVISION=2
+LTV_AGE=0
+
+.SUFFIXES:
+.SUFFIXES: .c .y .o .lo .sin .sed
+
+.c.o:
+	$(COMPILE) $<
+
+.y.c:
+	$(YACC) $(YFLAGS) --output $@ $<
+	rm -f $*.h
+
+bindtextdom.lo: $(srcdir)/bindtextdom.c
+	$(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/bindtextdom.c
+dcgettext.lo: $(srcdir)/dcgettext.c
+	$(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/dcgettext.c
+dgettext.lo: $(srcdir)/dgettext.c
+	$(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/dgettext.c
+gettext.lo: $(srcdir)/gettext.c
+	$(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/gettext.c
+finddomain.lo: $(srcdir)/finddomain.c
+	$(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/finddomain.c
+hash-string.lo: $(srcdir)/hash-string.c
+	$(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/hash-string.c
+loadmsgcat.lo: $(srcdir)/loadmsgcat.c
+	$(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/loadmsgcat.c
+localealias.lo: $(srcdir)/localealias.c
+	$(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/localealias.c
+textdomain.lo: $(srcdir)/textdomain.c
+	$(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/textdomain.c
+l10nflist.lo: $(srcdir)/l10nflist.c
+	$(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/l10nflist.c
+explodename.lo: $(srcdir)/explodename.c
+	$(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/explodename.c
+dcigettext.lo: $(srcdir)/dcigettext.c
+	$(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/dcigettext.c
+dcngettext.lo: $(srcdir)/dcngettext.c
+	$(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/dcngettext.c
+dngettext.lo: $(srcdir)/dngettext.c
+	$(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/dngettext.c
+ngettext.lo: $(srcdir)/ngettext.c
+	$(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/ngettext.c
+plural.lo: $(srcdir)/plural.c
+	$(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/plural.c
+plural-exp.lo: $(srcdir)/plural-exp.c
+	$(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/plural-exp.c
+localcharset.lo: $(srcdir)/localcharset.c
+	$(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/localcharset.c
+lock.lo: $(srcdir)/lock.c
+	$(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/lock.c
+relocatable.lo: $(srcdir)/relocatable.c
+	$(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/relocatable.c
+langprefs.lo: $(srcdir)/langprefs.c
+	$(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/langprefs.c
+localename.lo: $(srcdir)/localename.c
+	$(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/localename.c
+log.lo: $(srcdir)/log.c
+	$(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/log.c
+printf.lo: $(srcdir)/printf.c
+	$(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/printf.c
+version.lo: $(srcdir)/version.c
+	$(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/version.c
+osdep.lo: $(srcdir)/osdep.c
+	$(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/osdep.c
+intl-compat.lo: $(srcdir)/intl-compat.c
+	$(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/intl-compat.c
+
+# This rule is executed only on Woe32 systems.
+# The following sed expressions come from the windres-options script. They are
+# inlined here, so that they can be written in a Makefile without requiring a
+# temporary file. They must contain literal newlines rather than semicolons,
+# so that they work with the sed-3.02 that is shipped with MSYS. We can use
+# GNU bash's $'\n' syntax to obtain such a newline.
+libintl.res: $(srcdir)/libintl.rc
+	nl=$$'\n'; \
+	sed_extract_major='/^[0-9]/{'$${nl}'s/^\([0-9]*\).*/\1/p'$${nl}q$${nl}'}'$${nl}'c\'$${nl}0$${nl}q; \
+	sed_extract_minor='/^[0-9][0-9]*[.][0-9]/{'$${nl}'s/^[0-9]*[.]\([0-9]*\).*/\1/p'$${nl}q$${nl}'}'$${nl}'c\'$${nl}0$${nl}q; \
+	sed_extract_subminor='/^[0-9][0-9]*[.][0-9][0-9]*[.][0-9]/{'$${nl}'s/^[0-9]*[.][0-9]*[.]\([0-9]*\).*/\1/p'$${nl}q$${nl}'}'$${nl}'c\'$${nl}0$${nl}q; \
+	$(WINDRES) \
+	  "-DPACKAGE_VERSION_STRING=\\\"$(VERSION)\\\"" \
+	  "-DPACKAGE_VERSION_MAJOR="`echo '$(VERSION)' | sed -n -e "$$sed_extract_major"` \
+	  "-DPACKAGE_VERSION_MINOR="`echo '$(VERSION)' | sed -n -e "$$sed_extract_minor"` \
+	  "-DPACKAGE_VERSION_SUBMINOR="`echo '$(VERSION)' | sed -n -e "$$sed_extract_subminor"` \
+	  -i $(srcdir)/libintl.rc -o libintl.res --output-format=coff
+
+ref-add.sed: $(srcdir)/ref-add.sin
+	sed -e '/^#/d' -e 's/@''PACKAGE''@/@PACKAGE@/g' $(srcdir)/ref-add.sin > t-ref-add.sed
+	mv t-ref-add.sed ref-add.sed
+ref-del.sed: $(srcdir)/ref-del.sin
+	sed -e '/^#/d' -e 's/@''PACKAGE''@/@PACKAGE@/g' $(srcdir)/ref-del.sin > t-ref-del.sed
+	mv t-ref-del.sed ref-del.sed
+
+INCLUDES = -I. -I$(srcdir) -I..
+
+libgnuintl.h: $(srcdir)/libgnuintl.h.in
+	sed -e '/IN_LIBGLOCALE/d' \
+	    -e 's,@''HAVE_POSIX_PRINTF''@, at HAVE_POSIX_PRINTF@,g' \
+	    -e 's,@''HAVE_ASPRINTF''@, at HAVE_ASPRINTF@,g' \
+	    -e 's,@''HAVE_SNPRINTF''@, at HAVE_SNPRINTF@,g' \
+	    -e 's,@''HAVE_WPRINTF''@, at HAVE_WPRINTF@,g' \
+	  < $(srcdir)/libgnuintl.h.in \
+	| if test '@WOE32DLL@' = yes; then \
+	    sed -e 's/extern \([^()]*\);/extern __declspec (dllimport) \1;/'; \
+	  else \
+	    cat; \
+	  fi \
+	| sed -e 's/extern \([^"]\)/extern LIBINTL_DLL_EXPORTED \1/' \
+	      -e "/#define _LIBINTL_H/r $(srcdir)/export.h" \
+	| sed -e 's,@''HAVE_VISIBILITY''@, at HAVE_VISIBILITY@,g' \
+	  > libgnuintl.h
+
+libintl.h: $(srcdir)/libgnuintl.h.in
+	sed -e '/IN_LIBGLOCALE/d' \
+	    -e 's,@''HAVE_POSIX_PRINTF''@, at HAVE_POSIX_PRINTF@,g' \
+	    -e 's,@''HAVE_ASPRINTF''@, at HAVE_ASPRINTF@,g' \
+	    -e 's,@''HAVE_SNPRINTF''@, at HAVE_SNPRINTF@,g' \
+	    -e 's,@''HAVE_WPRINTF''@, at HAVE_WPRINTF@,g' \
+	  < $(srcdir)/libgnuintl.h.in > libintl.h
+
+charset.alias: $(srcdir)/config.charset
+	$(SHELL) $(srcdir)/config.charset '@host@' > t-$@
+	mv t-$@ $@
+
+check: all
+
+# We must not install the libintl.h/libintl.a files if we are on a
+# system which has the GNU gettext() function in its C library or in a
+# separate library.
+# If you want to use the one which comes with this version of the
+# package, you have to use `configure --with-included-gettext'.
+install: install-exec install-data
+install-exec: all
+	if { test "$(PACKAGE)" = "gettext-runtime" || test "$(PACKAGE)" = "gettext-tools"; } \
+	   && test '@USE_INCLUDED_LIBINTL@' = yes; then \
+	  $(mkdir_p) $(DESTDIR)$(libdir) $(DESTDIR)$(includedir); \
+	  $(INSTALL_DATA) libintl.h $(DESTDIR)$(includedir)/libintl.h; \
+	  $(LIBTOOL) --mode=install \
+	    $(INSTALL_DATA) libintl.$la $(DESTDIR)$(libdir)/libintl.$la; \
+	  if test "@RELOCATABLE@" = yes; then \
+	    dependencies=`sed -n -e 's,^dependency_libs=\(.*\),\1,p' < $(DESTDIR)$(libdir)/libintl.la | sed -e "s,^',," -e "s,'\$$,,"`; \
+	    if test -n "$$dependencies"; then \
+	      rm -f $(DESTDIR)$(libdir)/libintl.la; \
+	    fi; \
+	  fi; \
+	else \
+	  : ; \
+	fi
+	if test "$(PACKAGE)" = "gettext-tools" \
+	   && test '@USE_INCLUDED_LIBINTL@' = no \
+	   && test @GLIBC2@ != no; then \
+	  $(mkdir_p) $(DESTDIR)$(libdir); \
+	  $(LIBTOOL) --mode=install \
+	    $(INSTALL_DATA) libgnuintl.$la $(DESTDIR)$(libdir)/libgnuintl.$la; \
+	  rm -f $(DESTDIR)$(libdir)/preloadable_libintl.so; \
+	  $(INSTALL_DATA) $(DESTDIR)$(libdir)/libgnuintl.so $(DESTDIR)$(libdir)/preloadable_libintl.so; \
+	  $(LIBTOOL) --mode=uninstall \
+	    rm -f $(DESTDIR)$(libdir)/libgnuintl.$la; \
+	else \
+	  : ; \
+	fi
+	if test '@USE_INCLUDED_LIBINTL@' = yes; then \
+	  test @GLIBC21@ != no || $(mkdir_p) $(DESTDIR)$(libdir); \
+	  temp=$(DESTDIR)$(libdir)/t-charset.alias; \
+	  dest=$(DESTDIR)$(libdir)/charset.alias; \
+	  if test -f $(DESTDIR)$(libdir)/charset.alias; then \
+	    orig=$(DESTDIR)$(libdir)/charset.alias; \
+	    sed -f ref-add.sed $$orig > $$temp; \
+	    $(INSTALL_DATA) $$temp $$dest; \
+	    rm -f $$temp; \
+	  else \
+	    if test @GLIBC21@ = no; then \
+	      orig=charset.alias; \
+	      sed -f ref-add.sed $$orig > $$temp; \
+	      $(INSTALL_DATA) $$temp $$dest; \
+	      rm -f $$temp; \
+	    fi; \
+	  fi; \
+	  $(mkdir_p) $(DESTDIR)$(localedir); \
+	  test -f $(DESTDIR)$(localedir)/locale.alias \
+	    && orig=$(DESTDIR)$(localedir)/locale.alias \
+	    || orig=$(srcdir)/locale.alias; \
+	  temp=$(DESTDIR)$(localedir)/t-locale.alias; \
+	  dest=$(DESTDIR)$(localedir)/locale.alias; \
+	  sed -f ref-add.sed $$orig > $$temp; \
+	  $(INSTALL_DATA) $$temp $$dest; \
+	  rm -f $$temp; \
+	else \
+	  : ; \
+	fi
+install-data: all
+	if test "$(PACKAGE)" = "gettext-tools"; then \
+	  $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \
+	  $(INSTALL_DATA) VERSION $(DESTDIR)$(gettextsrcdir)/VERSION; \
+	  $(INSTALL_DATA) ChangeLog.inst $(DESTDIR)$(gettextsrcdir)/ChangeLog; \
+	  dists="COPYING.LIB-2.0 COPYING.LIB-2.1 $(DISTFILES.common)"; \
+	  for file in $$dists; do \
+	    $(INSTALL_DATA) $(srcdir)/$$file \
+			    $(DESTDIR)$(gettextsrcdir)/$$file; \
+	  done; \
+	  chmod a+x $(DESTDIR)$(gettextsrcdir)/config.charset; \
+	  dists="$(DISTFILES.generated)"; \
+	  for file in $$dists; do \
+	    if test -f $$file; then dir=.; else dir=$(srcdir); fi; \
+	    $(INSTALL_DATA) $$dir/$$file \
+			    $(DESTDIR)$(gettextsrcdir)/$$file; \
+	  done; \
+	  dists="$(DISTFILES.obsolete)"; \
+	  for file in $$dists; do \
+	    rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \
+	  done; \
+	else \
+	  : ; \
+	fi
+
+install-strip: install
+
+install-dvi install-html install-info install-ps install-pdf:
+
+installdirs:
+	if { test "$(PACKAGE)" = "gettext-runtime" || test "$(PACKAGE)" = "gettext-tools"; } \
+	   && test '@USE_INCLUDED_LIBINTL@' = yes; then \
+	  $(mkdir_p) $(DESTDIR)$(libdir) $(DESTDIR)$(includedir); \
+	else \
+	  : ; \
+	fi
+	if test "$(PACKAGE)" = "gettext-tools" \
+	   && test '@USE_INCLUDED_LIBINTL@' = no \
+	   && test @GLIBC2@ != no; then \
+	  $(mkdir_p) $(DESTDIR)$(libdir); \
+	else \
+	  : ; \
+	fi
+	if test '@USE_INCLUDED_LIBINTL@' = yes; then \
+	  test @GLIBC21@ != no || $(mkdir_p) $(DESTDIR)$(libdir); \
+	  $(mkdir_p) $(DESTDIR)$(localedir); \
+	else \
+	  : ; \
+	fi
+	if test "$(PACKAGE)" = "gettext-tools"; then \
+	  $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \
+	else \
+	  : ; \
+	fi
+
+# Define this as empty until I found a useful application.
+installcheck:
+
+uninstall:
+	if { test "$(PACKAGE)" = "gettext-runtime" || test "$(PACKAGE)" = "gettext-tools"; } \
+	   && test '@USE_INCLUDED_LIBINTL@' = yes; then \
+	  rm -f $(DESTDIR)$(includedir)/libintl.h; \
+	  $(LIBTOOL) --mode=uninstall \
+	    rm -f $(DESTDIR)$(libdir)/libintl.$la; \
+	else \
+	  : ; \
+	fi
+	if test "$(PACKAGE)" = "gettext-tools" \
+	   && test '@USE_INCLUDED_LIBINTL@' = no \
+	   && test @GLIBC2@ != no; then \
+	  rm -f $(DESTDIR)$(libdir)/preloadable_libintl.so; \
+	else \
+	  : ; \
+	fi
+	if test '@USE_INCLUDED_LIBINTL@' = yes; then \
+	  if test -f $(DESTDIR)$(libdir)/charset.alias; then \
+	    temp=$(DESTDIR)$(libdir)/t-charset.alias; \
+	    dest=$(DESTDIR)$(libdir)/charset.alias; \
+	    sed -f ref-del.sed $$dest > $$temp; \
+	    if grep '^# Packages using this file: $$' $$temp > /dev/null; then \
+	      rm -f $$dest; \
+	    else \
+	      $(INSTALL_DATA) $$temp $$dest; \
+	    fi; \
+	    rm -f $$temp; \
+	  fi; \
+	  if test -f $(DESTDIR)$(localedir)/locale.alias; then \
+	    temp=$(DESTDIR)$(localedir)/t-locale.alias; \
+	    dest=$(DESTDIR)$(localedir)/locale.alias; \
+	    sed -f ref-del.sed $$dest > $$temp; \
+	    if grep '^# Packages using this file: $$' $$temp > /dev/null; then \
+	      rm -f $$dest; \
+	    else \
+	      $(INSTALL_DATA) $$temp $$dest; \
+	    fi; \
+	    rm -f $$temp; \
+	  fi; \
+	else \
+	  : ; \
+	fi
+	if test "$(PACKAGE)" = "gettext-tools"; then \
+	  for file in VERSION ChangeLog COPYING.LIB-2.0 COPYING.LIB-2.1 $(DISTFILES.common) $(DISTFILES.generated); do \
+	    rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \
+	  done; \
+	else \
+	  : ; \
+	fi
+
+info dvi ps pdf html:
+
+$(OBJECTS): ../config.h libgnuintl.h
+bindtextdom.$lo dcgettext.$lo dcigettext.$lo dcngettext.$lo dgettext.$lo dngettext.$lo finddomain.$lo gettext.$lo intl-compat.$lo loadmsgcat.$lo localealias.$lo ngettext.$lo textdomain.$lo: $(srcdir)/gettextP.h $(srcdir)/gmo.h $(srcdir)/loadinfo.h
+hash-string.$lo dcigettext.$lo loadmsgcat.$lo: $(srcdir)/hash-string.h
+explodename.$lo l10nflist.$lo: $(srcdir)/loadinfo.h
+dcigettext.$lo loadmsgcat.$lo plural.$lo plural-exp.$lo: $(srcdir)/plural-exp.h
+dcigettext.$lo: $(srcdir)/eval-plural.h
+localcharset.$lo: $(srcdir)/localcharset.h
+bindtextdom.$lo dcigettext.$lo finddomain.$lo loadmsgcat.$lo localealias.$lo lock.$lo log.$lo: $(srcdir)/lock.h
+localealias.$lo localcharset.$lo relocatable.$lo: $(srcdir)/relocatable.h
+printf.$lo: $(srcdir)/printf-args.h $(srcdir)/printf-args.c $(srcdir)/printf-parse.h $(srcdir)/wprintf-parse.h $(srcdir)/xsize.h $(srcdir)/printf-parse.c $(srcdir)/vasnprintf.h $(srcdir)/vasnwprintf.h $(srcdir)/vasnprintf.c
+
+# A bison-2.1 generated plural.c includes <libintl.h> if ENABLE_NLS.
+PLURAL_DEPS_yes = libintl.h
+PLURAL_DEPS_no =
+plural.$lo: $(PLURAL_DEPS_ at USE_INCLUDED_LIBINTL@)
+
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES)
+	here=`pwd`; cd $(srcdir) && etags -o $$here/TAGS $(HEADERS) $(SOURCES)
+
+ctags: CTAGS
+
+CTAGS: $(HEADERS) $(SOURCES)
+	here=`pwd`; cd $(srcdir) && ctags -o $$here/CTAGS $(HEADERS) $(SOURCES)
+
+id: ID
+
+ID: $(HEADERS) $(SOURCES)
+	here=`pwd`; cd $(srcdir) && mkid -f$$here/ID $(HEADERS) $(SOURCES)
+
+
+mostlyclean:
+	rm -f *.a *.la *.o *.obj *.lo libintl.res core core.*
+	rm -f libgnuintl.h libintl.h charset.alias ref-add.sed ref-del.sed
+	rm -f -r .libs _libs
+
+clean: mostlyclean
+
+distclean: clean
+	rm -f Makefile ID TAGS
+	if test "$(PACKAGE)" = "gettext-runtime" || test "$(PACKAGE)" = "gettext-tools"; then \
+	  rm -f ChangeLog.inst $(DISTFILES.normal); \
+	else \
+	  : ; \
+	fi
+
+maintainer-clean: distclean
+	@echo "This command is intended for maintainers to use;"
+	@echo "it deletes files that may require special tools to rebuild."
+
+
+# GNU gettext needs not contain the file `VERSION' but contains some
+# other files which should not be distributed in other packages.
+distdir = ../$(PACKAGE)-$(VERSION)/$(subdir)
+dist distdir: Makefile
+	if test "$(PACKAGE)" = "gettext-tools"; then \
+	  : ; \
+	else \
+	  if test "$(PACKAGE)" = "gettext-runtime"; then \
+	    additional="$(DISTFILES.gettext)"; \
+	  else \
+	    additional="$(DISTFILES.normal)"; \
+	  fi; \
+	  $(MAKE) $(DISTFILES.common) $(DISTFILES.generated) $$additional; \
+	  for file in ChangeLog $(DISTFILES.common) $(DISTFILES.generated) $$additional; do \
+	    if test -f $$file; then dir=.; else dir=$(srcdir); fi; \
+	    cp -p $$dir/$$file $(distdir) || test $$file = Makefile.in || exit 1; \
+	  done; \
+	fi
+
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	cd $(top_builddir) && $(SHELL) ./config.status
+# This would be more efficient, but doesn't work any more with autoconf-2.57,
+# when AC_CONFIG_FILES([intl/Makefile:somedir/Makefile.in]) is used.
+#	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+
+# Tell versions [3.59,3.63) of GNU make not to export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:


Property changes on: tuxmath/trunk/linebreak
___________________________________________________________________
Modified: svn:ignore
   - *~
*.o
.deps
CMakeFiles
Makefile
Makefile.in

   + *~
*.o
Makefile
Makefile.in


Deleted: tuxmath/trunk/nsis/tuxmath.nsi
===================================================================
--- tuxmath/trunk/nsis/tuxmath.nsi	2009-09-04 19:47:19 UTC (rev 1488)
+++ tuxmath/trunk/nsis/tuxmath.nsi	2009-09-05 02:31:43 UTC (rev 1489)
@@ -1,123 +0,0 @@
-# vim: noai et ts=4 tw=0
-# with a few tiny modifications by Phil Harper(philh at theopencd.org)
-# modified for tuxmath by Yves Combe (yves at ycombe.net)
-# modified more for tuxmath by David Bruce <dbruce at tampabay.rr.com>
-
-!define PKG_VERSION "1.7.3"
-!define PKG_PREFIX  "tuxmath"
-
-!define APP_PREFIX  "TuxMath"
-!define APP_EXE     "${APP_PREFIX}.exe"
-!define APP_NAME    "Tux of Math Command"
-
-OutFile     "${PKG_PREFIX}-${PKG_VERSION}-win32-installer.exe"
-Name        "${APP_NAME}"
-Caption     ""
-CRCCheck    on
-WindowIcon  off
-BGGradient  off
-
-# Default to not silent
-SilentInstall   normal
-SilentUnInstall normal
-
-# Various default text options
-MiscButtonText
-InstallButtonText
-FileErrorText
-
-# Default installation dir and registry key of install directory
-InstallDir  "$PROGRAMFILES\${APP_PREFIX}"
-InstallDirRegKey HKLM SOFTWARE\${APP_PREFIX} "Install_Dir"
-
-# Licence text
-LicenseText "Please read the terms of the General Public License before installing ${APP_NAME}"
-LicenseData "mingw32\doc\COPYING.txt"
-
-# Directory browsing
-# DirShow           show
-ComponentText       "This will install ${APP_NAME} on your computer. Select which optional things you want installed."
-DirText             "Choose a directory to install ${APP_NAME} in to:"
-AllowRootDirInstall false
-
-# Install page stuff
-InstProgressFlags   smooth
-AutoCloseWindow     true
-
-Section
-  SetOutPath $INSTDIR
-  File "mingw32\${APP_EXE}"
-  File "mingw32\*.dll"
-  SetOutPath $INSTDIR\data
-  File /r "mingw32\data\*.*"
-  SetOutPath $INSTDIR\doc
-  File /r "mingw32\doc\*.*"
-  SetOutPath $INSTDIR\locale
-  File /r "mingw32\locale\*.*"
-
-  WriteRegStr HKLM SOFTWARE\${APP_PREFIX} \
-                   "Install_Dir" \ 
-                   "$INSTDIR"
-  WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APP_PREFIX}" \
-                   "DisplayName" \
-                   "${APP_NAME} (remove only)"
-  WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APP_PREFIX}" \
-                   "UninstallString"  \ 
-                   '"$INSTDIR\uninstall.exe"'
-  WriteUninstaller "uninstall.exe"
-SectionEnd
-
-
-Section "Start Menu Shortcuts"
-  SetShellVarContext all
-  SetOutPath $INSTDIR
-  CreateDirectory "$SMPROGRAMS\${APP_NAME}"
-  CreateShortCut  "$SMPROGRAMS\${APP_NAME}\${APP_NAME} (Full Screen).lnk" \
-                  "$INSTDIR\${APP_EXE}" \
-                  "-f" \
-                  "$INSTDIR\data\images\icons\tuxmath.ico" \
-                  0 "" ""  \
-                  "Start TuxMath in Fullscreen mode"
-
-  CreateShortCut  "$SMPROGRAMS\${APP_NAME}\${APP_NAME} (Windowed).lnk" \
-                  "$INSTDIR\${APP_EXE}" \
-                  "-w" \
-                  "$INSTDIR\data\images\icons\tuxmath.ico"  \ 
-                  0 "" "" \
-                  "Start TuxMath in a Window"
-
-  CreateShortCut  "$SMPROGRAMS\${APP_NAME}\Uninstall.lnk" \
-                  "$INSTDIR\uninstall.exe" ""  \ 
-                  "$INSTDIR\uninstall.exe" 0 "" "" \
-                  "Remove Tux of Math Command"
-SectionEnd
-
-Section "Desktop Shortcut"
-  SetShellVarContext all
-  SetOutPath $INSTDIR
-  CreateShortCut "$DESKTOP\${APP_NAME}.lnk" \
-                 "$INSTDIR\${APP_EXE}"  ""  \
-                 "$INSTDIR\data\images\icons\tuxmath.ico" \
-                 0  "" ""  \ 
-                 "Run Tux of Math Command"
-SectionEnd
-
-# Uninstall stuff
-
-UninstallText "This will uninstall ${APP_NAME}. Hit 'Uninstall' to continue."
-
-# special uninstall section.
-Section "Uninstall"
-  SetShellVarContext all
-# remove registry keys
-  DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APP_PREFIX}"
-  DeleteRegKey HKLM SOFTWARE\${APP_PREFIX}
-
-  RMDir  /r "$INSTDIR\data"
-  RMDir  /r "$INSTDIR\doc"
-  Delete    "$INSTDIR\*.*"
-
-  Delete "$DESKTOP\${APP_NAME}.lnk"
-  Delete "$SMPROGRAMS\${APP_NAME}\*.*"
-  RMDir  "$SMPROGRAMS\${APP_NAME}"
-SectionEnd

Deleted: tuxmath/trunk/nsis/tuxmath_with_conf.nsi
===================================================================
--- tuxmath/trunk/nsis/tuxmath_with_conf.nsi	2009-09-04 19:47:19 UTC (rev 1488)
+++ tuxmath/trunk/nsis/tuxmath_with_conf.nsi	2009-09-05 02:31:43 UTC (rev 1489)
@@ -1,114 +0,0 @@
-# vim: noai et ts=4 tw=0
-# with a few tiny modifications by Phil Harper(philh at theopencd.org)
-# modified for tuxmath by Yves Combe (yves at ycombe.net)
-
-!define PKG_VERSION "1.7.3"
-!define PKG_PREFIX  "tuxmath"
-
-!define APP_PREFIX  "TuxMath"
-!define APP_EXE     "${APP_PREFIX}.exe"
-!define APP_NAME    "Tux of Math Command"
-
-!define CONF_EXE     "tuxmath_config.exe"
-!define CONF_DIR     "TuxMathConfig"
-
-OutFile     "${PKG_PREFIX}-${PKG_VERSION}-with-config-win32-installer.exe"
-Name        "${APP_NAME}"
-Caption     ""
-CRCCheck    on
-WindowIcon  off
-BGGradient  off
-
-# Default to not silent
-SilentInstall   normal
-SilentUnInstall normal
-
-# Various default text options
-MiscButtonText
-InstallButtonText
-FileErrorText
-
-# Default installation dir and registry key of install directory
-InstallDir  "$PROGRAMFILES\${APP_PREFIX}"
-InstallDirRegKey HKLM SOFTWARE\${APP_PREFIX} "Install_Dir"
-
-# Licence text
-LicenseText "You must agree to this license before installing ${APP_NAME}"
-LicenseData "docs\COPYING.txt"
-
-# Directory browsing
-# DirShow           show
-ComponentText       "This will install ${APP_NAME} on your computer. Select which optional things you want installed."
-DirText             "Choose a directory to install ${APP_NAME} in to:"
-AllowRootDirInstall false
-
-# Install page stuff
-InstProgressFlags   smooth
-AutoCloseWindow     true
-
-Section
-  SetOutPath $INSTDIR
-  File "mingw32\${APP_EXE}"
-  File "mingw32\*.dll"
-  SetOutPath $INSTDIR\data
-  File /r "data\*.*"
-  SetOutPath $INSTDIR\docs
-  File "docs\COPYING.txt"
-  SetOutPath $INSTDIR\${CONF_DIR}
-  File "mingw32\TuxMathConfig\*.*"
-
-  WriteRegStr HKLM SOFTWARE\${APP_PREFIX} "Install_Dir" "$INSTDIR"
-  WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APP_PREFIX}" "DisplayName" "${APP_NAME} (remove only)"
-  WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APP_PREFIX}" "UninstallString" '"$INSTDIR\uninstall.exe"'
-  WriteUninstaller "uninstall.exe"
-SectionEnd
-
-
-Section "Start Menu Shortcuts"
-  SetShellVarContext all
-  SetOutPath $INSTDIR
-  CreateDirectory "$SMPROGRAMS\${APP_NAME}"
-  CreateShortCut  "$SMPROGRAMS\${APP_NAME}\${APP_NAME} (Full Screen).lnk" "$INSTDIR\${APP_EXE}" "-f" "$INSTDIR\${APP_EXE}" 0 "" "" "Start TuxMath in Fullscreen mode"
-  CreateShortCut  "$SMPROGRAMS\${APP_NAME}\${APP_NAME} (Windowed).lnk" "$INSTDIR\${APP_EXE}" "-w" "$INSTDIR\${APP_EXE}" 0 "" "" "Start TuxMath in a Window"
-  CreateShortCut  "$SMPROGRAMS\${APP_NAME}\Configure TuxMath.lnk" "$INSTDIR\${CONF_DIR}\${CONF_EXE}" "-w" "$INSTDIR\${CONF_DIR}\${CONF_EXE}" 0 "" "" "Configure TuxMath"
-  CreateShortCut  "$SMPROGRAMS\${APP_NAME}\Uninstall.lnk" "$INSTDIR\uninstall.exe" "" "$INSTDIR\uninstall.exe" 0 "" "" "Remove Tux of Math Command"
-SectionEnd
-
-
-Section "Desktop Shortcut"
-  SetShellVarContext all
-  SetOutPath $INSTDIR
-  CreateShortCut "$DESKTOP\${APP_NAME}.lnk" "$INSTDIR\${APP_EXE}" "" "$INSTDIR\${APP_EXE}" 0  "" "" "Run Tux of Math Command"
-SectionEnd
-
-;Function .onInstSuccess
-;  BringToFront
-;  MessageBox MB_YESNO|MB_ICONQUESTION \
-;             "${APP_NAME} was installed. Would you like to run ${APP_NAME} now ?" \
-;             IDNO NoExec
-;    Exec '$INSTDIR\${APP_EXE}'
-;  NoExec:
-;FunctionEnd
-
-; uninstall stuff
-
-UninstallText "This will uninstall ${APP_NAME}. Hit 'Uninstall' to continue."
-
-; special uninstall section.
-Section "Uninstall"
-  SetShellVarContext all
-  ; remove registry keys
-  DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APP_PREFIX}"
-  DeleteRegKey HKLM SOFTWARE\${APP_PREFIX}
-
-  RMDir  /r "$INSTDIR\data"
-  RMDir  /r "$INSTDIR\docs"
-  RMDir  /r "$INSTDIR\${CONF_DIR}"
-  Delete    "$INSTDIR\*.*"
-
-  Delete "$DESKTOP\${APP_NAME}.lnk"
-  Delete "$SMPROGRAMS\${APP_NAME}\*.*"
-  RMDir  "$SMPROGRAMS\${APP_NAME}"
-SectionEnd
-
-


Property changes on: tuxmath/trunk/po
___________________________________________________________________
Modified: svn:ignore
   - Makefile
Makefile.in
CMakeFiles
POTFILES
stamp-po

   + Makefile
Makefile.in


Modified: tuxmath/trunk/po/ar.gmo
===================================================================
(Binary files differ)

Modified: tuxmath/trunk/po/ar.po
===================================================================
--- tuxmath/trunk/po/ar.po	2009-09-04 19:47:19 UTC (rev 1488)
+++ tuxmath/trunk/po/ar.po	2009-09-05 02:31:43 UTC (rev 1489)
@@ -2,7 +2,7 @@
 msgstr ""
 "Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: tuxmath-devel at lists.sourceforge.net\n"
-"POT-Creation-Date: 2009-03-06 06:12-0600\n"
+"POT-Creation-Date: 2009-09-04 21:22-0500\n"
 "PO-Revision-Date: 2008-02-15 03:00+0100\n"
 "Last-Translator: Caroline Ford <caroline.ford.work at googlemail.com>\n"
 "Language-Team: \n"
@@ -199,334 +199,229 @@
 
 #: src/credits.c:108
 msgid ""
-"A full copy of the GPL is included with the documenation for this program."
+"A full copy of the GPL is included with the documentation for this program."
 msgstr ""
 
 #: src/credits.c:110
 msgid "For more information about Free Software and the GNU GPL, visit:"
 msgstr ""
 
-#: src/factoroids.c:558
+#: src/factoroids.c:552
 msgid "FACTOROIDS: to win, you need destroy all the asteroids."
 msgstr ""
 
-#: src/factoroids.c:559 src/factoroids.c:570
+#: src/factoroids.c:553 src/factoroids.c:564
 msgid "Use the arrow keys to turn or go forward.  Aim at an asteroid,"
 msgstr ""
 
-#: src/factoroids.c:560
+#: src/factoroids.c:554
 msgid "type one of its factors, and press space or return"
 msgstr ""
 
-#: src/factoroids.c:561
+#: src/factoroids.c:555
 msgid "to split it into its factors.  Rocks with prime numbers are destroyed!"
 msgstr ""
 
-#: src/factoroids.c:569
+#: src/factoroids.c:563
 msgid "FRACTIONS: to win, you need destroy all the asteroids"
 msgstr ""
 
-#: src/factoroids.c:571
+#: src/factoroids.c:565
 msgid "type a number that can simplify the fraction, and press space or return"
 msgstr ""
 
-#: src/factoroids.c:572
+#: src/factoroids.c:566
 msgid ""
 "to split it.  Destroy fractions that can not be further simplified in a "
 "single shot!"
 msgstr ""
 
-#: src/game.c:717
+#: src/game.c:989
 msgid "Welcome to TuxMath!"
 msgstr "مرحبا بكم في tuxmath!"
 
-#: src/game.c:734
+#: src/game.c:1006
 msgid "Your mission is to save your"
 msgstr "مهمتكم هو انقاذ"
 
-#: src/game.c:735
+#: src/game.c:1007
 msgid "penguins' igloos from the"
 msgstr "اكواخ البطاريق من"
 
-#: src/game.c:736
+#: src/game.c:1008
 msgid "falling comets."
 msgstr "المذنبات المتساقطة."
 
-#: src/game.c:755
+#: src/game.c:1027
 msgid "Stop a comet by typing"
 msgstr "أوقف المذنب بكتابة"
 
-#: src/game.c:756
+#: src/game.c:1028
 msgid "the answer to the math problem"
 msgstr "الجواب على مشكلة الرياضيات"
 
-#: src/game.c:757
+#: src/game.c:1029
 msgid "and hitting 'space' or 'enter'."
 msgstr "والضغط على زر اﻷدخال او المساقة"
 
-#: src/game.c:758
+#: src/game.c:1030
 msgid "Try it now!"
 msgstr "جربها الآن!"
 
-#: src/game.c:766
+#: src/game.c:1038
 msgid "Good shot!"
 msgstr "رميه جيده!"
 
-#: src/game.c:776
+#: src/game.c:1048
 msgid "If an igloo gets hit by a comet,"
 msgstr "اذا اصيب كوخ اﻷسكيمو"
 
-#: src/game.c:777
+#: src/game.c:1049
 #, fuzzy
 msgid "it melts. But don't worry: the"
 msgstr "فسيذاب ولكن لا تقلق"
 
-#: src/game.c:778
+#: src/game.c:1050
 msgid "penguin is OK!"
 msgstr "البطريق بخير!"
 
-#: src/game.c:779
+#: src/game.c:1051
 msgid "Just watch what happens:"
 msgstr "اﻷن شاهد ما يحدث :"
 
-#: src/game.c:780
+#: src/game.c:1052
 msgid "(Press a key to start)"
 msgstr "(الصحافة مفتاح البدأ)"
 
-#: src/game.c:793
+#: src/game.c:1065
 msgid "Notice the answer"
 msgstr "اشعار الاجابه"
 
-#: src/game.c:803
+#: src/game.c:1075
 msgid "If it gets hit again, the"
 msgstr "اما اذا صدم مرة أخرى"
 
-#: src/game.c:804
+#: src/game.c:1076
 msgid "penguin leaves."
 msgstr "فأن البطريق سيغادر."
 
-#: src/game.c:805
+#: src/game.c:1077
 msgid "(Press a key when ready)"
 msgstr "(اضغط اى مفتاح عندما تستعد)"
 
-#: src/game.c:824
+#: src/game.c:1100
 msgid "You can fix the igloos"
 msgstr "يمكنك اصلاح اكواخ الاسكيمو"
 
-#: src/game.c:825
+#: src/game.c:1101
 msgid "by stopping bonus comets."
 msgstr "بوقف مكافاه المذنبات."
 
-#: src/game.c:834
+#: src/game.c:1112
 msgid "Zap it now!"
 msgstr "انطلق الآن!"
 
-#: src/game.c:838
+#: src/game.c:1118
 msgid "Great job!"
 msgstr "رائع!"
 
-#: src/game.c:852
+#: src/game.c:1136
 msgid "Quit at any time by pressing"
 msgstr "يمكنك الخروج اى وقت بالضغط على"
 
-#: src/game.c:853
+#: src/game.c:1137
 msgid "'Esc' or clicking the 'X'"
 msgstr "'ESC' أو 'X'"
 
-#: src/game.c:854
+#: src/game.c:1138
 msgid "in the upper right corner."
 msgstr "في الركن الايمن العلوي."
 
-#: src/game.c:855
+#: src/game.c:1139
 msgid "Do it now, and then play!"
 msgstr "افعلها اﻷن, ثم ابدأ اللعب !"
 
-#: src/highscore.c:212 src/titlescreen.c:849
+#: src/highscore.c:167
 msgid "Hall Of Fame"
 msgstr "قاعة الشهره"
 
-#: src/highscore.c:232 src/highscore.c:253 src/titlescreen.c:785
-#: src/titlescreen.c:844
+#: src/highscore.c:187 src/highscore.c:208
 msgid "Space Cadet"
 msgstr "مبتدئ"
 
-#: src/highscore.c:235 src/titlescreen.c:786 src/titlescreen.c:845
+#: src/highscore.c:190
 msgid "Scout"
 msgstr "الكشفيه"
 
-#: src/highscore.c:238 src/titlescreen.c:787 src/titlescreen.c:846
+#: src/highscore.c:193
 msgid "Ranger"
 msgstr "حارس"
 
-#: src/highscore.c:241 src/titlescreen.c:788 src/titlescreen.c:847
+#: src/highscore.c:196
 msgid "Ace"
 msgstr "اس"
 
-#: src/highscore.c:244 src/titlescreen.c:789 src/titlescreen.c:848
+#: src/highscore.c:199
 msgid "Commando"
 msgstr ""
 
-#: src/highscore.c:247 src/titlescreen.c:968
+#: src/highscore.c:202
 msgid "Factors"
 msgstr ""
 
-#: src/highscore.c:250 src/titlescreen.c:969
+#: src/highscore.c:205
 msgid "Fractions"
 msgstr ""
 
-#: src/highscore.c:353
+#: src/highscore.c:286
 msgid "You Are In The Hall of Fame!"
 msgstr ""
 
-#: src/highscore.c:353
+#: src/highscore.c:286
 msgid "Enter Your Name:"
 msgstr ""
 
-#: src/multiplayer.c:244
+#: src/multiplayer.c:183
+#, c-format
+msgid "Then %s\n"
+msgstr ""
+
+#: src/multiplayer.c:258
 msgid "Who is playing first?"
 msgstr ""
 
-#: src/multiplayer.c:244 src/multiplayer.c:246
+#: src/multiplayer.c:258 src/multiplayer.c:260
 msgid "Enter your name:"
 msgstr ""
 
-#: src/multiplayer.c:246
+#: src/multiplayer.c:260
 msgid "Who is playing next?"
 msgstr ""
 
-#: src/multiplayer.c:260
+#: src/multiplayer.c:274
 msgid "How many rounds will you play?"
 msgstr ""
 
-#: src/multiplayer.c:260
+#: src/multiplayer.c:274
 msgid "Enter a number"
 msgstr ""
 
-#: src/titlescreen.c:487
+#: src/titlescreen.c:476
 msgid "Work In Progress!"
 msgstr "! العمل يتقدم"
 
-#: src/titlescreen.c:488
+#: src/titlescreen.c:477
 msgid "This feature is not ready yet"
 msgstr "هذه الخاصية ليست جاهزة حتى الآن"
 
-#: src/titlescreen.c:489
+#: src/titlescreen.c:478
 msgid "Discuss the future of TuxMath at"
 msgstr "ناقش مستقبل اللعبة فى"
 
-#: src/titlescreen.c:490
+#: src/titlescreen.c:479
 msgid "tuxmath-devel at lists.sourceforge.net"
 msgstr "Tuxmath-devel at lists.sourceforge.net"
 
-#: src/titlescreen.c:647
-msgid "Play Alone"
-msgstr ""
-
-#: src/titlescreen.c:648
-msgid "Play With Friends"
-msgstr ""
-
-#: src/titlescreen.c:649
-msgid "Factoroids!"
-msgstr ""
-
-#: src/titlescreen.c:650
-msgid "Help"
-msgstr "مساعدة"
-
-#: src/titlescreen.c:651
-msgid "More Options"
-msgstr "مزيد من الخيارات"
-
-#: src/titlescreen.c:652
-msgid "Quit"
-msgstr "خروج"
-
-#: src/titlescreen.c:726
-msgid "Math Command Training Academy"
-msgstr "اكاديميه التدريب"
-
-#: src/titlescreen.c:727
-msgid "Math Command Fleet Missions"
-msgstr ""
-
-#: src/titlescreen.c:728
-msgid "Play Arcade Game"
-msgstr "لعبه تقليدية"
-
-#: src/titlescreen.c:729
-msgid "Play Custom Game"
-msgstr "لعبة مخصصة"
-
-#: src/titlescreen.c:730 src/titlescreen.c:781 src/titlescreen.c:790
-#: src/titlescreen.c:850 src/titlescreen.c:970
-msgid "Main menu"
-msgstr "القائمة الرئيسية"
-
-#: src/titlescreen.c:779
-msgid "Score Sweep"
-msgstr ""
-
-#: src/titlescreen.c:780
-msgid "Elimination"
-msgstr ""
-
-#: src/titlescreen.c:824
-msgid "How many kids are playing?"
-msgstr ""
-
-#: src/titlescreen.c:825
-msgid "(Between 2 and 4 players)"
-msgstr ""
-
-#: src/titlescreen.c:944
-msgid "Edit 'options' file in your home directory"
-msgstr "حرر ملف 'الخيارات' فى مجلدك الافتراضى"
-
-#: src/titlescreen.c:945
-msgid "to create customized game!"
-msgstr "لإنشاء لعبة مخصصة"
-
-#: src/titlescreen.c:946
-msgid "Press a key or click your mouse to start game."
-msgstr "اضغط فوق مفتاح أو انقر الماوس لبدء اللعبة."
-
-#: src/titlescreen.c:947
-msgid "See README.txt for more information"
-msgstr "Readme.txt انظر لمزيد من المعلومات"
-
-#: src/titlescreen.c:1062
-msgid "Demo"
-msgstr "ديمو"
-
-#: src/titlescreen.c:1063
-msgid "Project Info"
-msgstr "معلومات المشروع"
-
-#: src/titlescreen.c:1064
-msgid "Credits"
-msgstr "فريق العمل"
-
-#: src/titlescreen.c:1065
-msgid "Main Menu"
-msgstr "القائمة الرئيسية"
-
-#: src/titlescreen.c:1113
-msgid "TuxMath is free and open-source!"
-msgstr "TuxMath برنامج حر مفتوح المصدر"
-
-#: src/titlescreen.c:1114
-msgid "You can help make it better by reporting problems,"
-msgstr "يمكنك المساعدة بجعلها افضل بإرسال اى مشاكل تواجها,"
-
-#: src/titlescreen.c:1115
-msgid "suggesting improvements, or adding code."
-msgstr "أو اى مقترحات أو كتابة أكواد"
-
-#: src/titlescreen.c:1116
-msgid "Discuss the future at tuxmath-devel at lists.sourceforge.net"
-msgstr "tuxmath-devel at lists.sourceforge.net ناقش المستقبل على "
-
 #: data/missions/lessons/descr_lessons:1
 msgid "Number Typing"
 msgstr "عدد الطباعه"
@@ -761,6 +656,63 @@
 msgid "Division of Positives and Negatives"
 msgstr "قسمة الأرقام الموجية والسالبة"
 
+#~ msgid "Help"
+#~ msgstr "مساعدة"
+
+#~ msgid "More Options"
+#~ msgstr "مزيد من الخيارات"
+
+#~ msgid "Quit"
+#~ msgstr "خروج"
+
+#~ msgid "Math Command Training Academy"
+#~ msgstr "اكاديميه التدريب"
+
+#~ msgid "Play Arcade Game"
+#~ msgstr "لعبه تقليدية"
+
+#~ msgid "Play Custom Game"
+#~ msgstr "لعبة مخصصة"
+
+#~ msgid "Main menu"
+#~ msgstr "القائمة الرئيسية"
+
+#~ msgid "Edit 'options' file in your home directory"
+#~ msgstr "حرر ملف 'الخيارات' فى مجلدك الافتراضى"
+
+#~ msgid "to create customized game!"
+#~ msgstr "لإنشاء لعبة مخصصة"
+
+#~ msgid "Press a key or click your mouse to start game."
+#~ msgstr "اضغط فوق مفتاح أو انقر الماوس لبدء اللعبة."
+
+#~ msgid "See README.txt for more information"
+#~ msgstr "Readme.txt انظر لمزيد من المعلومات"
+
+#~ msgid "Demo"
+#~ msgstr "ديمو"
+
+#~ msgid "Project Info"
+#~ msgstr "معلومات المشروع"
+
+#~ msgid "Credits"
+#~ msgstr "فريق العمل"
+
+#~ msgid "Main Menu"
+#~ msgstr "القائمة الرئيسية"
+
+#~ msgid "TuxMath is free and open-source!"
+#~ msgstr "TuxMath برنامج حر مفتوح المصدر"
+
+#~ msgid "You can help make it better by reporting problems,"
+#~ msgstr "يمكنك المساعدة بجعلها افضل بإرسال اى مشاكل تواجها,"
+
+#~ msgid "suggesting improvements, or adding code."
+#~ msgstr "أو اى مقترحات أو كتابة أكواد"
+
+#~ msgid "Discuss the future at tuxmath-devel at lists.sourceforge.net"
+#~ msgstr "tuxmath-devel at lists.sourceforge.net ناقش المستقبل على "
+
 #, fuzzy
 #~ msgid "the penguins' igloos. To save their homes,"
 #~ msgstr "اكواخ البطاريق من"

Modified: tuxmath/trunk/po/cs.gmo
===================================================================
(Binary files differ)

Modified: tuxmath/trunk/po/cs.po
===================================================================
--- tuxmath/trunk/po/cs.po	2009-09-04 19:47:19 UTC (rev 1488)
+++ tuxmath/trunk/po/cs.po	2009-09-05 02:31:43 UTC (rev 1489)
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: tuxmath\n"
 "Report-Msgid-Bugs-To: tuxmath-devel at lists.sourceforge.net\n"
-"POT-Creation-Date: 2009-03-06 06:12-0600\n"
+"POT-Creation-Date: 2009-09-04 21:22-0500\n"
 "PO-Revision-Date: 2007-11-12 20:54+0100\n"
 "Last-Translator: JardaK <krejci at zstenis.com>\n"
 "Language-Team: czech <cs at li.org>\n"
@@ -204,333 +204,228 @@
 
 #: src/credits.c:108
 msgid ""
-"A full copy of the GPL is included with the documenation for this program."
+"A full copy of the GPL is included with the documentation for this program."
 msgstr ""
 
 #: src/credits.c:110
 msgid "For more information about Free Software and the GNU GPL, visit:"
 msgstr ""
 
-#: src/factoroids.c:558
+#: src/factoroids.c:552
 msgid "FACTOROIDS: to win, you need destroy all the asteroids."
 msgstr ""
 
-#: src/factoroids.c:559 src/factoroids.c:570
+#: src/factoroids.c:553 src/factoroids.c:564
 msgid "Use the arrow keys to turn or go forward.  Aim at an asteroid,"
 msgstr ""
 
-#: src/factoroids.c:560
+#: src/factoroids.c:554
 msgid "type one of its factors, and press space or return"
 msgstr ""
 
-#: src/factoroids.c:561
+#: src/factoroids.c:555
 msgid "to split it into its factors.  Rocks with prime numbers are destroyed!"
 msgstr ""
 
-#: src/factoroids.c:569
+#: src/factoroids.c:563
 msgid "FRACTIONS: to win, you need destroy all the asteroids"
 msgstr ""
 
-#: src/factoroids.c:571
+#: src/factoroids.c:565
 msgid "type a number that can simplify the fraction, and press space or return"
 msgstr ""
 
-#: src/factoroids.c:572
+#: src/factoroids.c:566
 msgid ""
 "to split it.  Destroy fractions that can not be further simplified in a "
 "single shot!"
 msgstr ""
 
-#: src/game.c:717
+#: src/game.c:989
 msgid "Welcome to TuxMath!"
 msgstr ""
 
-#: src/game.c:734
+#: src/game.c:1006
 msgid "Your mission is to save your"
 msgstr ""
 
-#: src/game.c:735
+#: src/game.c:1007
 msgid "penguins' igloos from the"
 msgstr ""
 
-#: src/game.c:736
+#: src/game.c:1008
 msgid "falling comets."
 msgstr ""
 
-#: src/game.c:755
+#: src/game.c:1027
 msgid "Stop a comet by typing"
 msgstr ""
 
-#: src/game.c:756
+#: src/game.c:1028
 msgid "the answer to the math problem"
 msgstr ""
 
-#: src/game.c:757
+#: src/game.c:1029
 msgid "and hitting 'space' or 'enter'."
 msgstr ""
 
-#: src/game.c:758
+#: src/game.c:1030
 msgid "Try it now!"
 msgstr ""
 
-#: src/game.c:766
+#: src/game.c:1038
 msgid "Good shot!"
 msgstr ""
 
-#: src/game.c:776
+#: src/game.c:1048
 msgid "If an igloo gets hit by a comet,"
 msgstr ""
 
-#: src/game.c:777
+#: src/game.c:1049
 msgid "it melts. But don't worry: the"
 msgstr ""
 
-#: src/game.c:778
+#: src/game.c:1050
 msgid "penguin is OK!"
 msgstr ""
 
-#: src/game.c:779
+#: src/game.c:1051
 msgid "Just watch what happens:"
 msgstr ""
 
-#: src/game.c:780
+#: src/game.c:1052
 msgid "(Press a key to start)"
 msgstr ""
 
-#: src/game.c:793
+#: src/game.c:1065
 msgid "Notice the answer"
 msgstr ""
 
-#: src/game.c:803
+#: src/game.c:1075
 msgid "If it gets hit again, the"
 msgstr ""
 
-#: src/game.c:804
+#: src/game.c:1076
 msgid "penguin leaves."
 msgstr ""
 
-#: src/game.c:805
+#: src/game.c:1077
 msgid "(Press a key when ready)"
 msgstr ""
 
-#: src/game.c:824
+#: src/game.c:1100
 msgid "You can fix the igloos"
 msgstr ""
 
-#: src/game.c:825
+#: src/game.c:1101
 msgid "by stopping bonus comets."
 msgstr ""
 
-#: src/game.c:834
+#: src/game.c:1112
 msgid "Zap it now!"
 msgstr ""
 
-#: src/game.c:838
+#: src/game.c:1118
 msgid "Great job!"
 msgstr ""
 
-#: src/game.c:852
+#: src/game.c:1136
 msgid "Quit at any time by pressing"
 msgstr ""
 
-#: src/game.c:853
+#: src/game.c:1137
 msgid "'Esc' or clicking the 'X'"
 msgstr ""
 
-#: src/game.c:854
+#: src/game.c:1138
 msgid "in the upper right corner."
 msgstr ""
 
-#: src/game.c:855
+#: src/game.c:1139
 msgid "Do it now, and then play!"
 msgstr ""
 
-#: src/highscore.c:212 src/titlescreen.c:849
+#: src/highscore.c:167
 msgid "Hall Of Fame"
 msgstr "Síň slávy"
 
-#: src/highscore.c:232 src/highscore.c:253 src/titlescreen.c:785
-#: src/titlescreen.c:844
+#: src/highscore.c:187 src/highscore.c:208
 msgid "Space Cadet"
 msgstr "Nováček"
 
-#: src/highscore.c:235 src/titlescreen.c:786 src/titlescreen.c:845
+#: src/highscore.c:190
 msgid "Scout"
 msgstr "Průzkumník"
 
-#: src/highscore.c:238 src/titlescreen.c:787 src/titlescreen.c:846
+#: src/highscore.c:193
 msgid "Ranger"
 msgstr "Střelec"
 
-#: src/highscore.c:241 src/titlescreen.c:788 src/titlescreen.c:847
+#: src/highscore.c:196
 msgid "Ace"
 msgstr "Borec"
 
-#: src/highscore.c:244 src/titlescreen.c:789 src/titlescreen.c:848
+#: src/highscore.c:199
 msgid "Commando"
 msgstr ""
 
-#: src/highscore.c:247 src/titlescreen.c:968
+#: src/highscore.c:202
 msgid "Factors"
 msgstr ""
 
-#: src/highscore.c:250 src/titlescreen.c:969
+#: src/highscore.c:205
 msgid "Fractions"
 msgstr ""
 
-#: src/highscore.c:353
+#: src/highscore.c:286
 msgid "You Are In The Hall of Fame!"
 msgstr ""
 
-#: src/highscore.c:353
+#: src/highscore.c:286
 msgid "Enter Your Name:"
 msgstr ""
 
-#: src/multiplayer.c:244
+#: src/multiplayer.c:183
+#, c-format
+msgid "Then %s\n"
+msgstr ""
+
+#: src/multiplayer.c:258
 msgid "Who is playing first?"
 msgstr ""
 
-#: src/multiplayer.c:244 src/multiplayer.c:246
+#: src/multiplayer.c:258 src/multiplayer.c:260
 msgid "Enter your name:"
 msgstr ""
 
-#: src/multiplayer.c:246
+#: src/multiplayer.c:260
 msgid "Who is playing next?"
 msgstr ""
 
-#: src/multiplayer.c:260
+#: src/multiplayer.c:274
 msgid "How many rounds will you play?"
 msgstr ""
 
-#: src/multiplayer.c:260
+#: src/multiplayer.c:274
 msgid "Enter a number"
 msgstr ""
 
-#: src/titlescreen.c:487
+#: src/titlescreen.c:476
 msgid "Work In Progress!"
 msgstr "Ve výstavbě!"
 
-#: src/titlescreen.c:488
+#: src/titlescreen.c:477
 msgid "This feature is not ready yet"
 msgstr "Tato vlastnost ještě nefunguje"
 
-#: src/titlescreen.c:489
+#: src/titlescreen.c:478
 msgid "Discuss the future of TuxMath at"
 msgstr "Diskutuj o budoucnosti TuxMath na"
 
-#: src/titlescreen.c:490
+#: src/titlescreen.c:479
 msgid "tuxmath-devel at lists.sourceforge.net"
 msgstr "tuxmath-devel at lists.sourceforge.net"
 
-#: src/titlescreen.c:647
-msgid "Play Alone"
-msgstr ""
-
-#: src/titlescreen.c:648
-msgid "Play With Friends"
-msgstr ""
-
-#: src/titlescreen.c:649
-msgid "Factoroids!"
-msgstr ""
-
-#: src/titlescreen.c:650
-msgid "Help"
-msgstr "Nápověda"
-
-#: src/titlescreen.c:651
-msgid "More Options"
-msgstr "Více možností"
-
-#: src/titlescreen.c:652
-msgid "Quit"
-msgstr "Ukončit"
-
-#: src/titlescreen.c:726
-msgid "Math Command Training Academy"
-msgstr "Akademie vesmírné matematiky"
-
-#: src/titlescreen.c:727
-msgid "Math Command Fleet Missions"
-msgstr ""
-
-#: src/titlescreen.c:728
-msgid "Play Arcade Game"
-msgstr "Hra"
-
-#: src/titlescreen.c:729
-msgid "Play Custom Game"
-msgstr "Vlastní hra"
-
-#: src/titlescreen.c:730 src/titlescreen.c:781 src/titlescreen.c:790
-#: src/titlescreen.c:850 src/titlescreen.c:970
-msgid "Main menu"
-msgstr "Hlavní menu"
-
-#: src/titlescreen.c:779
-msgid "Score Sweep"
-msgstr ""
-
-#: src/titlescreen.c:780
-msgid "Elimination"
-msgstr ""
-
-#: src/titlescreen.c:824
-msgid "How many kids are playing?"
-msgstr ""
-
-#: src/titlescreen.c:825
-msgid "(Between 2 and 4 players)"
-msgstr ""
-
-#: src/titlescreen.c:944
-msgid "Edit 'options' file in your home directory"
-msgstr "Uprav soubor «options » ve své domovské složce,"
-
-#: src/titlescreen.c:945
-msgid "to create customized game!"
-msgstr "abys mohl vytvořit vlastní hru!"
-
-#: src/titlescreen.c:946
-msgid "Press a key or click your mouse to start game."
-msgstr "Zmáčkni klávesu nebo klikni tlačítkem myši, abys začal hru"
-
-#: src/titlescreen.c:947
-msgid "See README.txt for more information"
-msgstr "Pokud chceš více informací, podívej se na README.txt"
-
-#: src/titlescreen.c:1062
-msgid "Demo"
-msgstr "Demo"
-
-#: src/titlescreen.c:1063
-msgid "Project Info"
-msgstr "Info o projektu"
-
-#: src/titlescreen.c:1064
-msgid "Credits"
-msgstr "Poděkování"
-
-#: src/titlescreen.c:1065
-msgid "Main Menu"
-msgstr "Hlavní menu"
-
-#: src/titlescreen.c:1113
-msgid "TuxMath is free and open-source!"
-msgstr "TuxMath je svobodný software!"
-
-#: src/titlescreen.c:1114
-msgid "You can help make it better by reporting problems,"
-msgstr "I ty ho můžeš vylepšit, když oznámíš chyby, "
-
-#: src/titlescreen.c:1115
-msgid "suggesting improvements, or adding code."
-msgstr "navrhneš vylepšení nebo přidáš svůj kód"
-
-#: src/titlescreen.c:1116
-msgid "Discuss the future at tuxmath-devel at lists.sourceforge.net"
-msgstr "Diskutuj o budoucnosti na tuxmath-devel at lists.sourceforge.net"
-
 #: data/missions/lessons/descr_lessons:1
 msgid "Number Typing"
 msgstr "Psaní číslic"
@@ -764,3 +659,60 @@
 #: data/missions/lessons/descr_lessons:58
 msgid "Division of Positives and Negatives"
 msgstr "Dělení kladných a záporných čísel"
+
+#~ msgid "Help"
+#~ msgstr "Nápověda"
+
+#~ msgid "More Options"
+#~ msgstr "Více možností"
+
+#~ msgid "Quit"
+#~ msgstr "Ukončit"
+
+#~ msgid "Math Command Training Academy"
+#~ msgstr "Akademie vesmírné matematiky"
+
+#~ msgid "Play Arcade Game"
+#~ msgstr "Hra"
+
+#~ msgid "Play Custom Game"
+#~ msgstr "Vlastní hra"
+
+#~ msgid "Main menu"
+#~ msgstr "Hlavní menu"
+
+#~ msgid "Edit 'options' file in your home directory"
+#~ msgstr "Uprav soubor «options » ve své domovské složce,"
+
+#~ msgid "to create customized game!"
+#~ msgstr "abys mohl vytvořit vlastní hru!"
+
+#~ msgid "Press a key or click your mouse to start game."
+#~ msgstr "Zmáčkni klávesu nebo klikni tlačítkem myši, abys začal hru"
+
+#~ msgid "See README.txt for more information"
+#~ msgstr "Pokud chceš více informací, podívej se na README.txt"
+
+#~ msgid "Demo"
+#~ msgstr "Demo"
+
+#~ msgid "Project Info"
+#~ msgstr "Info o projektu"
+
+#~ msgid "Credits"
+#~ msgstr "Poděkování"
+
+#~ msgid "Main Menu"
+#~ msgstr "Hlavní menu"
+
+#~ msgid "TuxMath is free and open-source!"
+#~ msgstr "TuxMath je svobodný software!"
+
+#~ msgid "You can help make it better by reporting problems,"
+#~ msgstr "I ty ho můžeš vylepšit, když oznámíš chyby, "
+
+#~ msgid "suggesting improvements, or adding code."
+#~ msgstr "navrhneš vylepšení nebo přidáš svůj kód"
+
+#~ msgid "Discuss the future at tuxmath-devel at lists.sourceforge.net"
+#~ msgstr "Diskutuj o budoucnosti na tuxmath-devel at lists.sourceforge.net"

Modified: tuxmath/trunk/po/de.gmo
===================================================================
(Binary files differ)

Modified: tuxmath/trunk/po/de.po
===================================================================
--- tuxmath/trunk/po/de.po	2009-09-04 19:47:19 UTC (rev 1488)
+++ tuxmath/trunk/po/de.po	2009-09-05 02:31:43 UTC (rev 1489)
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: de\n"
 "Report-Msgid-Bugs-To: tuxmath-devel at lists.sourceforge.net\n"
-"POT-Creation-Date: 2009-03-06 06:12-0600\n"
+"POT-Creation-Date: 2009-09-04 21:22-0500\n"
 "PO-Revision-Date: 2008-05-02 16:08+0200\n"
 "Last-Translator: Lars Vogdt <lars at linux-schulserver.de>\n"
 "MIME-Version: 1.0\n"
@@ -201,335 +201,229 @@
 
 #: src/credits.c:108
 msgid ""
-"A full copy of the GPL is included with the documenation for this program."
+"A full copy of the GPL is included with the documentation for this program."
 msgstr ""
 
 #: src/credits.c:110
 msgid "For more information about Free Software and the GNU GPL, visit:"
 msgstr ""
 
-#: src/factoroids.c:558
+#: src/factoroids.c:552
 msgid "FACTOROIDS: to win, you need destroy all the asteroids."
 msgstr ""
 
-#: src/factoroids.c:559 src/factoroids.c:570
+#: src/factoroids.c:553 src/factoroids.c:564
 msgid "Use the arrow keys to turn or go forward.  Aim at an asteroid,"
 msgstr ""
 
-#: src/factoroids.c:560
+#: src/factoroids.c:554
 msgid "type one of its factors, and press space or return"
 msgstr ""
 
-#: src/factoroids.c:561
+#: src/factoroids.c:555
 msgid "to split it into its factors.  Rocks with prime numbers are destroyed!"
 msgstr ""
 
-#: src/factoroids.c:569
+#: src/factoroids.c:563
 msgid "FRACTIONS: to win, you need destroy all the asteroids"
 msgstr ""
 
-#: src/factoroids.c:571
+#: src/factoroids.c:565
 msgid "type a number that can simplify the fraction, and press space or return"
 msgstr ""
 
-#: src/factoroids.c:572
+#: src/factoroids.c:566
 msgid ""
 "to split it.  Destroy fractions that can not be further simplified in a "
 "single shot!"
 msgstr ""
 
-#: src/game.c:717
+#: src/game.c:989
 msgid "Welcome to TuxMath!"
 msgstr "Willkommen bei TuxMath!"
 
-#: src/game.c:734
+#: src/game.c:1006
 msgid "Your mission is to save your"
 msgstr "Deine Mission besteht darin, "
 
-#: src/game.c:735
+#: src/game.c:1007
 msgid "penguins' igloos from the"
 msgstr "die Iglus der Pinguine vor den "
 
-#: src/game.c:736
+#: src/game.c:1008
 msgid "falling comets."
 msgstr "herabfallenden Kometen zu schützen."
 
-#: src/game.c:755
+#: src/game.c:1027
 msgid "Stop a comet by typing"
 msgstr "Stoppe einen Kometen, indem du "
 
-#: src/game.c:756
+#: src/game.c:1028
 msgid "the answer to the math problem"
 msgstr "die Antwort auf das mathematische Problem"
 
-#: src/game.c:757
+#: src/game.c:1029
 msgid "and hitting 'space' or 'enter'."
 msgstr "eingibst und die \"Leertaste\" oder \"Enter\" drückst. "
 
-#: src/game.c:758
+#: src/game.c:1030
 msgid "Try it now!"
 msgstr "Versuch es jetzt!"
 
-#: src/game.c:766
+#: src/game.c:1038
 msgid "Good shot!"
 msgstr "Guter Schuß!"
 
-#: src/game.c:776
+#: src/game.c:1048
 msgid "If an igloo gets hit by a comet,"
 msgstr "Wenn ein Iglu von einem Kometen getroffen wird, "
 
-#: src/game.c:777
+#: src/game.c:1049
 #, fuzzy
 msgid "it melts. But don't worry: the"
 msgstr "schmilzt es. Aber keine Angst, dem "
 
-#: src/game.c:778
+#: src/game.c:1050
 msgid "penguin is OK!"
 msgstr "Pingiun geht es gut!"
 
-#: src/game.c:779
+#: src/game.c:1051
 msgid "Just watch what happens:"
 msgstr "Sie einfach zu was passiert "
 
-#: src/game.c:780
+#: src/game.c:1052
 msgid "(Press a key to start)"
 msgstr "(Eine Taste zum starten drücken)"
 
-#: src/game.c:793
+#: src/game.c:1065
 msgid "Notice the answer"
 msgstr "Beachte die Antwort"
 
-#: src/game.c:803
+#: src/game.c:1075
 msgid "If it gets hit again, the"
 msgstr "wenn es noch einmal getroffen wird, "
 
-#: src/game.c:804
+#: src/game.c:1076
 msgid "penguin leaves."
 msgstr "wird der Pinguin verschwinden."
 
-#: src/game.c:805
+#: src/game.c:1077
 msgid "(Press a key when ready)"
 msgstr "(Wenn fertig, bitte Taste drücken)"
 
-#: src/game.c:824
+#: src/game.c:1100
 msgid "You can fix the igloos"
 msgstr "Du kannst die kaputten Iglus reparieren"
 
-#: src/game.c:825
+#: src/game.c:1101
 msgid "by stopping bonus comets."
 msgstr "wenn du Bonus-Kometen aufhälst."
 
-#: src/game.c:834
+#: src/game.c:1112
 msgid "Zap it now!"
 msgstr "Knall ihn jetzt ab!"
 
-#: src/game.c:838
+#: src/game.c:1118
 msgid "Great job!"
 msgstr "Super Arbeit!"
 
-#: src/game.c:852
+#: src/game.c:1136
 msgid "Quit at any time by pressing"
 msgstr "Beende das Spiel zu jeder Zeit durch Drücken von "
 
-#: src/game.c:853
+#: src/game.c:1137
 msgid "'Esc' or clicking the 'X'"
 msgstr "'Esc' oder durch klicken auf das 'X'"
 
-#: src/game.c:854
+#: src/game.c:1138
 msgid "in the upper right corner."
 msgstr "in der oberen rechten Ecke."
 
-#: src/game.c:855
+#: src/game.c:1139
 msgid "Do it now, and then play!"
 msgstr "Tu es jetzt - und dann spiele!"
 
-#: src/highscore.c:212 src/titlescreen.c:849
+#: src/highscore.c:167
 msgid "Hall Of Fame"
 msgstr "Ruhmeshalle"
 
-#: src/highscore.c:232 src/highscore.c:253 src/titlescreen.c:785
-#: src/titlescreen.c:844
+#: src/highscore.c:187 src/highscore.c:208
 msgid "Space Cadet"
 msgstr "Raumkadett"
 
-#: src/highscore.c:235 src/titlescreen.c:786 src/titlescreen.c:845
+#: src/highscore.c:190
 msgid "Scout"
 msgstr "Aufklärer"
 
-#: src/highscore.c:238 src/titlescreen.c:787 src/titlescreen.c:846
+#: src/highscore.c:193
 msgid "Ranger"
 msgstr "Jäger"
 
-#: src/highscore.c:241 src/titlescreen.c:788 src/titlescreen.c:847
+#: src/highscore.c:196
 msgid "Ace"
 msgstr "Ass"
 
-#: src/highscore.c:244 src/titlescreen.c:789 src/titlescreen.c:848
+#: src/highscore.c:199
 msgid "Commando"
 msgstr ""
 
-#: src/highscore.c:247 src/titlescreen.c:968
+#: src/highscore.c:202
 msgid "Factors"
 msgstr ""
 
-#: src/highscore.c:250 src/titlescreen.c:969
+#: src/highscore.c:205
 msgid "Fractions"
 msgstr ""
 
-#: src/highscore.c:353
+#: src/highscore.c:286
 msgid "You Are In The Hall of Fame!"
 msgstr ""
 
-#: src/highscore.c:353
+#: src/highscore.c:286
 msgid "Enter Your Name:"
 msgstr ""
 
-#: src/multiplayer.c:244
+#: src/multiplayer.c:183
+#, c-format
+msgid "Then %s\n"
+msgstr ""
+
+#: src/multiplayer.c:258
 msgid "Who is playing first?"
 msgstr ""
 
-#: src/multiplayer.c:244 src/multiplayer.c:246
+#: src/multiplayer.c:258 src/multiplayer.c:260
 msgid "Enter your name:"
 msgstr ""
 
-#: src/multiplayer.c:246
+#: src/multiplayer.c:260
 msgid "Who is playing next?"
 msgstr ""
 
-#: src/multiplayer.c:260
+#: src/multiplayer.c:274
 msgid "How many rounds will you play?"
 msgstr ""
 
-#: src/multiplayer.c:260
+#: src/multiplayer.c:274
 msgid "Enter a number"
 msgstr ""
 
-#: src/titlescreen.c:487
+#: src/titlescreen.c:476
 msgid "Work In Progress!"
 msgstr "In Arbeit!"
 
-#: src/titlescreen.c:488
+#: src/titlescreen.c:477
 msgid "This feature is not ready yet"
 msgstr "Dieser Bereich ist noch nicht fertig."
 
-#: src/titlescreen.c:489
+#: src/titlescreen.c:478
 msgid "Discuss the future of TuxMath at"
 msgstr "Diskutiere über die Zukunft von TuxMath auf "
 
-#: src/titlescreen.c:490
+#: src/titlescreen.c:479
 msgid "tuxmath-devel at lists.sourceforge.net"
 msgstr "tuxmath-devel at lists.sourceforge.net"
 
-#: src/titlescreen.c:647
-msgid "Play Alone"
-msgstr ""
-
-#: src/titlescreen.c:648
-msgid "Play With Friends"
-msgstr ""
-
-#: src/titlescreen.c:649
-msgid "Factoroids!"
-msgstr ""
-
-#: src/titlescreen.c:650
-msgid "Help"
-msgstr "Hilfe"
-
-#: src/titlescreen.c:651
-msgid "More Options"
-msgstr "Weitere Optionen"
-
-#: src/titlescreen.c:652
-msgid "Quit"
-msgstr "Ende"
-
-#: src/titlescreen.c:726
-msgid "Math Command Training Academy"
-msgstr "Math Command Trainings-Akademie"
-
-#: src/titlescreen.c:727
-msgid "Math Command Fleet Missions"
-msgstr ""
-
-#: src/titlescreen.c:728
-msgid "Play Arcade Game"
-msgstr "Spiele Arcade Spiel"
-
-#: src/titlescreen.c:729
-msgid "Play Custom Game"
-msgstr "Spiele angepasstes Spiel"
-
-#: src/titlescreen.c:730 src/titlescreen.c:781 src/titlescreen.c:790
-#: src/titlescreen.c:850 src/titlescreen.c:970
-msgid "Main menu"
-msgstr "Hauptmenü"
-
-#: src/titlescreen.c:779
-msgid "Score Sweep"
-msgstr ""
-
-#: src/titlescreen.c:780
-msgid "Elimination"
-msgstr ""
-
-#: src/titlescreen.c:824
-msgid "How many kids are playing?"
-msgstr ""
-
-#: src/titlescreen.c:825
-msgid "(Between 2 and 4 players)"
-msgstr ""
-
-#: src/titlescreen.c:944
-msgid "Edit 'options' file in your home directory"
-msgstr "Editiere die 'options' Datei in deinem Benutzerverzeichnis"
-
-#: src/titlescreen.c:945
-msgid "to create customized game!"
-msgstr "um ein angepasstes Spiel zu erzeugen."
-
-#: src/titlescreen.c:946
-msgid "Press a key or click your mouse to start game."
-msgstr "Drücke eine Taste oder klicke mit der Maus um ein Spiel zu starten"
-
-#: src/titlescreen.c:947
-msgid "See README.txt for more information"
-msgstr "Lies die README.txt Datei für weitere Infrormationen"
-
-#: src/titlescreen.c:1062
-msgid "Demo"
-msgstr "Demonstration"
-
-#: src/titlescreen.c:1063
-msgid "Project Info"
-msgstr "Projekt Information"
-
-#: src/titlescreen.c:1064
-msgid "Credits"
-msgstr "Abspann"
-
-#: src/titlescreen.c:1065
-msgid "Main Menu"
-msgstr "Hauptmenü"
-
-#: src/titlescreen.c:1113
-msgid "TuxMath is free and open-source!"
-msgstr "TuxMath ist frei und OpenSource!"
-
-#: src/titlescreen.c:1114
-msgid "You can help make it better by reporting problems,"
-msgstr "Du kannst bei der Verbesserung helfen, wenn du Probleme "
-
-#: src/titlescreen.c:1115
-msgid "suggesting improvements, or adding code."
-msgstr "meldest, Wünsche außerst oder Programmcode beisteuerst."
-
-#: src/titlescreen.c:1116
-msgid "Discuss the future at tuxmath-devel at lists.sourceforge.net"
-msgstr ""
-"Diskutiere die Zukunft von TuxMath auf tuxmath-devel at lists.sourceforge.net"
-
 #: data/missions/lessons/descr_lessons:1
 msgid "Number Typing"
 msgstr "Zahlen eingeben"
@@ -764,6 +658,64 @@
 msgid "Division of Positives and Negatives"
 msgstr "Division von positiven und negativen Zahlen"
 
+#~ msgid "Help"
+#~ msgstr "Hilfe"
+
+#~ msgid "More Options"
+#~ msgstr "Weitere Optionen"
+
+#~ msgid "Quit"
+#~ msgstr "Ende"
+
+#~ msgid "Math Command Training Academy"
+#~ msgstr "Math Command Trainings-Akademie"
+
+#~ msgid "Play Arcade Game"
+#~ msgstr "Spiele Arcade Spiel"
+
+#~ msgid "Play Custom Game"
+#~ msgstr "Spiele angepasstes Spiel"
+
+#~ msgid "Main menu"
+#~ msgstr "Hauptmenü"
+
+#~ msgid "Edit 'options' file in your home directory"
+#~ msgstr "Editiere die 'options' Datei in deinem Benutzerverzeichnis"
+
+#~ msgid "to create customized game!"
+#~ msgstr "um ein angepasstes Spiel zu erzeugen."
+
+#~ msgid "Press a key or click your mouse to start game."
+#~ msgstr "Drücke eine Taste oder klicke mit der Maus um ein Spiel zu starten"
+
+#~ msgid "See README.txt for more information"
+#~ msgstr "Lies die README.txt Datei für weitere Infrormationen"
+
+#~ msgid "Demo"
+#~ msgstr "Demonstration"
+
+#~ msgid "Project Info"
+#~ msgstr "Projekt Information"
+
+#~ msgid "Credits"
+#~ msgstr "Abspann"
+
+#~ msgid "Main Menu"
+#~ msgstr "Hauptmenü"
+
+#~ msgid "TuxMath is free and open-source!"
+#~ msgstr "TuxMath ist frei und OpenSource!"
+
+#~ msgid "You can help make it better by reporting problems,"
+#~ msgstr "Du kannst bei der Verbesserung helfen, wenn du Probleme "
+
+#~ msgid "suggesting improvements, or adding code."
+#~ msgstr "meldest, Wünsche außerst oder Programmcode beisteuerst."
+
+#~ msgid "Discuss the future at tuxmath-devel at lists.sourceforge.net"
+#~ msgstr ""
+#~ "Diskutiere die Zukunft von TuxMath auf tuxmath-devel at lists.sourceforge.net"
+
 #, fuzzy
 #~ msgid "the penguins' igloos. To save their homes,"
 #~ msgstr "die Iglus der Pinguine vor den "

Modified: tuxmath/trunk/po/en at boldquot.gmo
===================================================================
(Binary files differ)

Modified: tuxmath/trunk/po/en at boldquot.po
===================================================================
--- tuxmath/trunk/po/en at boldquot.po	2009-09-04 19:47:19 UTC (rev 1488)
+++ tuxmath/trunk/po/en at boldquot.po	2009-09-05 02:31:43 UTC (rev 1489)
@@ -29,10 +29,10 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: tuxmath 1.7.2\n"
+"Project-Id-Version: tuxmath 1.7.3\n"
 "Report-Msgid-Bugs-To: tuxmath-devel at lists.sourceforge.net\n"
-"POT-Creation-Date: 2009-03-06 06:12-0600\n"
-"PO-Revision-Date: 2009-03-06 06:12-0600\n"
+"POT-Creation-Date: 2009-09-04 21:22-0500\n"
+"PO-Revision-Date: 2009-09-04 21:22-0500\n"
 "Last-Translator: Automatically generated\n"
 "Language-Team: none\n"
 "MIME-Version: 1.0\n"
@@ -252,40 +252,40 @@
 
 #: src/credits.c:108
 msgid ""
-"A full copy of the GPL is included with the documenation for this program."
+"A full copy of the GPL is included with the documentation for this program."
 msgstr ""
-"A full copy of the GPL is included with the documenation for this program."
+"A full copy of the GPL is included with the documentation for this program."
 
 #: src/credits.c:110
 msgid "For more information about Free Software and the GNU GPL, visit:"
 msgstr "For more information about Free Software and the GNU GPL, visit:"
 
-#: src/factoroids.c:558
+#: src/factoroids.c:552
 msgid "FACTOROIDS: to win, you need destroy all the asteroids."
 msgstr "FACTOROIDS: to win, you need destroy all the asteroids."
 
-#: src/factoroids.c:559 src/factoroids.c:570
+#: src/factoroids.c:553 src/factoroids.c:564
 msgid "Use the arrow keys to turn or go forward.  Aim at an asteroid,"
 msgstr "Use the arrow keys to turn or go forward.  Aim at an asteroid,"
 
-#: src/factoroids.c:560
+#: src/factoroids.c:554
 msgid "type one of its factors, and press space or return"
 msgstr "type one of its factors, and press space or return"
 
-#: src/factoroids.c:561
+#: src/factoroids.c:555
 msgid "to split it into its factors.  Rocks with prime numbers are destroyed!"
 msgstr "to split it into its factors.  Rocks with prime numbers are destroyed!"
 
-#: src/factoroids.c:569
+#: src/factoroids.c:563
 msgid "FRACTIONS: to win, you need destroy all the asteroids"
 msgstr "FRACTIONS: to win, you need destroy all the asteroids"
 
-#: src/factoroids.c:571
+#: src/factoroids.c:565
 msgid "type a number that can simplify the fraction, and press space or return"
 msgstr ""
 "type a number that can simplify the fraction, and press space or return"
 
-#: src/factoroids.c:572
+#: src/factoroids.c:566
 msgid ""
 "to split it.  Destroy fractions that can not be further simplified in a "
 "single shot!"
@@ -293,296 +293,191 @@
 "to split it.  Destroy fractions that can not be further simplified in a "
 "single shot!"
 
-#: src/game.c:717
+#: src/game.c:989
 msgid "Welcome to TuxMath!"
 msgstr "Welcome to TuxMath!"
 
-#: src/game.c:734
+#: src/game.c:1006
 msgid "Your mission is to save your"
 msgstr "Your mission is to save your"
 
-#: src/game.c:735
+#: src/game.c:1007
 msgid "penguins' igloos from the"
 msgstr "penguins' igloos from the"
 
-#: src/game.c:736
+#: src/game.c:1008
 msgid "falling comets."
 msgstr "falling comets."
 
-#: src/game.c:755
+#: src/game.c:1027
 msgid "Stop a comet by typing"
 msgstr "Stop a comet by typing"
 
-#: src/game.c:756
+#: src/game.c:1028
 msgid "the answer to the math problem"
 msgstr "the answer to the math problem"
 
-#: src/game.c:757
+#: src/game.c:1029
 msgid "and hitting 'space' or 'enter'."
 msgstr "and hitting ‘space’ or 'enter'."
 
-#: src/game.c:758
+#: src/game.c:1030
 msgid "Try it now!"
 msgstr "Try it now!"
 
-#: src/game.c:766
+#: src/game.c:1038
 msgid "Good shot!"
 msgstr "Good shot!"
 
-#: src/game.c:776
+#: src/game.c:1048
 msgid "If an igloo gets hit by a comet,"
 msgstr "If an igloo gets hit by a comet,"
 
-#: src/game.c:777
+#: src/game.c:1049
 msgid "it melts. But don't worry: the"
 msgstr "it melts. But don't worry: the"
 
-#: src/game.c:778
+#: src/game.c:1050
 msgid "penguin is OK!"
 msgstr "penguin is OK!"
 
-#: src/game.c:779
+#: src/game.c:1051
 msgid "Just watch what happens:"
 msgstr "Just watch what happens:"
 
-#: src/game.c:780
+#: src/game.c:1052
 msgid "(Press a key to start)"
 msgstr "(Press a key to start)"
 
-#: src/game.c:793
+#: src/game.c:1065
 msgid "Notice the answer"
 msgstr "Notice the answer"
 
-#: src/game.c:803
+#: src/game.c:1075
 msgid "If it gets hit again, the"
 msgstr "If it gets hit again, the"
 
-#: src/game.c:804
+#: src/game.c:1076
 msgid "penguin leaves."
 msgstr "penguin leaves."
 
-#: src/game.c:805
+#: src/game.c:1077
 msgid "(Press a key when ready)"
 msgstr "(Press a key when ready)"
 
-#: src/game.c:824
+#: src/game.c:1100
 msgid "You can fix the igloos"
 msgstr "You can fix the igloos"
 
-#: src/game.c:825
+#: src/game.c:1101
 msgid "by stopping bonus comets."
 msgstr "by stopping bonus comets."
 
-#: src/game.c:834
+#: src/game.c:1112
 msgid "Zap it now!"
 msgstr "Zap it now!"
 
-#: src/game.c:838
+#: src/game.c:1118
 msgid "Great job!"
 msgstr "Great job!"
 
-#: src/game.c:852
+#: src/game.c:1136
 msgid "Quit at any time by pressing"
 msgstr "Quit at any time by pressing"
 
-#: src/game.c:853
+#: src/game.c:1137
 msgid "'Esc' or clicking the 'X'"
 msgstr "‘Esc’ or clicking the ‘X’"
 
-#: src/game.c:854
+#: src/game.c:1138
 msgid "in the upper right corner."
 msgstr "in the upper right corner."
 
-#: src/game.c:855
+#: src/game.c:1139
 msgid "Do it now, and then play!"
 msgstr "Do it now, and then play!"
 
-#: src/highscore.c:212 src/titlescreen.c:849
+#: src/highscore.c:167
 msgid "Hall Of Fame"
 msgstr "Hall Of Fame"
 
-#: src/highscore.c:232 src/highscore.c:253 src/titlescreen.c:785
-#: src/titlescreen.c:844
+#: src/highscore.c:187 src/highscore.c:208
 msgid "Space Cadet"
 msgstr "Space Cadet"
 
-#: src/highscore.c:235 src/titlescreen.c:786 src/titlescreen.c:845
+#: src/highscore.c:190
 msgid "Scout"
 msgstr "Scout"
 
-#: src/highscore.c:238 src/titlescreen.c:787 src/titlescreen.c:846
+#: src/highscore.c:193
 msgid "Ranger"
 msgstr "Ranger"
 
-#: src/highscore.c:241 src/titlescreen.c:788 src/titlescreen.c:847
+#: src/highscore.c:196
 msgid "Ace"
 msgstr "Ace"
 
-#: src/highscore.c:244 src/titlescreen.c:789 src/titlescreen.c:848
+#: src/highscore.c:199
 msgid "Commando"
 msgstr "Commando"
 
-#: src/highscore.c:247 src/titlescreen.c:968
+#: src/highscore.c:202
 msgid "Factors"
 msgstr "Factors"
 
-#: src/highscore.c:250 src/titlescreen.c:969
+#: src/highscore.c:205
 msgid "Fractions"
 msgstr "Fractions"
 
-#: src/highscore.c:353
+#: src/highscore.c:286
 msgid "You Are In The Hall of Fame!"
 msgstr "You Are In The Hall of Fame!"
 
-#: src/highscore.c:353
+#: src/highscore.c:286
 msgid "Enter Your Name:"
 msgstr "Enter Your Name:"
 
-#: src/multiplayer.c:244
+#: src/multiplayer.c:183
+#, c-format
+msgid "Then %s\n"
+msgstr "Then %s\n"
+
+#: src/multiplayer.c:258
 msgid "Who is playing first?"
 msgstr "Who is playing first?"
 
-#: src/multiplayer.c:244 src/multiplayer.c:246
+#: src/multiplayer.c:258 src/multiplayer.c:260
 msgid "Enter your name:"
 msgstr "Enter your name:"
 
-#: src/multiplayer.c:246
+#: src/multiplayer.c:260
 msgid "Who is playing next?"
 msgstr "Who is playing next?"
 
-#: src/multiplayer.c:260
+#: src/multiplayer.c:274
 msgid "How many rounds will you play?"
 msgstr "How many rounds will you play?"
 
-#: src/multiplayer.c:260
+#: src/multiplayer.c:274
 msgid "Enter a number"
 msgstr "Enter a number"
 
-#: src/titlescreen.c:487
+#: src/titlescreen.c:476
 msgid "Work In Progress!"
 msgstr "Work In Progress!"
 
-#: src/titlescreen.c:488
+#: src/titlescreen.c:477
 msgid "This feature is not ready yet"
 msgstr "This feature is not ready yet"
 
-#: src/titlescreen.c:489
+#: src/titlescreen.c:478
 msgid "Discuss the future of TuxMath at"
 msgstr "Discuss the future of TuxMath at"
 
-#: src/titlescreen.c:490
+#: src/titlescreen.c:479
 msgid "tuxmath-devel at lists.sourceforge.net"
 msgstr "tuxmath-devel at lists.sourceforge.net"
 
-#: src/titlescreen.c:647
-msgid "Play Alone"
-msgstr "Play Alone"
-
-#: src/titlescreen.c:648
-msgid "Play With Friends"
-msgstr "Play With Friends"
-
-#: src/titlescreen.c:649
-msgid "Factoroids!"
-msgstr "Factoroids!"
-
-#: src/titlescreen.c:650
-msgid "Help"
-msgstr "Help"
-
-#: src/titlescreen.c:651
-msgid "More Options"
-msgstr "More Options"
-
-#: src/titlescreen.c:652
-msgid "Quit"
-msgstr "Quit"
-
-#: src/titlescreen.c:726
-msgid "Math Command Training Academy"
-msgstr "Math Command Training Academy"
-
-#: src/titlescreen.c:727
-msgid "Math Command Fleet Missions"
-msgstr "Math Command Fleet Missions"
-
-#: src/titlescreen.c:728
-msgid "Play Arcade Game"
-msgstr "Play Arcade Game"
-
-#: src/titlescreen.c:729
-msgid "Play Custom Game"
-msgstr "Play Custom Game"
-
-#: src/titlescreen.c:730 src/titlescreen.c:781 src/titlescreen.c:790
-#: src/titlescreen.c:850 src/titlescreen.c:970
-msgid "Main menu"
-msgstr "Main menu"
-
-#: src/titlescreen.c:779
-msgid "Score Sweep"
-msgstr "Score Sweep"
-
-#: src/titlescreen.c:780
-msgid "Elimination"
-msgstr "Elimination"
-
-#: src/titlescreen.c:824
-msgid "How many kids are playing?"
-msgstr "How many kids are playing?"
-
-#: src/titlescreen.c:825
-msgid "(Between 2 and 4 players)"
-msgstr "(Between 2 and 4 players)"
-
-#: src/titlescreen.c:944
-msgid "Edit 'options' file in your home directory"
-msgstr "Edit ‘options’ file in your home directory"
-
-#: src/titlescreen.c:945
-msgid "to create customized game!"
-msgstr "to create customized game!"
-
-#: src/titlescreen.c:946
-msgid "Press a key or click your mouse to start game."
-msgstr "Press a key or click your mouse to start game."
-
-#: src/titlescreen.c:947
-msgid "See README.txt for more information"
-msgstr "See README.txt for more information"
-
-#: src/titlescreen.c:1062
-msgid "Demo"
-msgstr "Demo"
-
-#: src/titlescreen.c:1063
-msgid "Project Info"
-msgstr "Project Info"
-
-#: src/titlescreen.c:1064
-msgid "Credits"
-msgstr "Credits"
-
-#: src/titlescreen.c:1065
-msgid "Main Menu"
-msgstr "Main Menu"
-
-#: src/titlescreen.c:1113
-msgid "TuxMath is free and open-source!"
-msgstr "TuxMath is free and open-source!"
-
-#: src/titlescreen.c:1114
-msgid "You can help make it better by reporting problems,"
-msgstr "You can help make it better by reporting problems,"
-
-#: src/titlescreen.c:1115
-msgid "suggesting improvements, or adding code."
-msgstr "suggesting improvements, or adding code."
-
-#: src/titlescreen.c:1116
-msgid "Discuss the future at tuxmath-devel at lists.sourceforge.net"
-msgstr "Discuss the future at tuxmath-devel at lists.sourceforge.net"
-
 #: data/missions/lessons/descr_lessons:1
 msgid "Number Typing"
 msgstr "Number Typing"

Modified: tuxmath/trunk/po/en at quot.gmo
===================================================================
(Binary files differ)

Modified: tuxmath/trunk/po/en at quot.po
===================================================================
--- tuxmath/trunk/po/en at quot.po	2009-09-04 19:47:19 UTC (rev 1488)
+++ tuxmath/trunk/po/en at quot.po	2009-09-05 02:31:43 UTC (rev 1489)
@@ -26,10 +26,10 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: tuxmath 1.7.2\n"
+"Project-Id-Version: tuxmath 1.7.3\n"
 "Report-Msgid-Bugs-To: tuxmath-devel at lists.sourceforge.net\n"
-"POT-Creation-Date: 2009-03-06 06:12-0600\n"
-"PO-Revision-Date: 2009-03-06 06:12-0600\n"
+"POT-Creation-Date: 2009-09-04 21:22-0500\n"
+"PO-Revision-Date: 2009-09-04 21:22-0500\n"
 "Last-Translator: Automatically generated\n"
 "Language-Team: none\n"
 "MIME-Version: 1.0\n"
@@ -249,40 +249,40 @@
 
 #: src/credits.c:108
 msgid ""
-"A full copy of the GPL is included with the documenation for this program."
+"A full copy of the GPL is included with the documentation for this program."
 msgstr ""
-"A full copy of the GPL is included with the documenation for this program."
+"A full copy of the GPL is included with the documentation for this program."
 
 #: src/credits.c:110
 msgid "For more information about Free Software and the GNU GPL, visit:"
 msgstr "For more information about Free Software and the GNU GPL, visit:"
 
-#: src/factoroids.c:558
+#: src/factoroids.c:552
 msgid "FACTOROIDS: to win, you need destroy all the asteroids."
 msgstr "FACTOROIDS: to win, you need destroy all the asteroids."
 
-#: src/factoroids.c:559 src/factoroids.c:570
+#: src/factoroids.c:553 src/factoroids.c:564
 msgid "Use the arrow keys to turn or go forward.  Aim at an asteroid,"
 msgstr "Use the arrow keys to turn or go forward.  Aim at an asteroid,"
 
-#: src/factoroids.c:560
+#: src/factoroids.c:554
 msgid "type one of its factors, and press space or return"
 msgstr "type one of its factors, and press space or return"
 
-#: src/factoroids.c:561
+#: src/factoroids.c:555
 msgid "to split it into its factors.  Rocks with prime numbers are destroyed!"
 msgstr "to split it into its factors.  Rocks with prime numbers are destroyed!"
 
-#: src/factoroids.c:569
+#: src/factoroids.c:563
 msgid "FRACTIONS: to win, you need destroy all the asteroids"
 msgstr "FRACTIONS: to win, you need destroy all the asteroids"
 
-#: src/factoroids.c:571
+#: src/factoroids.c:565
 msgid "type a number that can simplify the fraction, and press space or return"
 msgstr ""
 "type a number that can simplify the fraction, and press space or return"
 
-#: src/factoroids.c:572
+#: src/factoroids.c:566
 msgid ""
 "to split it.  Destroy fractions that can not be further simplified in a "
 "single shot!"
@@ -290,296 +290,191 @@
 "to split it.  Destroy fractions that can not be further simplified in a "
 "single shot!"
 
-#: src/game.c:717
+#: src/game.c:989
 msgid "Welcome to TuxMath!"
 msgstr "Welcome to TuxMath!"
 
-#: src/game.c:734
+#: src/game.c:1006
 msgid "Your mission is to save your"
 msgstr "Your mission is to save your"
 
-#: src/game.c:735
+#: src/game.c:1007
 msgid "penguins' igloos from the"
 msgstr "penguins' igloos from the"
 
-#: src/game.c:736
+#: src/game.c:1008
 msgid "falling comets."
 msgstr "falling comets."
 
-#: src/game.c:755
+#: src/game.c:1027
 msgid "Stop a comet by typing"
 msgstr "Stop a comet by typing"
 
-#: src/game.c:756
+#: src/game.c:1028
 msgid "the answer to the math problem"
 msgstr "the answer to the math problem"
 
-#: src/game.c:757
+#: src/game.c:1029
 msgid "and hitting 'space' or 'enter'."
 msgstr "and hitting ‘space’ or 'enter'."
 
-#: src/game.c:758
+#: src/game.c:1030
 msgid "Try it now!"
 msgstr "Try it now!"
 
-#: src/game.c:766
+#: src/game.c:1038
 msgid "Good shot!"
 msgstr "Good shot!"
 
-#: src/game.c:776
+#: src/game.c:1048
 msgid "If an igloo gets hit by a comet,"
 msgstr "If an igloo gets hit by a comet,"
 
-#: src/game.c:777
+#: src/game.c:1049
 msgid "it melts. But don't worry: the"
 msgstr "it melts. But don't worry: the"
 
-#: src/game.c:778
+#: src/game.c:1050
 msgid "penguin is OK!"
 msgstr "penguin is OK!"
 
-#: src/game.c:779
+#: src/game.c:1051
 msgid "Just watch what happens:"
 msgstr "Just watch what happens:"
 
-#: src/game.c:780
+#: src/game.c:1052
 msgid "(Press a key to start)"
 msgstr "(Press a key to start)"
 
-#: src/game.c:793
+#: src/game.c:1065
 msgid "Notice the answer"
 msgstr "Notice the answer"
 
-#: src/game.c:803
+#: src/game.c:1075
 msgid "If it gets hit again, the"
 msgstr "If it gets hit again, the"
 
-#: src/game.c:804
+#: src/game.c:1076
 msgid "penguin leaves."
 msgstr "penguin leaves."
 
-#: src/game.c:805
+#: src/game.c:1077
 msgid "(Press a key when ready)"
 msgstr "(Press a key when ready)"
 
-#: src/game.c:824
+#: src/game.c:1100
 msgid "You can fix the igloos"
 msgstr "You can fix the igloos"
 
-#: src/game.c:825
+#: src/game.c:1101
 msgid "by stopping bonus comets."
 msgstr "by stopping bonus comets."
 
-#: src/game.c:834
+#: src/game.c:1112
 msgid "Zap it now!"
 msgstr "Zap it now!"
 
-#: src/game.c:838
+#: src/game.c:1118
 msgid "Great job!"
 msgstr "Great job!"
 
-#: src/game.c:852
+#: src/game.c:1136
 msgid "Quit at any time by pressing"
 msgstr "Quit at any time by pressing"
 
-#: src/game.c:853
+#: src/game.c:1137
 msgid "'Esc' or clicking the 'X'"
 msgstr "‘Esc’ or clicking the ‘X’"
 
-#: src/game.c:854
+#: src/game.c:1138
 msgid "in the upper right corner."
 msgstr "in the upper right corner."
 
-#: src/game.c:855
+#: src/game.c:1139
 msgid "Do it now, and then play!"
 msgstr "Do it now, and then play!"
 
-#: src/highscore.c:212 src/titlescreen.c:849
+#: src/highscore.c:167
 msgid "Hall Of Fame"
 msgstr "Hall Of Fame"
 
-#: src/highscore.c:232 src/highscore.c:253 src/titlescreen.c:785
-#: src/titlescreen.c:844
+#: src/highscore.c:187 src/highscore.c:208
 msgid "Space Cadet"
 msgstr "Space Cadet"
 
-#: src/highscore.c:235 src/titlescreen.c:786 src/titlescreen.c:845
+#: src/highscore.c:190
 msgid "Scout"
 msgstr "Scout"
 
-#: src/highscore.c:238 src/titlescreen.c:787 src/titlescreen.c:846
+#: src/highscore.c:193
 msgid "Ranger"
 msgstr "Ranger"
 
-#: src/highscore.c:241 src/titlescreen.c:788 src/titlescreen.c:847
+#: src/highscore.c:196
 msgid "Ace"
 msgstr "Ace"
 
-#: src/highscore.c:244 src/titlescreen.c:789 src/titlescreen.c:848
+#: src/highscore.c:199
 msgid "Commando"
 msgstr "Commando"
 
-#: src/highscore.c:247 src/titlescreen.c:968
+#: src/highscore.c:202
 msgid "Factors"
 msgstr "Factors"
 
-#: src/highscore.c:250 src/titlescreen.c:969
+#: src/highscore.c:205
 msgid "Fractions"
 msgstr "Fractions"
 
-#: src/highscore.c:353
+#: src/highscore.c:286
 msgid "You Are In The Hall of Fame!"
 msgstr "You Are In The Hall of Fame!"
 
-#: src/highscore.c:353
+#: src/highscore.c:286
 msgid "Enter Your Name:"
 msgstr "Enter Your Name:"
 
-#: src/multiplayer.c:244
+#: src/multiplayer.c:183
+#, c-format
+msgid "Then %s\n"
+msgstr "Then %s\n"
+
+#: src/multiplayer.c:258
 msgid "Who is playing first?"
 msgstr "Who is playing first?"
 
-#: src/multiplayer.c:244 src/multiplayer.c:246
+#: src/multiplayer.c:258 src/multiplayer.c:260
 msgid "Enter your name:"
 msgstr "Enter your name:"
 
-#: src/multiplayer.c:246
+#: src/multiplayer.c:260
 msgid "Who is playing next?"
 msgstr "Who is playing next?"
 
-#: src/multiplayer.c:260
+#: src/multiplayer.c:274
 msgid "How many rounds will you play?"
 msgstr "How many rounds will you play?"
 
-#: src/multiplayer.c:260
+#: src/multiplayer.c:274
 msgid "Enter a number"
 msgstr "Enter a number"
 
-#: src/titlescreen.c:487
+#: src/titlescreen.c:476
 msgid "Work In Progress!"
 msgstr "Work In Progress!"
 
-#: src/titlescreen.c:488
+#: src/titlescreen.c:477
 msgid "This feature is not ready yet"
 msgstr "This feature is not ready yet"
 
-#: src/titlescreen.c:489
+#: src/titlescreen.c:478
 msgid "Discuss the future of TuxMath at"
 msgstr "Discuss the future of TuxMath at"
 
-#: src/titlescreen.c:490
+#: src/titlescreen.c:479
 msgid "tuxmath-devel at lists.sourceforge.net"
 msgstr "tuxmath-devel at lists.sourceforge.net"
 
-#: src/titlescreen.c:647
-msgid "Play Alone"
-msgstr "Play Alone"
-
-#: src/titlescreen.c:648
-msgid "Play With Friends"
-msgstr "Play With Friends"
-
-#: src/titlescreen.c:649
-msgid "Factoroids!"
-msgstr "Factoroids!"
-
-#: src/titlescreen.c:650
-msgid "Help"
-msgstr "Help"
-
-#: src/titlescreen.c:651
-msgid "More Options"
-msgstr "More Options"
-
-#: src/titlescreen.c:652
-msgid "Quit"
-msgstr "Quit"
-
-#: src/titlescreen.c:726
-msgid "Math Command Training Academy"
-msgstr "Math Command Training Academy"
-
-#: src/titlescreen.c:727
-msgid "Math Command Fleet Missions"
-msgstr "Math Command Fleet Missions"
-
-#: src/titlescreen.c:728
-msgid "Play Arcade Game"
-msgstr "Play Arcade Game"
-
-#: src/titlescreen.c:729
-msgid "Play Custom Game"
-msgstr "Play Custom Game"
-
-#: src/titlescreen.c:730 src/titlescreen.c:781 src/titlescreen.c:790
-#: src/titlescreen.c:850 src/titlescreen.c:970
-msgid "Main menu"
-msgstr "Main menu"
-
-#: src/titlescreen.c:779
-msgid "Score Sweep"
-msgstr "Score Sweep"
-
-#: src/titlescreen.c:780
-msgid "Elimination"
-msgstr "Elimination"
-
-#: src/titlescreen.c:824
-msgid "How many kids are playing?"
-msgstr "How many kids are playing?"
-
-#: src/titlescreen.c:825
-msgid "(Between 2 and 4 players)"
-msgstr "(Between 2 and 4 players)"
-
-#: src/titlescreen.c:944
-msgid "Edit 'options' file in your home directory"
-msgstr "Edit ‘options’ file in your home directory"
-
-#: src/titlescreen.c:945
-msgid "to create customized game!"
-msgstr "to create customized game!"
-
-#: src/titlescreen.c:946
-msgid "Press a key or click your mouse to start game."
-msgstr "Press a key or click your mouse to start game."
-
-#: src/titlescreen.c:947
-msgid "See README.txt for more information"
-msgstr "See README.txt for more information"
-
-#: src/titlescreen.c:1062
-msgid "Demo"
-msgstr "Demo"
-
-#: src/titlescreen.c:1063
-msgid "Project Info"
-msgstr "Project Info"
-
-#: src/titlescreen.c:1064
-msgid "Credits"
-msgstr "Credits"
-
-#: src/titlescreen.c:1065
-msgid "Main Menu"
-msgstr "Main Menu"
-
-#: src/titlescreen.c:1113
-msgid "TuxMath is free and open-source!"
-msgstr "TuxMath is free and open-source!"
-
-#: src/titlescreen.c:1114
-msgid "You can help make it better by reporting problems,"
-msgstr "You can help make it better by reporting problems,"
-
-#: src/titlescreen.c:1115
-msgid "suggesting improvements, or adding code."
-msgstr "suggesting improvements, or adding code."
-
-#: src/titlescreen.c:1116
-msgid "Discuss the future at tuxmath-devel at lists.sourceforge.net"
-msgstr "Discuss the future at tuxmath-devel at lists.sourceforge.net"
-
 #: data/missions/lessons/descr_lessons:1
 msgid "Number Typing"
 msgstr "Number Typing"

Modified: tuxmath/trunk/po/en_GB.gmo
===================================================================
(Binary files differ)

Modified: tuxmath/trunk/po/en_GB.po
===================================================================
--- tuxmath/trunk/po/en_GB.po	2009-09-04 19:47:19 UTC (rev 1488)
+++ tuxmath/trunk/po/en_GB.po	2009-09-05 02:31:43 UTC (rev 1489)
@@ -4,7 +4,7 @@
 msgstr ""
 "Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: tuxmath-devel at lists.sourceforge.net\n"
-"POT-Creation-Date: 2009-03-06 06:12-0600\n"
+"POT-Creation-Date: 2009-09-04 21:22-0500\n"
 "PO-Revision-Date: 2009-06-24 20:33+0100\n"
 "Last-Translator: Caroline Ford <caroline.ford.work at googlemail.com>\n"
 "Language-Team: Norwegian Nynorsk <i18n-nn at lister.ping.uio.no>\n"
@@ -24,10 +24,7 @@
 msgid "Round"
 msgstr "Round"
 
-#: src/campaign.c:115
-#: src/campaign.c:127
-#: src/campaign.c:148
-#: src/campaign.c:159
+#: src/campaign.c:115 src/campaign.c:127 src/campaign.c:148 src/campaign.c:159
 msgid "-[Esc] to skip"
 msgstr "-[Esc] to skip"
 
@@ -40,8 +37,14 @@
 msgstr "I'm so glad you've come!"
 
 #: src/campaign.c:120
-msgid "The penguins need your help! Comets are falling from the sky, and are melting the penguins' igloos. To save their homes, we need you to find the secret code that will zap each comet."
-msgstr "The penguins need your help! Comets are falling from the sky, and are melting the penguins' igloos. To save their homes, we need you to find the secret code that will zap each comet."
+msgid ""
+"The penguins need your help! Comets are falling from the sky, and are "
+"melting the penguins' igloos. To save their homes, we need you to find the "
+"secret code that will zap each comet."
+msgstr ""
+"The penguins need your help! Comets are falling from the sky, and are "
+"melting the penguins' igloos. To save their homes, we need you to find the "
+"secret code that will zap each comet."
 
 #: src/campaign.c:122
 msgid "Do your best!"
@@ -52,12 +55,20 @@
 msgstr "Mission Two: Smart Scout"
 
 #: src/campaign.c:130
-msgid "Great job! Since you saved the penguins' homes, we are promoting you to Scout. Scouts are good for keeping an eye out for trouble..."
-msgstr "Great job! Since you saved the penguins' homes, we are promoting you to Scout. Scouts are good for keeping an eye out for trouble..."
+msgid ""
+"Great job! Since you saved the penguins' homes, we are promoting you to "
+"Scout. Scouts are good for keeping an eye out for trouble..."
+msgstr ""
+"Great job! Since you saved the penguins' homes, we are promoting you to "
+"Scout. Scouts are good for keeping an eye out for trouble..."
 
 #: src/campaign.c:132
-msgid "...like what's happening right now! The TakeAways have come, and they're sending new, trickier comets against the penguins!"
-msgstr "...like what's happening right now! The TakeAways have come, and they're sending new, trickier comets against the penguins!"
+msgid ""
+"...like what's happening right now! The TakeAways have come, and they're "
+"sending new, trickier comets against the penguins!"
+msgstr ""
+"...like what's happening right now! The TakeAways have come, and they're "
+"sending new, trickier comets against the penguins!"
 
 #: src/campaign.c:133
 msgid "But you can save them!"
@@ -68,24 +79,42 @@
 msgstr "Mission Three: Royal Ranger"
 
 #: src/campaign.c:141
-msgid "You've done it again! The Penguin Emperor has chosen you to join his team of Rangers that help protect the city.  We're sending you there now..."
-msgstr "You've done it again! The Penguin Emperor has chosen you to join his team of Rangers that help protect the city.  We're sending you there now..."
+msgid ""
+"You've done it again! The Penguin Emperor has chosen you to join his team of "
+"Rangers that help protect the city.  We're sending you there now..."
+msgstr ""
+"You've done it again! The Penguin Emperor has chosen you to join his team of "
+"Rangers that help protect the city.  We're sending you there now..."
 
 #: src/campaign.c:143
-msgid "...oh no! Now the Emperor himself is under attack, from new types of comets: these problems are multiplying! To fight these, you need great skill. We think you can do it. Join the Rangers and help save the city!"
-msgstr "...oh no! Now the Emperor himself is under attack, from new types of comets: these problems are multiplying! To fight these, you need great skill. We think you can do it. Join the Rangers and help save the city!"
+msgid ""
+"...oh no! Now the Emperor himself is under attack, from new types of comets: "
+"these problems are multiplying! To fight these, you need great skill. We "
+"think you can do it. Join the Rangers and help save the city!"
+msgstr ""
+"...oh no! Now the Emperor himself is under attack, from new types of comets: "
+"these problems are multiplying! To fight these, you need great skill. We "
+"think you can do it. Join the Rangers and help save the city!"
 
 #: src/campaign.c:149
 msgid "Mission Four: Imperial Ace"
 msgstr "Mission Four: Imperial Ace"
 
 #: src/campaign.c:151
-msgid "You did it! The Emperor wants to thank you in person. We are taking you to his ice palace for a great honor: you will become the Imperial Ace!"
-msgstr "You did it! The Emperor wants to thank you in person. We are taking you to his ice palace for a great honor: you will become the Imperial Ace!"
+msgid ""
+"You did it! The Emperor wants to thank you in person. We are taking you to "
+"his ice palace for a great honor: you will become the Imperial Ace!"
+msgstr ""
+"You did it! The Emperor wants to thank you in person. We are taking you to "
+"his ice palace for a great honor: you will become the Imperial Ace!"
 
 #: src/campaign.c:153
-msgid "But right in the middle of the ceremony, a new attack from the land of Division starts!"
-msgstr "But right in the middle of the ceremony, a new attack from the land of Division starts!"
+msgid ""
+"But right in the middle of the ceremony, a new attack from the land of "
+"Division starts!"
+msgstr ""
+"But right in the middle of the ceremony, a new attack from the land of "
+"Division starts!"
 
 #: src/campaign.c:154
 msgid "Now is no time for resting; the city needs your help!"
@@ -96,8 +125,16 @@
 msgstr "Final Mission: Computing Commando"
 
 #: src/campaign.c:162
-msgid "Penguin scientists have learned that all these attacks are coming from a secret base, and they need you to go fight the final battle. They also give you this clue: first do multiplication and division, and then do addition and subtraction."
-msgstr "Penguin scientists have learned that all these attacks are coming from a secret base, and they need you to go fight the final battle. They also give you this clue: first do multiplication and division, and then do addition and subtraction."
+msgid ""
+"Penguin scientists have learned that all these attacks are coming from a "
+"secret base, and they need you to go fight the final battle. They also give "
+"you this clue: first do multiplication and division, and then do addition "
+"and subtraction."
+msgstr ""
+"Penguin scientists have learned that all these attacks are coming from a "
+"secret base, and they need you to go fight the final battle. They also give "
+"you this clue: first do multiplication and division, and then do addition "
+"and subtraction."
 
 #: src/campaign.c:163
 msgid "I hope that hint helps!"
@@ -172,357 +209,252 @@
 msgstr "WEBSITE"
 
 #: src/credits.c:104
-msgid "TuxMath is Free Software licensed under the GNU General Public License (GPL). As such, you are specifically granted the rights that are usually denied to users of proprietary software."
-msgstr "TuxMath is Free Software licensed under the GNU General Public License (GPL). As such, you are specifically granted the rights that are usually denied to users of proprietary software."
+msgid ""
+"TuxMath is Free Software licensed under the GNU General Public License "
+"(GPL). As such, you are specifically granted the rights that are usually "
+"denied to users of proprietary software."
+msgstr ""
+"TuxMath is Free Software licensed under the GNU General Public License "
+"(GPL). As such, you are specifically granted the rights that are usually "
+"denied to users of proprietary software."
 
 #: src/credits.c:106
-msgid "These rights include the freedom to study, copy, modify, and redistribute the program."
-msgstr "These rights include the freedom to study, copy, modify, and redistribute the program."
+msgid ""
+"These rights include the freedom to study, copy, modify, and redistribute "
+"the program."
+msgstr ""
+"These rights include the freedom to study, copy, modify, and redistribute "
+"the program."
 
 #: src/credits.c:108
-msgid "A full copy of the GPL is included with the documenation for this program."
-msgstr "A full copy of the GPL is included with the documenation for this program."
+#, fuzzy
+msgid ""
+"A full copy of the GPL is included with the documentation for this program."
+msgstr ""
+"A full copy of the GPL is included with the documenation for this program."
 
 #: src/credits.c:110
 msgid "For more information about Free Software and the GNU GPL, visit:"
 msgstr "For more information about Free Software and the GNU GPL, visit:"
 
-#: src/factoroids.c:558
+#: src/factoroids.c:552
 msgid "FACTOROIDS: to win, you need destroy all the asteroids."
 msgstr "FACTOROIDS: to win, you need destroy all the asteroids."
 
-#: src/factoroids.c:559
-#: src/factoroids.c:570
+#: src/factoroids.c:553 src/factoroids.c:564
 msgid "Use the arrow keys to turn or go forward.  Aim at an asteroid,"
 msgstr "Use the arrow keys to turn or go forward.  Aim at an asteroid,"
 
-#: src/factoroids.c:560
+#: src/factoroids.c:554
 msgid "type one of its factors, and press space or return"
 msgstr "type one of its factors, and press space or return"
 
-#: src/factoroids.c:561
+#: src/factoroids.c:555
 msgid "to split it into its factors.  Rocks with prime numbers are destroyed!"
 msgstr "to split it into its factors.  Rocks with prime numbers are destroyed!"
 
-#: src/factoroids.c:569
+#: src/factoroids.c:563
 msgid "FRACTIONS: to win, you need destroy all the asteroids"
 msgstr "FRACTIONS: to win, you need destroy all the asteroids"
 
-#: src/factoroids.c:571
+#: src/factoroids.c:565
 msgid "type a number that can simplify the fraction, and press space or return"
-msgstr "type a number that can simplify the fraction, and press space or return"
+msgstr ""
+"type a number that can simplify the fraction, and press space or return"
 
-#: src/factoroids.c:572
-msgid "to split it.  Destroy fractions that can not be further simplified in a single shot!"
-msgstr "to split it.  Destroy fractions that can not be further simplified in a single shot!"
+#: src/factoroids.c:566
+msgid ""
+"to split it.  Destroy fractions that can not be further simplified in a "
+"single shot!"
+msgstr ""
+"to split it.  Destroy fractions that can not be further simplified in a "
+"single shot!"
 
-#: src/game.c:717
+#: src/game.c:989
 msgid "Welcome to TuxMath!"
 msgstr "Welcome to TuxMath!"
 
-#: src/game.c:734
+#: src/game.c:1006
 msgid "Your mission is to save your"
 msgstr "Your mission is to save your"
 
-#: src/game.c:735
+#: src/game.c:1007
 msgid "penguins' igloos from the"
 msgstr "penguins’ igloos from the"
 
-#: src/game.c:736
+#: src/game.c:1008
 msgid "falling comets."
 msgstr "falling comets."
 
-#: src/game.c:755
+#: src/game.c:1027
 msgid "Stop a comet by typing"
 msgstr "Stop a comet by typing"
 
-#: src/game.c:756
+#: src/game.c:1028
 msgid "the answer to the math problem"
 msgstr "the answer to the maths problem"
 
-#: src/game.c:757
+#: src/game.c:1029
 msgid "and hitting 'space' or 'enter'."
 msgstr "and hitting ‘space’ or ‘enter’."
 
-#: src/game.c:758
+#: src/game.c:1030
 msgid "Try it now!"
 msgstr "Try it now!"
 
-#: src/game.c:766
+#: src/game.c:1038
 msgid "Good shot!"
 msgstr "Good shot!"
 
-#: src/game.c:776
+#: src/game.c:1048
 msgid "If an igloo gets hit by a comet,"
 msgstr "If an igloo gets hit by a comet,"
 
-#: src/game.c:777
+#: src/game.c:1049
 msgid "it melts. But don't worry: the"
 msgstr "it melts. But don’t worry: the"
 
-#: src/game.c:778
+#: src/game.c:1050
 msgid "penguin is OK!"
 msgstr "penguin is OK!"
 
-#: src/game.c:779
+#: src/game.c:1051
 msgid "Just watch what happens:"
 msgstr "Just watch what happens:"
 
-#: src/game.c:780
+#: src/game.c:1052
 msgid "(Press a key to start)"
 msgstr "(Press a key to start)"
 
-#: src/game.c:793
+#: src/game.c:1065
 msgid "Notice the answer"
 msgstr "Notice the answer"
 
-#: src/game.c:803
+#: src/game.c:1075
 msgid "If it gets hit again, the"
 msgstr "If it gets hit again, the"
 
-#: src/game.c:804
+#: src/game.c:1076
 msgid "penguin leaves."
 msgstr "penguin leaves."
 
-#: src/game.c:805
+#: src/game.c:1077
 msgid "(Press a key when ready)"
 msgstr "(Press a key when ready)"
 
-#: src/game.c:824
+#: src/game.c:1100
 msgid "You can fix the igloos"
 msgstr "You can fix the igloos"
 
-#: src/game.c:825
+#: src/game.c:1101
 msgid "by stopping bonus comets."
 msgstr "by stopping bonus comets."
 
-#: src/game.c:834
+#: src/game.c:1112
 msgid "Zap it now!"
 msgstr "Zap it now!"
 
-#: src/game.c:838
+#: src/game.c:1118
 msgid "Great job!"
 msgstr "Great job!"
 
-#: src/game.c:852
+#: src/game.c:1136
 msgid "Quit at any time by pressing"
 msgstr "Quit at any time by pressing"
 
-#: src/game.c:853
+#: src/game.c:1137
 msgid "'Esc' or clicking the 'X'"
 msgstr "‘Esc’ or clicking the ‘X’"
 
-#: src/game.c:854
+#: src/game.c:1138
 msgid "in the upper right corner."
 msgstr "in the upper right corner."
 
-#: src/game.c:855
+#: src/game.c:1139
 msgid "Do it now, and then play!"
 msgstr "Do it now, and then play!"
 
-#: src/highscore.c:212
-#: src/titlescreen.c:849
+#: src/highscore.c:167
 msgid "Hall Of Fame"
 msgstr "Hall Of Fame"
 
-#: src/highscore.c:232
-#: src/highscore.c:253
-#: src/titlescreen.c:785
-#: src/titlescreen.c:844
+#: src/highscore.c:187 src/highscore.c:208
 msgid "Space Cadet"
 msgstr "Space Cadet"
 
-#: src/highscore.c:235
-#: src/titlescreen.c:786
-#: src/titlescreen.c:845
+#: src/highscore.c:190
 msgid "Scout"
 msgstr "Scout"
 
-#: src/highscore.c:238
-#: src/titlescreen.c:787
-#: src/titlescreen.c:846
+#: src/highscore.c:193
 msgid "Ranger"
 msgstr "Ranger"
 
-#: src/highscore.c:241
-#: src/titlescreen.c:788
-#: src/titlescreen.c:847
+#: src/highscore.c:196
 msgid "Ace"
 msgstr "Ace"
 
-#: src/highscore.c:244
-#: src/titlescreen.c:789
-#: src/titlescreen.c:848
+#: src/highscore.c:199
 msgid "Commando"
 msgstr "Commando"
 
-#: src/highscore.c:247
-#: src/titlescreen.c:968
+#: src/highscore.c:202
 msgid "Factors"
 msgstr "Factors"
 
-#: src/highscore.c:250
-#: src/titlescreen.c:969
+#: src/highscore.c:205
 msgid "Fractions"
 msgstr "Fractions"
 
-#: src/highscore.c:353
+#: src/highscore.c:286
 msgid "You Are In The Hall of Fame!"
 msgstr "You Are In The Hall of Fame!"
 
-#: src/highscore.c:353
+#: src/highscore.c:286
 msgid "Enter Your Name:"
 msgstr "Enter Your Name:"
 
-#: src/multiplayer.c:244
+#: src/multiplayer.c:183
+#, c-format
+msgid "Then %s\n"
+msgstr ""
+
+#: src/multiplayer.c:258
 msgid "Who is playing first?"
 msgstr "Who is playing first?"
 
-#: src/multiplayer.c:244
-#: src/multiplayer.c:246
+#: src/multiplayer.c:258 src/multiplayer.c:260
 msgid "Enter your name:"
 msgstr "Enter your name:"
 
-#: src/multiplayer.c:246
+#: src/multiplayer.c:260
 msgid "Who is playing next?"
 msgstr "Who is playing next?"
 
-#: src/multiplayer.c:260
+#: src/multiplayer.c:274
 msgid "How many rounds will you play?"
 msgstr "How many rounds will you play?"
 
-#: src/multiplayer.c:260
+#: src/multiplayer.c:274
 msgid "Enter a number"
 msgstr "Enter a number"
 
-#: src/titlescreen.c:487
+#: src/titlescreen.c:476
 msgid "Work In Progress!"
 msgstr "Work In Progress!"
 
-#: src/titlescreen.c:488
+#: src/titlescreen.c:477
 msgid "This feature is not ready yet"
 msgstr "This feature is not ready yet"
 
-#: src/titlescreen.c:489
+#: src/titlescreen.c:478
 msgid "Discuss the future of TuxMath at"
 msgstr "Discuss the future of TuxMath at"
 
-#: src/titlescreen.c:490
+#: src/titlescreen.c:479
 msgid "tuxmath-devel at lists.sourceforge.net"
 msgstr "tuxmath-devel at lists.sourceforge.net"
 
-#: src/titlescreen.c:647
-msgid "Play Alone"
-msgstr "Play Alone"
-
-#: src/titlescreen.c:648
-msgid "Play With Friends"
-msgstr "Play With Friends"
-
-#: src/titlescreen.c:649
-msgid "Factoroids!"
-msgstr "Factoroids!"
-
-#: src/titlescreen.c:650
-msgid "Help"
-msgstr "Help"
-
-#: src/titlescreen.c:651
-msgid "More Options"
-msgstr "More Options"
-
-#: src/titlescreen.c:652
-msgid "Quit"
-msgstr "Quit"
-
-#: src/titlescreen.c:726
-msgid "Math Command Training Academy"
-msgstr "Math Command Training Academy"
-
-#: src/titlescreen.c:727
-msgid "Math Command Fleet Missions"
-msgstr "Math Command Fleet Missions"
-
-#: src/titlescreen.c:728
-msgid "Play Arcade Game"
-msgstr "Play Arcade Game"
-
-#: src/titlescreen.c:729
-msgid "Play Custom Game"
-msgstr "Play Custom Game"
-
-#: src/titlescreen.c:730
-#: src/titlescreen.c:781
-#: src/titlescreen.c:790
-#: src/titlescreen.c:850
-#: src/titlescreen.c:970
-msgid "Main menu"
-msgstr "Main menu"
-
-#: src/titlescreen.c:779
-msgid "Score Sweep"
-msgstr "Score Sweep"
-
-#: src/titlescreen.c:780
-msgid "Elimination"
-msgstr "Elimination"
-
-#: src/titlescreen.c:824
-msgid "How many kids are playing?"
-msgstr "How many kids are playing?"
-
-#: src/titlescreen.c:825
-msgid "(Between 2 and 4 players)"
-msgstr "(Between 2 and 4 players)"
-
-#: src/titlescreen.c:944
-msgid "Edit 'options' file in your home directory"
-msgstr "Edit ‘options’ file in your home directory"
-
-#: src/titlescreen.c:945
-msgid "to create customized game!"
-msgstr "to create customised game!"
-
-#: src/titlescreen.c:946
-msgid "Press a key or click your mouse to start game."
-msgstr "Press a key or click your mouse to start game."
-
-#: src/titlescreen.c:947
-msgid "See README.txt for more information"
-msgstr "See README.txt for more information"
-
-#: src/titlescreen.c:1062
-msgid "Demo"
-msgstr "Demo"
-
-#: src/titlescreen.c:1063
-msgid "Project Info"
-msgstr "Project Info"
-
-#: src/titlescreen.c:1064
-msgid "Credits"
-msgstr "Credits"
-
-#: src/titlescreen.c:1065
-msgid "Main Menu"
-msgstr "Main Menu"
-
-#: src/titlescreen.c:1113
-msgid "TuxMath is free and open-source!"
-msgstr "TuxMath is free and open-source!"
-
-#: src/titlescreen.c:1114
-msgid "You can help make it better by reporting problems,"
-msgstr "You can help make it better by reporting problems,"
-
-#: src/titlescreen.c:1115
-msgid "suggesting improvements, or adding code."
-msgstr "suggesting improvements, or adding code."
-
-#: src/titlescreen.c:1116
-msgid "Discuss the future at tuxmath-devel at lists.sourceforge.net"
-msgstr "Discuss the future at tuxmath-devel at lists.sourceforge.net"
-
 #: data/missions/lessons/descr_lessons:1
 msgid "Number Typing"
 msgstr "Number Typing"
@@ -755,7 +687,87 @@
 msgid "Division of Positives and Negatives"
 msgstr "Division of Positives and Negatives"
 
+#~ msgid "Play Alone"
+#~ msgstr "Play Alone"
+
+#~ msgid "Play With Friends"
+#~ msgstr "Play With Friends"
+
+#~ msgid "Factoroids!"
+#~ msgstr "Factoroids!"
+
+#~ msgid "Help"
+#~ msgstr "Help"
+
+#~ msgid "More Options"
+#~ msgstr "More Options"
+
+#~ msgid "Quit"
+#~ msgstr "Quit"
+
+#~ msgid "Math Command Training Academy"
+#~ msgstr "Math Command Training Academy"
+
+#~ msgid "Math Command Fleet Missions"
+#~ msgstr "Math Command Fleet Missions"
+
+#~ msgid "Play Arcade Game"
+#~ msgstr "Play Arcade Game"
+
+#~ msgid "Play Custom Game"
+#~ msgstr "Play Custom Game"
+
+#~ msgid "Main menu"
+#~ msgstr "Main menu"
+
+#~ msgid "Score Sweep"
+#~ msgstr "Score Sweep"
+
+#~ msgid "Elimination"
+#~ msgstr "Elimination"
+
+#~ msgid "How many kids are playing?"
+#~ msgstr "How many kids are playing?"
+
+#~ msgid "(Between 2 and 4 players)"
+#~ msgstr "(Between 2 and 4 players)"
+
+#~ msgid "Edit 'options' file in your home directory"
+#~ msgstr "Edit ‘options’ file in your home directory"
+
+#~ msgid "to create customized game!"
+#~ msgstr "to create customised game!"
+
+#~ msgid "Press a key or click your mouse to start game."
+#~ msgstr "Press a key or click your mouse to start game."
+
+#~ msgid "See README.txt for more information"
+#~ msgstr "See README.txt for more information"
+
+#~ msgid "Demo"
+#~ msgstr "Demo"
+
+#~ msgid "Project Info"
+#~ msgstr "Project Info"
+
+#~ msgid "Credits"
+#~ msgstr "Credits"
+
+#~ msgid "Main Menu"
+#~ msgstr "Main Menu"
+
+#~ msgid "TuxMath is free and open-source!"
+#~ msgstr "TuxMath is free and open-source!"
+
+#~ msgid "You can help make it better by reporting problems,"
+#~ msgstr "You can help make it better by reporting problems,"
+
+#~ msgid "suggesting improvements, or adding code."
+#~ msgstr "suggesting improvements, or adding code."
+
+#~ msgid "Discuss the future at tuxmath-devel at lists.sourceforge.net"
+#~ msgstr "Discuss the future at tuxmath-devel at lists.sourceforge.net"
+
 #, fuzzy
 #~ msgid "the penguins' igloos. To save their homes,"
 #~ msgstr "penguins’ igloos from the"
-

Modified: tuxmath/trunk/po/es.gmo
===================================================================
(Binary files differ)

Modified: tuxmath/trunk/po/es.po
===================================================================
--- tuxmath/trunk/po/es.po	2009-09-04 19:47:19 UTC (rev 1488)
+++ tuxmath/trunk/po/es.po	2009-09-05 02:31:43 UTC (rev 1489)
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: 1.6.2\n"
 "Report-Msgid-Bugs-To: tuxmath-devel at lists.sourceforge.net\n"
-"POT-Creation-Date: 2009-03-06 06:12-0600\n"
+"POT-Creation-Date: 2009-09-04 21:22-0500\n"
 "PO-Revision-Date: 2008-04-26\n"
 "Last-Translator: Angela Ruiz <angieruiz211 at hotmail.com>\n"
 "Language-Team: espanol <LL at li.org>\n"
@@ -202,336 +202,229 @@
 
 #: src/credits.c:108
 msgid ""
-"A full copy of the GPL is included with the documenation for this program."
+"A full copy of the GPL is included with the documentation for this program."
 msgstr ""
 
 #: src/credits.c:110
 msgid "For more information about Free Software and the GNU GPL, visit:"
 msgstr ""
 
-#: src/factoroids.c:558
+#: src/factoroids.c:552
 msgid "FACTOROIDS: to win, you need destroy all the asteroids."
 msgstr ""
 
-#: src/factoroids.c:559 src/factoroids.c:570
+#: src/factoroids.c:553 src/factoroids.c:564
 msgid "Use the arrow keys to turn or go forward.  Aim at an asteroid,"
 msgstr ""
 
-#: src/factoroids.c:560
+#: src/factoroids.c:554
 msgid "type one of its factors, and press space or return"
 msgstr ""
 
-#: src/factoroids.c:561
+#: src/factoroids.c:555
 msgid "to split it into its factors.  Rocks with prime numbers are destroyed!"
 msgstr ""
 
-#: src/factoroids.c:569
+#: src/factoroids.c:563
 msgid "FRACTIONS: to win, you need destroy all the asteroids"
 msgstr ""
 
-#: src/factoroids.c:571
+#: src/factoroids.c:565
 msgid "type a number that can simplify the fraction, and press space or return"
 msgstr ""
 
-#: src/factoroids.c:572
+#: src/factoroids.c:566
 msgid ""
 "to split it.  Destroy fractions that can not be further simplified in a "
 "single shot!"
 msgstr ""
 
-#: src/game.c:717
+#: src/game.c:989
 msgid "Welcome to TuxMath!"
 msgstr "bien benido a tuxmath"
 
-#: src/game.c:734
+#: src/game.c:1006
 msgid "Your mission is to save your"
 msgstr "tu mision es salvar"
 
-#: src/game.c:735
+#: src/game.c:1007
 msgid "penguins' igloos from the"
 msgstr "los igloos de tus pinguinos"
 
-#: src/game.c:736
+#: src/game.c:1008
 msgid "falling comets."
 msgstr "de los cometas que caen"
 
-#: src/game.c:755
+#: src/game.c:1027
 msgid "Stop a comet by typing"
 msgstr "para parar el cometa"
 
-#: src/game.c:756
+#: src/game.c:1028
 msgid "the answer to the math problem"
 msgstr "debes teclar la respuesta correcta al problema matematico"
 
-#: src/game.c:757
+#: src/game.c:1029
 msgid "and hitting 'space' or 'enter'."
 msgstr "y oprimir la decla de espacio"
 
-#: src/game.c:758
+#: src/game.c:1030
 msgid "Try it now!"
 msgstr "tratalo ahora"
 
-#: src/game.c:766
+#: src/game.c:1038
 msgid "Good shot!"
 msgstr "buen tiro"
 
-#: src/game.c:776
+#: src/game.c:1048
 msgid "If an igloo gets hit by a comet,"
 msgstr "si uno de los igloos es derramado por el cometa"
 
-#: src/game.c:777
+#: src/game.c:1049
 #, fuzzy
 msgid "it melts. But don't worry: the"
 msgstr "se derritira, pero no te preocupes"
 
-#: src/game.c:778
+#: src/game.c:1050
 msgid "penguin is OK!"
 msgstr "que el pinguino estara asalvo"
 
-#: src/game.c:779
+#: src/game.c:1051
 msgid "Just watch what happens:"
 msgstr "observa lo que sucede"
 
-#: src/game.c:780
+#: src/game.c:1052
 msgid "(Press a key to start)"
 msgstr "aprieta una tecla para empezar"
 
-#: src/game.c:793
+#: src/game.c:1065
 msgid "Notice the answer"
 msgstr "nota la respuesta"
 
-#: src/game.c:803
+#: src/game.c:1075
 msgid "If it gets hit again, the"
 msgstr "si el igloo es pegado por el cometa de nuevo "
 
-#: src/game.c:804
+#: src/game.c:1076
 msgid "penguin leaves."
 msgstr "el pinguino se va"
 
-#: src/game.c:805
+#: src/game.c:1077
 msgid "(Press a key when ready)"
 msgstr "aprieta una tecla cuando estes listo "
 
-#: src/game.c:824
+#: src/game.c:1100
 msgid "You can fix the igloos"
 msgstr " tu puedes areglar los igloos"
 
-#: src/game.c:825
+#: src/game.c:1101
 msgid "by stopping bonus comets."
 msgstr " si logras parrar a los cometas de bono"
 
-#: src/game.c:834
+#: src/game.c:1112
 msgid "Zap it now!"
 msgstr "disparale ahora"
 
-#: src/game.c:838
+#: src/game.c:1118
 msgid "Great job!"
 msgstr "bien hecho"
 
-#: src/game.c:852
+#: src/game.c:1136
 msgid "Quit at any time by pressing"
 msgstr "si quieres parrarel juego en cualquier momento"
 
-#: src/game.c:853
+#: src/game.c:1137
 msgid "'Esc' or clicking the 'X'"
 msgstr "lo puedes hacer oprimiendo la tecla de ESC or la x en la pantalla"
 
-#: src/game.c:854
+#: src/game.c:1138
 msgid "in the upper right corner."
 msgstr "en la equinq derecha"
 
-#: src/game.c:855
+#: src/game.c:1139
 msgid "Do it now, and then play!"
 msgstr "haclo ahora y luego juega"
 
-#: src/highscore.c:212 src/titlescreen.c:849
+#: src/highscore.c:167
 msgid "Hall Of Fame"
 msgstr "sala de fama"
 
-#: src/highscore.c:232 src/highscore.c:253 src/titlescreen.c:785
-#: src/titlescreen.c:844
+#: src/highscore.c:187 src/highscore.c:208
 msgid "Space Cadet"
 msgstr "cadete espacial"
 
-#: src/highscore.c:235 src/titlescreen.c:786 src/titlescreen.c:845
+#: src/highscore.c:190
 msgid "Scout"
 msgstr "escout"
 
-#: src/highscore.c:238 src/titlescreen.c:787 src/titlescreen.c:846
+#: src/highscore.c:193
 msgid "Ranger"
 msgstr "guardador"
 
-#: src/highscore.c:241 src/titlescreen.c:788 src/titlescreen.c:847
+#: src/highscore.c:196
 msgid "Ace"
 msgstr "ace"
 
-#: src/highscore.c:244 src/titlescreen.c:789 src/titlescreen.c:848
+#: src/highscore.c:199
 msgid "Commando"
 msgstr ""
 
-#: src/highscore.c:247 src/titlescreen.c:968
+#: src/highscore.c:202
 msgid "Factors"
 msgstr ""
 
-#: src/highscore.c:250 src/titlescreen.c:969
+#: src/highscore.c:205
 msgid "Fractions"
 msgstr ""
 
-#: src/highscore.c:353
+#: src/highscore.c:286
 msgid "You Are In The Hall of Fame!"
 msgstr ""
 
-#: src/highscore.c:353
+#: src/highscore.c:286
 msgid "Enter Your Name:"
 msgstr ""
 
-#: src/multiplayer.c:244
+#: src/multiplayer.c:183
+#, c-format
+msgid "Then %s\n"
+msgstr ""
+
+#: src/multiplayer.c:258
 msgid "Who is playing first?"
 msgstr ""
 
-#: src/multiplayer.c:244 src/multiplayer.c:246
+#: src/multiplayer.c:258 src/multiplayer.c:260
 msgid "Enter your name:"
 msgstr ""
 
-#: src/multiplayer.c:246
+#: src/multiplayer.c:260
 msgid "Who is playing next?"
 msgstr ""
 
-#: src/multiplayer.c:260
+#: src/multiplayer.c:274
 msgid "How many rounds will you play?"
 msgstr ""
 
-#: src/multiplayer.c:260
+#: src/multiplayer.c:274
 msgid "Enter a number"
 msgstr ""
 
-#: src/titlescreen.c:487
+#: src/titlescreen.c:476
 msgid "Work In Progress!"
 msgstr " trabajo bajo progresso"
 
-#: src/titlescreen.c:488
+#: src/titlescreen.c:477
 msgid "This feature is not ready yet"
 msgstr "esta opcion no funciona todavia"
 
-#: src/titlescreen.c:489
+#: src/titlescreen.c:478
 msgid "Discuss the future of TuxMath at"
 msgstr "para discutir el futuro de TuxMath puedes ir a"
 
-#: src/titlescreen.c:490
+#: src/titlescreen.c:479
 msgid "tuxmath-devel at lists.sourceforge.net"
 msgstr ""
 
-#: src/titlescreen.c:647
-msgid "Play Alone"
-msgstr ""
-
-#: src/titlescreen.c:648
-msgid "Play With Friends"
-msgstr ""
-
-#: src/titlescreen.c:649
-msgid "Factoroids!"
-msgstr ""
-
-#: src/titlescreen.c:650
-msgid "Help"
-msgstr "ayda"
-
-#: src/titlescreen.c:651
-msgid "More Options"
-msgstr "mas opciones"
-
-#: src/titlescreen.c:652
-msgid "Quit"
-msgstr "terminar"
-
-#: src/titlescreen.c:726
-msgid "Math Command Training Academy"
-msgstr "Academia de entrenamiento de matematicas"
-
-#: src/titlescreen.c:727
-msgid "Math Command Fleet Missions"
-msgstr ""
-
-#: src/titlescreen.c:728
-msgid "Play Arcade Game"
-msgstr "Juega el juego de arcade"
-
-#: src/titlescreen.c:729
-msgid "Play Custom Game"
-msgstr "juega el juego hecho especialmente"
-
-#: src/titlescreen.c:730 src/titlescreen.c:781 src/titlescreen.c:790
-#: src/titlescreen.c:850 src/titlescreen.c:970
-msgid "Main menu"
-msgstr "menu principal"
-
-#: src/titlescreen.c:779
-msgid "Score Sweep"
-msgstr ""
-
-#: src/titlescreen.c:780
-msgid "Elimination"
-msgstr ""
-
-#: src/titlescreen.c:824
-msgid "How many kids are playing?"
-msgstr ""
-
-#: src/titlescreen.c:825
-msgid "(Between 2 and 4 players)"
-msgstr ""
-
-#: src/titlescreen.c:944
-msgid "Edit 'options' file in your home directory"
-msgstr "editar opciones del archivo del directorio principal"
-
-#: src/titlescreen.c:945
-msgid "to create customized game!"
-msgstr "para crear un juego especialmente"
-
-#: src/titlescreen.c:946
-msgid "Press a key or click your mouse to start game."
-msgstr "aprieta un tecla y con tu mouse oprime la opcion de empesar el juego"
-
-#: src/titlescreen.c:947
-msgid "See README.txt for more information"
-msgstr "ver README.txt para mas informacion"
-
-#: src/titlescreen.c:1062
-msgid "Demo"
-msgstr "demostracion"
-
-#: src/titlescreen.c:1063
-msgid "Project Info"
-msgstr "informacion del projecto"
-
-#: src/titlescreen.c:1064
-msgid "Credits"
-msgstr "creditos"
-
-#: src/titlescreen.c:1065
-msgid "Main Menu"
-msgstr "menu principal"
-
-#: src/titlescreen.c:1113
-msgid "TuxMath is free and open-source!"
-msgstr "TuxMath es gratis y es una opcion abierta"
-
-#: src/titlescreen.c:1114
-msgid "You can help make it better by reporting problems,"
-msgstr ""
-"puedes hacer que el programa funcione mejor si reportas problems con el "
-"programa"
-
-#: src/titlescreen.c:1115
-msgid "suggesting improvements, or adding code."
-msgstr "sugestiones para mejorar el programa o para anadir un codigo"
-
-#: src/titlescreen.c:1116
-msgid "Discuss the future at tuxmath-devel at lists.sourceforge.net"
-msgstr "discute el futuro en tuxmath-devel at lists.sourceforge.net"
-
 #: data/missions/lessons/descr_lessons:1
 msgid "Number Typing"
 msgstr "tegldo del numero"
@@ -766,6 +659,66 @@
 msgid "Division of Positives and Negatives"
 msgstr "division de numeros positivos y negativos"
 
+#~ msgid "Help"
+#~ msgstr "ayda"
+
+#~ msgid "More Options"
+#~ msgstr "mas opciones"
+
+#~ msgid "Quit"
+#~ msgstr "terminar"
+
+#~ msgid "Math Command Training Academy"
+#~ msgstr "Academia de entrenamiento de matematicas"
+
+#~ msgid "Play Arcade Game"
+#~ msgstr "Juega el juego de arcade"
+
+#~ msgid "Play Custom Game"
+#~ msgstr "juega el juego hecho especialmente"
+
+#~ msgid "Main menu"
+#~ msgstr "menu principal"
+
+#~ msgid "Edit 'options' file in your home directory"
+#~ msgstr "editar opciones del archivo del directorio principal"
+
+#~ msgid "to create customized game!"
+#~ msgstr "para crear un juego especialmente"
+
+#~ msgid "Press a key or click your mouse to start game."
+#~ msgstr ""
+#~ "aprieta un tecla y con tu mouse oprime la opcion de empesar el juego"
+
+#~ msgid "See README.txt for more information"
+#~ msgstr "ver README.txt para mas informacion"
+
+#~ msgid "Demo"
+#~ msgstr "demostracion"
+
+#~ msgid "Project Info"
+#~ msgstr "informacion del projecto"
+
+#~ msgid "Credits"
+#~ msgstr "creditos"
+
+#~ msgid "Main Menu"
+#~ msgstr "menu principal"
+
+#~ msgid "TuxMath is free and open-source!"
+#~ msgstr "TuxMath es gratis y es una opcion abierta"
+
+#~ msgid "You can help make it better by reporting problems,"
+#~ msgstr ""
+#~ "puedes hacer que el programa funcione mejor si reportas problems con el "
+#~ "programa"
+
+#~ msgid "suggesting improvements, or adding code."
+#~ msgstr "sugestiones para mejorar el programa o para anadir un codigo"
+
+#~ msgid "Discuss the future at tuxmath-devel at lists.sourceforge.net"
+#~ msgstr "discute el futuro en tuxmath-devel at lists.sourceforge.net"
+
 #, fuzzy
 #~ msgid "the penguins' igloos. To save their homes,"
 #~ msgstr "los igloos de tus pinguinos"

Modified: tuxmath/trunk/po/fi.gmo
===================================================================
(Binary files differ)

Modified: tuxmath/trunk/po/fi.po
===================================================================
--- tuxmath/trunk/po/fi.po	2009-09-04 19:47:19 UTC (rev 1488)
+++ tuxmath/trunk/po/fi.po	2009-09-05 02:31:43 UTC (rev 1489)
@@ -9,7 +9,7 @@
 msgstr ""
 "Project-Id-Version: tuxmath\n"
 "Report-Msgid-Bugs-To: tuxmath-devel at lists.sourceforge.net\n"
-"POT-Creation-Date: 2009-03-06 06:12-0600\n"
+"POT-Creation-Date: 2009-09-04 21:22-0500\n"
 "PO-Revision-Date: 2008-03-22 06:59+0000\n"
 "Last-Translator: Miika Metsälä <Unknown>\n"
 "Language-Team: Finnish <fi at li.org>\n"
@@ -206,336 +206,228 @@
 
 #: src/credits.c:108
 msgid ""
-"A full copy of the GPL is included with the documenation for this program."
+"A full copy of the GPL is included with the documentation for this program."
 msgstr ""
 
 #: src/credits.c:110
 msgid "For more information about Free Software and the GNU GPL, visit:"
 msgstr ""
 
-#: src/factoroids.c:558
+#: src/factoroids.c:552
 msgid "FACTOROIDS: to win, you need destroy all the asteroids."
 msgstr ""
 
-#: src/factoroids.c:559 src/factoroids.c:570
+#: src/factoroids.c:553 src/factoroids.c:564
 msgid "Use the arrow keys to turn or go forward.  Aim at an asteroid,"
 msgstr ""
 
-#: src/factoroids.c:560
+#: src/factoroids.c:554
 msgid "type one of its factors, and press space or return"
 msgstr ""
 
-#: src/factoroids.c:561
+#: src/factoroids.c:555
 msgid "to split it into its factors.  Rocks with prime numbers are destroyed!"
 msgstr ""
 
-#: src/factoroids.c:569
+#: src/factoroids.c:563
 msgid "FRACTIONS: to win, you need destroy all the asteroids"
 msgstr ""
 
-#: src/factoroids.c:571
+#: src/factoroids.c:565
 msgid "type a number that can simplify the fraction, and press space or return"
 msgstr ""
 
-#: src/factoroids.c:572
+#: src/factoroids.c:566
 msgid ""
 "to split it.  Destroy fractions that can not be further simplified in a "
 "single shot!"
 msgstr ""
 
-#: src/game.c:717
+#: src/game.c:989
 msgid "Welcome to TuxMath!"
 msgstr ""
 
-#: src/game.c:734
+#: src/game.c:1006
 msgid "Your mission is to save your"
 msgstr ""
 
-#: src/game.c:735
+#: src/game.c:1007
 msgid "penguins' igloos from the"
 msgstr ""
 
-#: src/game.c:736
+#: src/game.c:1008
 msgid "falling comets."
 msgstr ""
 
-#: src/game.c:755
+#: src/game.c:1027
 msgid "Stop a comet by typing"
 msgstr ""
 
-#: src/game.c:756
+#: src/game.c:1028
 msgid "the answer to the math problem"
 msgstr ""
 
-#: src/game.c:757
+#: src/game.c:1029
 msgid "and hitting 'space' or 'enter'."
 msgstr ""
 
-#: src/game.c:758
+#: src/game.c:1030
 msgid "Try it now!"
 msgstr ""
 
-#: src/game.c:766
+#: src/game.c:1038
 msgid "Good shot!"
 msgstr ""
 
-#: src/game.c:776
+#: src/game.c:1048
 msgid "If an igloo gets hit by a comet,"
 msgstr ""
 
-#: src/game.c:777
+#: src/game.c:1049
 msgid "it melts. But don't worry: the"
 msgstr ""
 
-#: src/game.c:778
+#: src/game.c:1050
 msgid "penguin is OK!"
 msgstr ""
 
-#: src/game.c:779
+#: src/game.c:1051
 msgid "Just watch what happens:"
 msgstr ""
 
-#: src/game.c:780
+#: src/game.c:1052
 msgid "(Press a key to start)"
 msgstr ""
 
-#: src/game.c:793
+#: src/game.c:1065
 msgid "Notice the answer"
 msgstr ""
 
-#: src/game.c:803
+#: src/game.c:1075
 msgid "If it gets hit again, the"
 msgstr ""
 
-#: src/game.c:804
+#: src/game.c:1076
 msgid "penguin leaves."
 msgstr ""
 
-#: src/game.c:805
+#: src/game.c:1077
 msgid "(Press a key when ready)"
 msgstr ""
 
-#: src/game.c:824
+#: src/game.c:1100
 msgid "You can fix the igloos"
 msgstr ""
 
-#: src/game.c:825
+#: src/game.c:1101
 msgid "by stopping bonus comets."
 msgstr ""
 
-#: src/game.c:834
+#: src/game.c:1112
 msgid "Zap it now!"
 msgstr ""
 
-#: src/game.c:838
+#: src/game.c:1118
 msgid "Great job!"
 msgstr ""
 
-#: src/game.c:852
+#: src/game.c:1136
 msgid "Quit at any time by pressing"
 msgstr ""
 
-#: src/game.c:853
+#: src/game.c:1137
 msgid "'Esc' or clicking the 'X'"
 msgstr ""
 
-#: src/game.c:854
+#: src/game.c:1138
 msgid "in the upper right corner."
 msgstr ""
 
-#: src/game.c:855
+#: src/game.c:1139
 msgid "Do it now, and then play!"
 msgstr ""
 
-#: src/highscore.c:212 src/titlescreen.c:849
+#: src/highscore.c:167
 msgid "Hall Of Fame"
 msgstr "Parhaat tulokset"
 
-#: src/highscore.c:232 src/highscore.c:253 src/titlescreen.c:785
-#: src/titlescreen.c:844
+#: src/highscore.c:187 src/highscore.c:208
 msgid "Space Cadet"
 msgstr "Astronautti"
 
-#: src/highscore.c:235 src/titlescreen.c:786 src/titlescreen.c:845
+#: src/highscore.c:190
 msgid "Scout"
 msgstr "Tiedustelija"
 
-#: src/highscore.c:238 src/titlescreen.c:787 src/titlescreen.c:846
+#: src/highscore.c:193
 msgid "Ranger"
 msgstr "Jousimies"
 
-#: src/highscore.c:241 src/titlescreen.c:788 src/titlescreen.c:847
+#: src/highscore.c:196
 msgid "Ace"
 msgstr ""
 
-#: src/highscore.c:244 src/titlescreen.c:789 src/titlescreen.c:848
+#: src/highscore.c:199
 msgid "Commando"
 msgstr ""
 
-#: src/highscore.c:247 src/titlescreen.c:968
+#: src/highscore.c:202
 msgid "Factors"
 msgstr ""
 
-#: src/highscore.c:250 src/titlescreen.c:969
+#: src/highscore.c:205
 msgid "Fractions"
 msgstr ""
 
-#: src/highscore.c:353
+#: src/highscore.c:286
 msgid "You Are In The Hall of Fame!"
 msgstr ""
 
-#: src/highscore.c:353
+#: src/highscore.c:286
 msgid "Enter Your Name:"
 msgstr ""
 
-#: src/multiplayer.c:244
+#: src/multiplayer.c:183
+#, c-format
+msgid "Then %s\n"
+msgstr ""
+
+#: src/multiplayer.c:258
 msgid "Who is playing first?"
 msgstr ""
 
-#: src/multiplayer.c:244 src/multiplayer.c:246
+#: src/multiplayer.c:258 src/multiplayer.c:260
 msgid "Enter your name:"
 msgstr ""
 
-#: src/multiplayer.c:246
+#: src/multiplayer.c:260
 msgid "Who is playing next?"
 msgstr ""
 
-#: src/multiplayer.c:260
+#: src/multiplayer.c:274
 msgid "How many rounds will you play?"
 msgstr ""
 
-#: src/multiplayer.c:260
+#: src/multiplayer.c:274
 msgid "Enter a number"
 msgstr ""
 
-#: src/titlescreen.c:487
+#: src/titlescreen.c:476
 msgid "Work In Progress!"
 msgstr "Työn alla!"
 
-#: src/titlescreen.c:488
+#: src/titlescreen.c:477
 msgid "This feature is not ready yet"
 msgstr "Tämä ominaisuus ei ole vielä valmis"
 
-#: src/titlescreen.c:489
+#: src/titlescreen.c:478
 msgid "Discuss the future of TuxMath at"
 msgstr ""
 
-#: src/titlescreen.c:490
+#: src/titlescreen.c:479
 msgid "tuxmath-devel at lists.sourceforge.net"
 msgstr "tuxmath-devel at lists.sourceforge.net"
 
-#: src/titlescreen.c:647
-msgid "Play Alone"
-msgstr ""
-
-#: src/titlescreen.c:648
-msgid "Play With Friends"
-msgstr ""
-
-#: src/titlescreen.c:649
-msgid "Factoroids!"
-msgstr ""
-
-#: src/titlescreen.c:650
-msgid "Help"
-msgstr "O_hje"
-
-#: src/titlescreen.c:651
-msgid "More Options"
-msgstr "Lisää asetuksia"
-
-#: src/titlescreen.c:652
-msgid "Quit"
-msgstr "Lopeta"
-
-#: src/titlescreen.c:726
-msgid "Math Command Training Academy"
-msgstr ""
-
-#: src/titlescreen.c:727
-msgid "Math Command Fleet Missions"
-msgstr ""
-
-#: src/titlescreen.c:728
-msgid "Play Arcade Game"
-msgstr "Pelaa arcade-peliä"
-
-#: src/titlescreen.c:729
-msgid "Play Custom Game"
-msgstr ""
-
-#: src/titlescreen.c:730 src/titlescreen.c:781 src/titlescreen.c:790
-#: src/titlescreen.c:850 src/titlescreen.c:970
-msgid "Main menu"
-msgstr "Päävalikko"
-
-#: src/titlescreen.c:779
-msgid "Score Sweep"
-msgstr ""
-
-#: src/titlescreen.c:780
-msgid "Elimination"
-msgstr ""
-
-#: src/titlescreen.c:824
-msgid "How many kids are playing?"
-msgstr ""
-
-#: src/titlescreen.c:825
-msgid "(Between 2 and 4 players)"
-msgstr ""
-
-#: src/titlescreen.c:944
-msgid "Edit 'options' file in your home directory"
-msgstr "Muokkaa 'options' tiedostoa kotikansiossasi"
-
-#: src/titlescreen.c:945
-msgid "to create customized game!"
-msgstr "tehdäksesi kustomoidun pelin!"
-
-#: src/titlescreen.c:946
-msgid "Press a key or click your mouse to start game."
-msgstr ""
-"Paina mitä tahansa näppäintä tai napsauta hiirellä aloittaaksesi pelin."
-
-#: src/titlescreen.c:947
-msgid "See README.txt for more information"
-msgstr "Katso README.txt saadaksesi lisätietoja"
-
-#: src/titlescreen.c:1062
-msgid "Demo"
-msgstr ""
-
-#: src/titlescreen.c:1063
-msgid "Project Info"
-msgstr "Tietoa projektista"
-
-#: src/titlescreen.c:1064
-msgid "Credits"
-msgstr "Tekijät"
-
-#: src/titlescreen.c:1065
-msgid "Main Menu"
-msgstr "Päävalikko"
-
-#: src/titlescreen.c:1113
-msgid "TuxMath is free and open-source!"
-msgstr "TuxMath on vapaa ja avointa koodia!"
-
-#: src/titlescreen.c:1114
-msgid "You can help make it better by reporting problems,"
-msgstr "Voit auttaa meitä tekemään sen paremmaksi ilmoittamalla ongelmista,"
-
-#: src/titlescreen.c:1115
-msgid "suggesting improvements, or adding code."
-msgstr "ehdottamalla parannuksista, tai lisäämällä koodia."
-
-#: src/titlescreen.c:1116
-msgid "Discuss the future at tuxmath-devel at lists.sourceforge.net"
-msgstr ""
-"Keskustele tuxmathin tulevaisuudesta osoitteesta tuxmath-devel at lists."
-"sourceforge.net"
-
 #: data/missions/lessons/descr_lessons:1
 msgid "Number Typing"
 msgstr "Numeroiden kirjoitus"
@@ -769,3 +661,54 @@
 #: data/missions/lessons/descr_lessons:58
 msgid "Division of Positives and Negatives"
 msgstr "Positiivisten ja negatiivisten lukujen jakolasku"
+
+#~ msgid "Help"
+#~ msgstr "O_hje"
+
+#~ msgid "More Options"
+#~ msgstr "Lisää asetuksia"
+
+#~ msgid "Quit"
+#~ msgstr "Lopeta"
+
+#~ msgid "Play Arcade Game"
+#~ msgstr "Pelaa arcade-peliä"
+
+#~ msgid "Main menu"
+#~ msgstr "Päävalikko"
+
+#~ msgid "Edit 'options' file in your home directory"
+#~ msgstr "Muokkaa 'options' tiedostoa kotikansiossasi"
+
+#~ msgid "to create customized game!"
+#~ msgstr "tehdäksesi kustomoidun pelin!"
+
+#~ msgid "Press a key or click your mouse to start game."
+#~ msgstr ""
+#~ "Paina mitä tahansa näppäintä tai napsauta hiirellä aloittaaksesi pelin."
+
+#~ msgid "See README.txt for more information"
+#~ msgstr "Katso README.txt saadaksesi lisätietoja"
+
+#~ msgid "Project Info"
+#~ msgstr "Tietoa projektista"
+
+#~ msgid "Credits"
+#~ msgstr "Tekijät"
+
+#~ msgid "Main Menu"
+#~ msgstr "Päävalikko"
+
+#~ msgid "TuxMath is free and open-source!"
+#~ msgstr "TuxMath on vapaa ja avointa koodia!"
+
+#~ msgid "You can help make it better by reporting problems,"
+#~ msgstr "Voit auttaa meitä tekemään sen paremmaksi ilmoittamalla ongelmista,"
+
+#~ msgid "suggesting improvements, or adding code."
+#~ msgstr "ehdottamalla parannuksista, tai lisäämällä koodia."
+
+#~ msgid "Discuss the future at tuxmath-devel at lists.sourceforge.net"
+#~ msgstr ""
+#~ "Keskustele tuxmathin tulevaisuudesta osoitteesta tuxmath-devel at lists."
+#~ "sourceforge.net"

Modified: tuxmath/trunk/po/fr.gmo
===================================================================
(Binary files differ)

Modified: tuxmath/trunk/po/fr.po
===================================================================
--- tuxmath/trunk/po/fr.po	2009-09-04 19:47:19 UTC (rev 1488)
+++ tuxmath/trunk/po/fr.po	2009-09-05 02:31:43 UTC (rev 1489)
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: 1.5.8\n"
 "Report-Msgid-Bugs-To: tuxmath-devel at lists.sourceforge.net\n"
-"POT-Creation-Date: 2009-03-06 06:12-0600\n"
+"POT-Creation-Date: 2009-09-04 21:22-0500\n"
 "PO-Revision-Date: 2007-11-15 09:00+0100\n"
 "Last-Translator: Grumeau Rémi <remi at beosfrance.com>\n"
 "Language-Team: Dutch <LL at li.org>\n"
@@ -202,333 +202,228 @@
 
 #: src/credits.c:108
 msgid ""
-"A full copy of the GPL is included with the documenation for this program."
+"A full copy of the GPL is included with the documentation for this program."
 msgstr ""
 
 #: src/credits.c:110
 msgid "For more information about Free Software and the GNU GPL, visit:"
 msgstr ""
 
-#: src/factoroids.c:558
+#: src/factoroids.c:552
 msgid "FACTOROIDS: to win, you need destroy all the asteroids."
 msgstr ""
 
-#: src/factoroids.c:559 src/factoroids.c:570
+#: src/factoroids.c:553 src/factoroids.c:564
 msgid "Use the arrow keys to turn or go forward.  Aim at an asteroid,"
 msgstr ""
 
-#: src/factoroids.c:560
+#: src/factoroids.c:554
 msgid "type one of its factors, and press space or return"
 msgstr ""
 
-#: src/factoroids.c:561
+#: src/factoroids.c:555
 msgid "to split it into its factors.  Rocks with prime numbers are destroyed!"
 msgstr ""
 
-#: src/factoroids.c:569
+#: src/factoroids.c:563
 msgid "FRACTIONS: to win, you need destroy all the asteroids"
 msgstr ""
 
-#: src/factoroids.c:571
+#: src/factoroids.c:565
 msgid "type a number that can simplify the fraction, and press space or return"
 msgstr ""
 
-#: src/factoroids.c:572
+#: src/factoroids.c:566
 msgid ""
 "to split it.  Destroy fractions that can not be further simplified in a "
 "single shot!"
 msgstr ""
 
-#: src/game.c:717
+#: src/game.c:989
 msgid "Welcome to TuxMath!"
 msgstr ""
 
-#: src/game.c:734
+#: src/game.c:1006
 msgid "Your mission is to save your"
 msgstr ""
 
-#: src/game.c:735
+#: src/game.c:1007
 msgid "penguins' igloos from the"
 msgstr ""
 
-#: src/game.c:736
+#: src/game.c:1008
 msgid "falling comets."
 msgstr ""
 
-#: src/game.c:755
+#: src/game.c:1027
 msgid "Stop a comet by typing"
 msgstr ""
 
-#: src/game.c:756
+#: src/game.c:1028
 msgid "the answer to the math problem"
 msgstr ""
 
-#: src/game.c:757
+#: src/game.c:1029
 msgid "and hitting 'space' or 'enter'."
 msgstr ""
 
-#: src/game.c:758
+#: src/game.c:1030
 msgid "Try it now!"
 msgstr ""
 
-#: src/game.c:766
+#: src/game.c:1038
 msgid "Good shot!"
 msgstr ""
 
-#: src/game.c:776
+#: src/game.c:1048
 msgid "If an igloo gets hit by a comet,"
 msgstr ""
 
-#: src/game.c:777
+#: src/game.c:1049
 msgid "it melts. But don't worry: the"
 msgstr ""
 
-#: src/game.c:778
+#: src/game.c:1050
 msgid "penguin is OK!"
 msgstr ""
 
-#: src/game.c:779
+#: src/game.c:1051
 msgid "Just watch what happens:"
 msgstr ""
 
-#: src/game.c:780
+#: src/game.c:1052
 msgid "(Press a key to start)"
 msgstr ""
 
-#: src/game.c:793
+#: src/game.c:1065
 msgid "Notice the answer"
 msgstr ""
 
-#: src/game.c:803
+#: src/game.c:1075
 msgid "If it gets hit again, the"
 msgstr ""
 
-#: src/game.c:804
+#: src/game.c:1076
 msgid "penguin leaves."
 msgstr ""
 
-#: src/game.c:805
+#: src/game.c:1077
 msgid "(Press a key when ready)"
 msgstr ""
 
-#: src/game.c:824
+#: src/game.c:1100
 msgid "You can fix the igloos"
 msgstr ""
 
-#: src/game.c:825
+#: src/game.c:1101
 msgid "by stopping bonus comets."
 msgstr ""
 
-#: src/game.c:834
+#: src/game.c:1112
 msgid "Zap it now!"
 msgstr ""
 
-#: src/game.c:838
+#: src/game.c:1118
 msgid "Great job!"
 msgstr ""
 
-#: src/game.c:852
+#: src/game.c:1136
 msgid "Quit at any time by pressing"
 msgstr ""
 
-#: src/game.c:853
+#: src/game.c:1137
 msgid "'Esc' or clicking the 'X'"
 msgstr ""
 
-#: src/game.c:854
+#: src/game.c:1138
 msgid "in the upper right corner."
 msgstr ""
 
-#: src/game.c:855
+#: src/game.c:1139
 msgid "Do it now, and then play!"
 msgstr ""
 
-#: src/highscore.c:212 src/titlescreen.c:849
+#: src/highscore.c:167
 msgid "Hall Of Fame"
 msgstr "Tableau des scores"
 
-#: src/highscore.c:232 src/highscore.c:253 src/titlescreen.c:785
-#: src/titlescreen.c:844
+#: src/highscore.c:187 src/highscore.c:208
 msgid "Space Cadet"
 msgstr "Cadet de l'espace"
 
-#: src/highscore.c:235 src/titlescreen.c:786 src/titlescreen.c:845
+#: src/highscore.c:190
 msgid "Scout"
 msgstr "Scout"
 
-#: src/highscore.c:238 src/titlescreen.c:787 src/titlescreen.c:846
+#: src/highscore.c:193
 msgid "Ranger"
 msgstr "Ranger"
 
-#: src/highscore.c:241 src/titlescreen.c:788 src/titlescreen.c:847
+#: src/highscore.c:196
 msgid "Ace"
 msgstr "As"
 
-#: src/highscore.c:244 src/titlescreen.c:789 src/titlescreen.c:848
+#: src/highscore.c:199
 msgid "Commando"
 msgstr ""
 
-#: src/highscore.c:247 src/titlescreen.c:968
+#: src/highscore.c:202
 msgid "Factors"
 msgstr ""
 
-#: src/highscore.c:250 src/titlescreen.c:969
+#: src/highscore.c:205
 msgid "Fractions"
 msgstr ""
 
-#: src/highscore.c:353
+#: src/highscore.c:286
 msgid "You Are In The Hall of Fame!"
 msgstr ""
 
-#: src/highscore.c:353
+#: src/highscore.c:286
 msgid "Enter Your Name:"
 msgstr ""
 
-#: src/multiplayer.c:244
+#: src/multiplayer.c:183
+#, c-format
+msgid "Then %s\n"
+msgstr ""
+
+#: src/multiplayer.c:258
 msgid "Who is playing first?"
 msgstr ""
 
-#: src/multiplayer.c:244 src/multiplayer.c:246
+#: src/multiplayer.c:258 src/multiplayer.c:260
 msgid "Enter your name:"
 msgstr ""
 
-#: src/multiplayer.c:246
+#: src/multiplayer.c:260
 msgid "Who is playing next?"
 msgstr ""
 
-#: src/multiplayer.c:260
+#: src/multiplayer.c:274
 msgid "How many rounds will you play?"
 msgstr ""
 
-#: src/multiplayer.c:260
+#: src/multiplayer.c:274
 msgid "Enter a number"
 msgstr ""
 
-#: src/titlescreen.c:487
+#: src/titlescreen.c:476
 msgid "Work In Progress!"
 msgstr "Chargement"
 
-#: src/titlescreen.c:488
+#: src/titlescreen.c:477
 msgid "This feature is not ready yet"
 msgstr "Cette option n'est pas encore disponible"
 
-#: src/titlescreen.c:489
+#: src/titlescreen.c:478
 msgid "Discuss the future of TuxMath at"
 msgstr "Participer au futur de TuxMath au"
 
-#: src/titlescreen.c:490
+#: src/titlescreen.c:479
 msgid "tuxmath-devel at lists.sourceforge.net"
 msgstr "tuxmath-devel at lists.sourceforge.net"
 
-#: src/titlescreen.c:647
-msgid "Play Alone"
-msgstr ""
-
-#: src/titlescreen.c:648
-msgid "Play With Friends"
-msgstr ""
-
-#: src/titlescreen.c:649
-msgid "Factoroids!"
-msgstr ""
-
-#: src/titlescreen.c:650
-msgid "Help"
-msgstr "Aide"
-
-#: src/titlescreen.c:651
-msgid "More Options"
-msgstr "Plus d'options"
-
-#: src/titlescreen.c:652
-msgid "Quit"
-msgstr "Quitter"
-
-#: src/titlescreen.c:726
-msgid "Math Command Training Academy"
-msgstr "Ecole d'entrainement au Math"
-
-#: src/titlescreen.c:727
-msgid "Math Command Fleet Missions"
-msgstr ""
-
-#: src/titlescreen.c:728
-msgid "Play Arcade Game"
-msgstr "Jouer en mode arcade"
-
-#: src/titlescreen.c:729
-msgid "Play Custom Game"
-msgstr "Jouer en mode personnalisé"
-
-#: src/titlescreen.c:730 src/titlescreen.c:781 src/titlescreen.c:790
-#: src/titlescreen.c:850 src/titlescreen.c:970
-msgid "Main menu"
-msgstr "Menu principal"
-
-#: src/titlescreen.c:779
-msgid "Score Sweep"
-msgstr ""
-
-#: src/titlescreen.c:780
-msgid "Elimination"
-msgstr ""
-
-#: src/titlescreen.c:824
-msgid "How many kids are playing?"
-msgstr ""
-
-#: src/titlescreen.c:825
-msgid "(Between 2 and 4 players)"
-msgstr ""
-
-#: src/titlescreen.c:944
-msgid "Edit 'options' file in your home directory"
-msgstr "Editer le fichier 'option' dans le dossier home"
-
-#: src/titlescreen.c:945
-msgid "to create customized game!"
-msgstr "pour créer une partie personnalisée !"
-
-#: src/titlescreen.c:946
-msgid "Press a key or click your mouse to start game."
-msgstr "Appuyez sur une touche ou cliquez pour commencer"
-
-#: src/titlescreen.c:947
-msgid "See README.txt for more information"
-msgstr "Lisez README.txt pour plus d'informations"
-
-#: src/titlescreen.c:1062
-msgid "Demo"
-msgstr "Demo"
-
-#: src/titlescreen.c:1063
-msgid "Project Info"
-msgstr "A propos"
-
-#: src/titlescreen.c:1064
-msgid "Credits"
-msgstr "Crédits"
-
-#: src/titlescreen.c:1065
-msgid "Main Menu"
-msgstr "Menu principal"
-
-#: src/titlescreen.c:1113
-msgid "TuxMath is free and open-source!"
-msgstr "TuxMath est gratuit et open-source!"
-
-#: src/titlescreen.c:1114
-msgid "You can help make it better by reporting problems,"
-msgstr "Participez à l'amélioration du jeu en nous signalant des problemes,"
-
-#: src/titlescreen.c:1115
-msgid "suggesting improvements, or adding code."
-msgstr "vos suggestions, ou en développement."
-
-#: src/titlescreen.c:1116
-msgid "Discuss the future at tuxmath-devel at lists.sourceforge.net"
-msgstr "Parlons-en sur tuxmath-devel at lists.sourceforge.net"
-
 #: data/missions/lessons/descr_lessons:1
 msgid "Number Typing"
 msgstr "Taper un nombre"
@@ -762,3 +657,60 @@
 #: data/missions/lessons/descr_lessons:58
 msgid "Division of Positives and Negatives"
 msgstr "Division de positifs et négatifs"
+
+#~ msgid "Help"
+#~ msgstr "Aide"
+
+#~ msgid "More Options"
+#~ msgstr "Plus d'options"
+
+#~ msgid "Quit"
+#~ msgstr "Quitter"
+
+#~ msgid "Math Command Training Academy"
+#~ msgstr "Ecole d'entrainement au Math"
+
+#~ msgid "Play Arcade Game"
+#~ msgstr "Jouer en mode arcade"
+
+#~ msgid "Play Custom Game"
+#~ msgstr "Jouer en mode personnalisé"
+
+#~ msgid "Main menu"
+#~ msgstr "Menu principal"
+
+#~ msgid "Edit 'options' file in your home directory"
+#~ msgstr "Editer le fichier 'option' dans le dossier home"
+
+#~ msgid "to create customized game!"
+#~ msgstr "pour créer une partie personnalisée !"
+
+#~ msgid "Press a key or click your mouse to start game."
+#~ msgstr "Appuyez sur une touche ou cliquez pour commencer"
+
+#~ msgid "See README.txt for more information"
+#~ msgstr "Lisez README.txt pour plus d'informations"
+
+#~ msgid "Demo"
+#~ msgstr "Demo"
+
+#~ msgid "Project Info"
+#~ msgstr "A propos"
+
+#~ msgid "Credits"
+#~ msgstr "Crédits"
+
+#~ msgid "Main Menu"
+#~ msgstr "Menu principal"
+
+#~ msgid "TuxMath is free and open-source!"
+#~ msgstr "TuxMath est gratuit et open-source!"
+
+#~ msgid "You can help make it better by reporting problems,"
+#~ msgstr "Participez à l'amélioration du jeu en nous signalant des problemes,"
+
+#~ msgid "suggesting improvements, or adding code."
+#~ msgstr "vos suggestions, ou en développement."
+
+#~ msgid "Discuss the future at tuxmath-devel at lists.sourceforge.net"
+#~ msgstr "Parlons-en sur tuxmath-devel at lists.sourceforge.net"

Modified: tuxmath/trunk/po/ga.gmo
===================================================================
(Binary files differ)

Modified: tuxmath/trunk/po/ga.po
===================================================================
--- tuxmath/trunk/po/ga.po	2009-09-04 19:47:19 UTC (rev 1488)
+++ tuxmath/trunk/po/ga.po	2009-09-05 02:31:43 UTC (rev 1489)
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: tuxmath-devel at lists.sourceforge.net\n"
-"POT-Creation-Date: 2009-03-06 06:12-0600\n"
+"POT-Creation-Date: 2009-09-04 21:22-0500\n"
 "PO-Revision-Date: 2008-07-13 23:16-0000\n"
 "Last-Translator: Seanán à Coistín <seananoc at gmail.com>\n"
 "Language-Team: LANGUAGE <LL at li.org>\n"
@@ -201,333 +201,228 @@
 
 #: src/credits.c:108
 msgid ""
-"A full copy of the GPL is included with the documenation for this program."
+"A full copy of the GPL is included with the documentation for this program."
 msgstr ""
 
 #: src/credits.c:110
 msgid "For more information about Free Software and the GNU GPL, visit:"
 msgstr ""
 
-#: src/factoroids.c:558
+#: src/factoroids.c:552
 msgid "FACTOROIDS: to win, you need destroy all the asteroids."
 msgstr ""
 
-#: src/factoroids.c:559 src/factoroids.c:570
+#: src/factoroids.c:553 src/factoroids.c:564
 msgid "Use the arrow keys to turn or go forward.  Aim at an asteroid,"
 msgstr ""
 
-#: src/factoroids.c:560
+#: src/factoroids.c:554
 msgid "type one of its factors, and press space or return"
 msgstr ""
 
-#: src/factoroids.c:561
+#: src/factoroids.c:555
 msgid "to split it into its factors.  Rocks with prime numbers are destroyed!"
 msgstr ""
 
-#: src/factoroids.c:569
+#: src/factoroids.c:563
 msgid "FRACTIONS: to win, you need destroy all the asteroids"
 msgstr ""
 
-#: src/factoroids.c:571
+#: src/factoroids.c:565
 msgid "type a number that can simplify the fraction, and press space or return"
 msgstr ""
 
-#: src/factoroids.c:572
+#: src/factoroids.c:566
 msgid ""
 "to split it.  Destroy fractions that can not be further simplified in a "
 "single shot!"
 msgstr ""
 
-#: src/game.c:717
+#: src/game.c:989
 msgid "Welcome to TuxMath!"
 msgstr "Fáilte go TuxMath!"
 
-#: src/game.c:734
+#: src/game.c:1006
 msgid "Your mission is to save your"
 msgstr "An cúram atá agat ná"
 
-#: src/game.c:735
+#: src/game.c:1007
 msgid "penguins' igloos from the"
 msgstr "íoglúanna do phiongain a chosaint"
 
-#: src/game.c:736
+#: src/game.c:1008
 msgid "falling comets."
 msgstr "ó na réalta mhongach atá ag titim anuas."
 
-#: src/game.c:755
+#: src/game.c:1027
 msgid "Stop a comet by typing"
 msgstr "Stad réalt mhongach trí an"
 
-#: src/game.c:756
+#: src/game.c:1028
 msgid "the answer to the math problem"
 msgstr "freagra don ceist mata a chlóscríobh"
 
-#: src/game.c:757
+#: src/game.c:1029
 msgid "and hitting 'space' or 'enter'."
 msgstr "agus brúigh 'bearna' nó 'isteach'."
 
-#: src/game.c:758
+#: src/game.c:1030
 msgid "Try it now!"
 msgstr "Imir anois é!"
 
-#: src/game.c:766
+#: src/game.c:1038
 msgid "Good shot!"
 msgstr "Amas iontach!"
 
-#: src/game.c:776
+#: src/game.c:1048
 msgid "If an igloo gets hit by a comet,"
 msgstr "Má bhuaileann réalt mhongach íoglú,"
 
-#: src/game.c:777
+#: src/game.c:1049
 msgid "it melts. But don't worry: the"
 msgstr "leáitear é. Ach ná bí buartha:"
 
-#: src/game.c:778
+#: src/game.c:1050
 msgid "penguin is OK!"
 msgstr "tá an phiogain togha!"
 
-#: src/game.c:779
+#: src/game.c:1051
 msgid "Just watch what happens:"
 msgstr "Féach cad a tharlaíonn:"
 
-#: src/game.c:780
+#: src/game.c:1052
 msgid "(Press a key to start)"
 msgstr "(Brúigh cnaipe chun tosú)"
 
-#: src/game.c:793
+#: src/game.c:1065
 msgid "Notice the answer"
 msgstr "Tabhair faoi deara an freagra"
 
-#: src/game.c:803
+#: src/game.c:1075
 msgid "If it gets hit again, the"
 msgstr "Má bhuailfí arís é,"
 
-#: src/game.c:804
+#: src/game.c:1076
 msgid "penguin leaves."
 msgstr "fágann an piongain."
 
-#: src/game.c:805
+#: src/game.c:1077
 msgid "(Press a key when ready)"
 msgstr "(Brúigh cnaipe ar bith nuair atá tú réidh)"
 
-#: src/game.c:824
+#: src/game.c:1100
 msgid "You can fix the igloos"
 msgstr "Is fédir na hioglúanna a dheisiú"
 
-#: src/game.c:825
+#: src/game.c:1101
 msgid "by stopping bonus comets."
 msgstr "trí réalta mhongach breise a stadadh."
 
-#: src/game.c:834
+#: src/game.c:1112
 msgid "Zap it now!"
 msgstr "Buail anois é!"
 
-#: src/game.c:838
+#: src/game.c:1118
 msgid "Great job!"
 msgstr "Maith thú!"
 
-#: src/game.c:852
+#: src/game.c:1136
 msgid "Quit at any time by pressing"
 msgstr "Scoir ag am ar bith trí brúigh"
 
-#: src/game.c:853
+#: src/game.c:1137
 msgid "'Esc' or clicking the 'X'"
 msgstr "'Esc' nó brúigh an 'X'"
 
-#: src/game.c:854
+#: src/game.c:1138
 msgid "in the upper right corner."
 msgstr "sa chúinne uachtarach ar dheis."
 
-#: src/game.c:855
+#: src/game.c:1139
 msgid "Do it now, and then play!"
 msgstr "Déan anois é, agus ansin imir!"
 
-#: src/highscore.c:212 src/titlescreen.c:849
+#: src/highscore.c:167
 msgid "Hall Of Fame"
 msgstr "Réim na gCuradh"
 
-#: src/highscore.c:232 src/highscore.c:253 src/titlescreen.c:785
-#: src/titlescreen.c:844
+#: src/highscore.c:187 src/highscore.c:208
 msgid "Space Cadet"
 msgstr "Glasearcach"
 
-#: src/highscore.c:235 src/titlescreen.c:786 src/titlescreen.c:845
+#: src/highscore.c:190
 msgid "Scout"
 msgstr "Gasóg"
 
-#: src/highscore.c:238 src/titlescreen.c:787 src/titlescreen.c:846
+#: src/highscore.c:193
 msgid "Ranger"
 msgstr "Ránaí"
 
-#: src/highscore.c:241 src/titlescreen.c:788 src/titlescreen.c:847
+#: src/highscore.c:196
 msgid "Ace"
 msgstr "Curadh"
 
-#: src/highscore.c:244 src/titlescreen.c:789 src/titlescreen.c:848
+#: src/highscore.c:199
 msgid "Commando"
 msgstr ""
 
-#: src/highscore.c:247 src/titlescreen.c:968
+#: src/highscore.c:202
 msgid "Factors"
 msgstr ""
 
-#: src/highscore.c:250 src/titlescreen.c:969
+#: src/highscore.c:205
 msgid "Fractions"
 msgstr ""
 
-#: src/highscore.c:353
+#: src/highscore.c:286
 msgid "You Are In The Hall of Fame!"
 msgstr ""
 
-#: src/highscore.c:353
+#: src/highscore.c:286
 msgid "Enter Your Name:"
 msgstr ""
 
-#: src/multiplayer.c:244
+#: src/multiplayer.c:183
+#, c-format
+msgid "Then %s\n"
+msgstr ""
+
+#: src/multiplayer.c:258
 msgid "Who is playing first?"
 msgstr ""
 
-#: src/multiplayer.c:244 src/multiplayer.c:246
+#: src/multiplayer.c:258 src/multiplayer.c:260
 msgid "Enter your name:"
 msgstr ""
 
-#: src/multiplayer.c:246
+#: src/multiplayer.c:260
 msgid "Who is playing next?"
 msgstr ""
 
-#: src/multiplayer.c:260
+#: src/multiplayer.c:274
 msgid "How many rounds will you play?"
 msgstr ""
 
-#: src/multiplayer.c:260
+#: src/multiplayer.c:274
 msgid "Enter a number"
 msgstr ""
 
-#: src/titlescreen.c:487
+#: src/titlescreen.c:476
 msgid "Work In Progress!"
 msgstr "Obair Idir Lámha!"
 
-#: src/titlescreen.c:488
+#: src/titlescreen.c:477
 msgid "This feature is not ready yet"
 msgstr "Níl an ghné seo réidh fós"
 
-#: src/titlescreen.c:489
+#: src/titlescreen.c:478
 msgid "Discuss the future of TuxMath at"
 msgstr "Plé todhchaí TuzMath ag"
 
-#: src/titlescreen.c:490
+#: src/titlescreen.c:479
 msgid "tuxmath-devel at lists.sourceforge.net"
 msgstr "tuxmath-devel at lists.sourceforge.net"
 
-#: src/titlescreen.c:647
-msgid "Play Alone"
-msgstr ""
-
-#: src/titlescreen.c:648
-msgid "Play With Friends"
-msgstr ""
-
-#: src/titlescreen.c:649
-msgid "Factoroids!"
-msgstr ""
-
-#: src/titlescreen.c:650
-msgid "Help"
-msgstr "Cabhair"
-
-#: src/titlescreen.c:651
-msgid "More Options"
-msgstr "Tuilleadh Roghanna"
-
-#: src/titlescreen.c:652
-msgid "Quit"
-msgstr "Scoir"
-
-#: src/titlescreen.c:726
-msgid "Math Command Training Academy"
-msgstr "Lárionad Oiliúna an Cheannais Mata"
-
-#: src/titlescreen.c:727
-msgid "Math Command Fleet Missions"
-msgstr ""
-
-#: src/titlescreen.c:728
-msgid "Play Arcade Game"
-msgstr "Imir an Gnáthchluiche"
-
-#: src/titlescreen.c:729
-msgid "Play Custom Game"
-msgstr "Imir Cluiche Saincheaptha"
-
-#: src/titlescreen.c:730 src/titlescreen.c:781 src/titlescreen.c:790
-#: src/titlescreen.c:850 src/titlescreen.c:970
-msgid "Main menu"
-msgstr "An Príomh Roghchlár"
-
-#: src/titlescreen.c:779
-msgid "Score Sweep"
-msgstr ""
-
-#: src/titlescreen.c:780
-msgid "Elimination"
-msgstr ""
-
-#: src/titlescreen.c:824
-msgid "How many kids are playing?"
-msgstr ""
-
-#: src/titlescreen.c:825
-msgid "(Between 2 and 4 players)"
-msgstr ""
-
-#: src/titlescreen.c:944
-msgid "Edit 'options' file in your home directory"
-msgstr "Cuir in eagar an comhad 'roghanna' i do chomhadlann baile"
-
-#: src/titlescreen.c:945
-msgid "to create customized game!"
-msgstr "chun cluiche saincheaptha a chruthú!"
-
-#: src/titlescreen.c:946
-msgid "Press a key or click your mouse to start game."
-msgstr "Brúigh cnaipe nó brúigh do luchóg chun an cluiche a thosú."
-
-#: src/titlescreen.c:947
-msgid "See README.txt for more information"
-msgstr "Féach ar README.txt le haghaidh breis eolas"
-
-#: src/titlescreen.c:1062
-msgid "Demo"
-msgstr "Taispeántas"
-
-#: src/titlescreen.c:1063
-msgid "Project Info"
-msgstr "Faisnéis an Tionscadail"
-
-#: src/titlescreen.c:1064
-msgid "Credits"
-msgstr "Buíochas le"
-
-#: src/titlescreen.c:1065
-msgid "Main Menu"
-msgstr "An Príomh Roghchlár"
-
-#: src/titlescreen.c:1113
-msgid "TuxMath is free and open-source!"
-msgstr "Tá TuxMath ar fáil saor in aisce agus le foinse oscailte!"
-
-#: src/titlescreen.c:1114
-msgid "You can help make it better by reporting problems,"
-msgstr "Is féidir leat cuidiú é a fheabhsú trí fadhbanna a fhógrú,"
-
-#: src/titlescreen.c:1115
-msgid "suggesting improvements, or adding code."
-msgstr "feabhsaithe a mholadh, nó trí cód a chur leis."
-
-#: src/titlescreen.c:1116
-msgid "Discuss the future at tuxmath-devel at lists.sourceforge.net"
-msgstr "Plé an todhchaí ag tuxmath-devel at lists.sourceforge.net"
-
 #: data/missions/lessons/descr_lessons:1
 msgid "Number Typing"
 msgstr "Clóscríobh Uimhreacha"
@@ -762,6 +657,63 @@
 msgid "Division of Positives and Negatives"
 msgstr "Roinnt Deimhneacha agus Diúltacha"
 
+#~ msgid "Help"
+#~ msgstr "Cabhair"
+
+#~ msgid "More Options"
+#~ msgstr "Tuilleadh Roghanna"
+
+#~ msgid "Quit"
+#~ msgstr "Scoir"
+
+#~ msgid "Math Command Training Academy"
+#~ msgstr "Lárionad Oiliúna an Cheannais Mata"
+
+#~ msgid "Play Arcade Game"
+#~ msgstr "Imir an Gnáthchluiche"
+
+#~ msgid "Play Custom Game"
+#~ msgstr "Imir Cluiche Saincheaptha"
+
+#~ msgid "Main menu"
+#~ msgstr "An Príomh Roghchlár"
+
+#~ msgid "Edit 'options' file in your home directory"
+#~ msgstr "Cuir in eagar an comhad 'roghanna' i do chomhadlann baile"
+
+#~ msgid "to create customized game!"
+#~ msgstr "chun cluiche saincheaptha a chruthú!"
+
+#~ msgid "Press a key or click your mouse to start game."
+#~ msgstr "Brúigh cnaipe nó brúigh do luchóg chun an cluiche a thosú."
+
+#~ msgid "See README.txt for more information"
+#~ msgstr "Féach ar README.txt le haghaidh breis eolas"
+
+#~ msgid "Demo"
+#~ msgstr "Taispeántas"
+
+#~ msgid "Project Info"
+#~ msgstr "Faisnéis an Tionscadail"
+
+#~ msgid "Credits"
+#~ msgstr "Buíochas le"
+
+#~ msgid "Main Menu"
+#~ msgstr "An Príomh Roghchlár"
+
+#~ msgid "TuxMath is free and open-source!"
+#~ msgstr "Tá TuxMath ar fáil saor in aisce agus le foinse oscailte!"
+
+#~ msgid "You can help make it better by reporting problems,"
+#~ msgstr "Is féidir leat cuidiú é a fheabhsú trí fadhbanna a fhógrú,"
+
+#~ msgid "suggesting improvements, or adding code."
+#~ msgstr "feabhsaithe a mholadh, nó trí cód a chur leis."
+
+#~ msgid "Discuss the future at tuxmath-devel at lists.sourceforge.net"
+#~ msgstr "Plé an todhchaí ag tuxmath-devel at lists.sourceforge.net"
+
 #, fuzzy
 #~ msgid "the penguins' igloos. To save their homes,"
 #~ msgstr "íoglúanna do phiongain a chosaint"

Modified: tuxmath/trunk/po/he.gmo
===================================================================
(Binary files differ)

Modified: tuxmath/trunk/po/he.po
===================================================================
--- tuxmath/trunk/po/he.po	2009-09-04 19:47:19 UTC (rev 1488)
+++ tuxmath/trunk/po/he.po	2009-09-05 02:31:43 UTC (rev 1489)
@@ -9,7 +9,7 @@
 msgstr ""
 "Project-Id-Version: tuxmath\n"
 "Report-Msgid-Bugs-To: tuxmath-devel at lists.sourceforge.net\n"
-"POT-Creation-Date: 2009-03-06 06:12-0600\n"
+"POT-Creation-Date: 2009-09-04 21:22-0500\n"
 "PO-Revision-Date: 2009-01-17 10:32+0200\n"
 "Last-Translator: Yaron Shahrabani <sh.yaron at gmail.com>\n"
 "Language-Team: Hebrew <sh.yaron at gmail.com>\n"
@@ -210,333 +210,228 @@
 
 #: src/credits.c:108
 msgid ""
-"A full copy of the GPL is included with the documenation for this program."
+"A full copy of the GPL is included with the documentation for this program."
 msgstr ""
 
 #: src/credits.c:110
 msgid "For more information about Free Software and the GNU GPL, visit:"
 msgstr ""
 
-#: src/factoroids.c:558
+#: src/factoroids.c:552
 msgid "FACTOROIDS: to win, you need destroy all the asteroids."
 msgstr ""
 
-#: src/factoroids.c:559 src/factoroids.c:570
+#: src/factoroids.c:553 src/factoroids.c:564
 msgid "Use the arrow keys to turn or go forward.  Aim at an asteroid,"
 msgstr ""
 
-#: src/factoroids.c:560
+#: src/factoroids.c:554
 msgid "type one of its factors, and press space or return"
 msgstr ""
 
-#: src/factoroids.c:561
+#: src/factoroids.c:555
 msgid "to split it into its factors.  Rocks with prime numbers are destroyed!"
 msgstr ""
 
-#: src/factoroids.c:569
+#: src/factoroids.c:563
 msgid "FRACTIONS: to win, you need destroy all the asteroids"
 msgstr ""
 
-#: src/factoroids.c:571
+#: src/factoroids.c:565
 msgid "type a number that can simplify the fraction, and press space or return"
 msgstr ""
 
-#: src/factoroids.c:572
+#: src/factoroids.c:566
 msgid ""
 "to split it.  Destroy fractions that can not be further simplified in a "
 "single shot!"
 msgstr ""
 
-#: src/game.c:717
+#: src/game.c:989
 msgid "Welcome to TuxMath!"
 msgstr "ברוכים הבאים לטאקסמטיקה!"
 
-#: src/game.c:734
+#: src/game.c:1006
 msgid "Your mission is to save your"
 msgstr "מטרתך היא להציל את"
 
-#: src/game.c:735
+#: src/game.c:1007
 msgid "penguins' igloos from the"
 msgstr "הפינגווינים שלך מפני"
 
-#: src/game.c:736
+#: src/game.c:1008
 msgid "falling comets."
 msgstr "הכוכבים הנופלים."
 
-#: src/game.c:755
+#: src/game.c:1027
 msgid "Stop a comet by typing"
 msgstr "תוכל להדוף כוכב על ידי"
 
-#: src/game.c:756
+#: src/game.c:1028
 msgid "the answer to the math problem"
 msgstr "הקלדת התשובה לבעיה המתמטית"
 
-#: src/game.c:757
+#: src/game.c:1029
 msgid "and hitting 'space' or 'enter'."
 msgstr "ולחיצה על 'רווח' או 'Enter'."
 
-#: src/game.c:758
+#: src/game.c:1030
 msgid "Try it now!"
 msgstr "נסה זאת כעת!"
 
-#: src/game.c:766
+#: src/game.c:1038
 msgid "Good shot!"
 msgstr "פגיעה יפה!"
 
-#: src/game.c:776
+#: src/game.c:1048
 msgid "If an igloo gets hit by a comet,"
 msgstr "אם פוגע כוכב באיגלו,"
 
-#: src/game.c:777
+#: src/game.c:1049
 msgid "it melts. But don't worry: the"
 msgstr "האיגלו נמס. אך אל דאגה:"
 
-#: src/game.c:778
+#: src/game.c:1050
 msgid "penguin is OK!"
 msgstr "הפינגווינים בסדר גמור!"
 
-#: src/game.c:779
+#: src/game.c:1051
 msgid "Just watch what happens:"
 msgstr "פשוט שים לב מה קורה:"
 
-#: src/game.c:780
+#: src/game.c:1052
 msgid "(Press a key to start)"
 msgstr "(לחץ על מקש להתחלה)"
 
-#: src/game.c:793
+#: src/game.c:1065
 msgid "Notice the answer"
 msgstr "שים לב לתשובה"
 
-#: src/game.c:803
+#: src/game.c:1075
 msgid "If it gets hit again, the"
 msgstr "אם האיגלו נפגע שוב,"
 
-#: src/game.c:804
+#: src/game.c:1076
 msgid "penguin leaves."
 msgstr "הפינגווין עוזב."
 
-#: src/game.c:805
+#: src/game.c:1077
 msgid "(Press a key when ready)"
 msgstr "(לחץ על מקש כשאתה מוכן)"
 
-#: src/game.c:824
+#: src/game.c:1100
 msgid "You can fix the igloos"
 msgstr "תוכלו לתקן את האיגלואים"
 
-#: src/game.c:825
+#: src/game.c:1101
 msgid "by stopping bonus comets."
 msgstr "על ידי הדיפת כוכבי בונוס."
 
-#: src/game.c:834
+#: src/game.c:1112
 msgid "Zap it now!"
 msgstr "תירה בו כעת!"
 
-#: src/game.c:838
+#: src/game.c:1118
 msgid "Great job!"
 msgstr "עבודה יפה!"
 
-#: src/game.c:852
+#: src/game.c:1136
 msgid "Quit at any time by pressing"
 msgstr "תוכל לצאת בכל על על ידי"
 
-#: src/game.c:853
+#: src/game.c:1137
 msgid "'Esc' or clicking the 'X'"
 msgstr "לחיצה על 'Esc' או על ה־'X'"
 
-#: src/game.c:854
+#: src/game.c:1138
 msgid "in the upper right corner."
 msgstr "בפינה השמאלית העליונה."
 
-#: src/game.c:855
+#: src/game.c:1139
 msgid "Do it now, and then play!"
 msgstr "עשה זאת כעת, שחק לאחר מכן!"
 
-#: src/highscore.c:212 src/titlescreen.c:849
+#: src/highscore.c:167
 msgid "Hall Of Fame"
 msgstr "היכל התהילה"
 
-#: src/highscore.c:232 src/highscore.c:253 src/titlescreen.c:785
-#: src/titlescreen.c:844
+#: src/highscore.c:187 src/highscore.c:208
 msgid "Space Cadet"
 msgstr "טירון"
 
-#: src/highscore.c:235 src/titlescreen.c:786 src/titlescreen.c:845
+#: src/highscore.c:190
 msgid "Scout"
 msgstr "תלמיד"
 
-#: src/highscore.c:238 src/titlescreen.c:787 src/titlescreen.c:846
+#: src/highscore.c:193
 msgid "Ranger"
 msgstr "מתמצא"
 
-#: src/highscore.c:241 src/titlescreen.c:788 src/titlescreen.c:847
+#: src/highscore.c:196
 msgid "Ace"
 msgstr "תותח"
 
-#: src/highscore.c:244 src/titlescreen.c:789 src/titlescreen.c:848
+#: src/highscore.c:199
 msgid "Commando"
 msgstr ""
 
-#: src/highscore.c:247 src/titlescreen.c:968
+#: src/highscore.c:202
 msgid "Factors"
 msgstr ""
 
-#: src/highscore.c:250 src/titlescreen.c:969
+#: src/highscore.c:205
 msgid "Fractions"
 msgstr ""
 
-#: src/highscore.c:353
+#: src/highscore.c:286
 msgid "You Are In The Hall of Fame!"
 msgstr ""
 
-#: src/highscore.c:353
+#: src/highscore.c:286
 msgid "Enter Your Name:"
 msgstr ""
 
-#: src/multiplayer.c:244
+#: src/multiplayer.c:183
+#, c-format
+msgid "Then %s\n"
+msgstr ""
+
+#: src/multiplayer.c:258
 msgid "Who is playing first?"
 msgstr ""
 
-#: src/multiplayer.c:244 src/multiplayer.c:246
+#: src/multiplayer.c:258 src/multiplayer.c:260
 msgid "Enter your name:"
 msgstr ""
 
-#: src/multiplayer.c:246
+#: src/multiplayer.c:260
 msgid "Who is playing next?"
 msgstr ""
 
-#: src/multiplayer.c:260
+#: src/multiplayer.c:274
 msgid "How many rounds will you play?"
 msgstr ""
 
-#: src/multiplayer.c:260
+#: src/multiplayer.c:274
 msgid "Enter a number"
 msgstr ""
 
-#: src/titlescreen.c:487
+#: src/titlescreen.c:476
 msgid "Work In Progress!"
 msgstr "עבודה בתהליכים!"
 
-#: src/titlescreen.c:488
+#: src/titlescreen.c:477
 msgid "This feature is not ready yet"
 msgstr "תכונה זו אינה מוכנה עדיין"
 
-#: src/titlescreen.c:489
+#: src/titlescreen.c:478
 msgid "Discuss the future of TuxMath at"
 msgstr "דון בעתידה של טאקסמתיקה בקבוצת הדיון"
 
-#: src/titlescreen.c:490
+#: src/titlescreen.c:479
 msgid "tuxmath-devel at lists.sourceforge.net"
 msgstr "tuxmath-devel at lists.sourceforge.net"
 
-#: src/titlescreen.c:647
-msgid "Play Alone"
-msgstr ""
-
-#: src/titlescreen.c:648
-msgid "Play With Friends"
-msgstr ""
-
-#: src/titlescreen.c:649
-msgid "Factoroids!"
-msgstr ""
-
-#: src/titlescreen.c:650
-msgid "Help"
-msgstr "עזרה"
-
-#: src/titlescreen.c:651
-msgid "More Options"
-msgstr "אפשרויות נוספות"
-
-#: src/titlescreen.c:652
-msgid "Quit"
-msgstr "יציאה"
-
-#: src/titlescreen.c:726
-msgid "Math Command Training Academy"
-msgstr "האקדמיה לאימון פעולות מתמטיות"
-
-#: src/titlescreen.c:727
-msgid "Math Command Fleet Missions"
-msgstr ""
-
-#: src/titlescreen.c:728
-msgid "Play Arcade Game"
-msgstr "שחק משחק ארקייד"
-
-#: src/titlescreen.c:729
-msgid "Play Custom Game"
-msgstr "שחק משחק מותאם"
-
-#: src/titlescreen.c:730 src/titlescreen.c:781 src/titlescreen.c:790
-#: src/titlescreen.c:850 src/titlescreen.c:970
-msgid "Main menu"
-msgstr "תפריט ראשי"
-
-#: src/titlescreen.c:779
-msgid "Score Sweep"
-msgstr ""
-
-#: src/titlescreen.c:780
-msgid "Elimination"
-msgstr ""
-
-#: src/titlescreen.c:824
-msgid "How many kids are playing?"
-msgstr ""
-
-#: src/titlescreen.c:825
-msgid "(Between 2 and 4 players)"
-msgstr ""
-
-#: src/titlescreen.c:944
-msgid "Edit 'options' file in your home directory"
-msgstr "ערוך את קובץ האפשרויות ('options') בתיקיית הבית שלך"
-
-#: src/titlescreen.c:945
-msgid "to create customized game!"
-msgstr "כדי ליצור משחק מותאם אישית!"
-
-#: src/titlescreen.c:946
-msgid "Press a key or click your mouse to start game."
-msgstr "לחץ על מקש במקלדת או בעכבר כדי להתחיל במשחק."
-
-#: src/titlescreen.c:947
-msgid "See README.txt for more information"
-msgstr "עיין בקובץ README.TXT למידע נוסף"
-
-#: src/titlescreen.c:1062
-msgid "Demo"
-msgstr "הדגמה"
-
-#: src/titlescreen.c:1063
-msgid "Project Info"
-msgstr "מידע על המיזם"
-
-#: src/titlescreen.c:1064
-msgid "Credits"
-msgstr "תודות"
-
-#: src/titlescreen.c:1065
-msgid "Main Menu"
-msgstr "תפריט ראשי"
-
-#: src/titlescreen.c:1113
-msgid "TuxMath is free and open-source!"
-msgstr "טאקסמטיקה הינה חופשית ובעלת קוד פתוח!"
-
-#: src/titlescreen.c:1114
-msgid "You can help make it better by reporting problems,"
-msgstr "תוכל לעזור לנו לשפר אותו על ידי דיווח תקלות,"
-
-#: src/titlescreen.c:1115
-msgid "suggesting improvements, or adding code."
-msgstr "הצעת שיפורים או הוספת קוד."
-
-#: src/titlescreen.c:1116
-msgid "Discuss the future at tuxmath-devel at lists.sourceforge.net"
-msgstr "דון בעתיד טאקסמטיקה ברשימת הדיוור tuxmath-devel at lists.sourceforge.net"
-
 #: data/missions/lessons/descr_lessons:1
 msgid "Number Typing"
 msgstr "הקלדת מספרים"
@@ -771,6 +666,64 @@
 msgid "Division of Positives and Negatives"
 msgstr "חלוקת מספרים חיוביים בשליליים"
 
+#~ msgid "Help"
+#~ msgstr "עזרה"
+
+#~ msgid "More Options"
+#~ msgstr "אפשרויות נוספות"
+
+#~ msgid "Quit"
+#~ msgstr "יציאה"
+
+#~ msgid "Math Command Training Academy"
+#~ msgstr "האקדמיה לאימון פעולות מתמטיות"
+
+#~ msgid "Play Arcade Game"
+#~ msgstr "שחק משחק ארקייד"
+
+#~ msgid "Play Custom Game"
+#~ msgstr "שחק משחק מותאם"
+
+#~ msgid "Main menu"
+#~ msgstr "תפריט ראשי"
+
+#~ msgid "Edit 'options' file in your home directory"
+#~ msgstr "ערוך את קובץ האפשרויות ('options') בתיקיית הבית שלך"
+
+#~ msgid "to create customized game!"
+#~ msgstr "כדי ליצור משחק מותאם אישית!"
+
+#~ msgid "Press a key or click your mouse to start game."
+#~ msgstr "לחץ על מקש במקלדת או בעכבר כדי להתחיל במשחק."
+
+#~ msgid "See README.txt for more information"
+#~ msgstr "עיין בקובץ README.TXT למידע נוסף"
+
+#~ msgid "Demo"
+#~ msgstr "הדגמה"
+
+#~ msgid "Project Info"
+#~ msgstr "מידע על המיזם"
+
+#~ msgid "Credits"
+#~ msgstr "תודות"
+
+#~ msgid "Main Menu"
+#~ msgstr "תפריט ראשי"
+
+#~ msgid "TuxMath is free and open-source!"
+#~ msgstr "טאקסמטיקה הינה חופשית ובעלת קוד פתוח!"
+
+#~ msgid "You can help make it better by reporting problems,"
+#~ msgstr "תוכל לעזור לנו לשפר אותו על ידי דיווח תקלות,"
+
+#~ msgid "suggesting improvements, or adding code."
+#~ msgstr "הצעת שיפורים או הוספת קוד."
+
+#~ msgid "Discuss the future at tuxmath-devel at lists.sourceforge.net"
+#~ msgstr ""
+#~ "דון בעתיד טאקסמטיקה ברשימת הדיוור tuxmath-devel at lists.sourceforge.net"
+
 #, fuzzy
 #~ msgid "the penguins' igloos. To save their homes,"
 #~ msgstr "הפינגווינים שלך מפני"

Modified: tuxmath/trunk/po/hu.gmo
===================================================================
(Binary files differ)

Modified: tuxmath/trunk/po/hu.po
===================================================================
--- tuxmath/trunk/po/hu.po	2009-09-04 19:47:19 UTC (rev 1488)
+++ tuxmath/trunk/po/hu.po	2009-09-05 02:31:43 UTC (rev 1489)
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: tuxmath-devel at lists.sourceforge.net\n"
-"POT-Creation-Date: 2009-03-06 06:12-0600\n"
+"POT-Creation-Date: 2009-09-04 21:22-0500\n"
 "PO-Revision-Date: 2008-02-11 21:56+0100\n"
 "Last-Translator: Miklos Merenyi <mermik at freemail.hu>\n"
 "Language-Team: LANGUAGE <HU at li.org>\n"
@@ -201,334 +201,229 @@
 
 #: src/credits.c:108
 msgid ""
-"A full copy of the GPL is included with the documenation for this program."
+"A full copy of the GPL is included with the documentation for this program."
 msgstr ""
 
 #: src/credits.c:110
 msgid "For more information about Free Software and the GNU GPL, visit:"
 msgstr ""
 
-#: src/factoroids.c:558
+#: src/factoroids.c:552
 msgid "FACTOROIDS: to win, you need destroy all the asteroids."
 msgstr ""
 
-#: src/factoroids.c:559 src/factoroids.c:570
+#: src/factoroids.c:553 src/factoroids.c:564
 msgid "Use the arrow keys to turn or go forward.  Aim at an asteroid,"
 msgstr ""
 
-#: src/factoroids.c:560
+#: src/factoroids.c:554
 msgid "type one of its factors, and press space or return"
 msgstr ""
 
-#: src/factoroids.c:561
+#: src/factoroids.c:555
 msgid "to split it into its factors.  Rocks with prime numbers are destroyed!"
 msgstr ""
 
-#: src/factoroids.c:569
+#: src/factoroids.c:563
 msgid "FRACTIONS: to win, you need destroy all the asteroids"
 msgstr ""
 
-#: src/factoroids.c:571
+#: src/factoroids.c:565
 msgid "type a number that can simplify the fraction, and press space or return"
 msgstr ""
 
-#: src/factoroids.c:572
+#: src/factoroids.c:566
 msgid ""
 "to split it.  Destroy fractions that can not be further simplified in a "
 "single shot!"
 msgstr ""
 
-#: src/game.c:717
+#: src/game.c:989
 msgid "Welcome to TuxMath!"
 msgstr "Üdvözöllek a TuxMath-ban!"
 
-#: src/game.c:734
+#: src/game.c:1006
 msgid "Your mission is to save your"
 msgstr "Küldetésed a pingvinek"
 
-#: src/game.c:735
+#: src/game.c:1007
 msgid "penguins' igloos from the"
 msgstr "jégkunyhóinak megvédése"
 
-#: src/game.c:736
+#: src/game.c:1008
 msgid "falling comets."
 msgstr "az aláhulló meteoritoktól."
 
-#: src/game.c:755
+#: src/game.c:1027
 msgid "Stop a comet by typing"
 msgstr "Gépeld be a matematikai feladat "
 
-#: src/game.c:756
+#: src/game.c:1028
 msgid "the answer to the math problem"
 msgstr "eredményét, és üss Enter-t"
 
-#: src/game.c:757
+#: src/game.c:1029
 msgid "and hitting 'space' or 'enter'."
 msgstr "a meteor megállításához!"
 
-#: src/game.c:758
+#: src/game.c:1030
 msgid "Try it now!"
 msgstr "Próbáld meg most!"
 
-#: src/game.c:766
+#: src/game.c:1038
 msgid "Good shot!"
 msgstr "Szép lövés!"
 
-#: src/game.c:776
+#: src/game.c:1048
 msgid "If an igloo gets hit by a comet,"
 msgstr "Ha egy jégkunyhót eltalál"
 
-#: src/game.c:777
+#: src/game.c:1049
 #, fuzzy
 msgid "it melts. But don't worry: the"
 msgstr "egy meteor, megolvad, de a"
 
-#: src/game.c:778
+#: src/game.c:1050
 msgid "penguin is OK!"
 msgstr "pingvinnek még nem lesz baja!"
 
-#: src/game.c:779
+#: src/game.c:1051
 msgid "Just watch what happens:"
 msgstr "Nézd, mi történik:"
 
-#: src/game.c:780
+#: src/game.c:1052
 msgid "(Press a key to start)"
 msgstr "(Nyomj meg egy gombot!)"
 
-#: src/game.c:793
+#: src/game.c:1065
 msgid "Notice the answer"
 msgstr "Látod a választ?"
 
-#: src/game.c:803
+#: src/game.c:1075
 msgid "If it gets hit again, the"
 msgstr "A második találat után"
 
-#: src/game.c:804
+#: src/game.c:1076
 msgid "penguin leaves."
 msgstr "a pingvin elmenekül."
 
-#: src/game.c:805
+#: src/game.c:1077
 msgid "(Press a key when ready)"
 msgstr "(Nyomj meg egy gombot!)"
 
-#: src/game.c:824
+#: src/game.c:1100
 msgid "You can fix the igloos"
 msgstr "A jégkunyhókat a bónusz meteorok"
 
-#: src/game.c:825
+#: src/game.c:1101
 msgid "by stopping bonus comets."
 msgstr "szétlövésével javíthatod meg."
 
-#: src/game.c:834
+#: src/game.c:1112
 msgid "Zap it now!"
 msgstr "Adj neki!"
 
-#: src/game.c:838
+#: src/game.c:1118
 msgid "Great job!"
 msgstr "Szép munka!"
 
-#: src/game.c:852
+#: src/game.c:1136
 msgid "Quit at any time by pressing"
 msgstr "Akármikor kiléphetsz az 'ESC'"
 
-#: src/game.c:853
+#: src/game.c:1137
 msgid "'Esc' or clicking the 'X'"
 msgstr "gomb megnyomásával, vagy "
 
-#: src/game.c:854
+#: src/game.c:1138
 msgid "in the upper right corner."
 msgstr "az 'X'-re való kattintással."
 
-#: src/game.c:855
+#: src/game.c:1139
 msgid "Do it now, and then play!"
 msgstr "Lépj ki, és kezdd a játékot!"
 
-#: src/highscore.c:212 src/titlescreen.c:849
+#: src/highscore.c:167
 msgid "Hall Of Fame"
 msgstr "Dicsőséglista"
 
-#: src/highscore.c:232 src/highscore.c:253 src/titlescreen.c:785
-#: src/titlescreen.c:844
+#: src/highscore.c:187 src/highscore.c:208
 msgid "Space Cadet"
 msgstr "Újonc"
 
-#: src/highscore.c:235 src/titlescreen.c:786 src/titlescreen.c:845
+#: src/highscore.c:190
 msgid "Scout"
 msgstr "Felderítő"
 
-#: src/highscore.c:238 src/titlescreen.c:787 src/titlescreen.c:846
+#: src/highscore.c:193
 msgid "Ranger"
 msgstr "Járőrparancsnok"
 
-#: src/highscore.c:241 src/titlescreen.c:788 src/titlescreen.c:847
+#: src/highscore.c:196
 msgid "Ace"
 msgstr "Mesterpilóta"
 
-#: src/highscore.c:244 src/titlescreen.c:789 src/titlescreen.c:848
+#: src/highscore.c:199
 msgid "Commando"
 msgstr ""
 
-#: src/highscore.c:247 src/titlescreen.c:968
+#: src/highscore.c:202
 msgid "Factors"
 msgstr ""
 
-#: src/highscore.c:250 src/titlescreen.c:969
+#: src/highscore.c:205
 msgid "Fractions"
 msgstr ""
 
-#: src/highscore.c:353
+#: src/highscore.c:286
 msgid "You Are In The Hall of Fame!"
 msgstr ""
 
-#: src/highscore.c:353
+#: src/highscore.c:286
 msgid "Enter Your Name:"
 msgstr ""
 
-#: src/multiplayer.c:244
+#: src/multiplayer.c:183
+#, c-format
+msgid "Then %s\n"
+msgstr ""
+
+#: src/multiplayer.c:258
 msgid "Who is playing first?"
 msgstr ""
 
-#: src/multiplayer.c:244 src/multiplayer.c:246
+#: src/multiplayer.c:258 src/multiplayer.c:260
 msgid "Enter your name:"
 msgstr ""
 
-#: src/multiplayer.c:246
+#: src/multiplayer.c:260
 msgid "Who is playing next?"
 msgstr ""
 
-#: src/multiplayer.c:260
+#: src/multiplayer.c:274
 msgid "How many rounds will you play?"
 msgstr ""
 
-#: src/multiplayer.c:260
+#: src/multiplayer.c:274
 msgid "Enter a number"
 msgstr ""
 
-#: src/titlescreen.c:487
+#: src/titlescreen.c:476
 msgid "Work In Progress!"
 msgstr "Fejlesztés alatt."
 
-#: src/titlescreen.c:488
+#: src/titlescreen.c:477
 msgid "This feature is not ready yet"
 msgstr "Ez a funkció még nem működik"
 
-#: src/titlescreen.c:489
+#: src/titlescreen.c:478
 msgid "Discuss the future of TuxMath at"
 msgstr "A TuxMath jövőjét itt vitathatod meg:"
 
-#: src/titlescreen.c:490
+#: src/titlescreen.c:479
 msgid "tuxmath-devel at lists.sourceforge.net"
 msgstr "tuxmath-devel at lists.sourceforge.net"
 
-#: src/titlescreen.c:647
-msgid "Play Alone"
-msgstr ""
-
-#: src/titlescreen.c:648
-msgid "Play With Friends"
-msgstr ""
-
-#: src/titlescreen.c:649
-msgid "Factoroids!"
-msgstr ""
-
-#: src/titlescreen.c:650
-msgid "Help"
-msgstr "Segítség"
-
-#: src/titlescreen.c:651
-msgid "More Options"
-msgstr "Egyebek"
-
-#: src/titlescreen.c:652
-msgid "Quit"
-msgstr "Kilépés"
-
-#: src/titlescreen.c:726
-msgid "Math Command Training Academy"
-msgstr "Matek-Parancsnok Képző Akadémia"
-
-#: src/titlescreen.c:727
-msgid "Math Command Fleet Missions"
-msgstr ""
-
-#: src/titlescreen.c:728
-msgid "Play Arcade Game"
-msgstr "Beépített játékok"
-
-#: src/titlescreen.c:729
-msgid "Play Custom Game"
-msgstr "Testreszabott játékok"
-
-#: src/titlescreen.c:730 src/titlescreen.c:781 src/titlescreen.c:790
-#: src/titlescreen.c:850 src/titlescreen.c:970
-msgid "Main menu"
-msgstr "Főmenü"
-
-#: src/titlescreen.c:779
-msgid "Score Sweep"
-msgstr ""
-
-#: src/titlescreen.c:780
-msgid "Elimination"
-msgstr ""
-
-#: src/titlescreen.c:824
-msgid "How many kids are playing?"
-msgstr ""
-
-#: src/titlescreen.c:825
-msgid "(Between 2 and 4 players)"
-msgstr ""
-
-#: src/titlescreen.c:944
-msgid "Edit 'options' file in your home directory"
-msgstr "A home-könyvtáradban levő 'options' fájl "
-
-#: src/titlescreen.c:945
-msgid "to create customized game!"
-msgstr "szerkesztésével készíthetsz testreszabott játékot."
-
-#: src/titlescreen.c:946
-msgid "Press a key or click your mouse to start game."
-msgstr "Nyomj le egy billentyűt vagy egy egérgombot a kezdéshez!"
-
-#: src/titlescreen.c:947
-msgid "See README.txt for more information"
-msgstr "További részletek a README.txt fájlban."
-
-#: src/titlescreen.c:1062
-msgid "Demo"
-msgstr "Demo"
-
-#: src/titlescreen.c:1063
-msgid "Project Info"
-msgstr "Projekt információ"
-
-#: src/titlescreen.c:1064
-msgid "Credits"
-msgstr "Köszönetnyilvánítás"
-
-#: src/titlescreen.c:1065
-msgid "Main Menu"
-msgstr "Főmenü"
-
-#: src/titlescreen.c:1113
-msgid "TuxMath is free and open-source!"
-msgstr "A TuxMath ingyenes és nyílt forráskódú!"
-
-#: src/titlescreen.c:1114
-msgid "You can help make it better by reporting problems,"
-msgstr "Te is segíthetsz még jobbá tenni az észlelt hibák bejelentésével,"
-
-#: src/titlescreen.c:1115
-msgid "suggesting improvements, or adding code."
-msgstr "továbbfejlesztési ötletekkel, vagy programkóddal."
-
-#: src/titlescreen.c:1116
-msgid "Discuss the future at tuxmath-devel at lists.sourceforge.net"
-msgstr "Levelezőlista (angol nyelvű): tuxmath-devel at lists.sourceforge.net"
-
 #: data/missions/lessons/descr_lessons:1
 msgid "Number Typing"
 msgstr "Számok gépelése"
@@ -763,6 +658,63 @@
 msgid "Division of Positives and Negatives"
 msgstr "Pozitív és negatív számok osztása"
 
+#~ msgid "Help"
+#~ msgstr "Segítség"
+
+#~ msgid "More Options"
+#~ msgstr "Egyebek"
+
+#~ msgid "Quit"
+#~ msgstr "Kilépés"
+
+#~ msgid "Math Command Training Academy"
+#~ msgstr "Matek-Parancsnok Képző Akadémia"
+
+#~ msgid "Play Arcade Game"
+#~ msgstr "Beépített játékok"
+
+#~ msgid "Play Custom Game"
+#~ msgstr "Testreszabott játékok"
+
+#~ msgid "Main menu"
+#~ msgstr "Főmenü"
+
+#~ msgid "Edit 'options' file in your home directory"
+#~ msgstr "A home-könyvtáradban levő 'options' fájl "
+
+#~ msgid "to create customized game!"
+#~ msgstr "szerkesztésével készíthetsz testreszabott játékot."
+
+#~ msgid "Press a key or click your mouse to start game."
+#~ msgstr "Nyomj le egy billentyűt vagy egy egérgombot a kezdéshez!"
+
+#~ msgid "See README.txt for more information"
+#~ msgstr "További részletek a README.txt fájlban."
+
+#~ msgid "Demo"
+#~ msgstr "Demo"
+
+#~ msgid "Project Info"
+#~ msgstr "Projekt információ"
+
+#~ msgid "Credits"
+#~ msgstr "Köszönetnyilvánítás"
+
+#~ msgid "Main Menu"
+#~ msgstr "Főmenü"
+
+#~ msgid "TuxMath is free and open-source!"
+#~ msgstr "A TuxMath ingyenes és nyílt forráskódú!"
+
+#~ msgid "You can help make it better by reporting problems,"
+#~ msgstr "Te is segíthetsz még jobbá tenni az észlelt hibák bejelentésével,"
+
+#~ msgid "suggesting improvements, or adding code."
+#~ msgstr "továbbfejlesztési ötletekkel, vagy programkóddal."
+
+#~ msgid "Discuss the future at tuxmath-devel at lists.sourceforge.net"
+#~ msgstr "Levelezőlista (angol nyelvű): tuxmath-devel at lists.sourceforge.net"
+
 #, fuzzy
 #~ msgid "the penguins' igloos. To save their homes,"
 #~ msgstr "jégkunyhóinak megvédése"

Modified: tuxmath/trunk/po/it.gmo
===================================================================
(Binary files differ)

Modified: tuxmath/trunk/po/it.po
===================================================================
--- tuxmath/trunk/po/it.po	2009-09-04 19:47:19 UTC (rev 1488)
+++ tuxmath/trunk/po/it.po	2009-09-05 02:31:43 UTC (rev 1489)
@@ -12,7 +12,7 @@
 msgstr ""
 "Project-Id-Version: tuxmath\n"
 "Report-Msgid-Bugs-To: tuxmath-devel at lists.sourceforge.net\n"
-"POT-Creation-Date: 2009-03-06 06:12-0600\n"
+"POT-Creation-Date: 2009-09-04 21:22-0500\n"
 "PO-Revision-Date: 2008-03-01 11:49+0000\n"
 "Last-Translator: Giovanni Condello <condellog at gmail.com>\n"
 "Language-Team: Italian <it at li.org>\n"
@@ -209,334 +209,228 @@
 
 #: src/credits.c:108
 msgid ""
-"A full copy of the GPL is included with the documenation for this program."
+"A full copy of the GPL is included with the documentation for this program."
 msgstr ""
 
 #: src/credits.c:110
 msgid "For more information about Free Software and the GNU GPL, visit:"
 msgstr ""
 
-#: src/factoroids.c:558
+#: src/factoroids.c:552
 msgid "FACTOROIDS: to win, you need destroy all the asteroids."
 msgstr ""
 
-#: src/factoroids.c:559 src/factoroids.c:570
+#: src/factoroids.c:553 src/factoroids.c:564
 msgid "Use the arrow keys to turn or go forward.  Aim at an asteroid,"
 msgstr ""
 
-#: src/factoroids.c:560
+#: src/factoroids.c:554
 msgid "type one of its factors, and press space or return"
 msgstr ""
 
-#: src/factoroids.c:561
+#: src/factoroids.c:555
 msgid "to split it into its factors.  Rocks with prime numbers are destroyed!"
 msgstr ""
 
-#: src/factoroids.c:569
+#: src/factoroids.c:563
 msgid "FRACTIONS: to win, you need destroy all the asteroids"
 msgstr ""
 
-#: src/factoroids.c:571
+#: src/factoroids.c:565
 msgid "type a number that can simplify the fraction, and press space or return"
 msgstr ""
 
-#: src/factoroids.c:572
+#: src/factoroids.c:566
 msgid ""
 "to split it.  Destroy fractions that can not be further simplified in a "
 "single shot!"
 msgstr ""
 
-#: src/game.c:717
+#: src/game.c:989
 msgid "Welcome to TuxMath!"
 msgstr ""
 
-#: src/game.c:734
+#: src/game.c:1006
 msgid "Your mission is to save your"
 msgstr ""
 
-#: src/game.c:735
+#: src/game.c:1007
 msgid "penguins' igloos from the"
 msgstr ""
 
-#: src/game.c:736
+#: src/game.c:1008
 msgid "falling comets."
 msgstr ""
 
-#: src/game.c:755
+#: src/game.c:1027
 msgid "Stop a comet by typing"
 msgstr ""
 
-#: src/game.c:756
+#: src/game.c:1028
 msgid "the answer to the math problem"
 msgstr ""
 
-#: src/game.c:757
+#: src/game.c:1029
 msgid "and hitting 'space' or 'enter'."
 msgstr ""
 
-#: src/game.c:758
+#: src/game.c:1030
 msgid "Try it now!"
 msgstr ""
 
-#: src/game.c:766
+#: src/game.c:1038
 msgid "Good shot!"
 msgstr ""
 
-#: src/game.c:776
+#: src/game.c:1048
 msgid "If an igloo gets hit by a comet,"
 msgstr ""
 
-#: src/game.c:777
+#: src/game.c:1049
 msgid "it melts. But don't worry: the"
 msgstr ""
 
-#: src/game.c:778
+#: src/game.c:1050
 msgid "penguin is OK!"
 msgstr ""
 
-#: src/game.c:779
+#: src/game.c:1051
 msgid "Just watch what happens:"
 msgstr ""
 
-#: src/game.c:780
+#: src/game.c:1052
 msgid "(Press a key to start)"
 msgstr ""
 
-#: src/game.c:793
+#: src/game.c:1065
 msgid "Notice the answer"
 msgstr ""
 
-#: src/game.c:803
+#: src/game.c:1075
 msgid "If it gets hit again, the"
 msgstr ""
 
-#: src/game.c:804
+#: src/game.c:1076
 msgid "penguin leaves."
 msgstr ""
 
-#: src/game.c:805
+#: src/game.c:1077
 msgid "(Press a key when ready)"
 msgstr ""
 
-#: src/game.c:824
+#: src/game.c:1100
 msgid "You can fix the igloos"
 msgstr ""
 
-#: src/game.c:825
+#: src/game.c:1101
 msgid "by stopping bonus comets."
 msgstr ""
 
-#: src/game.c:834
+#: src/game.c:1112
 msgid "Zap it now!"
 msgstr ""
 
-#: src/game.c:838
+#: src/game.c:1118
 msgid "Great job!"
 msgstr ""
 
-#: src/game.c:852
+#: src/game.c:1136
 msgid "Quit at any time by pressing"
 msgstr ""
 
-#: src/game.c:853
+#: src/game.c:1137
 msgid "'Esc' or clicking the 'X'"
 msgstr ""
 
-#: src/game.c:854
+#: src/game.c:1138
 msgid "in the upper right corner."
 msgstr ""
 
-#: src/game.c:855
+#: src/game.c:1139
 msgid "Do it now, and then play!"
 msgstr ""
 
-#: src/highscore.c:212 src/titlescreen.c:849
+#: src/highscore.c:167
 msgid "Hall Of Fame"
 msgstr "Galleria dei campioni"
 
-#: src/highscore.c:232 src/highscore.c:253 src/titlescreen.c:785
-#: src/titlescreen.c:844
+#: src/highscore.c:187 src/highscore.c:208
 msgid "Space Cadet"
 msgstr "Cadetto spaziale"
 
-#: src/highscore.c:235 src/titlescreen.c:786 src/titlescreen.c:845
+#: src/highscore.c:190
 msgid "Scout"
 msgstr "Scout"
 
-#: src/highscore.c:238 src/titlescreen.c:787 src/titlescreen.c:846
+#: src/highscore.c:193
 msgid "Ranger"
 msgstr "Ranger"
 
-#: src/highscore.c:241 src/titlescreen.c:788 src/titlescreen.c:847
+#: src/highscore.c:196
 msgid "Ace"
 msgstr "Asso"
 
-#: src/highscore.c:244 src/titlescreen.c:789 src/titlescreen.c:848
+#: src/highscore.c:199
 msgid "Commando"
 msgstr ""
 
-#: src/highscore.c:247 src/titlescreen.c:968
+#: src/highscore.c:202
 msgid "Factors"
 msgstr ""
 
-#: src/highscore.c:250 src/titlescreen.c:969
+#: src/highscore.c:205
 msgid "Fractions"
 msgstr ""
 
-#: src/highscore.c:353
+#: src/highscore.c:286
 msgid "You Are In The Hall of Fame!"
 msgstr ""
 
-#: src/highscore.c:353
+#: src/highscore.c:286
 msgid "Enter Your Name:"
 msgstr ""
 
-#: src/multiplayer.c:244
+#: src/multiplayer.c:183
+#, c-format
+msgid "Then %s\n"
+msgstr ""
+
+#: src/multiplayer.c:258
 msgid "Who is playing first?"
 msgstr ""
 
-#: src/multiplayer.c:244 src/multiplayer.c:246
+#: src/multiplayer.c:258 src/multiplayer.c:260
 msgid "Enter your name:"
 msgstr ""
 
-#: src/multiplayer.c:246
+#: src/multiplayer.c:260
 msgid "Who is playing next?"
 msgstr ""
 
-#: src/multiplayer.c:260
+#: src/multiplayer.c:274
 msgid "How many rounds will you play?"
 msgstr ""
 
-#: src/multiplayer.c:260
+#: src/multiplayer.c:274
 msgid "Enter a number"
 msgstr ""
 
-#: src/titlescreen.c:487
+#: src/titlescreen.c:476
 msgid "Work In Progress!"
 msgstr "Lavori in corso!"
 
-#: src/titlescreen.c:488
+#: src/titlescreen.c:477
 msgid "This feature is not ready yet"
 msgstr "Questa caratteristica non è ancora pronta."
 
-#: src/titlescreen.c:489
+#: src/titlescreen.c:478
 msgid "Discuss the future of TuxMath at"
 msgstr "Discuti del futuro di TuxMatch su"
 
-#: src/titlescreen.c:490
+#: src/titlescreen.c:479
 msgid "tuxmath-devel at lists.sourceforge.net"
 msgstr "tuxmath-devel at lists.sourceforge.net"
 
-#: src/titlescreen.c:647
-msgid "Play Alone"
-msgstr ""
-
-#: src/titlescreen.c:648
-msgid "Play With Friends"
-msgstr ""
-
-#: src/titlescreen.c:649
-msgid "Factoroids!"
-msgstr ""
-
-#: src/titlescreen.c:650
-msgid "Help"
-msgstr "Aiuto"
-
-#: src/titlescreen.c:651
-msgid "More Options"
-msgstr "Altre opzioni"
-
-#: src/titlescreen.c:652
-msgid "Quit"
-msgstr "Esci"
-
-#: src/titlescreen.c:726
-msgid "Math Command Training Academy"
-msgstr ""
-
-#: src/titlescreen.c:727
-msgid "Math Command Fleet Missions"
-msgstr ""
-
-#: src/titlescreen.c:728
-msgid "Play Arcade Game"
-msgstr ""
-
-#: src/titlescreen.c:729
-#, fuzzy
-msgid "Play Custom Game"
-msgstr "Gioca una partita personalizzata"
-
-#: src/titlescreen.c:730 src/titlescreen.c:781 src/titlescreen.c:790
-#: src/titlescreen.c:850 src/titlescreen.c:970
-msgid "Main menu"
-msgstr "Menu principale"
-
-#: src/titlescreen.c:779
-msgid "Score Sweep"
-msgstr ""
-
-#: src/titlescreen.c:780
-msgid "Elimination"
-msgstr ""
-
-#: src/titlescreen.c:824
-msgid "How many kids are playing?"
-msgstr ""
-
-#: src/titlescreen.c:825
-msgid "(Between 2 and 4 players)"
-msgstr ""
-
-#: src/titlescreen.c:944
-msgid "Edit 'options' file in your home directory"
-msgstr "Modifica il file 'options' nella tua cartella home"
-
-#: src/titlescreen.c:945
-msgid "to create customized game!"
-msgstr "per creare una partita personalizzata!"
-
-#: src/titlescreen.c:946
-msgid "Press a key or click your mouse to start game."
-msgstr "Premi un tasto o fai click con il mouse per iniziare il gioco."
-
-#: src/titlescreen.c:947
-msgid "See README.txt for more information"
-msgstr "Vedi il file README.txt per maggiori informazioni"
-
-#: src/titlescreen.c:1062
-msgid "Demo"
-msgstr "Demo"
-
-#: src/titlescreen.c:1063
-msgid "Project Info"
-msgstr "Informazioni sul progetto"
-
-#: src/titlescreen.c:1064
-msgid "Credits"
-msgstr "Ringraziamenti"
-
-#: src/titlescreen.c:1065
-msgid "Main Menu"
-msgstr "Menu principale"
-
-#: src/titlescreen.c:1113
-msgid "TuxMath is free and open-source!"
-msgstr "TuxMath è gratuito ed open-source!"
-
-#: src/titlescreen.c:1114
-msgid "You can help make it better by reporting problems,"
-msgstr "Puoi aiutare a migliorarlo riportando i problemi,"
-
-#: src/titlescreen.c:1115
-msgid "suggesting improvements, or adding code."
-msgstr "proponendo miglioramenti o con l'aggiunta di codice."
-
-#: src/titlescreen.c:1116
-msgid "Discuss the future at tuxmath-devel at lists.sourceforge.net"
-msgstr "Discuti del futuro su tuxmath-devel at lists.sourceforge.net"
-
 #: data/missions/lessons/descr_lessons:1
 msgid "Number Typing"
 msgstr ""
@@ -772,3 +666,55 @@
 #: data/missions/lessons/descr_lessons:58
 msgid "Division of Positives and Negatives"
 msgstr "Divisione di numeri positivi e negativi"
+
+#~ msgid "Help"
+#~ msgstr "Aiuto"
+
+#~ msgid "More Options"
+#~ msgstr "Altre opzioni"
+
+#~ msgid "Quit"
+#~ msgstr "Esci"
+
+#, fuzzy
+#~ msgid "Play Custom Game"
+#~ msgstr "Gioca una partita personalizzata"
+
+#~ msgid "Main menu"
+#~ msgstr "Menu principale"
+
+#~ msgid "Edit 'options' file in your home directory"
+#~ msgstr "Modifica il file 'options' nella tua cartella home"
+
+#~ msgid "to create customized game!"
+#~ msgstr "per creare una partita personalizzata!"
+
+#~ msgid "Press a key or click your mouse to start game."
+#~ msgstr "Premi un tasto o fai click con il mouse per iniziare il gioco."
+
+#~ msgid "See README.txt for more information"
+#~ msgstr "Vedi il file README.txt per maggiori informazioni"
+
+#~ msgid "Demo"
+#~ msgstr "Demo"
+
+#~ msgid "Project Info"
+#~ msgstr "Informazioni sul progetto"
+
+#~ msgid "Credits"
+#~ msgstr "Ringraziamenti"
+
+#~ msgid "Main Menu"
+#~ msgstr "Menu principale"
+
+#~ msgid "TuxMath is free and open-source!"
+#~ msgstr "TuxMath è gratuito ed open-source!"
+
+#~ msgid "You can help make it better by reporting problems,"
+#~ msgstr "Puoi aiutare a migliorarlo riportando i problemi,"
+
+#~ msgid "suggesting improvements, or adding code."
+#~ msgstr "proponendo miglioramenti o con l'aggiunta di codice."
+
+#~ msgid "Discuss the future at tuxmath-devel at lists.sourceforge.net"
+#~ msgstr "Discuti del futuro su tuxmath-devel at lists.sourceforge.net"

Modified: tuxmath/trunk/po/ja.gmo
===================================================================
(Binary files differ)

Modified: tuxmath/trunk/po/ja.po
===================================================================
--- tuxmath/trunk/po/ja.po	2009-09-04 19:47:19 UTC (rev 1488)
+++ tuxmath/trunk/po/ja.po	2009-09-05 02:31:43 UTC (rev 1489)
@@ -10,7 +10,7 @@
 msgstr ""
 "Project-Id-Version: tuxmath\n"
 "Report-Msgid-Bugs-To: tuxmath-devel at lists.sourceforge.net\n"
-"POT-Creation-Date: 2009-03-06 06:12-0600\n"
+"POT-Creation-Date: 2009-09-04 21:22-0500\n"
 "PO-Revision-Date: 2008-03-05 15:29+0000\n"
 "Last-Translator: CMasami <Unknown>\n"
 "Language-Team: Japanese <ja at li.org>\n"
@@ -207,333 +207,228 @@
 
 #: src/credits.c:108
 msgid ""
-"A full copy of the GPL is included with the documenation for this program."
+"A full copy of the GPL is included with the documentation for this program."
 msgstr ""
 
 #: src/credits.c:110
 msgid "For more information about Free Software and the GNU GPL, visit:"
 msgstr ""
 
-#: src/factoroids.c:558
+#: src/factoroids.c:552
 msgid "FACTOROIDS: to win, you need destroy all the asteroids."
 msgstr ""
 
-#: src/factoroids.c:559 src/factoroids.c:570
+#: src/factoroids.c:553 src/factoroids.c:564
 msgid "Use the arrow keys to turn or go forward.  Aim at an asteroid,"
 msgstr ""
 
-#: src/factoroids.c:560
+#: src/factoroids.c:554
 msgid "type one of its factors, and press space or return"
 msgstr ""
 
-#: src/factoroids.c:561
+#: src/factoroids.c:555
 msgid "to split it into its factors.  Rocks with prime numbers are destroyed!"
 msgstr ""
 
-#: src/factoroids.c:569
+#: src/factoroids.c:563
 msgid "FRACTIONS: to win, you need destroy all the asteroids"
 msgstr ""
 
-#: src/factoroids.c:571
+#: src/factoroids.c:565
 msgid "type a number that can simplify the fraction, and press space or return"
 msgstr ""
 
-#: src/factoroids.c:572
+#: src/factoroids.c:566
 msgid ""
 "to split it.  Destroy fractions that can not be further simplified in a "
 "single shot!"
 msgstr ""
 
-#: src/game.c:717
+#: src/game.c:989
 msgid "Welcome to TuxMath!"
 msgstr ""
 
-#: src/game.c:734
+#: src/game.c:1006
 msgid "Your mission is to save your"
 msgstr ""
 
-#: src/game.c:735
+#: src/game.c:1007
 msgid "penguins' igloos from the"
 msgstr ""
 
-#: src/game.c:736
+#: src/game.c:1008
 msgid "falling comets."
 msgstr ""
 
-#: src/game.c:755
+#: src/game.c:1027
 msgid "Stop a comet by typing"
 msgstr ""
 
-#: src/game.c:756
+#: src/game.c:1028
 msgid "the answer to the math problem"
 msgstr ""
 
-#: src/game.c:757
+#: src/game.c:1029
 msgid "and hitting 'space' or 'enter'."
 msgstr ""
 
-#: src/game.c:758
+#: src/game.c:1030
 msgid "Try it now!"
 msgstr ""
 
-#: src/game.c:766
+#: src/game.c:1038
 msgid "Good shot!"
 msgstr ""
 
-#: src/game.c:776
+#: src/game.c:1048
 msgid "If an igloo gets hit by a comet,"
 msgstr ""
 
-#: src/game.c:777
+#: src/game.c:1049
 msgid "it melts. But don't worry: the"
 msgstr ""
 
-#: src/game.c:778
+#: src/game.c:1050
 msgid "penguin is OK!"
 msgstr ""
 
-#: src/game.c:779
+#: src/game.c:1051
 msgid "Just watch what happens:"
 msgstr ""
 
-#: src/game.c:780
+#: src/game.c:1052
 msgid "(Press a key to start)"
 msgstr ""
 
-#: src/game.c:793
+#: src/game.c:1065
 msgid "Notice the answer"
 msgstr ""
 
-#: src/game.c:803
+#: src/game.c:1075
 msgid "If it gets hit again, the"
 msgstr ""
 
-#: src/game.c:804
+#: src/game.c:1076
 msgid "penguin leaves."
 msgstr ""
 
-#: src/game.c:805
+#: src/game.c:1077
 msgid "(Press a key when ready)"
 msgstr ""
 
-#: src/game.c:824
+#: src/game.c:1100
 msgid "You can fix the igloos"
 msgstr ""
 
-#: src/game.c:825
+#: src/game.c:1101
 msgid "by stopping bonus comets."
 msgstr ""
 
-#: src/game.c:834
+#: src/game.c:1112
 msgid "Zap it now!"
 msgstr ""
 
-#: src/game.c:838
+#: src/game.c:1118
 msgid "Great job!"
 msgstr ""
 
-#: src/game.c:852
+#: src/game.c:1136
 msgid "Quit at any time by pressing"
 msgstr ""
 
-#: src/game.c:853
+#: src/game.c:1137
 msgid "'Esc' or clicking the 'X'"
 msgstr ""
 
-#: src/game.c:854
+#: src/game.c:1138
 msgid "in the upper right corner."
 msgstr ""
 
-#: src/game.c:855
+#: src/game.c:1139
 msgid "Do it now, and then play!"
 msgstr ""
 
-#: src/highscore.c:212 src/titlescreen.c:849
+#: src/highscore.c:167
 msgid "Hall Of Fame"
 msgstr "殿堂入り"
 
-#: src/highscore.c:232 src/highscore.c:253 src/titlescreen.c:785
-#: src/titlescreen.c:844
+#: src/highscore.c:187 src/highscore.c:208
 msgid "Space Cadet"
 msgstr "訓練生"
 
-#: src/highscore.c:235 src/titlescreen.c:786 src/titlescreen.c:845
+#: src/highscore.c:190
 msgid "Scout"
 msgstr "上等兵"
 
-#: src/highscore.c:238 src/titlescreen.c:787 src/titlescreen.c:846
+#: src/highscore.c:193
 msgid "Ranger"
 msgstr "特殊部隊"
 
-#: src/highscore.c:241 src/titlescreen.c:788 src/titlescreen.c:847
+#: src/highscore.c:196
 msgid "Ace"
 msgstr "超能力者"
 
-#: src/highscore.c:244 src/titlescreen.c:789 src/titlescreen.c:848
+#: src/highscore.c:199
 msgid "Commando"
 msgstr ""
 
-#: src/highscore.c:247 src/titlescreen.c:968
+#: src/highscore.c:202
 msgid "Factors"
 msgstr ""
 
-#: src/highscore.c:250 src/titlescreen.c:969
+#: src/highscore.c:205
 msgid "Fractions"
 msgstr ""
 
-#: src/highscore.c:353
+#: src/highscore.c:286
 msgid "You Are In The Hall of Fame!"
 msgstr ""
 
-#: src/highscore.c:353
+#: src/highscore.c:286
 msgid "Enter Your Name:"
 msgstr ""
 
-#: src/multiplayer.c:244
+#: src/multiplayer.c:183
+#, c-format
+msgid "Then %s\n"
+msgstr ""
+
+#: src/multiplayer.c:258
 msgid "Who is playing first?"
 msgstr ""
 
-#: src/multiplayer.c:244 src/multiplayer.c:246
+#: src/multiplayer.c:258 src/multiplayer.c:260
 msgid "Enter your name:"
 msgstr ""
 
-#: src/multiplayer.c:246
+#: src/multiplayer.c:260
 msgid "Who is playing next?"
 msgstr ""
 
-#: src/multiplayer.c:260
+#: src/multiplayer.c:274
 msgid "How many rounds will you play?"
 msgstr ""
 
-#: src/multiplayer.c:260
+#: src/multiplayer.c:274
 msgid "Enter a number"
 msgstr ""
 
-#: src/titlescreen.c:487
+#: src/titlescreen.c:476
 msgid "Work In Progress!"
 msgstr "作業中!"
 
-#: src/titlescreen.c:488
+#: src/titlescreen.c:477
 msgid "This feature is not ready yet"
 msgstr "この機能はまだありません"
 
-#: src/titlescreen.c:489
+#: src/titlescreen.c:478
 msgid "Discuss the future of TuxMath at"
 msgstr "TuxMathについての要望は"
 
-#: src/titlescreen.c:490
+#: src/titlescreen.c:479
 msgid "tuxmath-devel at lists.sourceforge.net"
 msgstr "tuxmath-devel at lists.sourceforge.net"
 
-#: src/titlescreen.c:647
-msgid "Play Alone"
-msgstr ""
-
-#: src/titlescreen.c:648
-msgid "Play With Friends"
-msgstr ""
-
-#: src/titlescreen.c:649
-msgid "Factoroids!"
-msgstr ""
-
-#: src/titlescreen.c:650
-msgid "Help"
-msgstr "ヘルプ"
-
-#: src/titlescreen.c:651
-msgid "More Options"
-msgstr "他のオプション"
-
-#: src/titlescreen.c:652
-msgid "Quit"
-msgstr "終了"
-
-#: src/titlescreen.c:726
-msgid "Math Command Training Academy"
-msgstr "計算戦隊訓練学校"
-
-#: src/titlescreen.c:727
-msgid "Math Command Fleet Missions"
-msgstr ""
-
-#: src/titlescreen.c:728
-msgid "Play Arcade Game"
-msgstr "一般訓練開始"
-
-#: src/titlescreen.c:729
-msgid "Play Custom Game"
-msgstr "特殊訓練開始"
-
-#: src/titlescreen.c:730 src/titlescreen.c:781 src/titlescreen.c:790
-#: src/titlescreen.c:850 src/titlescreen.c:970
-msgid "Main menu"
-msgstr "メインメニュー"
-
-#: src/titlescreen.c:779
-msgid "Score Sweep"
-msgstr ""
-
-#: src/titlescreen.c:780
-msgid "Elimination"
-msgstr ""
-
-#: src/titlescreen.c:824
-msgid "How many kids are playing?"
-msgstr ""
-
-#: src/titlescreen.c:825
-msgid "(Between 2 and 4 players)"
-msgstr ""
-
-#: src/titlescreen.c:944
-msgid "Edit 'options' file in your home directory"
-msgstr "ホーム・ディレクトリの'optoins'ファイルを編集して"
-
-#: src/titlescreen.c:945
-msgid "to create customized game!"
-msgstr "オリジナルのゲームを作ろう!"
-
-#: src/titlescreen.c:946
-msgid "Press a key or click your mouse to start game."
-msgstr "キーを押すかクリックしてゲーム開始"
-
-#: src/titlescreen.c:947
-msgid "See README.txt for more information"
-msgstr "詳しい説明はREADME.txtを見てください"
-
-#: src/titlescreen.c:1062
-msgid "Demo"
-msgstr "デモ"
-
-#: src/titlescreen.c:1063
-msgid "Project Info"
-msgstr "プロジェクト情報"
-
-#: src/titlescreen.c:1064
-msgid "Credits"
-msgstr "クレジット"
-
-#: src/titlescreen.c:1065
-msgid "Main Menu"
-msgstr "メインメニュー"
-
-#: src/titlescreen.c:1113
-msgid "TuxMath is free and open-source!"
-msgstr "TuxMath は自由でオープンソースです!"
-
-#: src/titlescreen.c:1114
-msgid "You can help make it better by reporting problems,"
-msgstr "問題点を報告してゲームを改善することができます。"
-
-#: src/titlescreen.c:1115
-msgid "suggesting improvements, or adding code."
-msgstr "新機能の提案や、コードの追加も歓迎します。"
-
-#: src/titlescreen.c:1116
-msgid "Discuss the future at tuxmath-devel at lists.sourceforge.net"
-msgstr "連絡先はこちら tuxmath-devel at lists.sourceforge.net"
-
 #: data/missions/lessons/descr_lessons:1
 msgid "Number Typing"
 msgstr "数字を入力する"
@@ -767,3 +662,60 @@
 #: data/missions/lessons/descr_lessons:58
 msgid "Division of Positives and Negatives"
 msgstr "正の数と負の数の割り算"
+
+#~ msgid "Help"
+#~ msgstr "ヘルプ"
+
+#~ msgid "More Options"
+#~ msgstr "他のオプション"
+
+#~ msgid "Quit"
+#~ msgstr "終了"
+
+#~ msgid "Math Command Training Academy"
+#~ msgstr "計算戦隊訓練学校"
+
+#~ msgid "Play Arcade Game"
+#~ msgstr "一般訓練開始"
+
+#~ msgid "Play Custom Game"
+#~ msgstr "特殊訓練開始"
+
+#~ msgid "Main menu"
+#~ msgstr "メインメニュー"
+
+#~ msgid "Edit 'options' file in your home directory"
+#~ msgstr "ホーム・ディレクトリの'optoins'ファイルを編集して"
+
+#~ msgid "to create customized game!"
+#~ msgstr "オリジナルのゲームを作ろう!"
+
+#~ msgid "Press a key or click your mouse to start game."
+#~ msgstr "キーを押すかクリックしてゲーム開始"
+
+#~ msgid "See README.txt for more information"
+#~ msgstr "詳しい説明はREADME.txtを見てください"
+
+#~ msgid "Demo"
+#~ msgstr "デモ"
+
+#~ msgid "Project Info"
+#~ msgstr "プロジェクト情報"
+
+#~ msgid "Credits"
+#~ msgstr "クレジット"
+
+#~ msgid "Main Menu"
+#~ msgstr "メインメニュー"
+
+#~ msgid "TuxMath is free and open-source!"
+#~ msgstr "TuxMath は自由でオープンソースです!"
+
+#~ msgid "You can help make it better by reporting problems,"
+#~ msgstr "問題点を報告してゲームを改善することができます。"
+
+#~ msgid "suggesting improvements, or adding code."
+#~ msgstr "新機能の提案や、コードの追加も歓迎します。"
+
+#~ msgid "Discuss the future at tuxmath-devel at lists.sourceforge.net"
+#~ msgstr "連絡先はこちら tuxmath-devel at lists.sourceforge.net"

Modified: tuxmath/trunk/po/nb.gmo
===================================================================
(Binary files differ)

Modified: tuxmath/trunk/po/nb.po
===================================================================
--- tuxmath/trunk/po/nb.po	2009-09-04 19:47:19 UTC (rev 1488)
+++ tuxmath/trunk/po/nb.po	2009-09-05 02:31:43 UTC (rev 1489)
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: nb\n"
 "Report-Msgid-Bugs-To: tuxmath-devel at lists.sourceforge.net\n"
-"POT-Creation-Date: 2009-03-06 06:12-0600\n"
+"POT-Creation-Date: 2009-09-04 21:22-0500\n"
 "PO-Revision-Date: 2008-09-21 19:08+0200\n"
 "Last-Translator: Karl Ove Hufthammer <karl at huftis.org>\n"
 "Language-Team: Norwegian Nynorsk <i18n-nn at lister.ping.uio.no>\n"
@@ -204,334 +204,228 @@
 
 #: src/credits.c:108
 msgid ""
-"A full copy of the GPL is included with the documenation for this program."
+"A full copy of the GPL is included with the documentation for this program."
 msgstr ""
 
 #: src/credits.c:110
 msgid "For more information about Free Software and the GNU GPL, visit:"
 msgstr ""
 
-#: src/factoroids.c:558
+#: src/factoroids.c:552
 msgid "FACTOROIDS: to win, you need destroy all the asteroids."
 msgstr ""
 
-#: src/factoroids.c:559 src/factoroids.c:570
+#: src/factoroids.c:553 src/factoroids.c:564
 msgid "Use the arrow keys to turn or go forward.  Aim at an asteroid,"
 msgstr ""
 
-#: src/factoroids.c:560
+#: src/factoroids.c:554
 msgid "type one of its factors, and press space or return"
 msgstr ""
 
-#: src/factoroids.c:561
+#: src/factoroids.c:555
 msgid "to split it into its factors.  Rocks with prime numbers are destroyed!"
 msgstr ""
 
-#: src/factoroids.c:569
+#: src/factoroids.c:563
 msgid "FRACTIONS: to win, you need destroy all the asteroids"
 msgstr ""
 
-#: src/factoroids.c:571
+#: src/factoroids.c:565
 msgid "type a number that can simplify the fraction, and press space or return"
 msgstr ""
 
-#: src/factoroids.c:572
+#: src/factoroids.c:566
 msgid ""
 "to split it.  Destroy fractions that can not be further simplified in a "
 "single shot!"
 msgstr ""
 
-#: src/game.c:717
+#: src/game.c:989
 msgid "Welcome to TuxMath!"
 msgstr "Velkommen til TuxMath!"
 
-#: src/game.c:734
+#: src/game.c:1006
 msgid "Your mission is to save your"
 msgstr "Oppdraget ditt er å redde"
 
-#: src/game.c:735
+#: src/game.c:1007
 msgid "penguins' igloos from the"
 msgstr "igloene til pingvinene fra"
 
-#: src/game.c:736
+#: src/game.c:1008
 msgid "falling comets."
 msgstr "kometer fra verdensrommet."
 
-#: src/game.c:755
+#: src/game.c:1027
 msgid "Stop a comet by typing"
 msgstr "Du kan stoppe en komet ved"
 
-#: src/game.c:756
+#: src/game.c:1028
 msgid "the answer to the math problem"
 msgstr "å skrive inn svaret, og så"
 
-#: src/game.c:757
+#: src/game.c:1029
 msgid "and hitting 'space' or 'enter'."
 msgstr "«Mellomrom» eller «Enter»."
 
-#: src/game.c:758
+#: src/game.c:1030
 msgid "Try it now!"
 msgstr "Prøv det nå!"
 
-#: src/game.c:766
+#: src/game.c:1038
 msgid "Good shot!"
 msgstr "Bra skudd!"
 
-#: src/game.c:776
+#: src/game.c:1048
 msgid "If an igloo gets hit by a comet,"
 msgstr "Hvis en iglo blir truffet av en"
 
-#: src/game.c:777
+#: src/game.c:1049
 msgid "it melts. But don't worry: the"
 msgstr "komet, smelter den. Men ta det"
 
-#: src/game.c:778
+#: src/game.c:1050
 msgid "penguin is OK!"
 msgstr "med ro: pingvinen klarer seg!"
 
-#: src/game.c:779
+#: src/game.c:1051
 msgid "Just watch what happens:"
 msgstr "Berre se hva som skjer."
 
-#: src/game.c:780
+#: src/game.c:1052
 msgid "(Press a key to start)"
 msgstr "(Trykk en tast for å se.)"
 
-#: src/game.c:793
+#: src/game.c:1065
 msgid "Notice the answer"
 msgstr "Legg merke til rett svar."
 
-#: src/game.c:803
+#: src/game.c:1075
 msgid "If it gets hit again, the"
 msgstr "Hvis igloen blir truffet på nytt,"
 
-#: src/game.c:804
+#: src/game.c:1076
 msgid "penguin leaves."
 msgstr "vandrer pingvinen bort."
 
-#: src/game.c:805
+#: src/game.c:1077
 msgid "(Press a key when ready)"
 msgstr "(Trykk en tast når du er klar.)"
 
-#: src/game.c:824
+#: src/game.c:1100
 msgid "You can fix the igloos"
 msgstr "Du kan bygge opp igjen igloene"
 
-#: src/game.c:825
+#: src/game.c:1101
 msgid "by stopping bonus comets."
 msgstr "ved å stoppe bonuskometer."
 
-#: src/game.c:834
+#: src/game.c:1112
 msgid "Zap it now!"
 msgstr "Skyt kometen nå!"
 
-#: src/game.c:838
+#: src/game.c:1118
 msgid "Great job!"
 msgstr "Kjempebra!"
 
-#: src/game.c:852
+#: src/game.c:1136
 msgid "Quit at any time by pressing"
 msgstr "Du kan når som helst gi deg,"
 
-#: src/game.c:853
+#: src/game.c:1137
 msgid "'Esc' or clicking the 'X'"
 msgstr "ved å trykke «Escape» eller"
 
-#: src/game.c:854
+#: src/game.c:1138
 msgid "in the upper right corner."
 msgstr "klikke på X-en oppe til høyre."
 
-#: src/game.c:855
+#: src/game.c:1139
 msgid "Do it now, and then play!"
 msgstr "Prøv det nå, og start spillet!"
 
-#: src/highscore.c:212 src/titlescreen.c:849
+#: src/highscore.c:167
 msgid "Hall Of Fame"
 msgstr "Rekordar"
 
-#: src/highscore.c:232 src/highscore.c:253 src/titlescreen.c:785
-#: src/titlescreen.c:844
+#: src/highscore.c:187 src/highscore.c:208
 msgid "Space Cadet"
 msgstr "Romkadett"
 
-#: src/highscore.c:235 src/titlescreen.c:786 src/titlescreen.c:845
+#: src/highscore.c:190
 msgid "Scout"
 msgstr "Romlærling"
 
-#: src/highscore.c:238 src/titlescreen.c:787 src/titlescreen.c:846
+#: src/highscore.c:193
 msgid "Ranger"
 msgstr "Romvokter"
 
-#: src/highscore.c:241 src/titlescreen.c:788 src/titlescreen.c:847
+#: src/highscore.c:196
 msgid "Ace"
 msgstr "Romsjef"
 
-#: src/highscore.c:244 src/titlescreen.c:789 src/titlescreen.c:848
+#: src/highscore.c:199
 msgid "Commando"
 msgstr "Romkommandør"
 
-#: src/highscore.c:247 src/titlescreen.c:968
+#: src/highscore.c:202
 msgid "Factors"
 msgstr "Faktorer"
 
-#: src/highscore.c:250 src/titlescreen.c:969
+#: src/highscore.c:205
 msgid "Fractions"
 msgstr "Brøker"
 
-#: src/highscore.c:353
+#: src/highscore.c:286
 msgid "You Are In The Hall of Fame!"
 msgstr ""
 
-#: src/highscore.c:353
+#: src/highscore.c:286
 msgid "Enter Your Name:"
 msgstr ""
 
-#: src/multiplayer.c:244
+#: src/multiplayer.c:183
+#, c-format
+msgid "Then %s\n"
+msgstr ""
+
+#: src/multiplayer.c:258
 msgid "Who is playing first?"
 msgstr ""
 
-#: src/multiplayer.c:244 src/multiplayer.c:246
+#: src/multiplayer.c:258 src/multiplayer.c:260
 msgid "Enter your name:"
 msgstr ""
 
-#: src/multiplayer.c:246
+#: src/multiplayer.c:260
 msgid "Who is playing next?"
 msgstr ""
 
-#: src/multiplayer.c:260
+#: src/multiplayer.c:274
 msgid "How many rounds will you play?"
 msgstr ""
 
-#: src/multiplayer.c:260
+#: src/multiplayer.c:274
 msgid "Enter a number"
 msgstr ""
 
-#: src/titlescreen.c:487
+#: src/titlescreen.c:476
 msgid "Work In Progress!"
 msgstr "Uferdig!"
 
-#: src/titlescreen.c:488
+#: src/titlescreen.c:477
 msgid "This feature is not ready yet"
 msgstr "Denne funksjonen er ikke klar ennå."
 
-#: src/titlescreen.c:489
+#: src/titlescreen.c:478
 msgid "Discuss the future of TuxMath at"
 msgstr "Diskuter fremtiden til TuxMath på"
 
-#: src/titlescreen.c:490
+#: src/titlescreen.c:479
 msgid "tuxmath-devel at lists.sourceforge.net"
 msgstr "tuxmath-devel at lists.sourceforge.net"
 
-#: src/titlescreen.c:647
-msgid "Play Alone"
-msgstr "Spill alene"
-
-#: src/titlescreen.c:648
-msgid "Play With Friends"
-msgstr "Spill med venner"
-
-#: src/titlescreen.c:649
-#, fuzzy
-msgid "Factoroids!"
-msgstr "Faktorer"
-
-#: src/titlescreen.c:650
-msgid "Help"
-msgstr "Hjelp"
-
-#: src/titlescreen.c:651
-msgid "More Options"
-msgstr "Flere valg"
-
-#: src/titlescreen.c:652
-msgid "Quit"
-msgstr "Avslutt"
-
-#: src/titlescreen.c:726
-msgid "Math Command Training Academy"
-msgstr "Kadettskole"
-
-#: src/titlescreen.c:727
-msgid "Math Command Fleet Missions"
-msgstr "Oppdrag"
-
-#: src/titlescreen.c:728
-msgid "Play Arcade Game"
-msgstr "Arkadespill"
-
-#: src/titlescreen.c:729
-msgid "Play Custom Game"
-msgstr "Selvlaget spill"
-
-#: src/titlescreen.c:730 src/titlescreen.c:781 src/titlescreen.c:790
-#: src/titlescreen.c:850 src/titlescreen.c:970
-msgid "Main menu"
-msgstr "Hovedmeny"
-
-#: src/titlescreen.c:779
-msgid "Score Sweep"
-msgstr ""
-
-#: src/titlescreen.c:780
-msgid "Elimination"
-msgstr ""
-
-#: src/titlescreen.c:824
-msgid "How many kids are playing?"
-msgstr ""
-
-#: src/titlescreen.c:825
-msgid "(Between 2 and 4 players)"
-msgstr ""
-
-#: src/titlescreen.c:944
-msgid "Edit 'options' file in your home directory"
-msgstr "Rediger «options»-fila i hjemmemappa di"
-
-#: src/titlescreen.c:945
-msgid "to create customized game!"
-msgstr "for å lage ditt eget spill."
-
-#: src/titlescreen.c:946
-msgid "Press a key or click your mouse to start game."
-msgstr "Trykk en tast eller med musen for å starte spillet."
-
-#: src/titlescreen.c:947
-msgid "See README.txt for more information"
-msgstr "Se «README.txt» for mer informasjon."
-
-#: src/titlescreen.c:1062
-msgid "Demo"
-msgstr "Demonstrasjon"
-
-#: src/titlescreen.c:1063
-msgid "Project Info"
-msgstr "Prosjektinfo"
-
-#: src/titlescreen.c:1064
-msgid "Credits"
-msgstr "Bidragsytere"
-
-#: src/titlescreen.c:1065
-msgid "Main Menu"
-msgstr "Hovedmeny"
-
-#: src/titlescreen.c:1113
-msgid "TuxMath is free and open-source!"
-msgstr "TuxMath er fri programvare!"
-
-#: src/titlescreen.c:1114
-msgid "You can help make it better by reporting problems,"
-msgstr "Du kan være med på å gjøre spillet bedre, ved å melde fra"
-
-#: src/titlescreen.c:1115
-msgid "suggesting improvements, or adding code."
-msgstr "om feil, foreslå forbedringer eller bidra med programkode."
-
-#: src/titlescreen.c:1116
-msgid "Discuss the future at tuxmath-devel at lists.sourceforge.net"
-msgstr "Diskuter framtiden på tuxmath-devel at lists.sourceforge.net"
-
 #: data/missions/lessons/descr_lessons:1
 msgid "Number Typing"
 msgstr "Tallskriving"
@@ -766,7 +660,77 @@
 msgid "Division of Positives and Negatives"
 msgstr "Divisjon av positive og negative tall"
 
+#~ msgid "Play Alone"
+#~ msgstr "Spill alene"
+
+#~ msgid "Play With Friends"
+#~ msgstr "Spill med venner"
+
 #, fuzzy
+#~ msgid "Factoroids!"
+#~ msgstr "Faktorer"
+
+#~ msgid "Help"
+#~ msgstr "Hjelp"
+
+#~ msgid "More Options"
+#~ msgstr "Flere valg"
+
+#~ msgid "Quit"
+#~ msgstr "Avslutt"
+
+#~ msgid "Math Command Training Academy"
+#~ msgstr "Kadettskole"
+
+#~ msgid "Math Command Fleet Missions"
+#~ msgstr "Oppdrag"
+
+#~ msgid "Play Arcade Game"
+#~ msgstr "Arkadespill"
+
+#~ msgid "Play Custom Game"
+#~ msgstr "Selvlaget spill"
+
+#~ msgid "Main menu"
+#~ msgstr "Hovedmeny"
+
+#~ msgid "Edit 'options' file in your home directory"
+#~ msgstr "Rediger «options»-fila i hjemmemappa di"
+
+#~ msgid "to create customized game!"
+#~ msgstr "for å lage ditt eget spill."
+
+#~ msgid "Press a key or click your mouse to start game."
+#~ msgstr "Trykk en tast eller med musen for å starte spillet."
+
+#~ msgid "See README.txt for more information"
+#~ msgstr "Se «README.txt» for mer informasjon."
+
+#~ msgid "Demo"
+#~ msgstr "Demonstrasjon"
+
+#~ msgid "Project Info"
+#~ msgstr "Prosjektinfo"
+
+#~ msgid "Credits"
+#~ msgstr "Bidragsytere"
+
+#~ msgid "Main Menu"
+#~ msgstr "Hovedmeny"
+
+#~ msgid "TuxMath is free and open-source!"
+#~ msgstr "TuxMath er fri programvare!"
+
+#~ msgid "You can help make it better by reporting problems,"
+#~ msgstr "Du kan være med på å gjøre spillet bedre, ved å melde fra"
+
+#~ msgid "suggesting improvements, or adding code."
+#~ msgstr "om feil, foreslå forbedringer eller bidra med programkode."
+
+#~ msgid "Discuss the future at tuxmath-devel at lists.sourceforge.net"
+#~ msgstr "Diskuter framtiden på tuxmath-devel at lists.sourceforge.net"
+
+#, fuzzy
 #~ msgid "the penguins' igloos. To save their homes,"
 #~ msgstr "igloene til pingvinene fra"
 

Modified: tuxmath/trunk/po/nl.gmo
===================================================================
(Binary files differ)

Modified: tuxmath/trunk/po/nl.po
===================================================================
--- tuxmath/trunk/po/nl.po	2009-09-04 19:47:19 UTC (rev 1488)
+++ tuxmath/trunk/po/nl.po	2009-09-05 02:31:43 UTC (rev 1489)
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: tuxmath-devel at lists.sourceforge.net\n"
-"POT-Creation-Date: 2009-03-06 06:12-0600\n"
+"POT-Creation-Date: 2009-09-04 21:22-0500\n"
 "PO-Revision-Date: 2007-11-15 09:00+0100\n"
 "Last-Translator: Schrijvers Luc <Begasus at skynet.be>\n"
 "Language-Team: Dutch <LL at li.org>\n"
@@ -202,333 +202,228 @@
 
 #: src/credits.c:108
 msgid ""
-"A full copy of the GPL is included with the documenation for this program."
+"A full copy of the GPL is included with the documentation for this program."
 msgstr ""
 
 #: src/credits.c:110
 msgid "For more information about Free Software and the GNU GPL, visit:"
 msgstr ""
 
-#: src/factoroids.c:558
+#: src/factoroids.c:552
 msgid "FACTOROIDS: to win, you need destroy all the asteroids."
 msgstr ""
 
-#: src/factoroids.c:559 src/factoroids.c:570
+#: src/factoroids.c:553 src/factoroids.c:564
 msgid "Use the arrow keys to turn or go forward.  Aim at an asteroid,"
 msgstr ""
 
-#: src/factoroids.c:560
+#: src/factoroids.c:554
 msgid "type one of its factors, and press space or return"
 msgstr ""
 
-#: src/factoroids.c:561
+#: src/factoroids.c:555
 msgid "to split it into its factors.  Rocks with prime numbers are destroyed!"
 msgstr ""
 
-#: src/factoroids.c:569
+#: src/factoroids.c:563
 msgid "FRACTIONS: to win, you need destroy all the asteroids"
 msgstr ""
 
-#: src/factoroids.c:571
+#: src/factoroids.c:565
 msgid "type a number that can simplify the fraction, and press space or return"
 msgstr ""
 
-#: src/factoroids.c:572
+#: src/factoroids.c:566
 msgid ""
 "to split it.  Destroy fractions that can not be further simplified in a "
 "single shot!"
 msgstr ""
 
-#: src/game.c:717
+#: src/game.c:989
 msgid "Welcome to TuxMath!"
 msgstr ""
 
-#: src/game.c:734
+#: src/game.c:1006
 msgid "Your mission is to save your"
 msgstr ""
 
-#: src/game.c:735
+#: src/game.c:1007
 msgid "penguins' igloos from the"
 msgstr ""
 
-#: src/game.c:736
+#: src/game.c:1008
 msgid "falling comets."
 msgstr ""
 
-#: src/game.c:755
+#: src/game.c:1027
 msgid "Stop a comet by typing"
 msgstr ""
 
-#: src/game.c:756
+#: src/game.c:1028
 msgid "the answer to the math problem"
 msgstr ""
 
-#: src/game.c:757
+#: src/game.c:1029
 msgid "and hitting 'space' or 'enter'."
 msgstr ""
 
-#: src/game.c:758
+#: src/game.c:1030
 msgid "Try it now!"
 msgstr ""
 
-#: src/game.c:766
+#: src/game.c:1038
 msgid "Good shot!"
 msgstr ""
 
-#: src/game.c:776
+#: src/game.c:1048
 msgid "If an igloo gets hit by a comet,"
 msgstr ""
 
-#: src/game.c:777
+#: src/game.c:1049
 msgid "it melts. But don't worry: the"
 msgstr ""
 
-#: src/game.c:778
+#: src/game.c:1050
 msgid "penguin is OK!"
 msgstr ""
 
-#: src/game.c:779
+#: src/game.c:1051
 msgid "Just watch what happens:"
 msgstr ""
 
-#: src/game.c:780
+#: src/game.c:1052
 msgid "(Press a key to start)"
 msgstr ""
 
-#: src/game.c:793
+#: src/game.c:1065
 msgid "Notice the answer"
 msgstr ""
 
-#: src/game.c:803
+#: src/game.c:1075
 msgid "If it gets hit again, the"
 msgstr ""
 
-#: src/game.c:804
+#: src/game.c:1076
 msgid "penguin leaves."
 msgstr ""
 
-#: src/game.c:805
+#: src/game.c:1077
 msgid "(Press a key when ready)"
 msgstr ""
 
-#: src/game.c:824
+#: src/game.c:1100
 msgid "You can fix the igloos"
 msgstr ""
 
-#: src/game.c:825
+#: src/game.c:1101
 msgid "by stopping bonus comets."
 msgstr ""
 
-#: src/game.c:834
+#: src/game.c:1112
 msgid "Zap it now!"
 msgstr ""
 
-#: src/game.c:838
+#: src/game.c:1118
 msgid "Great job!"
 msgstr ""
 
-#: src/game.c:852
+#: src/game.c:1136
 msgid "Quit at any time by pressing"
 msgstr ""
 
-#: src/game.c:853
+#: src/game.c:1137
 msgid "'Esc' or clicking the 'X'"
 msgstr ""
 
-#: src/game.c:854
+#: src/game.c:1138
 msgid "in the upper right corner."
 msgstr ""
 
-#: src/game.c:855
+#: src/game.c:1139
 msgid "Do it now, and then play!"
 msgstr ""
 
-#: src/highscore.c:212 src/titlescreen.c:849
+#: src/highscore.c:167
 msgid "Hall Of Fame"
 msgstr "Hoogste scores"
 
-#: src/highscore.c:232 src/highscore.c:253 src/titlescreen.c:785
-#: src/titlescreen.c:844
+#: src/highscore.c:187 src/highscore.c:208
 msgid "Space Cadet"
 msgstr "Ruimte kadet"
 
-#: src/highscore.c:235 src/titlescreen.c:786 src/titlescreen.c:845
+#: src/highscore.c:190
 msgid "Scout"
 msgstr "Scout"
 
-#: src/highscore.c:238 src/titlescreen.c:787 src/titlescreen.c:846
+#: src/highscore.c:193
 msgid "Ranger"
 msgstr "Ranger"
 
-#: src/highscore.c:241 src/titlescreen.c:788 src/titlescreen.c:847
+#: src/highscore.c:196
 msgid "Ace"
 msgstr "Ace"
 
-#: src/highscore.c:244 src/titlescreen.c:789 src/titlescreen.c:848
+#: src/highscore.c:199
 msgid "Commando"
 msgstr ""
 
-#: src/highscore.c:247 src/titlescreen.c:968
+#: src/highscore.c:202
 msgid "Factors"
 msgstr ""
 
-#: src/highscore.c:250 src/titlescreen.c:969
+#: src/highscore.c:205
 msgid "Fractions"
 msgstr ""
 
-#: src/highscore.c:353
+#: src/highscore.c:286
 msgid "You Are In The Hall of Fame!"
 msgstr ""
 
-#: src/highscore.c:353
+#: src/highscore.c:286
 msgid "Enter Your Name:"
 msgstr ""
 
-#: src/multiplayer.c:244
+#: src/multiplayer.c:183
+#, c-format
+msgid "Then %s\n"
+msgstr ""
+
+#: src/multiplayer.c:258
 msgid "Who is playing first?"
 msgstr ""
 
-#: src/multiplayer.c:244 src/multiplayer.c:246
+#: src/multiplayer.c:258 src/multiplayer.c:260
 msgid "Enter your name:"
 msgstr ""
 
-#: src/multiplayer.c:246
+#: src/multiplayer.c:260
 msgid "Who is playing next?"
 msgstr ""
 
-#: src/multiplayer.c:260
+#: src/multiplayer.c:274
 msgid "How many rounds will you play?"
 msgstr ""
 
-#: src/multiplayer.c:260
+#: src/multiplayer.c:274
 msgid "Enter a number"
 msgstr ""
 
-#: src/titlescreen.c:487
+#: src/titlescreen.c:476
 msgid "Work In Progress!"
 msgstr "Werk in uitvoering"
 
-#: src/titlescreen.c:488
+#: src/titlescreen.c:477
 msgid "This feature is not ready yet"
 msgstr "Deze functie is nog niet beschikbaar"
 
-#: src/titlescreen.c:489
+#: src/titlescreen.c:478
 msgid "Discuss the future of TuxMath at"
 msgstr "Praat over de toekomst van TuxMath op"
 
-#: src/titlescreen.c:490
+#: src/titlescreen.c:479
 msgid "tuxmath-devel at lists.sourceforge.net"
 msgstr "tuxmath-devel at lists.sourceforge.net"
 
-#: src/titlescreen.c:647
-msgid "Play Alone"
-msgstr ""
-
-#: src/titlescreen.c:648
-msgid "Play With Friends"
-msgstr ""
-
-#: src/titlescreen.c:649
-msgid "Factoroids!"
-msgstr ""
-
-#: src/titlescreen.c:650
-msgid "Help"
-msgstr "Help"
-
-#: src/titlescreen.c:651
-msgid "More Options"
-msgstr "Meer opties"
-
-#: src/titlescreen.c:652
-msgid "Quit"
-msgstr "Afsluiten"
-
-#: src/titlescreen.c:726
-msgid "Math Command Training Academy"
-msgstr "Reken commando training academie"
-
-#: src/titlescreen.c:727
-msgid "Math Command Fleet Missions"
-msgstr ""
-
-#: src/titlescreen.c:728
-msgid "Play Arcade Game"
-msgstr "Speel Arcade spel"
-
-#: src/titlescreen.c:729
-msgid "Play Custom Game"
-msgstr "Speel je eigen spel"
-
-#: src/titlescreen.c:730 src/titlescreen.c:781 src/titlescreen.c:790
-#: src/titlescreen.c:850 src/titlescreen.c:970
-msgid "Main menu"
-msgstr "Hoofdmenu"
-
-#: src/titlescreen.c:779
-msgid "Score Sweep"
-msgstr ""
-
-#: src/titlescreen.c:780
-msgid "Elimination"
-msgstr ""
-
-#: src/titlescreen.c:824
-msgid "How many kids are playing?"
-msgstr ""
-
-#: src/titlescreen.c:825
-msgid "(Between 2 and 4 players)"
-msgstr ""
-
-#: src/titlescreen.c:944
-msgid "Edit 'options' file in your home directory"
-msgstr "Bewerk 'options' bestand in je home folder"
-
-#: src/titlescreen.c:945
-msgid "to create customized game!"
-msgstr "voor een eigen spel!"
-
-#: src/titlescreen.c:946
-msgid "Press a key or click your mouse to start game."
-msgstr "Druk op een toets of de muis om het spel te starten."
-
-#: src/titlescreen.c:947
-msgid "See README.txt for more information"
-msgstr "Lees README.txt voor meer informatie"
-
-#: src/titlescreen.c:1062
-msgid "Demo"
-msgstr "Demo"
-
-#: src/titlescreen.c:1063
-msgid "Project Info"
-msgstr "Projekt info"
-
-#: src/titlescreen.c:1064
-msgid "Credits"
-msgstr "Kredieten"
-
-#: src/titlescreen.c:1065
-msgid "Main Menu"
-msgstr "Hoofdmenu"
-
-#: src/titlescreen.c:1113
-msgid "TuxMath is free and open-source!"
-msgstr "TuxMath is gratis en open-source!"
-
-#: src/titlescreen.c:1114
-msgid "You can help make it better by reporting problems,"
-msgstr "Je kan helpen met het verbeteren door problemen te melden,"
-
-#: src/titlescreen.c:1115
-msgid "suggesting improvements, or adding code."
-msgstr "suggesties verbeteringen, of code toevoegen."
-
-#: src/titlescreen.c:1116
-msgid "Discuss the future at tuxmath-devel at lists.sourceforge.net"
-msgstr "Praat over de toekomst via tuxmath-devel at lists.sourceforge.net"
-
 #: data/missions/lessons/descr_lessons:1
 msgid "Number Typing"
 msgstr "Nummers typen"
@@ -762,3 +657,60 @@
 #: data/missions/lessons/descr_lessons:58
 msgid "Division of Positives and Negatives"
 msgstr "Delen van positieven en negatieven"
+
+#~ msgid "Help"
+#~ msgstr "Help"
+
+#~ msgid "More Options"
+#~ msgstr "Meer opties"
+
+#~ msgid "Quit"
+#~ msgstr "Afsluiten"
+
+#~ msgid "Math Command Training Academy"
+#~ msgstr "Reken commando training academie"
+
+#~ msgid "Play Arcade Game"
+#~ msgstr "Speel Arcade spel"
+
+#~ msgid "Play Custom Game"
+#~ msgstr "Speel je eigen spel"
+
+#~ msgid "Main menu"
+#~ msgstr "Hoofdmenu"
+
+#~ msgid "Edit 'options' file in your home directory"
+#~ msgstr "Bewerk 'options' bestand in je home folder"
+
+#~ msgid "to create customized game!"
+#~ msgstr "voor een eigen spel!"
+
+#~ msgid "Press a key or click your mouse to start game."
+#~ msgstr "Druk op een toets of de muis om het spel te starten."
+
+#~ msgid "See README.txt for more information"
+#~ msgstr "Lees README.txt voor meer informatie"
+
+#~ msgid "Demo"
+#~ msgstr "Demo"
+
+#~ msgid "Project Info"
+#~ msgstr "Projekt info"
+
+#~ msgid "Credits"
+#~ msgstr "Kredieten"
+
+#~ msgid "Main Menu"
+#~ msgstr "Hoofdmenu"
+
+#~ msgid "TuxMath is free and open-source!"
+#~ msgstr "TuxMath is gratis en open-source!"
+
+#~ msgid "You can help make it better by reporting problems,"
+#~ msgstr "Je kan helpen met het verbeteren door problemen te melden,"
+
+#~ msgid "suggesting improvements, or adding code."
+#~ msgstr "suggesties verbeteringen, of code toevoegen."
+
+#~ msgid "Discuss the future at tuxmath-devel at lists.sourceforge.net"
+#~ msgstr "Praat over de toekomst via tuxmath-devel at lists.sourceforge.net"

Modified: tuxmath/trunk/po/nn.gmo
===================================================================
(Binary files differ)

Modified: tuxmath/trunk/po/nn.po
===================================================================
--- tuxmath/trunk/po/nn.po	2009-09-04 19:47:19 UTC (rev 1488)
+++ tuxmath/trunk/po/nn.po	2009-09-05 02:31:43 UTC (rev 1489)
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: nn\n"
 "Report-Msgid-Bugs-To: tuxmath-devel at lists.sourceforge.net\n"
-"POT-Creation-Date: 2009-03-06 06:12-0600\n"
+"POT-Creation-Date: 2009-09-04 21:22-0500\n"
 "PO-Revision-Date: 2009-04-16 18:58+0200\n"
 "Last-Translator: Karl Ove Hufthammer <karl at huftis.org>\n"
 "Language-Team: Norwegian Nynorsk <i18n-nn at lister.ping.uio.no>\n"
@@ -226,8 +226,9 @@
 "programmet."
 
 #: src/credits.c:108
+#, fuzzy
 msgid ""
-"A full copy of the GPL is included with the documenation for this program."
+"A full copy of the GPL is included with the documentation for this program."
 msgstr ""
 "Heile GNU GPL-lisensen er tilgjengeleg i hjelpetekstane som følgjer med "
 "programmet."
@@ -237,32 +238,32 @@
 msgstr ""
 "For meir informasjon om fri programvare og GNU GPL, kan du vitja nettstaden"
 
-#: src/factoroids.c:558
+#: src/factoroids.c:552
 msgid "FACTOROIDS: to win, you need destroy all the asteroids."
 msgstr "FAKTOROIDAR: For å vinna må du øydeleggja elle asteroidane."
 
-#: src/factoroids.c:559 src/factoroids.c:570
+#: src/factoroids.c:553 src/factoroids.c:564
 msgid "Use the arrow keys to turn or go forward.  Aim at an asteroid,"
 msgstr "Bruk piltastane til å dreia rundt eller fly framover. Sikt på ein"
 
-#: src/factoroids.c:560
+#: src/factoroids.c:554
 msgid "type one of its factors, and press space or return"
 msgstr "asteroide, skriv inn éin av faktorane og trykk «Enter»"
 
-#: src/factoroids.c:561
+#: src/factoroids.c:555
 msgid "to split it into its factors.  Rocks with prime numbers are destroyed!"
 msgstr ""
 "eller «Mellomrom» for å dela han opp. Primtalsasteroidar vert øydelagde."
 
-#: src/factoroids.c:569
+#: src/factoroids.c:563
 msgid "FRACTIONS: to win, you need destroy all the asteroids"
 msgstr "BRØKAR: For å vinna må du øydeleggja elle asteroidane."
 
-#: src/factoroids.c:571
+#: src/factoroids.c:565
 msgid "type a number that can simplify the fraction, and press space or return"
 msgstr "Skriv inn eit tal som kan forenkla brøken, og trykk «Enter»"
 
-#: src/factoroids.c:572
+#: src/factoroids.c:566
 msgid ""
 "to split it.  Destroy fractions that can not be further simplified in a "
 "single shot!"
@@ -270,296 +271,191 @@
 "eller «Mellomrom» for å dela han. Øydelegg brøkar som ikkje kan forenklast "
 "med eit enkeltskot."
 
-#: src/game.c:717
+#: src/game.c:989
 msgid "Welcome to TuxMath!"
 msgstr "Velkommen til TuxMath!"
 
-#: src/game.c:734
+#: src/game.c:1006
 msgid "Your mission is to save your"
 msgstr "Oppdraget ditt er å redda"
 
-#: src/game.c:735
+#: src/game.c:1007
 msgid "penguins' igloos from the"
 msgstr "igloane til pingvinane frå"
 
-#: src/game.c:736
+#: src/game.c:1008
 msgid "falling comets."
 msgstr "kometar frå verdsrommet."
 
-#: src/game.c:755
+#: src/game.c:1027
 msgid "Stop a comet by typing"
 msgstr "Du kan stoppa ein komet ved"
 
-#: src/game.c:756
+#: src/game.c:1028
 msgid "the answer to the math problem"
 msgstr "å skriva inn svaret, og så"
 
-#: src/game.c:757
+#: src/game.c:1029
 msgid "and hitting 'space' or 'enter'."
 msgstr "«Mellomrom» eller «Enter»."
 
-#: src/game.c:758
+#: src/game.c:1030
 msgid "Try it now!"
 msgstr "Prøv det no!"
 
-#: src/game.c:766
+#: src/game.c:1038
 msgid "Good shot!"
 msgstr "Bra skot!"
 
-#: src/game.c:776
+#: src/game.c:1048
 msgid "If an igloo gets hit by a comet,"
 msgstr "Viss ein iglo vert treft av ein"
 
-#: src/game.c:777
+#: src/game.c:1049
 msgid "it melts. But don't worry: the"
 msgstr "komet, smeltar han. Men ta det"
 
-#: src/game.c:778
+#: src/game.c:1050
 msgid "penguin is OK!"
 msgstr "med ro: pingvinen klarer seg!"
 
-#: src/game.c:779
+#: src/game.c:1051
 msgid "Just watch what happens:"
 msgstr "Berre sjå kva som skjer."
 
-#: src/game.c:780
+#: src/game.c:1052
 msgid "(Press a key to start)"
 msgstr "(Trykk ein tast for å sjå.)"
 
-#: src/game.c:793
+#: src/game.c:1065
 msgid "Notice the answer"
 msgstr "Legg merke til rett svar."
 
-#: src/game.c:803
+#: src/game.c:1075
 msgid "If it gets hit again, the"
 msgstr "Viss igloen vert treft på nytt,"
 
-#: src/game.c:804
+#: src/game.c:1076
 msgid "penguin leaves."
 msgstr "vandrar pingvinen vekk."
 
-#: src/game.c:805
+#: src/game.c:1077
 msgid "(Press a key when ready)"
 msgstr "(Trykk ein tast når du er klar.)"
 
-#: src/game.c:824
+#: src/game.c:1100
 msgid "You can fix the igloos"
 msgstr "Du kan byggja opp att igloane"
 
-#: src/game.c:825
+#: src/game.c:1101
 msgid "by stopping bonus comets."
 msgstr "ved å stoppa bonuskometar."
 
-#: src/game.c:834
+#: src/game.c:1112
 msgid "Zap it now!"
 msgstr "Skyt kometen no!"
 
-#: src/game.c:838
+#: src/game.c:1118
 msgid "Great job!"
 msgstr "Kjempebra!"
 
-#: src/game.c:852
+#: src/game.c:1136
 msgid "Quit at any time by pressing"
 msgstr "Du kan når som helst gje deg,"
 
-#: src/game.c:853
+#: src/game.c:1137
 msgid "'Esc' or clicking the 'X'"
 msgstr "ved å trykkja «Escape» eller"
 
-#: src/game.c:854
+#: src/game.c:1138
 msgid "in the upper right corner."
 msgstr "klikka på X-en oppe til høgre."
 
-#: src/game.c:855
+#: src/game.c:1139
 msgid "Do it now, and then play!"
 msgstr "Prøv det no, og start spelet!"
 
-#: src/highscore.c:212 src/titlescreen.c:849
+#: src/highscore.c:167
 msgid "Hall Of Fame"
 msgstr "Rekordar"
 
-#: src/highscore.c:232 src/highscore.c:253 src/titlescreen.c:785
-#: src/titlescreen.c:844
+#: src/highscore.c:187 src/highscore.c:208
 msgid "Space Cadet"
 msgstr "Romkadett"
 
-#: src/highscore.c:235 src/titlescreen.c:786 src/titlescreen.c:845
+#: src/highscore.c:190
 msgid "Scout"
 msgstr "Romlærling"
 
-#: src/highscore.c:238 src/titlescreen.c:787 src/titlescreen.c:846
+#: src/highscore.c:193
 msgid "Ranger"
 msgstr "Romvaktar"
 
-#: src/highscore.c:241 src/titlescreen.c:788 src/titlescreen.c:847
+#: src/highscore.c:196
 msgid "Ace"
 msgstr "Romsjef"
 
-#: src/highscore.c:244 src/titlescreen.c:789 src/titlescreen.c:848
+#: src/highscore.c:199
 msgid "Commando"
 msgstr "Romkommandør"
 
-#: src/highscore.c:247 src/titlescreen.c:968
+#: src/highscore.c:202
 msgid "Factors"
 msgstr "Faktorar"
 
-#: src/highscore.c:250 src/titlescreen.c:969
+#: src/highscore.c:205
 msgid "Fractions"
 msgstr "Brøkar"
 
-#: src/highscore.c:353
+#: src/highscore.c:286
 msgid "You Are In The Hall of Fame!"
 msgstr "Du fekk ein ny rekord!"
 
-#: src/highscore.c:353
+#: src/highscore.c:286
 msgid "Enter Your Name:"
 msgstr "Skriv inn namnet ditt:"
 
-#: src/multiplayer.c:244
+#: src/multiplayer.c:183
+#, c-format
+msgid "Then %s\n"
+msgstr ""
+
+#: src/multiplayer.c:258
 msgid "Who is playing first?"
 msgstr "Kven spelar først?"
 
-#: src/multiplayer.c:244 src/multiplayer.c:246
+#: src/multiplayer.c:258 src/multiplayer.c:260
 msgid "Enter your name:"
 msgstr "Skriv inn namnet ditt:"
 
-#: src/multiplayer.c:246
+#: src/multiplayer.c:260
 msgid "Who is playing next?"
 msgstr "Kven sin tur er det så?"
 
-#: src/multiplayer.c:260
+#: src/multiplayer.c:274
 msgid "How many rounds will you play?"
 msgstr "Kor mange rundar vil du spela?"
 
-#: src/multiplayer.c:260
+#: src/multiplayer.c:274
 msgid "Enter a number"
 msgstr "Skriv inn eit tal"
 
-#: src/titlescreen.c:487
+#: src/titlescreen.c:476
 msgid "Work In Progress!"
 msgstr "Uferdig!"
 
-#: src/titlescreen.c:488
+#: src/titlescreen.c:477
 msgid "This feature is not ready yet"
 msgstr "Denne funksjonen er ikkje klar enno."
 
-#: src/titlescreen.c:489
+#: src/titlescreen.c:478
 msgid "Discuss the future of TuxMath at"
 msgstr "Diskuter framtida til TuxMath på"
 
-#: src/titlescreen.c:490
+#: src/titlescreen.c:479
 msgid "tuxmath-devel at lists.sourceforge.net"
 msgstr "tuxmath-devel at lists.sourceforge.net"
 
-#: src/titlescreen.c:647
-msgid "Play Alone"
-msgstr "Spel åleine"
-
-#: src/titlescreen.c:648
-msgid "Play With Friends"
-msgstr "Spel med venner"
-
-#: src/titlescreen.c:649
-msgid "Factoroids!"
-msgstr "Faktoroidar!"
-
-#: src/titlescreen.c:650
-msgid "Help"
-msgstr "Hjelp"
-
-#: src/titlescreen.c:651
-msgid "More Options"
-msgstr "Fleire val"
-
-#: src/titlescreen.c:652
-msgid "Quit"
-msgstr "Avslutt"
-
-#: src/titlescreen.c:726
-msgid "Math Command Training Academy"
-msgstr "Kadettskule"
-
-#: src/titlescreen.c:727
-msgid "Math Command Fleet Missions"
-msgstr "Oppdrag"
-
-#: src/titlescreen.c:728
-msgid "Play Arcade Game"
-msgstr "Arkadespel"
-
-#: src/titlescreen.c:729
-msgid "Play Custom Game"
-msgstr "Sjølvlaga spel"
-
-#: src/titlescreen.c:730 src/titlescreen.c:781 src/titlescreen.c:790
-#: src/titlescreen.c:850 src/titlescreen.c:970
-msgid "Main menu"
-msgstr "Hovudmeny"
-
-#: src/titlescreen.c:779
-msgid "Score Sweep"
-msgstr "Poengsamling"
-
-#: src/titlescreen.c:780
-msgid "Elimination"
-msgstr "Eliminering"
-
-#: src/titlescreen.c:824
-msgid "How many kids are playing?"
-msgstr "Kor mange spelar?"
-
-#: src/titlescreen.c:825
-msgid "(Between 2 and 4 players)"
-msgstr "(2 til 4 spelarar)"
-
-#: src/titlescreen.c:944
-msgid "Edit 'options' file in your home directory"
-msgstr "Rediger «options»-fila i heimemappa di"
-
-#: src/titlescreen.c:945
-msgid "to create customized game!"
-msgstr "for å laga ditt eige spel."
-
-#: src/titlescreen.c:946
-msgid "Press a key or click your mouse to start game."
-msgstr "Trykk ein tast eller med musa for å starta spelet."
-
-#: src/titlescreen.c:947
-msgid "See README.txt for more information"
-msgstr "Sjå «README.txt» for meir informasjon."
-
-#: src/titlescreen.c:1062
-msgid "Demo"
-msgstr "Demonstrasjon"
-
-#: src/titlescreen.c:1063
-msgid "Project Info"
-msgstr "Prosjektinfo"
-
-#: src/titlescreen.c:1064
-msgid "Credits"
-msgstr "Bidragsytarar"
-
-#: src/titlescreen.c:1065
-msgid "Main Menu"
-msgstr "Hovudmeny"
-
-#: src/titlescreen.c:1113
-msgid "TuxMath is free and open-source!"
-msgstr "TuxMath er fri programvare!"
-
-#: src/titlescreen.c:1114
-msgid "You can help make it better by reporting problems,"
-msgstr "Du kan vera med på å gjera spelet betre, ved å melda frå"
-
-#: src/titlescreen.c:1115
-msgid "suggesting improvements, or adding code."
-msgstr "om feil, foreslå forbetringar eller bidra med programkode."
-
-#: src/titlescreen.c:1116
-msgid "Discuss the future at tuxmath-devel at lists.sourceforge.net"
-msgstr "Diskuter framtida på tuxmath-devel at lists.sourceforge.net"
-
 #: data/missions/lessons/descr_lessons:1
 msgid "Number Typing"
 msgstr "Talskriving"
@@ -792,6 +688,87 @@
 msgid "Division of Positives and Negatives"
 msgstr "Divisjon av positive og negative tal"
 
+#~ msgid "Play Alone"
+#~ msgstr "Spel åleine"
+
+#~ msgid "Play With Friends"
+#~ msgstr "Spel med venner"
+
+#~ msgid "Factoroids!"
+#~ msgstr "Faktoroidar!"
+
+#~ msgid "Help"
+#~ msgstr "Hjelp"
+
+#~ msgid "More Options"
+#~ msgstr "Fleire val"
+
+#~ msgid "Quit"
+#~ msgstr "Avslutt"
+
+#~ msgid "Math Command Training Academy"
+#~ msgstr "Kadettskule"
+
+#~ msgid "Math Command Fleet Missions"
+#~ msgstr "Oppdrag"
+
+#~ msgid "Play Arcade Game"
+#~ msgstr "Arkadespel"
+
+#~ msgid "Play Custom Game"
+#~ msgstr "Sjølvlaga spel"
+
+#~ msgid "Main menu"
+#~ msgstr "Hovudmeny"
+
+#~ msgid "Score Sweep"
+#~ msgstr "Poengsamling"
+
+#~ msgid "Elimination"
+#~ msgstr "Eliminering"
+
+#~ msgid "How many kids are playing?"
+#~ msgstr "Kor mange spelar?"
+
+#~ msgid "(Between 2 and 4 players)"
+#~ msgstr "(2 til 4 spelarar)"
+
+#~ msgid "Edit 'options' file in your home directory"
+#~ msgstr "Rediger «options»-fila i heimemappa di"
+
+#~ msgid "to create customized game!"
+#~ msgstr "for å laga ditt eige spel."
+
+#~ msgid "Press a key or click your mouse to start game."
+#~ msgstr "Trykk ein tast eller med musa for å starta spelet."
+
+#~ msgid "See README.txt for more information"
+#~ msgstr "Sjå «README.txt» for meir informasjon."
+
+#~ msgid "Demo"
+#~ msgstr "Demonstrasjon"
+
+#~ msgid "Project Info"
+#~ msgstr "Prosjektinfo"
+
+#~ msgid "Credits"
+#~ msgstr "Bidragsytarar"
+
+#~ msgid "Main Menu"
+#~ msgstr "Hovudmeny"
+
+#~ msgid "TuxMath is free and open-source!"
+#~ msgstr "TuxMath er fri programvare!"
+
+#~ msgid "You can help make it better by reporting problems,"
+#~ msgstr "Du kan vera med på å gjera spelet betre, ved å melda frå"
+
+#~ msgid "suggesting improvements, or adding code."
+#~ msgstr "om feil, foreslå forbetringar eller bidra med programkode."
+
+#~ msgid "Discuss the future at tuxmath-devel at lists.sourceforge.net"
+#~ msgstr "Diskuter framtida på tuxmath-devel at lists.sourceforge.net"
+
 #~ msgid "The penguins need your help! Comets"
 #~ msgstr "Pingvinane treng hjelp frå deg! Det fell"
 

Modified: tuxmath/trunk/po/oc.gmo
===================================================================
(Binary files differ)

Modified: tuxmath/trunk/po/oc.po
===================================================================
--- tuxmath/trunk/po/oc.po	2009-09-04 19:47:19 UTC (rev 1488)
+++ tuxmath/trunk/po/oc.po	2009-09-05 02:31:43 UTC (rev 1489)
@@ -9,7 +9,7 @@
 msgstr ""
 "Project-Id-Version: tuxmath\n"
 "Report-Msgid-Bugs-To: tuxmath-devel at lists.sourceforge.net\n"
-"POT-Creation-Date: 2009-03-06 06:12-0600\n"
+"POT-Creation-Date: 2009-09-04 21:22-0500\n"
 "PO-Revision-Date: 2008-02-25 16:55+0000\n"
 "Last-Translator: Yannig MARCHEGAY (Kokoyaya) <yannig at marchegay.org>\n"
 "Language-Team: Occitan (post 1500) <oc at li.org>\n"
@@ -206,333 +206,228 @@
 
 #: src/credits.c:108
 msgid ""
-"A full copy of the GPL is included with the documenation for this program."
+"A full copy of the GPL is included with the documentation for this program."
 msgstr ""
 
 #: src/credits.c:110
 msgid "For more information about Free Software and the GNU GPL, visit:"
 msgstr ""
 
-#: src/factoroids.c:558
+#: src/factoroids.c:552
 msgid "FACTOROIDS: to win, you need destroy all the asteroids."
 msgstr ""
 
-#: src/factoroids.c:559 src/factoroids.c:570
+#: src/factoroids.c:553 src/factoroids.c:564
 msgid "Use the arrow keys to turn or go forward.  Aim at an asteroid,"
 msgstr ""
 
-#: src/factoroids.c:560
+#: src/factoroids.c:554
 msgid "type one of its factors, and press space or return"
 msgstr ""
 
-#: src/factoroids.c:561
+#: src/factoroids.c:555
 msgid "to split it into its factors.  Rocks with prime numbers are destroyed!"
 msgstr ""
 
-#: src/factoroids.c:569
+#: src/factoroids.c:563
 msgid "FRACTIONS: to win, you need destroy all the asteroids"
 msgstr ""
 
-#: src/factoroids.c:571
+#: src/factoroids.c:565
 msgid "type a number that can simplify the fraction, and press space or return"
 msgstr ""
 
-#: src/factoroids.c:572
+#: src/factoroids.c:566
 msgid ""
 "to split it.  Destroy fractions that can not be further simplified in a "
 "single shot!"
 msgstr ""
 
-#: src/game.c:717
+#: src/game.c:989
 msgid "Welcome to TuxMath!"
 msgstr ""
 
-#: src/game.c:734
+#: src/game.c:1006
 msgid "Your mission is to save your"
 msgstr ""
 
-#: src/game.c:735
+#: src/game.c:1007
 msgid "penguins' igloos from the"
 msgstr ""
 
-#: src/game.c:736
+#: src/game.c:1008
 msgid "falling comets."
 msgstr ""
 
-#: src/game.c:755
+#: src/game.c:1027
 msgid "Stop a comet by typing"
 msgstr ""
 
-#: src/game.c:756
+#: src/game.c:1028
 msgid "the answer to the math problem"
 msgstr ""
 
-#: src/game.c:757
+#: src/game.c:1029
 msgid "and hitting 'space' or 'enter'."
 msgstr ""
 
-#: src/game.c:758
+#: src/game.c:1030
 msgid "Try it now!"
 msgstr ""
 
-#: src/game.c:766
+#: src/game.c:1038
 msgid "Good shot!"
 msgstr ""
 
-#: src/game.c:776
+#: src/game.c:1048
 msgid "If an igloo gets hit by a comet,"
 msgstr ""
 
-#: src/game.c:777
+#: src/game.c:1049
 msgid "it melts. But don't worry: the"
 msgstr ""
 
-#: src/game.c:778
+#: src/game.c:1050
 msgid "penguin is OK!"
 msgstr ""
 
-#: src/game.c:779
+#: src/game.c:1051
 msgid "Just watch what happens:"
 msgstr ""
 
-#: src/game.c:780
+#: src/game.c:1052
 msgid "(Press a key to start)"
 msgstr ""
 
-#: src/game.c:793
+#: src/game.c:1065
 msgid "Notice the answer"
 msgstr ""
 
-#: src/game.c:803
+#: src/game.c:1075
 msgid "If it gets hit again, the"
 msgstr ""
 
-#: src/game.c:804
+#: src/game.c:1076
 msgid "penguin leaves."
 msgstr ""
 
-#: src/game.c:805
+#: src/game.c:1077
 msgid "(Press a key when ready)"
 msgstr ""
 
-#: src/game.c:824
+#: src/game.c:1100
 msgid "You can fix the igloos"
 msgstr ""
 
-#: src/game.c:825
+#: src/game.c:1101
 msgid "by stopping bonus comets."
 msgstr ""
 
-#: src/game.c:834
+#: src/game.c:1112
 msgid "Zap it now!"
 msgstr ""
 
-#: src/game.c:838
+#: src/game.c:1118
 msgid "Great job!"
 msgstr ""
 
-#: src/game.c:852
+#: src/game.c:1136
 msgid "Quit at any time by pressing"
 msgstr ""
 
-#: src/game.c:853
+#: src/game.c:1137
 msgid "'Esc' or clicking the 'X'"
 msgstr ""
 
-#: src/game.c:854
+#: src/game.c:1138
 msgid "in the upper right corner."
 msgstr ""
 
-#: src/game.c:855
+#: src/game.c:1139
 msgid "Do it now, and then play!"
 msgstr ""
 
-#: src/highscore.c:212 src/titlescreen.c:849
+#: src/highscore.c:167
 msgid "Hall Of Fame"
 msgstr ""
 
-#: src/highscore.c:232 src/highscore.c:253 src/titlescreen.c:785
-#: src/titlescreen.c:844
+#: src/highscore.c:187 src/highscore.c:208
 msgid "Space Cadet"
 msgstr ""
 
-#: src/highscore.c:235 src/titlescreen.c:786 src/titlescreen.c:845
+#: src/highscore.c:190
 msgid "Scout"
 msgstr ""
 
-#: src/highscore.c:238 src/titlescreen.c:787 src/titlescreen.c:846
+#: src/highscore.c:193
 msgid "Ranger"
 msgstr ""
 
-#: src/highscore.c:241 src/titlescreen.c:788 src/titlescreen.c:847
+#: src/highscore.c:196
 msgid "Ace"
 msgstr ""
 
-#: src/highscore.c:244 src/titlescreen.c:789 src/titlescreen.c:848
+#: src/highscore.c:199
 msgid "Commando"
 msgstr ""
 
-#: src/highscore.c:247 src/titlescreen.c:968
+#: src/highscore.c:202
 msgid "Factors"
 msgstr ""
 
-#: src/highscore.c:250 src/titlescreen.c:969
+#: src/highscore.c:205
 msgid "Fractions"
 msgstr ""
 
-#: src/highscore.c:353
+#: src/highscore.c:286
 msgid "You Are In The Hall of Fame!"
 msgstr ""
 
-#: src/highscore.c:353
+#: src/highscore.c:286
 msgid "Enter Your Name:"
 msgstr ""
 
-#: src/multiplayer.c:244
+#: src/multiplayer.c:183
+#, c-format
+msgid "Then %s\n"
+msgstr ""
+
+#: src/multiplayer.c:258
 msgid "Who is playing first?"
 msgstr ""
 
-#: src/multiplayer.c:244 src/multiplayer.c:246
+#: src/multiplayer.c:258 src/multiplayer.c:260
 msgid "Enter your name:"
 msgstr ""
 
-#: src/multiplayer.c:246
+#: src/multiplayer.c:260
 msgid "Who is playing next?"
 msgstr ""
 
-#: src/multiplayer.c:260
+#: src/multiplayer.c:274
 msgid "How many rounds will you play?"
 msgstr ""
 
-#: src/multiplayer.c:260
+#: src/multiplayer.c:274
 msgid "Enter a number"
 msgstr ""
 
-#: src/titlescreen.c:487
+#: src/titlescreen.c:476
 msgid "Work In Progress!"
 msgstr ""
 
-#: src/titlescreen.c:488
+#: src/titlescreen.c:477
 msgid "This feature is not ready yet"
 msgstr ""
 
-#: src/titlescreen.c:489
+#: src/titlescreen.c:478
 msgid "Discuss the future of TuxMath at"
 msgstr ""
 
-#: src/titlescreen.c:490
+#: src/titlescreen.c:479
 msgid "tuxmath-devel at lists.sourceforge.net"
 msgstr "tuxmath-devel at lists.sourceforge.net"
 
-#: src/titlescreen.c:647
-msgid "Play Alone"
-msgstr ""
-
-#: src/titlescreen.c:648
-msgid "Play With Friends"
-msgstr ""
-
-#: src/titlescreen.c:649
-msgid "Factoroids!"
-msgstr ""
-
-#: src/titlescreen.c:650
-msgid "Help"
-msgstr "Ajuda"
-
-#: src/titlescreen.c:651
-msgid "More Options"
-msgstr "Mai d'opcions"
-
-#: src/titlescreen.c:652
-msgid "Quit"
-msgstr "Sortir"
-
-#: src/titlescreen.c:726
-msgid "Math Command Training Academy"
-msgstr ""
-
-#: src/titlescreen.c:727
-msgid "Math Command Fleet Missions"
-msgstr ""
-
-#: src/titlescreen.c:728
-msgid "Play Arcade Game"
-msgstr ""
-
-#: src/titlescreen.c:729
-msgid "Play Custom Game"
-msgstr ""
-
-#: src/titlescreen.c:730 src/titlescreen.c:781 src/titlescreen.c:790
-#: src/titlescreen.c:850 src/titlescreen.c:970
-msgid "Main menu"
-msgstr "Menut principal"
-
-#: src/titlescreen.c:779
-msgid "Score Sweep"
-msgstr ""
-
-#: src/titlescreen.c:780
-msgid "Elimination"
-msgstr ""
-
-#: src/titlescreen.c:824
-msgid "How many kids are playing?"
-msgstr ""
-
-#: src/titlescreen.c:825
-msgid "(Between 2 and 4 players)"
-msgstr ""
-
-#: src/titlescreen.c:944
-msgid "Edit 'options' file in your home directory"
-msgstr ""
-
-#: src/titlescreen.c:945
-msgid "to create customized game!"
-msgstr ""
-
-#: src/titlescreen.c:946
-msgid "Press a key or click your mouse to start game."
-msgstr ""
-
-#: src/titlescreen.c:947
-msgid "See README.txt for more information"
-msgstr ""
-
-#: src/titlescreen.c:1062
-msgid "Demo"
-msgstr ""
-
-#: src/titlescreen.c:1063
-msgid "Project Info"
-msgstr ""
-
-#: src/titlescreen.c:1064
-msgid "Credits"
-msgstr "Mercejaments"
-
-#: src/titlescreen.c:1065
-msgid "Main Menu"
-msgstr "Menut principal"
-
-#: src/titlescreen.c:1113
-msgid "TuxMath is free and open-source!"
-msgstr ""
-
-#: src/titlescreen.c:1114
-msgid "You can help make it better by reporting problems,"
-msgstr ""
-
-#: src/titlescreen.c:1115
-msgid "suggesting improvements, or adding code."
-msgstr ""
-
-#: src/titlescreen.c:1116
-msgid "Discuss the future at tuxmath-devel at lists.sourceforge.net"
-msgstr ""
-
 #: data/missions/lessons/descr_lessons:1
 msgid "Number Typing"
 msgstr ""
@@ -764,3 +659,21 @@
 #: data/missions/lessons/descr_lessons:58
 msgid "Division of Positives and Negatives"
 msgstr ""
+
+#~ msgid "Help"
+#~ msgstr "Ajuda"
+
+#~ msgid "More Options"
+#~ msgstr "Mai d'opcions"
+
+#~ msgid "Quit"
+#~ msgstr "Sortir"
+
+#~ msgid "Main menu"
+#~ msgstr "Menut principal"
+
+#~ msgid "Credits"
+#~ msgstr "Mercejaments"
+
+#~ msgid "Main Menu"
+#~ msgstr "Menut principal"

Modified: tuxmath/trunk/po/pl.gmo
===================================================================
(Binary files differ)

Modified: tuxmath/trunk/po/pl.po
===================================================================
--- tuxmath/trunk/po/pl.po	2009-09-04 19:47:19 UTC (rev 1488)
+++ tuxmath/trunk/po/pl.po	2009-09-05 02:31:43 UTC (rev 1489)
@@ -12,7 +12,7 @@
 msgstr ""
 "Project-Id-Version: tuxmath\n"
 "Report-Msgid-Bugs-To: tuxmath-devel at lists.sourceforge.net\n"
-"POT-Creation-Date: 2009-03-06 06:12-0600\n"
+"POT-Creation-Date: 2009-09-04 21:22-0500\n"
 "PO-Revision-Date: 2008-02-25 18:43+0000\n"
 "Last-Translator: Mateusz Tybura <wujciol at gmail.com>\n"
 "Language-Team: Polish <pl at li.org>\n"
@@ -209,334 +209,228 @@
 
 #: src/credits.c:108
 msgid ""
-"A full copy of the GPL is included with the documenation for this program."
+"A full copy of the GPL is included with the documentation for this program."
 msgstr ""
 
 #: src/credits.c:110
 msgid "For more information about Free Software and the GNU GPL, visit:"
 msgstr ""
 
-#: src/factoroids.c:558
+#: src/factoroids.c:552
 msgid "FACTOROIDS: to win, you need destroy all the asteroids."
 msgstr ""
 
-#: src/factoroids.c:559 src/factoroids.c:570
+#: src/factoroids.c:553 src/factoroids.c:564
 msgid "Use the arrow keys to turn or go forward.  Aim at an asteroid,"
 msgstr ""
 
-#: src/factoroids.c:560
+#: src/factoroids.c:554
 msgid "type one of its factors, and press space or return"
 msgstr ""
 
-#: src/factoroids.c:561
+#: src/factoroids.c:555
 msgid "to split it into its factors.  Rocks with prime numbers are destroyed!"
 msgstr ""
 
-#: src/factoroids.c:569
+#: src/factoroids.c:563
 msgid "FRACTIONS: to win, you need destroy all the asteroids"
 msgstr ""
 
-#: src/factoroids.c:571
+#: src/factoroids.c:565
 msgid "type a number that can simplify the fraction, and press space or return"
 msgstr ""
 
-#: src/factoroids.c:572
+#: src/factoroids.c:566
 msgid ""
 "to split it.  Destroy fractions that can not be further simplified in a "
 "single shot!"
 msgstr ""
 
-#: src/game.c:717
+#: src/game.c:989
 msgid "Welcome to TuxMath!"
 msgstr ""
 
-#: src/game.c:734
+#: src/game.c:1006
 msgid "Your mission is to save your"
 msgstr ""
 
-#: src/game.c:735
+#: src/game.c:1007
 msgid "penguins' igloos from the"
 msgstr ""
 
-#: src/game.c:736
+#: src/game.c:1008
 msgid "falling comets."
 msgstr ""
 
-#: src/game.c:755
+#: src/game.c:1027
 msgid "Stop a comet by typing"
 msgstr ""
 
-#: src/game.c:756
+#: src/game.c:1028
 msgid "the answer to the math problem"
 msgstr ""
 
-#: src/game.c:757
+#: src/game.c:1029
 msgid "and hitting 'space' or 'enter'."
 msgstr ""
 
-#: src/game.c:758
+#: src/game.c:1030
 msgid "Try it now!"
 msgstr ""
 
-#: src/game.c:766
+#: src/game.c:1038
 msgid "Good shot!"
 msgstr ""
 
-#: src/game.c:776
+#: src/game.c:1048
 msgid "If an igloo gets hit by a comet,"
 msgstr ""
 
-#: src/game.c:777
+#: src/game.c:1049
 msgid "it melts. But don't worry: the"
 msgstr ""
 
-#: src/game.c:778
+#: src/game.c:1050
 msgid "penguin is OK!"
 msgstr ""
 
-#: src/game.c:779
+#: src/game.c:1051
 msgid "Just watch what happens:"
 msgstr ""
 
-#: src/game.c:780
+#: src/game.c:1052
 msgid "(Press a key to start)"
 msgstr ""
 
-#: src/game.c:793
+#: src/game.c:1065
 msgid "Notice the answer"
 msgstr ""
 
-#: src/game.c:803
+#: src/game.c:1075
 msgid "If it gets hit again, the"
 msgstr ""
 
-#: src/game.c:804
+#: src/game.c:1076
 msgid "penguin leaves."
 msgstr ""
 
-#: src/game.c:805
+#: src/game.c:1077
 msgid "(Press a key when ready)"
 msgstr ""
 
-#: src/game.c:824
+#: src/game.c:1100
 msgid "You can fix the igloos"
 msgstr ""
 
-#: src/game.c:825
+#: src/game.c:1101
 msgid "by stopping bonus comets."
 msgstr ""
 
-#: src/game.c:834
+#: src/game.c:1112
 msgid "Zap it now!"
 msgstr ""
 
-#: src/game.c:838
+#: src/game.c:1118
 msgid "Great job!"
 msgstr ""
 
-#: src/game.c:852
+#: src/game.c:1136
 msgid "Quit at any time by pressing"
 msgstr ""
 
-#: src/game.c:853
+#: src/game.c:1137
 msgid "'Esc' or clicking the 'X'"
 msgstr ""
 
-#: src/game.c:854
+#: src/game.c:1138
 msgid "in the upper right corner."
 msgstr ""
 
-#: src/game.c:855
+#: src/game.c:1139
 msgid "Do it now, and then play!"
 msgstr ""
 
-#: src/highscore.c:212 src/titlescreen.c:849
+#: src/highscore.c:167
 msgid "Hall Of Fame"
 msgstr "Lista najlepszych"
 
-#: src/highscore.c:232 src/highscore.c:253 src/titlescreen.c:785
-#: src/titlescreen.c:844
+#: src/highscore.c:187 src/highscore.c:208
 msgid "Space Cadet"
 msgstr "Kosmiczny Kadet"
 
-#: src/highscore.c:235 src/titlescreen.c:786 src/titlescreen.c:845
+#: src/highscore.c:190
 msgid "Scout"
 msgstr "Strzelec"
 
-#: src/highscore.c:238 src/titlescreen.c:787 src/titlescreen.c:846
+#: src/highscore.c:193
 msgid "Ranger"
 msgstr "Strażnik"
 
-#: src/highscore.c:241 src/titlescreen.c:788 src/titlescreen.c:847
+#: src/highscore.c:196
 msgid "Ace"
 msgstr "As"
 
-#: src/highscore.c:244 src/titlescreen.c:789 src/titlescreen.c:848
+#: src/highscore.c:199
 msgid "Commando"
 msgstr ""
 
-#: src/highscore.c:247 src/titlescreen.c:968
+#: src/highscore.c:202
 msgid "Factors"
 msgstr ""
 
-#: src/highscore.c:250 src/titlescreen.c:969
+#: src/highscore.c:205
 msgid "Fractions"
 msgstr ""
 
-#: src/highscore.c:353
+#: src/highscore.c:286
 msgid "You Are In The Hall of Fame!"
 msgstr ""
 
-#: src/highscore.c:353
+#: src/highscore.c:286
 msgid "Enter Your Name:"
 msgstr ""
 
-#: src/multiplayer.c:244
+#: src/multiplayer.c:183
+#, c-format
+msgid "Then %s\n"
+msgstr ""
+
+#: src/multiplayer.c:258
 msgid "Who is playing first?"
 msgstr ""
 
-#: src/multiplayer.c:244 src/multiplayer.c:246
+#: src/multiplayer.c:258 src/multiplayer.c:260
 msgid "Enter your name:"
 msgstr ""
 
-#: src/multiplayer.c:246
+#: src/multiplayer.c:260
 msgid "Who is playing next?"
 msgstr ""
 
-#: src/multiplayer.c:260
+#: src/multiplayer.c:274
 msgid "How many rounds will you play?"
 msgstr ""
 
-#: src/multiplayer.c:260
+#: src/multiplayer.c:274
 msgid "Enter a number"
 msgstr ""
 
-#: src/titlescreen.c:487
+#: src/titlescreen.c:476
 msgid "Work In Progress!"
 msgstr "Prace trwają!"
 
-#: src/titlescreen.c:488
+#: src/titlescreen.c:477
 msgid "This feature is not ready yet"
 msgstr "Ta cecha jeszcze nie jest gotowa"
 
-#: src/titlescreen.c:489
+#: src/titlescreen.c:478
 msgid "Discuss the future of TuxMath at"
 msgstr "Dyskusje na temat przyszłości Tuxmath na"
 
-#: src/titlescreen.c:490
+#: src/titlescreen.c:479
 msgid "tuxmath-devel at lists.sourceforge.net"
 msgstr "tuxmath-devel at lists.sourceforge.net"
 
-#: src/titlescreen.c:647
-msgid "Play Alone"
-msgstr ""
-
-#: src/titlescreen.c:648
-msgid "Play With Friends"
-msgstr ""
-
-#: src/titlescreen.c:649
-msgid "Factoroids!"
-msgstr ""
-
-#: src/titlescreen.c:650
-msgid "Help"
-msgstr "Pomoc"
-
-#: src/titlescreen.c:651
-msgid "More Options"
-msgstr "Więcej opcji"
-
-#: src/titlescreen.c:652
-msgid "Quit"
-msgstr "Wyjdź"
-
-#: src/titlescreen.c:726
-msgid "Math Command Training Academy"
-msgstr "Akademia Treningowa Poleceń Math"
-
-#: src/titlescreen.c:727
-msgid "Math Command Fleet Missions"
-msgstr ""
-
-#: src/titlescreen.c:728
-msgid "Play Arcade Game"
-msgstr "Zagraj w grę zręcznościową"
-
-#: src/titlescreen.c:729
-msgid "Play Custom Game"
-msgstr "Zagraj w wybraną grę"
-
-#: src/titlescreen.c:730 src/titlescreen.c:781 src/titlescreen.c:790
-#: src/titlescreen.c:850 src/titlescreen.c:970
-msgid "Main menu"
-msgstr "Menu główne"
-
-#: src/titlescreen.c:779
-msgid "Score Sweep"
-msgstr ""
-
-#: src/titlescreen.c:780
-msgid "Elimination"
-msgstr ""
-
-#: src/titlescreen.c:824
-msgid "How many kids are playing?"
-msgstr ""
-
-#: src/titlescreen.c:825
-msgid "(Between 2 and 4 players)"
-msgstr ""
-
-#: src/titlescreen.c:944
-msgid "Edit 'options' file in your home directory"
-msgstr "Edytuj pik 'options' w swoim katalogu domowym"
-
-#: src/titlescreen.c:945
-msgid "to create customized game!"
-msgstr ""
-
-#: src/titlescreen.c:946
-msgid "Press a key or click your mouse to start game."
-msgstr "Naciśnij klawisz albo kliknij myszką aby uruchomić grę."
-
-#: src/titlescreen.c:947
-msgid "See README.txt for more information"
-msgstr "Przeczytaj README.txt, żeby uzyskać więcej informacji"
-
-#: src/titlescreen.c:1062
-msgid "Demo"
-msgstr "Demonstracja"
-
-#: src/titlescreen.c:1063
-msgid "Project Info"
-msgstr "Informacja o projekcie"
-
-#: src/titlescreen.c:1064
-msgid "Credits"
-msgstr "Twórcy"
-
-#: src/titlescreen.c:1065
-msgid "Main Menu"
-msgstr "Menu główne"
-
-#: src/titlescreen.c:1113
-msgid "TuxMath is free and open-source!"
-msgstr "TuxMath jest wolny i ma otwarte źródła"
-
-#: src/titlescreen.c:1114
-msgid "You can help make it better by reporting problems,"
-msgstr "Możesz pomóc uczynić go lepszym zgłaszając błędy."
-
-#: src/titlescreen.c:1115
-#, fuzzy
-msgid "suggesting improvements, or adding code."
-msgstr "Zasugeruj ulepszenia lub dodaj kod"
-
-#: src/titlescreen.c:1116
-msgid "Discuss the future at tuxmath-devel at lists.sourceforge.net"
-msgstr "Dyskutuj na temat przyszłości na tuxmath-devel at lists.sourceforge.net"
-
 #: data/missions/lessons/descr_lessons:1
 #, fuzzy
 msgid "Number Typing"
@@ -775,3 +669,59 @@
 #: data/missions/lessons/descr_lessons:58
 msgid "Division of Positives and Negatives"
 msgstr "Dzielenie liczb dodatnich i ujemnych"
+
+#~ msgid "Help"
+#~ msgstr "Pomoc"
+
+#~ msgid "More Options"
+#~ msgstr "Więcej opcji"
+
+#~ msgid "Quit"
+#~ msgstr "Wyjdź"
+
+#~ msgid "Math Command Training Academy"
+#~ msgstr "Akademia Treningowa Poleceń Math"
+
+#~ msgid "Play Arcade Game"
+#~ msgstr "Zagraj w grę zręcznościową"
+
+#~ msgid "Play Custom Game"
+#~ msgstr "Zagraj w wybraną grę"
+
+#~ msgid "Main menu"
+#~ msgstr "Menu główne"
+
+#~ msgid "Edit 'options' file in your home directory"
+#~ msgstr "Edytuj pik 'options' w swoim katalogu domowym"
+
+#~ msgid "Press a key or click your mouse to start game."
+#~ msgstr "Naciśnij klawisz albo kliknij myszką aby uruchomić grę."
+
+#~ msgid "See README.txt for more information"
+#~ msgstr "Przeczytaj README.txt, żeby uzyskać więcej informacji"
+
+#~ msgid "Demo"
+#~ msgstr "Demonstracja"
+
+#~ msgid "Project Info"
+#~ msgstr "Informacja o projekcie"
+
+#~ msgid "Credits"
+#~ msgstr "Twórcy"
+
+#~ msgid "Main Menu"
+#~ msgstr "Menu główne"
+
+#~ msgid "TuxMath is free and open-source!"
+#~ msgstr "TuxMath jest wolny i ma otwarte źródła"
+
+#~ msgid "You can help make it better by reporting problems,"
+#~ msgstr "Możesz pomóc uczynić go lepszym zgłaszając błędy."
+
+#, fuzzy
+#~ msgid "suggesting improvements, or adding code."
+#~ msgstr "Zasugeruj ulepszenia lub dodaj kod"
+
+#~ msgid "Discuss the future at tuxmath-devel at lists.sourceforge.net"
+#~ msgstr ""
+#~ "Dyskutuj na temat przyszłości na tuxmath-devel at lists.sourceforge.net"

Modified: tuxmath/trunk/po/pt.gmo
===================================================================
(Binary files differ)

Modified: tuxmath/trunk/po/pt.po
===================================================================
--- tuxmath/trunk/po/pt.po	2009-09-04 19:47:19 UTC (rev 1488)
+++ tuxmath/trunk/po/pt.po	2009-09-05 02:31:43 UTC (rev 1489)
@@ -11,7 +11,7 @@
 msgstr ""
 "Project-Id-Version: tuxmath\n"
 "Report-Msgid-Bugs-To: tuxmath-devel at lists.sourceforge.net\n"
-"POT-Creation-Date: 2009-03-06 06:12-0600\n"
+"POT-Creation-Date: 2009-09-04 21:22-0500\n"
 "PO-Revision-Date: 2008-04-12 04:12+0000\n"
 "Last-Translator: Mykas0 <Mykas0 at gmail.com>\n"
 "Language-Team: Portuguese <pt at li.org>\n"
@@ -208,333 +208,228 @@
 
 #: src/credits.c:108
 msgid ""
-"A full copy of the GPL is included with the documenation for this program."
+"A full copy of the GPL is included with the documentation for this program."
 msgstr ""
 
 #: src/credits.c:110
 msgid "For more information about Free Software and the GNU GPL, visit:"
 msgstr ""
 
-#: src/factoroids.c:558
+#: src/factoroids.c:552
 msgid "FACTOROIDS: to win, you need destroy all the asteroids."
 msgstr ""
 
-#: src/factoroids.c:559 src/factoroids.c:570
+#: src/factoroids.c:553 src/factoroids.c:564
 msgid "Use the arrow keys to turn or go forward.  Aim at an asteroid,"
 msgstr ""
 
-#: src/factoroids.c:560
+#: src/factoroids.c:554
 msgid "type one of its factors, and press space or return"
 msgstr ""
 
-#: src/factoroids.c:561
+#: src/factoroids.c:555
 msgid "to split it into its factors.  Rocks with prime numbers are destroyed!"
 msgstr ""
 
-#: src/factoroids.c:569
+#: src/factoroids.c:563
 msgid "FRACTIONS: to win, you need destroy all the asteroids"
 msgstr ""
 
-#: src/factoroids.c:571
+#: src/factoroids.c:565
 msgid "type a number that can simplify the fraction, and press space or return"
 msgstr ""
 
-#: src/factoroids.c:572
+#: src/factoroids.c:566
 msgid ""
 "to split it.  Destroy fractions that can not be further simplified in a "
 "single shot!"
 msgstr ""
 
-#: src/game.c:717
+#: src/game.c:989
 msgid "Welcome to TuxMath!"
 msgstr ""
 
-#: src/game.c:734
+#: src/game.c:1006
 msgid "Your mission is to save your"
 msgstr ""
 
-#: src/game.c:735
+#: src/game.c:1007
 msgid "penguins' igloos from the"
 msgstr ""
 
-#: src/game.c:736
+#: src/game.c:1008
 msgid "falling comets."
 msgstr ""
 
-#: src/game.c:755
+#: src/game.c:1027
 msgid "Stop a comet by typing"
 msgstr ""
 
-#: src/game.c:756
+#: src/game.c:1028
 msgid "the answer to the math problem"
 msgstr ""
 
-#: src/game.c:757
+#: src/game.c:1029
 msgid "and hitting 'space' or 'enter'."
 msgstr ""
 
-#: src/game.c:758
+#: src/game.c:1030
 msgid "Try it now!"
 msgstr ""
 
-#: src/game.c:766
+#: src/game.c:1038
 msgid "Good shot!"
 msgstr ""
 
-#: src/game.c:776
+#: src/game.c:1048
 msgid "If an igloo gets hit by a comet,"
 msgstr ""
 
-#: src/game.c:777
+#: src/game.c:1049
 msgid "it melts. But don't worry: the"
 msgstr ""
 
-#: src/game.c:778
+#: src/game.c:1050
 msgid "penguin is OK!"
 msgstr ""
 
-#: src/game.c:779
+#: src/game.c:1051
 msgid "Just watch what happens:"
 msgstr ""
 
-#: src/game.c:780
+#: src/game.c:1052
 msgid "(Press a key to start)"
 msgstr ""
 
-#: src/game.c:793
+#: src/game.c:1065
 msgid "Notice the answer"
 msgstr ""
 
-#: src/game.c:803
+#: src/game.c:1075
 msgid "If it gets hit again, the"
 msgstr ""
 
-#: src/game.c:804
+#: src/game.c:1076
 msgid "penguin leaves."
 msgstr ""
 
-#: src/game.c:805
+#: src/game.c:1077
 msgid "(Press a key when ready)"
 msgstr ""
 
-#: src/game.c:824
+#: src/game.c:1100
 msgid "You can fix the igloos"
 msgstr ""
 
-#: src/game.c:825
+#: src/game.c:1101
 msgid "by stopping bonus comets."
 msgstr ""
 
-#: src/game.c:834
+#: src/game.c:1112
 msgid "Zap it now!"
 msgstr ""
 
-#: src/game.c:838
+#: src/game.c:1118
 msgid "Great job!"
 msgstr ""
 
-#: src/game.c:852
+#: src/game.c:1136
 msgid "Quit at any time by pressing"
 msgstr ""
 
-#: src/game.c:853
+#: src/game.c:1137
 msgid "'Esc' or clicking the 'X'"
 msgstr ""
 
-#: src/game.c:854
+#: src/game.c:1138
 msgid "in the upper right corner."
 msgstr ""
 
-#: src/game.c:855
+#: src/game.c:1139
 msgid "Do it now, and then play!"
 msgstr ""
 
-#: src/highscore.c:212 src/titlescreen.c:849
+#: src/highscore.c:167
 msgid "Hall Of Fame"
 msgstr "Corredor da Fama"
 
-#: src/highscore.c:232 src/highscore.c:253 src/titlescreen.c:785
-#: src/titlescreen.c:844
+#: src/highscore.c:187 src/highscore.c:208
 msgid "Space Cadet"
 msgstr "Cadete Espacial"
 
-#: src/highscore.c:235 src/titlescreen.c:786 src/titlescreen.c:845
+#: src/highscore.c:190
 msgid "Scout"
 msgstr "Batedor"
 
-#: src/highscore.c:238 src/titlescreen.c:787 src/titlescreen.c:846
+#: src/highscore.c:193
 msgid "Ranger"
 msgstr ""
 
-#: src/highscore.c:241 src/titlescreen.c:788 src/titlescreen.c:847
+#: src/highscore.c:196
 msgid "Ace"
 msgstr "Ás"
 
-#: src/highscore.c:244 src/titlescreen.c:789 src/titlescreen.c:848
+#: src/highscore.c:199
 msgid "Commando"
 msgstr ""
 
-#: src/highscore.c:247 src/titlescreen.c:968
+#: src/highscore.c:202
 msgid "Factors"
 msgstr ""
 
-#: src/highscore.c:250 src/titlescreen.c:969
+#: src/highscore.c:205
 msgid "Fractions"
 msgstr ""
 
-#: src/highscore.c:353
+#: src/highscore.c:286
 msgid "You Are In The Hall of Fame!"
 msgstr ""
 
-#: src/highscore.c:353
+#: src/highscore.c:286
 msgid "Enter Your Name:"
 msgstr ""
 
-#: src/multiplayer.c:244
+#: src/multiplayer.c:183
+#, c-format
+msgid "Then %s\n"
+msgstr ""
+
+#: src/multiplayer.c:258
 msgid "Who is playing first?"
 msgstr ""
 
-#: src/multiplayer.c:244 src/multiplayer.c:246
+#: src/multiplayer.c:258 src/multiplayer.c:260
 msgid "Enter your name:"
 msgstr ""
 
-#: src/multiplayer.c:246
+#: src/multiplayer.c:260
 msgid "Who is playing next?"
 msgstr ""
 
-#: src/multiplayer.c:260
+#: src/multiplayer.c:274
 msgid "How many rounds will you play?"
 msgstr ""
 
-#: src/multiplayer.c:260
+#: src/multiplayer.c:274
 msgid "Enter a number"
 msgstr ""
 
-#: src/titlescreen.c:487
+#: src/titlescreen.c:476
 msgid "Work In Progress!"
 msgstr "Trabalho em Progresso!"
 
-#: src/titlescreen.c:488
+#: src/titlescreen.c:477
 msgid "This feature is not ready yet"
 msgstr ""
 
-#: src/titlescreen.c:489
+#: src/titlescreen.c:478
 msgid "Discuss the future of TuxMath at"
 msgstr "Discuta o futuro do TuxMath em"
 
-#: src/titlescreen.c:490
+#: src/titlescreen.c:479
 msgid "tuxmath-devel at lists.sourceforge.net"
 msgstr "tuxmath-devel at lists.sourceforge.net"
 
-#: src/titlescreen.c:647
-msgid "Play Alone"
-msgstr ""
-
-#: src/titlescreen.c:648
-msgid "Play With Friends"
-msgstr ""
-
-#: src/titlescreen.c:649
-msgid "Factoroids!"
-msgstr ""
-
-#: src/titlescreen.c:650
-msgid "Help"
-msgstr "Ajuda"
-
-#: src/titlescreen.c:651
-msgid "More Options"
-msgstr "Mais Opções"
-
-#: src/titlescreen.c:652
-msgid "Quit"
-msgstr "Sair"
-
-#: src/titlescreen.c:726
-msgid "Math Command Training Academy"
-msgstr ""
-
-#: src/titlescreen.c:727
-msgid "Math Command Fleet Missions"
-msgstr ""
-
-#: src/titlescreen.c:728
-msgid "Play Arcade Game"
-msgstr ""
-
-#: src/titlescreen.c:729
-msgid "Play Custom Game"
-msgstr ""
-
-#: src/titlescreen.c:730 src/titlescreen.c:781 src/titlescreen.c:790
-#: src/titlescreen.c:850 src/titlescreen.c:970
-msgid "Main menu"
-msgstr "Menu principal"
-
-#: src/titlescreen.c:779
-msgid "Score Sweep"
-msgstr ""
-
-#: src/titlescreen.c:780
-msgid "Elimination"
-msgstr ""
-
-#: src/titlescreen.c:824
-msgid "How many kids are playing?"
-msgstr ""
-
-#: src/titlescreen.c:825
-msgid "(Between 2 and 4 players)"
-msgstr ""
-
-#: src/titlescreen.c:944
-msgid "Edit 'options' file in your home directory"
-msgstr ""
-
-#: src/titlescreen.c:945
-msgid "to create customized game!"
-msgstr ""
-
-#: src/titlescreen.c:946
-msgid "Press a key or click your mouse to start game."
-msgstr "Pressione uma tecla ou clique o rato para começar o jogo."
-
-#: src/titlescreen.c:947
-msgid "See README.txt for more information"
-msgstr "Veja o README.txt para mais informações!"
-
-#: src/titlescreen.c:1062
-msgid "Demo"
-msgstr "Demonstração"
-
-#: src/titlescreen.c:1063
-msgid "Project Info"
-msgstr "Informação do Projecto"
-
-#: src/titlescreen.c:1064
-msgid "Credits"
-msgstr "Créditos"
-
-#: src/titlescreen.c:1065
-msgid "Main Menu"
-msgstr "Menu Principal"
-
-#: src/titlescreen.c:1113
-msgid "TuxMath is free and open-source!"
-msgstr "TuxMath é livre e com código aberto!"
-
-#: src/titlescreen.c:1114
-msgid "You can help make it better by reporting problems,"
-msgstr "Você pode ajudar o TuxMath ao reportar problemas,"
-
-#: src/titlescreen.c:1115
-msgid "suggesting improvements, or adding code."
-msgstr "sugerindo melhorias, ou adicionando código."
-
-#: src/titlescreen.c:1116
-msgid "Discuss the future at tuxmath-devel at lists.sourceforge.net"
-msgstr "Discuta o futuro em tuxmath-devel at lists.sourceforge.net"
-
 #: data/missions/lessons/descr_lessons:1
 msgid "Number Typing"
 msgstr ""
@@ -768,3 +663,45 @@
 #: data/missions/lessons/descr_lessons:58
 msgid "Division of Positives and Negatives"
 msgstr "Divisão de Positivos e Negativos"
+
+#~ msgid "Help"
+#~ msgstr "Ajuda"
+
+#~ msgid "More Options"
+#~ msgstr "Mais Opções"
+
+#~ msgid "Quit"
+#~ msgstr "Sair"
+
+#~ msgid "Main menu"
+#~ msgstr "Menu principal"
+
+#~ msgid "Press a key or click your mouse to start game."
+#~ msgstr "Pressione uma tecla ou clique o rato para começar o jogo."
+
+#~ msgid "See README.txt for more information"
+#~ msgstr "Veja o README.txt para mais informações!"
+
+#~ msgid "Demo"
+#~ msgstr "Demonstração"
+
+#~ msgid "Project Info"
+#~ msgstr "Informação do Projecto"
+
+#~ msgid "Credits"
+#~ msgstr "Créditos"
+
+#~ msgid "Main Menu"
+#~ msgstr "Menu Principal"
+
+#~ msgid "TuxMath is free and open-source!"
+#~ msgstr "TuxMath é livre e com código aberto!"
+
+#~ msgid "You can help make it better by reporting problems,"
+#~ msgstr "Você pode ajudar o TuxMath ao reportar problemas,"
+
+#~ msgid "suggesting improvements, or adding code."
+#~ msgstr "sugerindo melhorias, ou adicionando código."
+
+#~ msgid "Discuss the future at tuxmath-devel at lists.sourceforge.net"
+#~ msgstr "Discuta o futuro em tuxmath-devel at lists.sourceforge.net"

Modified: tuxmath/trunk/po/pt_BR.gmo
===================================================================
(Binary files differ)

Modified: tuxmath/trunk/po/pt_BR.po
===================================================================
--- tuxmath/trunk/po/pt_BR.po	2009-09-04 19:47:19 UTC (rev 1488)
+++ tuxmath/trunk/po/pt_BR.po	2009-09-05 02:31:43 UTC (rev 1489)
@@ -13,7 +13,7 @@
 msgstr ""
 "Project-Id-Version: tuxmath\n"
 "Report-Msgid-Bugs-To: tuxmath-devel at lists.sourceforge.net\n"
-"POT-Creation-Date: 2009-03-06 06:12-0600\n"
+"POT-Creation-Date: 2009-09-04 21:22-0500\n"
 "PO-Revision-Date: 2008-03-03 21:35+0000\n"
 "Last-Translator: Laudeci Oliveira <laudeci at gmail.com>\n"
 "Language-Team: Brazilian Portuguese <pt_BR at li.org>\n"
@@ -210,333 +210,228 @@
 
 #: src/credits.c:108
 msgid ""
-"A full copy of the GPL is included with the documenation for this program."
+"A full copy of the GPL is included with the documentation for this program."
 msgstr ""
 
 #: src/credits.c:110
 msgid "For more information about Free Software and the GNU GPL, visit:"
 msgstr ""
 
-#: src/factoroids.c:558
+#: src/factoroids.c:552
 msgid "FACTOROIDS: to win, you need destroy all the asteroids."
 msgstr ""
 
-#: src/factoroids.c:559 src/factoroids.c:570
+#: src/factoroids.c:553 src/factoroids.c:564
 msgid "Use the arrow keys to turn or go forward.  Aim at an asteroid,"
 msgstr ""
 
-#: src/factoroids.c:560
+#: src/factoroids.c:554
 msgid "type one of its factors, and press space or return"
 msgstr ""
 
-#: src/factoroids.c:561
+#: src/factoroids.c:555
 msgid "to split it into its factors.  Rocks with prime numbers are destroyed!"
 msgstr ""
 
-#: src/factoroids.c:569
+#: src/factoroids.c:563
 msgid "FRACTIONS: to win, you need destroy all the asteroids"
 msgstr ""
 
-#: src/factoroids.c:571
+#: src/factoroids.c:565
 msgid "type a number that can simplify the fraction, and press space or return"
 msgstr ""
 
-#: src/factoroids.c:572
+#: src/factoroids.c:566
 msgid ""
 "to split it.  Destroy fractions that can not be further simplified in a "
 "single shot!"
 msgstr ""
 
-#: src/game.c:717
+#: src/game.c:989
 msgid "Welcome to TuxMath!"
 msgstr ""
 
-#: src/game.c:734
+#: src/game.c:1006
 msgid "Your mission is to save your"
 msgstr ""
 
-#: src/game.c:735
+#: src/game.c:1007
 msgid "penguins' igloos from the"
 msgstr ""
 
-#: src/game.c:736
+#: src/game.c:1008
 msgid "falling comets."
 msgstr ""
 
-#: src/game.c:755
+#: src/game.c:1027
 msgid "Stop a comet by typing"
 msgstr ""
 
-#: src/game.c:756
+#: src/game.c:1028
 msgid "the answer to the math problem"
 msgstr ""
 
-#: src/game.c:757
+#: src/game.c:1029
 msgid "and hitting 'space' or 'enter'."
 msgstr ""
 
-#: src/game.c:758
+#: src/game.c:1030
 msgid "Try it now!"
 msgstr ""
 
-#: src/game.c:766
+#: src/game.c:1038
 msgid "Good shot!"
 msgstr ""
 
-#: src/game.c:776
+#: src/game.c:1048
 msgid "If an igloo gets hit by a comet,"
 msgstr ""
 
-#: src/game.c:777
+#: src/game.c:1049
 msgid "it melts. But don't worry: the"
 msgstr ""
 
-#: src/game.c:778
+#: src/game.c:1050
 msgid "penguin is OK!"
 msgstr ""
 
-#: src/game.c:779
+#: src/game.c:1051
 msgid "Just watch what happens:"
 msgstr ""
 
-#: src/game.c:780
+#: src/game.c:1052
 msgid "(Press a key to start)"
 msgstr ""
 
-#: src/game.c:793
+#: src/game.c:1065
 msgid "Notice the answer"
 msgstr ""
 
-#: src/game.c:803
+#: src/game.c:1075
 msgid "If it gets hit again, the"
 msgstr ""
 
-#: src/game.c:804
+#: src/game.c:1076
 msgid "penguin leaves."
 msgstr ""
 
-#: src/game.c:805
+#: src/game.c:1077
 msgid "(Press a key when ready)"
 msgstr ""
 
-#: src/game.c:824
+#: src/game.c:1100
 msgid "You can fix the igloos"
 msgstr ""
 
-#: src/game.c:825
+#: src/game.c:1101
 msgid "by stopping bonus comets."
 msgstr ""
 
-#: src/game.c:834
+#: src/game.c:1112
 msgid "Zap it now!"
 msgstr ""
 
-#: src/game.c:838
+#: src/game.c:1118
 msgid "Great job!"
 msgstr ""
 
-#: src/game.c:852
+#: src/game.c:1136
 msgid "Quit at any time by pressing"
 msgstr ""
 
-#: src/game.c:853
+#: src/game.c:1137
 msgid "'Esc' or clicking the 'X'"
 msgstr ""
 
-#: src/game.c:854
+#: src/game.c:1138
 msgid "in the upper right corner."
 msgstr ""
 
-#: src/game.c:855
+#: src/game.c:1139
 msgid "Do it now, and then play!"
 msgstr ""
 
-#: src/highscore.c:212 src/titlescreen.c:849
+#: src/highscore.c:167
 msgid "Hall Of Fame"
 msgstr "Hall da Fama"
 
-#: src/highscore.c:232 src/highscore.c:253 src/titlescreen.c:785
-#: src/titlescreen.c:844
+#: src/highscore.c:187 src/highscore.c:208
 msgid "Space Cadet"
 msgstr "Cadete Espacial"
 
-#: src/highscore.c:235 src/titlescreen.c:786 src/titlescreen.c:845
+#: src/highscore.c:190
 msgid "Scout"
 msgstr "Sentinela"
 
-#: src/highscore.c:238 src/titlescreen.c:787 src/titlescreen.c:846
+#: src/highscore.c:193
 msgid "Ranger"
 msgstr "Defensor"
 
-#: src/highscore.c:241 src/titlescreen.c:788 src/titlescreen.c:847
+#: src/highscore.c:196
 msgid "Ace"
 msgstr "Especialista"
 
-#: src/highscore.c:244 src/titlescreen.c:789 src/titlescreen.c:848
+#: src/highscore.c:199
 msgid "Commando"
 msgstr ""
 
-#: src/highscore.c:247 src/titlescreen.c:968
+#: src/highscore.c:202
 msgid "Factors"
 msgstr ""
 
-#: src/highscore.c:250 src/titlescreen.c:969
+#: src/highscore.c:205
 msgid "Fractions"
 msgstr ""
 
-#: src/highscore.c:353
+#: src/highscore.c:286
 msgid "You Are In The Hall of Fame!"
 msgstr ""
 
-#: src/highscore.c:353
+#: src/highscore.c:286
 msgid "Enter Your Name:"
 msgstr ""
 
-#: src/multiplayer.c:244
+#: src/multiplayer.c:183
+#, c-format
+msgid "Then %s\n"
+msgstr ""
+
+#: src/multiplayer.c:258
 msgid "Who is playing first?"
 msgstr ""
 
-#: src/multiplayer.c:244 src/multiplayer.c:246
+#: src/multiplayer.c:258 src/multiplayer.c:260
 msgid "Enter your name:"
 msgstr ""
 
-#: src/multiplayer.c:246
+#: src/multiplayer.c:260
 msgid "Who is playing next?"
 msgstr ""
 
-#: src/multiplayer.c:260
+#: src/multiplayer.c:274
 msgid "How many rounds will you play?"
 msgstr ""
 
-#: src/multiplayer.c:260
+#: src/multiplayer.c:274
 msgid "Enter a number"
 msgstr ""
 
-#: src/titlescreen.c:487
+#: src/titlescreen.c:476
 msgid "Work In Progress!"
 msgstr "Trabalho em curso"
 
-#: src/titlescreen.c:488
+#: src/titlescreen.c:477
 msgid "This feature is not ready yet"
 msgstr "Esta função ainda não está disponível"
 
-#: src/titlescreen.c:489
+#: src/titlescreen.c:478
 msgid "Discuss the future of TuxMath at"
 msgstr "Discutir o futuro do TuxMath em"
 
-#: src/titlescreen.c:490
+#: src/titlescreen.c:479
 msgid "tuxmath-devel at lists.sourceforge.net"
 msgstr "tuxmath-devel at lists.sourceforge.net"
 
-#: src/titlescreen.c:647
-msgid "Play Alone"
-msgstr ""
-
-#: src/titlescreen.c:648
-msgid "Play With Friends"
-msgstr ""
-
-#: src/titlescreen.c:649
-msgid "Factoroids!"
-msgstr ""
-
-#: src/titlescreen.c:650
-msgid "Help"
-msgstr "Ajuda"
-
-#: src/titlescreen.c:651
-msgid "More Options"
-msgstr "Mais Opções"
-
-#: src/titlescreen.c:652
-msgid "Quit"
-msgstr "Sair"
-
-#: src/titlescreen.c:726
-msgid "Math Command Training Academy"
-msgstr "Comando de Treinamento Matemático Acadêmico"
-
-#: src/titlescreen.c:727
-msgid "Math Command Fleet Missions"
-msgstr ""
-
-#: src/titlescreen.c:728
-msgid "Play Arcade Game"
-msgstr "Jogar jogo de Arcade"
-
-#: src/titlescreen.c:729
-msgid "Play Custom Game"
-msgstr "Jogar um Jogo Personalizado"
-
-#: src/titlescreen.c:730 src/titlescreen.c:781 src/titlescreen.c:790
-#: src/titlescreen.c:850 src/titlescreen.c:970
-msgid "Main menu"
-msgstr "Menu Principal"
-
-#: src/titlescreen.c:779
-msgid "Score Sweep"
-msgstr ""
-
-#: src/titlescreen.c:780
-msgid "Elimination"
-msgstr ""
-
-#: src/titlescreen.c:824
-msgid "How many kids are playing?"
-msgstr ""
-
-#: src/titlescreen.c:825
-msgid "(Between 2 and 4 players)"
-msgstr ""
-
-#: src/titlescreen.c:944
-msgid "Edit 'options' file in your home directory"
-msgstr "Edite o arquivo 'options\" no seu diretório home"
-
-#: src/titlescreen.c:945
-msgid "to create customized game!"
-msgstr "criar jogo personalizado!"
-
-#: src/titlescreen.c:946
-msgid "Press a key or click your mouse to start game."
-msgstr "Pressione uma tecla ou clique com seu mouse para iniciar o jogo."
-
-#: src/titlescreen.c:947
-msgid "See README.txt for more information"
-msgstr "Leia o README.txt para mais informações"
-
-#: src/titlescreen.c:1062
-msgid "Demo"
-msgstr "Demonstração"
-
-#: src/titlescreen.c:1063
-msgid "Project Info"
-msgstr "Informação do Projeto"
-
-#: src/titlescreen.c:1064
-msgid "Credits"
-msgstr "Créditos"
-
-#: src/titlescreen.c:1065
-msgid "Main Menu"
-msgstr "Menu Principal"
-
-#: src/titlescreen.c:1113
-msgid "TuxMath is free and open-source!"
-msgstr "TuxMath é gratuíto e software livre!"
-
-#: src/titlescreen.c:1114
-msgid "You can help make it better by reporting problems,"
-msgstr "Você pode ajudar a torná-lo melhor reportando problemas."
-
-#: src/titlescreen.c:1115
-msgid "suggesting improvements, or adding code."
-msgstr "sugerindo melhorias, ou programando."
-
-#: src/titlescreen.c:1116
-msgid "Discuss the future at tuxmath-devel at lists.sourceforge.net"
-msgstr "Discutir o futuro em tuxmath-devel at lists.sourceforge.net"
-
 #: data/missions/lessons/descr_lessons:1
 msgid "Number Typing"
 msgstr "Digitar Número"
@@ -770,3 +665,60 @@
 #: data/missions/lessons/descr_lessons:58
 msgid "Division of Positives and Negatives"
 msgstr "Divisão de Positivos e Negativos"
+
+#~ msgid "Help"
+#~ msgstr "Ajuda"
+
+#~ msgid "More Options"
+#~ msgstr "Mais Opções"
+
+#~ msgid "Quit"
+#~ msgstr "Sair"
+
+#~ msgid "Math Command Training Academy"
+#~ msgstr "Comando de Treinamento Matemático Acadêmico"
+
+#~ msgid "Play Arcade Game"
+#~ msgstr "Jogar jogo de Arcade"
+
+#~ msgid "Play Custom Game"
+#~ msgstr "Jogar um Jogo Personalizado"
+
+#~ msgid "Main menu"
+#~ msgstr "Menu Principal"
+
+#~ msgid "Edit 'options' file in your home directory"
+#~ msgstr "Edite o arquivo 'options\" no seu diretório home"
+
+#~ msgid "to create customized game!"
+#~ msgstr "criar jogo personalizado!"
+
+#~ msgid "Press a key or click your mouse to start game."
+#~ msgstr "Pressione uma tecla ou clique com seu mouse para iniciar o jogo."
+
+#~ msgid "See README.txt for more information"
+#~ msgstr "Leia o README.txt para mais informações"
+
+#~ msgid "Demo"
+#~ msgstr "Demonstração"
+
+#~ msgid "Project Info"
+#~ msgstr "Informação do Projeto"
+
+#~ msgid "Credits"
+#~ msgstr "Créditos"
+
+#~ msgid "Main Menu"
+#~ msgstr "Menu Principal"
+
+#~ msgid "TuxMath is free and open-source!"
+#~ msgstr "TuxMath é gratuíto e software livre!"
+
+#~ msgid "You can help make it better by reporting problems,"
+#~ msgstr "Você pode ajudar a torná-lo melhor reportando problemas."
+
+#~ msgid "suggesting improvements, or adding code."
+#~ msgstr "sugerindo melhorias, ou programando."
+
+#~ msgid "Discuss the future at tuxmath-devel at lists.sourceforge.net"
+#~ msgstr "Discutir o futuro em tuxmath-devel at lists.sourceforge.net"

Modified: tuxmath/trunk/po/ru.gmo
===================================================================
(Binary files differ)

Modified: tuxmath/trunk/po/ru.po
===================================================================
--- tuxmath/trunk/po/ru.po	2009-09-04 19:47:19 UTC (rev 1488)
+++ tuxmath/trunk/po/ru.po	2009-09-05 02:31:43 UTC (rev 1489)
@@ -10,7 +10,7 @@
 msgstr ""
 "Project-Id-Version: tuxmath\n"
 "Report-Msgid-Bugs-To: tuxmath-devel at lists.sourceforge.net\n"
-"POT-Creation-Date: 2009-03-06 06:12-0600\n"
+"POT-Creation-Date: 2009-09-04 21:22-0500\n"
 "PO-Revision-Date: 2008-03-01 06:56+0000\n"
 "Last-Translator: Александр AldeX Крылов <Unknown>\n"
 "Language-Team: Russian <ru at li.org>\n"
@@ -207,333 +207,228 @@
 
 #: src/credits.c:108
 msgid ""
-"A full copy of the GPL is included with the documenation for this program."
+"A full copy of the GPL is included with the documentation for this program."
 msgstr ""
 
 #: src/credits.c:110
 msgid "For more information about Free Software and the GNU GPL, visit:"
 msgstr ""
 
-#: src/factoroids.c:558
+#: src/factoroids.c:552
 msgid "FACTOROIDS: to win, you need destroy all the asteroids."
 msgstr ""
 
-#: src/factoroids.c:559 src/factoroids.c:570
+#: src/factoroids.c:553 src/factoroids.c:564
 msgid "Use the arrow keys to turn or go forward.  Aim at an asteroid,"
 msgstr ""
 
-#: src/factoroids.c:560
+#: src/factoroids.c:554
 msgid "type one of its factors, and press space or return"
 msgstr ""
 
-#: src/factoroids.c:561
+#: src/factoroids.c:555
 msgid "to split it into its factors.  Rocks with prime numbers are destroyed!"
 msgstr ""
 
-#: src/factoroids.c:569
+#: src/factoroids.c:563
 msgid "FRACTIONS: to win, you need destroy all the asteroids"
 msgstr ""
 
-#: src/factoroids.c:571
+#: src/factoroids.c:565
 msgid "type a number that can simplify the fraction, and press space or return"
 msgstr ""
 
-#: src/factoroids.c:572
+#: src/factoroids.c:566
 msgid ""
 "to split it.  Destroy fractions that can not be further simplified in a "
 "single shot!"
 msgstr ""
 
-#: src/game.c:717
+#: src/game.c:989
 msgid "Welcome to TuxMath!"
 msgstr ""
 
-#: src/game.c:734
+#: src/game.c:1006
 msgid "Your mission is to save your"
 msgstr ""
 
-#: src/game.c:735
+#: src/game.c:1007
 msgid "penguins' igloos from the"
 msgstr ""
 
-#: src/game.c:736
+#: src/game.c:1008
 msgid "falling comets."
 msgstr ""
 
-#: src/game.c:755
+#: src/game.c:1027
 msgid "Stop a comet by typing"
 msgstr ""
 
-#: src/game.c:756
+#: src/game.c:1028
 msgid "the answer to the math problem"
 msgstr ""
 
-#: src/game.c:757
+#: src/game.c:1029
 msgid "and hitting 'space' or 'enter'."
 msgstr ""
 
-#: src/game.c:758
+#: src/game.c:1030
 msgid "Try it now!"
 msgstr ""
 
-#: src/game.c:766
+#: src/game.c:1038
 msgid "Good shot!"
 msgstr ""
 
-#: src/game.c:776
+#: src/game.c:1048
 msgid "If an igloo gets hit by a comet,"
 msgstr ""
 
-#: src/game.c:777
+#: src/game.c:1049
 msgid "it melts. But don't worry: the"
 msgstr ""
 
-#: src/game.c:778
+#: src/game.c:1050
 msgid "penguin is OK!"
 msgstr ""
 
-#: src/game.c:779
+#: src/game.c:1051
 msgid "Just watch what happens:"
 msgstr ""
 
-#: src/game.c:780
+#: src/game.c:1052
 msgid "(Press a key to start)"
 msgstr ""
 
-#: src/game.c:793
+#: src/game.c:1065
 msgid "Notice the answer"
 msgstr ""
 
-#: src/game.c:803
+#: src/game.c:1075
 msgid "If it gets hit again, the"
 msgstr ""
 
-#: src/game.c:804
+#: src/game.c:1076
 msgid "penguin leaves."
 msgstr ""
 
-#: src/game.c:805
+#: src/game.c:1077
 msgid "(Press a key when ready)"
 msgstr ""
 
-#: src/game.c:824
+#: src/game.c:1100
 msgid "You can fix the igloos"
 msgstr ""
 
-#: src/game.c:825
+#: src/game.c:1101
 msgid "by stopping bonus comets."
 msgstr ""
 
-#: src/game.c:834
+#: src/game.c:1112
 msgid "Zap it now!"
 msgstr ""
 
-#: src/game.c:838
+#: src/game.c:1118
 msgid "Great job!"
 msgstr ""
 
-#: src/game.c:852
+#: src/game.c:1136
 msgid "Quit at any time by pressing"
 msgstr ""
 
-#: src/game.c:853
+#: src/game.c:1137
 msgid "'Esc' or clicking the 'X'"
 msgstr ""
 
-#: src/game.c:854
+#: src/game.c:1138
 msgid "in the upper right corner."
 msgstr ""
 
-#: src/game.c:855
+#: src/game.c:1139
 msgid "Do it now, and then play!"
 msgstr ""
 
-#: src/highscore.c:212 src/titlescreen.c:849
+#: src/highscore.c:167
 msgid "Hall Of Fame"
 msgstr "Зал славы"
 
-#: src/highscore.c:232 src/highscore.c:253 src/titlescreen.c:785
-#: src/titlescreen.c:844
+#: src/highscore.c:187 src/highscore.c:208
 msgid "Space Cadet"
 msgstr "Космический курсант"
 
-#: src/highscore.c:235 src/titlescreen.c:786 src/titlescreen.c:845
+#: src/highscore.c:190
 msgid "Scout"
 msgstr "Разведчик"
 
-#: src/highscore.c:238 src/titlescreen.c:787 src/titlescreen.c:846
+#: src/highscore.c:193
 msgid "Ranger"
 msgstr "Рейнджер"
 
-#: src/highscore.c:241 src/titlescreen.c:788 src/titlescreen.c:847
+#: src/highscore.c:196
 msgid "Ace"
 msgstr "Ас"
 
-#: src/highscore.c:244 src/titlescreen.c:789 src/titlescreen.c:848
+#: src/highscore.c:199
 msgid "Commando"
 msgstr ""
 
-#: src/highscore.c:247 src/titlescreen.c:968
+#: src/highscore.c:202
 msgid "Factors"
 msgstr ""
 
-#: src/highscore.c:250 src/titlescreen.c:969
+#: src/highscore.c:205
 msgid "Fractions"
 msgstr ""
 
-#: src/highscore.c:353
+#: src/highscore.c:286
 msgid "You Are In The Hall of Fame!"
 msgstr ""
 
-#: src/highscore.c:353
+#: src/highscore.c:286
 msgid "Enter Your Name:"
 msgstr ""
 
-#: src/multiplayer.c:244
+#: src/multiplayer.c:183
+#, c-format
+msgid "Then %s\n"
+msgstr ""
+
+#: src/multiplayer.c:258
 msgid "Who is playing first?"
 msgstr ""
 
-#: src/multiplayer.c:244 src/multiplayer.c:246
+#: src/multiplayer.c:258 src/multiplayer.c:260
 msgid "Enter your name:"
 msgstr ""
 
-#: src/multiplayer.c:246
+#: src/multiplayer.c:260
 msgid "Who is playing next?"
 msgstr ""
 
-#: src/multiplayer.c:260
+#: src/multiplayer.c:274
 msgid "How many rounds will you play?"
 msgstr ""
 
-#: src/multiplayer.c:260
+#: src/multiplayer.c:274
 msgid "Enter a number"
 msgstr ""
 
-#: src/titlescreen.c:487
+#: src/titlescreen.c:476
 msgid "Work In Progress!"
 msgstr "Работа продолжается!"
 
-#: src/titlescreen.c:488
+#: src/titlescreen.c:477
 msgid "This feature is not ready yet"
 msgstr "Эта функция пока не готова"
 
-#: src/titlescreen.c:489
+#: src/titlescreen.c:478
 msgid "Discuss the future of TuxMath at"
 msgstr "Обсудить будущее TuxMath на"
 
-#: src/titlescreen.c:490
+#: src/titlescreen.c:479
 msgid "tuxmath-devel at lists.sourceforge.net"
 msgstr "tuxmath-devel at lists.sourceforge.net"
 
-#: src/titlescreen.c:647
-msgid "Play Alone"
-msgstr ""
-
-#: src/titlescreen.c:648
-msgid "Play With Friends"
-msgstr ""
-
-#: src/titlescreen.c:649
-msgid "Factoroids!"
-msgstr ""
-
-#: src/titlescreen.c:650
-msgid "Help"
-msgstr "Помощь"
-
-#: src/titlescreen.c:651
-msgid "More Options"
-msgstr "Дополнительные настройки"
-
-#: src/titlescreen.c:652
-msgid "Quit"
-msgstr "Выход"
-
-#: src/titlescreen.c:726
-msgid "Math Command Training Academy"
-msgstr "Учебная академия по арифметике"
-
-#: src/titlescreen.c:727
-msgid "Math Command Fleet Missions"
-msgstr ""
-
-#: src/titlescreen.c:728
-msgid "Play Arcade Game"
-msgstr "Играть в аркадную игру"
-
-#: src/titlescreen.c:729
-msgid "Play Custom Game"
-msgstr "Играть в пользовательскую игру"
-
-#: src/titlescreen.c:730 src/titlescreen.c:781 src/titlescreen.c:790
-#: src/titlescreen.c:850 src/titlescreen.c:970
-msgid "Main menu"
-msgstr "Главное меню"
-
-#: src/titlescreen.c:779
-msgid "Score Sweep"
-msgstr ""
-
-#: src/titlescreen.c:780
-msgid "Elimination"
-msgstr ""
-
-#: src/titlescreen.c:824
-msgid "How many kids are playing?"
-msgstr ""
-
-#: src/titlescreen.c:825
-msgid "(Between 2 and 4 players)"
-msgstr ""
-
-#: src/titlescreen.c:944
-msgid "Edit 'options' file in your home directory"
-msgstr "Редактировать файл параметров в вашей домашней директории"
-
-#: src/titlescreen.c:945
-msgid "to create customized game!"
-msgstr "для создания пользовательской игры!"
-
-#: src/titlescreen.c:946
-msgid "Press a key or click your mouse to start game."
-msgstr "Нажмите клавишу или кликните мышью для запуска игры."
-
-#: src/titlescreen.c:947
-msgid "See README.txt for more information"
-msgstr "Смотрите README.txt для дополнительной информации"
-
-#: src/titlescreen.c:1062
-msgid "Demo"
-msgstr "Демонстрация"
-
-#: src/titlescreen.c:1063
-msgid "Project Info"
-msgstr "Информация о проекте"
-
-#: src/titlescreen.c:1064
-msgid "Credits"
-msgstr "Разработчики"
-
-#: src/titlescreen.c:1065
-msgid "Main Menu"
-msgstr "Главное меню"
-
-#: src/titlescreen.c:1113
-msgid "TuxMath is free and open-source!"
-msgstr "TuxMath свободный и открытый!"
-
-#: src/titlescreen.c:1114
-msgid "You can help make it better by reporting problems,"
-msgstr "Вы можете улучшить этот продукт, сообщив о проблеме,"
-
-#: src/titlescreen.c:1115
-msgid "suggesting improvements, or adding code."
-msgstr "предложив улучшение или добавив код."
-
-#: src/titlescreen.c:1116
-msgid "Discuss the future at tuxmath-devel at lists.sourceforge.net"
-msgstr "Обсудите будущее программы на tuxmath-devel at lists.sourceforge.net"
-
 #: data/missions/lessons/descr_lessons:1
 msgid "Number Typing"
 msgstr "Числовой ввод"
@@ -767,3 +662,60 @@
 #: data/missions/lessons/descr_lessons:58
 msgid "Division of Positives and Negatives"
 msgstr "Деление положительных и отрицательных"
+
+#~ msgid "Help"
+#~ msgstr "Помощь"
+
+#~ msgid "More Options"
+#~ msgstr "Дополнительные настройки"
+
+#~ msgid "Quit"
+#~ msgstr "Выход"
+
+#~ msgid "Math Command Training Academy"
+#~ msgstr "Учебная академия по арифметике"
+
+#~ msgid "Play Arcade Game"
+#~ msgstr "Играть в аркадную игру"
+
+#~ msgid "Play Custom Game"
+#~ msgstr "Играть в пользовательскую игру"
+
+#~ msgid "Main menu"
+#~ msgstr "Главное меню"
+
+#~ msgid "Edit 'options' file in your home directory"
+#~ msgstr "Редактировать файл параметров в вашей домашней директории"
+
+#~ msgid "to create customized game!"
+#~ msgstr "для создания пользовательской игры!"
+
+#~ msgid "Press a key or click your mouse to start game."
+#~ msgstr "Нажмите клавишу или кликните мышью для запуска игры."
+
+#~ msgid "See README.txt for more information"
+#~ msgstr "Смотрите README.txt для дополнительной информации"
+
+#~ msgid "Demo"
+#~ msgstr "Демонстрация"
+
+#~ msgid "Project Info"
+#~ msgstr "Информация о проекте"
+
+#~ msgid "Credits"
+#~ msgstr "Разработчики"
+
+#~ msgid "Main Menu"
+#~ msgstr "Главное меню"
+
+#~ msgid "TuxMath is free and open-source!"
+#~ msgstr "TuxMath свободный и открытый!"
+
+#~ msgid "You can help make it better by reporting problems,"
+#~ msgstr "Вы можете улучшить этот продукт, сообщив о проблеме,"
+
+#~ msgid "suggesting improvements, or adding code."
+#~ msgstr "предложив улучшение или добавив код."
+
+#~ msgid "Discuss the future at tuxmath-devel at lists.sourceforge.net"
+#~ msgstr "Обсудите будущее программы на tuxmath-devel at lists.sourceforge.net"

Modified: tuxmath/trunk/po/sk.gmo
===================================================================
(Binary files differ)

Modified: tuxmath/trunk/po/sk.po
===================================================================
--- tuxmath/trunk/po/sk.po	2009-09-04 19:47:19 UTC (rev 1488)
+++ tuxmath/trunk/po/sk.po	2009-09-05 02:31:43 UTC (rev 1489)
@@ -10,7 +10,7 @@
 msgstr ""
 "Project-Id-Version: tuxmath\n"
 "Report-Msgid-Bugs-To: tuxmath-devel at lists.sourceforge.net\n"
-"POT-Creation-Date: 2009-03-06 06:12-0600\n"
+"POT-Creation-Date: 2009-09-04 21:22-0500\n"
 "PO-Revision-Date: 2008-03-16 09:41+0000\n"
 "Last-Translator: Štefan Lučivjanský <lucorp at azet.sk>\n"
 "Language-Team: Slovak <sk at li.org>\n"
@@ -207,333 +207,228 @@
 
 #: src/credits.c:108
 msgid ""
-"A full copy of the GPL is included with the documenation for this program."
+"A full copy of the GPL is included with the documentation for this program."
 msgstr ""
 
 #: src/credits.c:110
 msgid "For more information about Free Software and the GNU GPL, visit:"
 msgstr ""
 
-#: src/factoroids.c:558
+#: src/factoroids.c:552
 msgid "FACTOROIDS: to win, you need destroy all the asteroids."
 msgstr ""
 
-#: src/factoroids.c:559 src/factoroids.c:570
+#: src/factoroids.c:553 src/factoroids.c:564
 msgid "Use the arrow keys to turn or go forward.  Aim at an asteroid,"
 msgstr ""
 
-#: src/factoroids.c:560
+#: src/factoroids.c:554
 msgid "type one of its factors, and press space or return"
 msgstr ""
 
-#: src/factoroids.c:561
+#: src/factoroids.c:555
 msgid "to split it into its factors.  Rocks with prime numbers are destroyed!"
 msgstr ""
 
-#: src/factoroids.c:569
+#: src/factoroids.c:563
 msgid "FRACTIONS: to win, you need destroy all the asteroids"
 msgstr ""
 
-#: src/factoroids.c:571
+#: src/factoroids.c:565
 msgid "type a number that can simplify the fraction, and press space or return"
 msgstr ""
 
-#: src/factoroids.c:572
+#: src/factoroids.c:566
 msgid ""
 "to split it.  Destroy fractions that can not be further simplified in a "
 "single shot!"
 msgstr ""
 
-#: src/game.c:717
+#: src/game.c:989
 msgid "Welcome to TuxMath!"
 msgstr ""
 
-#: src/game.c:734
+#: src/game.c:1006
 msgid "Your mission is to save your"
 msgstr ""
 
-#: src/game.c:735
+#: src/game.c:1007
 msgid "penguins' igloos from the"
 msgstr ""
 
-#: src/game.c:736
+#: src/game.c:1008
 msgid "falling comets."
 msgstr ""
 
-#: src/game.c:755
+#: src/game.c:1027
 msgid "Stop a comet by typing"
 msgstr ""
 
-#: src/game.c:756
+#: src/game.c:1028
 msgid "the answer to the math problem"
 msgstr ""
 
-#: src/game.c:757
+#: src/game.c:1029
 msgid "and hitting 'space' or 'enter'."
 msgstr ""
 
-#: src/game.c:758
+#: src/game.c:1030
 msgid "Try it now!"
 msgstr ""
 
-#: src/game.c:766
+#: src/game.c:1038
 msgid "Good shot!"
 msgstr ""
 
-#: src/game.c:776
+#: src/game.c:1048
 msgid "If an igloo gets hit by a comet,"
 msgstr ""
 
-#: src/game.c:777
+#: src/game.c:1049
 msgid "it melts. But don't worry: the"
 msgstr ""
 
-#: src/game.c:778
+#: src/game.c:1050
 msgid "penguin is OK!"
 msgstr ""
 
-#: src/game.c:779
+#: src/game.c:1051
 msgid "Just watch what happens:"
 msgstr ""
 
-#: src/game.c:780
+#: src/game.c:1052
 msgid "(Press a key to start)"
 msgstr ""
 
-#: src/game.c:793
+#: src/game.c:1065
 msgid "Notice the answer"
 msgstr ""
 
-#: src/game.c:803
+#: src/game.c:1075
 msgid "If it gets hit again, the"
 msgstr ""
 
-#: src/game.c:804
+#: src/game.c:1076
 msgid "penguin leaves."
 msgstr ""
 
-#: src/game.c:805
+#: src/game.c:1077
 msgid "(Press a key when ready)"
 msgstr ""
 
-#: src/game.c:824
+#: src/game.c:1100
 msgid "You can fix the igloos"
 msgstr ""
 
-#: src/game.c:825
+#: src/game.c:1101
 msgid "by stopping bonus comets."
 msgstr ""
 
-#: src/game.c:834
+#: src/game.c:1112
 msgid "Zap it now!"
 msgstr ""
 
-#: src/game.c:838
+#: src/game.c:1118
 msgid "Great job!"
 msgstr ""
 
-#: src/game.c:852
+#: src/game.c:1136
 msgid "Quit at any time by pressing"
 msgstr ""
 
-#: src/game.c:853
+#: src/game.c:1137
 msgid "'Esc' or clicking the 'X'"
 msgstr ""
 
-#: src/game.c:854
+#: src/game.c:1138
 msgid "in the upper right corner."
 msgstr ""
 
-#: src/game.c:855
+#: src/game.c:1139
 msgid "Do it now, and then play!"
 msgstr ""
 
-#: src/highscore.c:212 src/titlescreen.c:849
+#: src/highscore.c:167
 msgid "Hall Of Fame"
 msgstr "Sieň slávy"
 
-#: src/highscore.c:232 src/highscore.c:253 src/titlescreen.c:785
-#: src/titlescreen.c:844
+#: src/highscore.c:187 src/highscore.c:208
 msgid "Space Cadet"
 msgstr "Vesmírny kadet"
 
-#: src/highscore.c:235 src/titlescreen.c:786 src/titlescreen.c:845
+#: src/highscore.c:190
 msgid "Scout"
 msgstr "Skaut"
 
-#: src/highscore.c:238 src/titlescreen.c:787 src/titlescreen.c:846
+#: src/highscore.c:193
 msgid "Ranger"
 msgstr "Poručík"
 
-#: src/highscore.c:241 src/titlescreen.c:788 src/titlescreen.c:847
+#: src/highscore.c:196
 msgid "Ace"
 msgstr "Eso"
 
-#: src/highscore.c:244 src/titlescreen.c:789 src/titlescreen.c:848
+#: src/highscore.c:199
 msgid "Commando"
 msgstr ""
 
-#: src/highscore.c:247 src/titlescreen.c:968
+#: src/highscore.c:202
 msgid "Factors"
 msgstr ""
 
-#: src/highscore.c:250 src/titlescreen.c:969
+#: src/highscore.c:205
 msgid "Fractions"
 msgstr ""
 
-#: src/highscore.c:353
+#: src/highscore.c:286
 msgid "You Are In The Hall of Fame!"
 msgstr ""
 
-#: src/highscore.c:353
+#: src/highscore.c:286
 msgid "Enter Your Name:"
 msgstr ""
 
-#: src/multiplayer.c:244
+#: src/multiplayer.c:183
+#, c-format
+msgid "Then %s\n"
+msgstr ""
+
+#: src/multiplayer.c:258
 msgid "Who is playing first?"
 msgstr ""
 
-#: src/multiplayer.c:244 src/multiplayer.c:246
+#: src/multiplayer.c:258 src/multiplayer.c:260
 msgid "Enter your name:"
 msgstr ""
 
-#: src/multiplayer.c:246
+#: src/multiplayer.c:260
 msgid "Who is playing next?"
 msgstr ""
 
-#: src/multiplayer.c:260
+#: src/multiplayer.c:274
 msgid "How many rounds will you play?"
 msgstr ""
 
-#: src/multiplayer.c:260
+#: src/multiplayer.c:274
 msgid "Enter a number"
 msgstr ""
 
-#: src/titlescreen.c:487
+#: src/titlescreen.c:476
 msgid "Work In Progress!"
 msgstr "Spracováva sa!"
 
-#: src/titlescreen.c:488
+#: src/titlescreen.c:477
 msgid "This feature is not ready yet"
 msgstr "Táto vlastnosť ešte nie je pripravená"
 
-#: src/titlescreen.c:489
+#: src/titlescreen.c:478
 msgid "Discuss the future of TuxMath at"
 msgstr "Diskutuj o budúcnosti TuxMath na"
 
-#: src/titlescreen.c:490
+#: src/titlescreen.c:479
 msgid "tuxmath-devel at lists.sourceforge.net"
 msgstr "tuxmath-devel at lists.sourceforge.net"
 
-#: src/titlescreen.c:647
-msgid "Play Alone"
-msgstr ""
-
-#: src/titlescreen.c:648
-msgid "Play With Friends"
-msgstr ""
-
-#: src/titlescreen.c:649
-msgid "Factoroids!"
-msgstr ""
-
-#: src/titlescreen.c:650
-msgid "Help"
-msgstr "Pomocník"
-
-#: src/titlescreen.c:651
-msgid "More Options"
-msgstr "Viac možností"
-
-#: src/titlescreen.c:652
-msgid "Quit"
-msgstr "Koniec"
-
-#: src/titlescreen.c:726
-msgid "Math Command Training Academy"
-msgstr "Cvičná akadémia matematického ovládania"
-
-#: src/titlescreen.c:727
-msgid "Math Command Fleet Missions"
-msgstr ""
-
-#: src/titlescreen.c:728
-msgid "Play Arcade Game"
-msgstr "Hrať arkádovú hru"
-
-#: src/titlescreen.c:729
-msgid "Play Custom Game"
-msgstr "Hrať vlastnú hru"
-
-#: src/titlescreen.c:730 src/titlescreen.c:781 src/titlescreen.c:790
-#: src/titlescreen.c:850 src/titlescreen.c:970
-msgid "Main menu"
-msgstr "Hlavná ponuka"
-
-#: src/titlescreen.c:779
-msgid "Score Sweep"
-msgstr ""
-
-#: src/titlescreen.c:780
-msgid "Elimination"
-msgstr ""
-
-#: src/titlescreen.c:824
-msgid "How many kids are playing?"
-msgstr ""
-
-#: src/titlescreen.c:825
-msgid "(Between 2 and 4 players)"
-msgstr ""
-
-#: src/titlescreen.c:944
-msgid "Edit 'options' file in your home directory"
-msgstr "Uprav súbor «options » vo svojom domovskom priečinku,"
-
-#: src/titlescreen.c:945
-msgid "to create customized game!"
-msgstr "aby si mohol vytvoriť svoju vlastnú hru!"
-
-#: src/titlescreen.c:946
-msgid "Press a key or click your mouse to start game."
-msgstr "Pre spustenie hry stlačte ľubovoľnú klávesu, alebo kliknite myšou."
-
-#: src/titlescreen.c:947
-msgid "See README.txt for more information"
-msgstr "Pre viac informácií pozrite README.txt"
-
-#: src/titlescreen.c:1062
-msgid "Demo"
-msgstr "Demo"
-
-#: src/titlescreen.c:1063
-msgid "Project Info"
-msgstr "Informácie o projekte"
-
-#: src/titlescreen.c:1064
-msgid "Credits"
-msgstr "Tvorcovia"
-
-#: src/titlescreen.c:1065
-msgid "Main Menu"
-msgstr "Hlavná ponuka"
-
-#: src/titlescreen.c:1113
-msgid "TuxMath is free and open-source!"
-msgstr "TuxMath je slobodný software!"
-
-#: src/titlescreen.c:1114
-msgid "You can help make it better by reporting problems,"
-msgstr "Môžeš ho vylepšiť aj ty oznamovaním problémov,"
-
-#: src/titlescreen.c:1115
-msgid "suggesting improvements, or adding code."
-msgstr "navrhovaním vylepšení, alebo pridaním kódu"
-
-#: src/titlescreen.c:1116
-msgid "Discuss the future at tuxmath-devel at lists.sourceforge.net"
-msgstr "Diskutuj o budúcnosti na tuxmath-devel at lists.sourceforge.net"
-
 #: data/missions/lessons/descr_lessons:1
 msgid "Number Typing"
 msgstr "Písanie čísiel"
@@ -767,3 +662,60 @@
 #: data/missions/lessons/descr_lessons:58
 msgid "Division of Positives and Negatives"
 msgstr "Delenie kladných a záporných čísiel"
+
+#~ msgid "Help"
+#~ msgstr "Pomocník"
+
+#~ msgid "More Options"
+#~ msgstr "Viac možností"
+
+#~ msgid "Quit"
+#~ msgstr "Koniec"
+
+#~ msgid "Math Command Training Academy"
+#~ msgstr "Cvičná akadémia matematického ovládania"
+
+#~ msgid "Play Arcade Game"
+#~ msgstr "Hrať arkádovú hru"
+
+#~ msgid "Play Custom Game"
+#~ msgstr "Hrať vlastnú hru"
+
+#~ msgid "Main menu"
+#~ msgstr "Hlavná ponuka"
+
+#~ msgid "Edit 'options' file in your home directory"
+#~ msgstr "Uprav súbor «options » vo svojom domovskom priečinku,"
+
+#~ msgid "to create customized game!"
+#~ msgstr "aby si mohol vytvoriť svoju vlastnú hru!"
+
+#~ msgid "Press a key or click your mouse to start game."
+#~ msgstr "Pre spustenie hry stlačte ľubovoľnú klávesu, alebo kliknite myšou."
+
+#~ msgid "See README.txt for more information"
+#~ msgstr "Pre viac informácií pozrite README.txt"
+
+#~ msgid "Demo"
+#~ msgstr "Demo"
+
+#~ msgid "Project Info"
+#~ msgstr "Informácie o projekte"
+
+#~ msgid "Credits"
+#~ msgstr "Tvorcovia"
+
+#~ msgid "Main Menu"
+#~ msgstr "Hlavná ponuka"
+
+#~ msgid "TuxMath is free and open-source!"
+#~ msgstr "TuxMath je slobodný software!"
+
+#~ msgid "You can help make it better by reporting problems,"
+#~ msgstr "Môžeš ho vylepšiť aj ty oznamovaním problémov,"
+
+#~ msgid "suggesting improvements, or adding code."
+#~ msgstr "navrhovaním vylepšení, alebo pridaním kódu"
+
+#~ msgid "Discuss the future at tuxmath-devel at lists.sourceforge.net"
+#~ msgstr "Diskutuj o budúcnosti na tuxmath-devel at lists.sourceforge.net"

Modified: tuxmath/trunk/po/sv.gmo
===================================================================
(Binary files differ)

Modified: tuxmath/trunk/po/sv.po
===================================================================
--- tuxmath/trunk/po/sv.po	2009-09-04 19:47:19 UTC (rev 1488)
+++ tuxmath/trunk/po/sv.po	2009-09-05 02:31:43 UTC (rev 1489)
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: tuxmath\n"
 "Report-Msgid-Bugs-To: tuxmath-devel at lists.sourceforge.net\n"
-"POT-Creation-Date: 2009-03-06 06:12-0600\n"
+"POT-Creation-Date: 2009-09-04 21:22-0500\n"
 "PO-Revision-Date: \n"
 "Last-Translator: Daniel Nylander <po at danielnylander.se>\n"
 "Language-Team: Swedish <tp-sv at listor.tp-sv.se>\n"
@@ -206,339 +206,233 @@
 
 #: src/credits.c:108
 msgid ""
-"A full copy of the GPL is included with the documenation for this program."
+"A full copy of the GPL is included with the documentation for this program."
 msgstr ""
 
 #: src/credits.c:110
 msgid "For more information about Free Software and the GNU GPL, visit:"
 msgstr ""
 
-#: src/factoroids.c:558
+#: src/factoroids.c:552
 msgid "FACTOROIDS: to win, you need destroy all the asteroids."
 msgstr "NÄMNARE: för att vinna behöver du förstöra alla asteroider."
 
-#: src/factoroids.c:559 src/factoroids.c:570
+#: src/factoroids.c:553 src/factoroids.c:564
 msgid "Use the arrow keys to turn or go forward.  Aim at an asteroid,"
 msgstr ""
 "Använd piltangenterna för att svänga eller gå framåt. Sikta på en asteroid,"
 
-#: src/factoroids.c:560
+#: src/factoroids.c:554
 msgid "type one of its factors, and press space or return"
 msgstr "skriv in en av dess nämnare och tryck på Blanksteg eller Return"
 
-#: src/factoroids.c:561
+#: src/factoroids.c:555
 msgid "to split it into its factors.  Rocks with prime numbers are destroyed!"
 msgstr "för att dela den i sina nämnare. Stenar med primtal förstörs!"
 
-#: src/factoroids.c:569
+#: src/factoroids.c:563
 msgid "FRACTIONS: to win, you need destroy all the asteroids"
 msgstr "BRÅK: för att vinna behöver du förstöra alla asteroider"
 
-#: src/factoroids.c:571
+#: src/factoroids.c:565
 msgid "type a number that can simplify the fraction, and press space or return"
 msgstr ""
 "skriv in ett tal som kan förenkla bråket och tryck på Blanksteg eller Return"
 
-#: src/factoroids.c:572
+#: src/factoroids.c:566
 msgid ""
 "to split it.  Destroy fractions that can not be further simplified in a "
 "single shot!"
 msgstr ""
 "för att dela det. Förstör bråken som inte kan förenklas mer i ett enda skott!"
 
-#: src/game.c:717
+#: src/game.c:989
 msgid "Welcome to TuxMath!"
 msgstr "Välkommen till TuxMath!"
 
-#: src/game.c:734
+#: src/game.c:1006
 msgid "Your mission is to save your"
 msgstr "Ditt uppdrag är att rädda dina"
 
-#: src/game.c:735
+#: src/game.c:1007
 msgid "penguins' igloos from the"
 msgstr "pingviners igloos från"
 
-#: src/game.c:736
+#: src/game.c:1008
 msgid "falling comets."
 msgstr "fallande kometer."
 
-#: src/game.c:755
+#: src/game.c:1027
 msgid "Stop a comet by typing"
 msgstr "Stoppa en komet genom att"
 
-#: src/game.c:756
+#: src/game.c:1028
 msgid "the answer to the math problem"
 msgstr "skriva in svaret på matteproblemet,"
 
-#: src/game.c:757
+#: src/game.c:1029
 msgid "and hitting 'space' or 'enter'."
 msgstr "trycka på \"blanksteg\" eller \"Enter\"."
 
-#: src/game.c:758
+#: src/game.c:1030
 msgid "Try it now!"
 msgstr "Prova det nu!"
 
-#: src/game.c:766
+#: src/game.c:1038
 msgid "Good shot!"
 msgstr "Bra skjutet!"
 
-#: src/game.c:776
+#: src/game.c:1048
 msgid "If an igloo gets hit by a comet,"
 msgstr "Om en igloo träffas av en komet,"
 
-#: src/game.c:777
+#: src/game.c:1049
 msgid "it melts. But don't worry: the"
 msgstr "så smälter den. Men var lugn,"
 
-#: src/game.c:778
+#: src/game.c:1050
 msgid "penguin is OK!"
 msgstr "pingvinen är OK!"
 
-#: src/game.c:779
+#: src/game.c:1051
 msgid "Just watch what happens:"
 msgstr "Se vad som händer:"
 
-#: src/game.c:780
+#: src/game.c:1052
 msgid "(Press a key to start)"
 msgstr "(Tryck på en tangent)"
 
-#: src/game.c:793
+#: src/game.c:1065
 msgid "Notice the answer"
 msgstr "Observera svaret"
 
-#: src/game.c:803
+#: src/game.c:1075
 msgid "If it gets hit again, the"
 msgstr "Om den blir träffad igen,"
 
-#: src/game.c:804
+#: src/game.c:1076
 msgid "penguin leaves."
 msgstr "kommer pingvinen att gå."
 
-#: src/game.c:805
+#: src/game.c:1077
 msgid "(Press a key when ready)"
 msgstr "(Tryck på en tangent)"
 
-#: src/game.c:824
+#: src/game.c:1100
 msgid "You can fix the igloos"
 msgstr "Du kan bygga nya igloos"
 
-#: src/game.c:825
+#: src/game.c:1101
 msgid "by stopping bonus comets."
 msgstr "genom att stoppa bonuskometer."
 
-#: src/game.c:834
+#: src/game.c:1112
 msgid "Zap it now!"
 msgstr "Skjut den nu!"
 
-#: src/game.c:838
+#: src/game.c:1118
 msgid "Great job!"
 msgstr "Bra jobbat!"
 
-#: src/game.c:852
+#: src/game.c:1136
 msgid "Quit at any time by pressing"
 msgstr "Avsluta när du vill genom att"
 
-#: src/game.c:853
+#: src/game.c:1137
 msgid "'Esc' or clicking the 'X'"
 msgstr "trycka \"Esc\" eller klicka på \"X\""
 
-#: src/game.c:854
+#: src/game.c:1138
 msgid "in the upper right corner."
 msgstr "i övre högra hörnet."
 
-#: src/game.c:855
+#: src/game.c:1139
 msgid "Do it now, and then play!"
 msgstr "Gör det nu och spela sedan!"
 
-#: src/highscore.c:212 src/titlescreen.c:849
+#: src/highscore.c:167
 msgid "Hall Of Fame"
 msgstr "Poänglistan"
 
-#: src/highscore.c:232 src/highscore.c:253 src/titlescreen.c:785
-#: src/titlescreen.c:844
+#: src/highscore.c:187 src/highscore.c:208
 msgid "Space Cadet"
 msgstr "Rymdkadett"
 
-#: src/highscore.c:235 src/titlescreen.c:786 src/titlescreen.c:845
+#: src/highscore.c:190
 msgid "Scout"
 msgstr "Scout"
 
-#: src/highscore.c:238 src/titlescreen.c:787 src/titlescreen.c:846
+#: src/highscore.c:193
 msgid "Ranger"
 msgstr "Jägare"
 
-#: src/highscore.c:241 src/titlescreen.c:788 src/titlescreen.c:847
+#: src/highscore.c:196
 msgid "Ace"
 msgstr "Mästare"
 
-#: src/highscore.c:244 src/titlescreen.c:789 src/titlescreen.c:848
+#: src/highscore.c:199
 msgid "Commando"
 msgstr "Kommandosoldat"
 
-#: src/highscore.c:247 src/titlescreen.c:968
+#: src/highscore.c:202
 msgid "Factors"
 msgstr "Nämnare"
 
-#: src/highscore.c:250 src/titlescreen.c:969
+#: src/highscore.c:205
 msgid "Fractions"
 msgstr "Bråk"
 
-#: src/highscore.c:353
+#: src/highscore.c:286
 msgid "You Are In The Hall of Fame!"
 msgstr "Du kom med på poänglistan!"
 
-#: src/highscore.c:353
+#: src/highscore.c:286
 msgid "Enter Your Name:"
 msgstr "Skriv ditt namn:"
 
-#: src/multiplayer.c:244
+#: src/multiplayer.c:183
+#, c-format
+msgid "Then %s\n"
+msgstr ""
+
+#: src/multiplayer.c:258
 msgid "Who is playing first?"
 msgstr ""
 
-#: src/multiplayer.c:244 src/multiplayer.c:246
+#: src/multiplayer.c:258 src/multiplayer.c:260
 #, fuzzy
 msgid "Enter your name:"
 msgstr "Skriv ditt namn:"
 
-#: src/multiplayer.c:246
+#: src/multiplayer.c:260
 msgid "Who is playing next?"
 msgstr ""
 
-#: src/multiplayer.c:260
+#: src/multiplayer.c:274
 msgid "How many rounds will you play?"
 msgstr ""
 
-#: src/multiplayer.c:260
+#: src/multiplayer.c:274
 #, fuzzy
 msgid "Enter a number"
 msgstr "Skriv ditt namn:"
 
-#: src/titlescreen.c:487
+#: src/titlescreen.c:476
 msgid "Work In Progress!"
 msgstr "Arbete pågår!"
 
-#: src/titlescreen.c:488
+#: src/titlescreen.c:477
 msgid "This feature is not ready yet"
 msgstr "Denna funktion är inte färdig ännu"
 
-#: src/titlescreen.c:489
+#: src/titlescreen.c:478
 msgid "Discuss the future of TuxMath at"
 msgstr "Diskutera framtiden för TuxMath på"
 
-#: src/titlescreen.c:490
+#: src/titlescreen.c:479
 msgid "tuxmath-devel at lists.sourceforge.net"
 msgstr "tuxmath-devel at lists.sourceforge.net"
 
-#: src/titlescreen.c:647
-msgid "Play Alone"
-msgstr "Spela ensam"
-
-#: src/titlescreen.c:648
-msgid "Play With Friends"
-msgstr "Spela med vänner"
-
-#: src/titlescreen.c:649
-#, fuzzy
-msgid "Factoroids!"
-msgstr "Nämnare"
-
-#: src/titlescreen.c:650
-msgid "Help"
-msgstr "Hjälp"
-
-#: src/titlescreen.c:651
-msgid "More Options"
-msgstr "Fler alternativ"
-
-#: src/titlescreen.c:652
-msgid "Quit"
-msgstr "Avsluta"
-
-#: src/titlescreen.c:726
-msgid "Math Command Training Academy"
-msgstr "Akademin för matematikträning"
-
-#: src/titlescreen.c:727
-msgid "Math Command Fleet Missions"
-msgstr "Uppdrag för matematikflottan"
-
-#: src/titlescreen.c:728
-msgid "Play Arcade Game"
-msgstr "Spela arkadspel"
-
-#: src/titlescreen.c:729
-msgid "Play Custom Game"
-msgstr "Spela anpassat spel"
-
-#: src/titlescreen.c:730 src/titlescreen.c:781 src/titlescreen.c:790
-#: src/titlescreen.c:850 src/titlescreen.c:970
-msgid "Main menu"
-msgstr "Huvudmeny"
-
-#: src/titlescreen.c:779
-msgid "Score Sweep"
-msgstr ""
-
-#: src/titlescreen.c:780
-msgid "Elimination"
-msgstr ""
-
-#: src/titlescreen.c:824
-msgid "How many kids are playing?"
-msgstr ""
-
-#: src/titlescreen.c:825
-msgid "(Between 2 and 4 players)"
-msgstr ""
-
-#: src/titlescreen.c:944
-msgid "Edit 'options' file in your home directory"
-msgstr "Redigera filen \"options\" i din hemkatalog"
-
-#: src/titlescreen.c:945
-msgid "to create customized game!"
-msgstr "för att skapa anpassade spel!"
-
-#: src/titlescreen.c:946
-msgid "Press a key or click your mouse to start game."
-msgstr "Tryck på en tangent eller klicka med musen för att starta spelet."
-
-#: src/titlescreen.c:947
-msgid "See README.txt for more information"
-msgstr "Se README.txt för mer information"
-
-#: src/titlescreen.c:1062
-msgid "Demo"
-msgstr "Demonstration"
-
-#: src/titlescreen.c:1063
-msgid "Project Info"
-msgstr "Projektinformation"
-
-#: src/titlescreen.c:1064
-msgid "Credits"
-msgstr "Tack till"
-
-#: src/titlescreen.c:1065
-msgid "Main Menu"
-msgstr "Huvudmeny"
-
-#: src/titlescreen.c:1113
-msgid "TuxMath is free and open-source!"
-msgstr "TuxMath är gratis och öppen källkod!"
-
-#: src/titlescreen.c:1114
-msgid "You can help make it better by reporting problems,"
-msgstr "Du kan hjälpa oss att göra det bättre genom att rapportera problem,"
-
-#: src/titlescreen.c:1115
-msgid "suggesting improvements, or adding code."
-msgstr "föreslå förbättringar eller bidra med programkod."
-
-#: src/titlescreen.c:1116
-msgid "Discuss the future at tuxmath-devel at lists.sourceforge.net"
-msgstr "Diskutera framtiden på tuxmath-devel at lists.sourceforge.net"
-
 #: data/missions/lessons/descr_lessons:1
 msgid "Number Typing"
 msgstr "Skriv in tal"
@@ -773,6 +667,76 @@
 msgid "Division of Positives and Negatives"
 msgstr "Division med positiva och negativa tal"
 
+#~ msgid "Play Alone"
+#~ msgstr "Spela ensam"
+
+#~ msgid "Play With Friends"
+#~ msgstr "Spela med vänner"
+
+#, fuzzy
+#~ msgid "Factoroids!"
+#~ msgstr "Nämnare"
+
+#~ msgid "Help"
+#~ msgstr "Hjälp"
+
+#~ msgid "More Options"
+#~ msgstr "Fler alternativ"
+
+#~ msgid "Quit"
+#~ msgstr "Avsluta"
+
+#~ msgid "Math Command Training Academy"
+#~ msgstr "Akademin för matematikträning"
+
+#~ msgid "Math Command Fleet Missions"
+#~ msgstr "Uppdrag för matematikflottan"
+
+#~ msgid "Play Arcade Game"
+#~ msgstr "Spela arkadspel"
+
+#~ msgid "Play Custom Game"
+#~ msgstr "Spela anpassat spel"
+
+#~ msgid "Main menu"
+#~ msgstr "Huvudmeny"
+
+#~ msgid "Edit 'options' file in your home directory"
+#~ msgstr "Redigera filen \"options\" i din hemkatalog"
+
+#~ msgid "to create customized game!"
+#~ msgstr "för att skapa anpassade spel!"
+
+#~ msgid "Press a key or click your mouse to start game."
+#~ msgstr "Tryck på en tangent eller klicka med musen för att starta spelet."
+
+#~ msgid "See README.txt for more information"
+#~ msgstr "Se README.txt för mer information"
+
+#~ msgid "Demo"
+#~ msgstr "Demonstration"
+
+#~ msgid "Project Info"
+#~ msgstr "Projektinformation"
+
+#~ msgid "Credits"
+#~ msgstr "Tack till"
+
+#~ msgid "Main Menu"
+#~ msgstr "Huvudmeny"
+
+#~ msgid "TuxMath is free and open-source!"
+#~ msgstr "TuxMath är gratis och öppen källkod!"
+
+#~ msgid "You can help make it better by reporting problems,"
+#~ msgstr "Du kan hjälpa oss att göra det bättre genom att rapportera problem,"
+
+#~ msgid "suggesting improvements, or adding code."
+#~ msgstr "föreslå förbättringar eller bidra med programkod."
+
+#~ msgid "Discuss the future at tuxmath-devel at lists.sourceforge.net"
+#~ msgstr "Diskutera framtiden på tuxmath-devel at lists.sourceforge.net"
+
 #~ msgid "The penguins need your help! Comets"
 #~ msgstr "Pingvinerna behöver din hjälp! Kometer"
 

Modified: tuxmath/trunk/po/tr.gmo
===================================================================
(Binary files differ)

Modified: tuxmath/trunk/po/tr.po
===================================================================
--- tuxmath/trunk/po/tr.po	2009-09-04 19:47:19 UTC (rev 1488)
+++ tuxmath/trunk/po/tr.po	2009-09-05 02:31:43 UTC (rev 1489)
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: tr2\n"
 "Report-Msgid-Bugs-To: tuxmath-devel at lists.sourceforge.net\n"
-"POT-Creation-Date: 2009-03-06 06:12-0600\n"
+"POT-Creation-Date: 2009-09-04 21:22-0500\n"
 "PO-Revision-Date: 2008-12-07 15:54+0200\n"
 "Last-Translator: Doruk Fisek <dfisek at fisek.com.tr>\n"
 "Language-Team: Turkish <gnu-tr-u12a at lists.sourceforge.net>\n"
@@ -205,338 +205,230 @@
 
 #: src/credits.c:108
 msgid ""
-"A full copy of the GPL is included with the documenation for this program."
+"A full copy of the GPL is included with the documentation for this program."
 msgstr ""
 
 #: src/credits.c:110
 msgid "For more information about Free Software and the GNU GPL, visit:"
 msgstr ""
 
-#: src/factoroids.c:558
+#: src/factoroids.c:552
 msgid "FACTOROIDS: to win, you need destroy all the asteroids."
 msgstr ""
 
-#: src/factoroids.c:559 src/factoroids.c:570
+#: src/factoroids.c:553 src/factoroids.c:564
 msgid "Use the arrow keys to turn or go forward.  Aim at an asteroid,"
 msgstr "Ok tuşlarını kullanarak dön ya da ileri git. Bir asteroidi hedef al,"
 
-#: src/factoroids.c:560
+#: src/factoroids.c:554
 msgid "type one of its factors, and press space or return"
 msgstr "çarpanlarından birini yaz ve boşluk ya da enter'e "
 
-#: src/factoroids.c:561
+#: src/factoroids.c:555
 msgid "to split it into its factors.  Rocks with prime numbers are destroyed!"
 msgstr "basarak çarpanlarına ayır. Asal sayılar olan kayalar yok oluyor!"
 
-#: src/factoroids.c:569
+#: src/factoroids.c:563
 msgid "FRACTIONS: to win, you need destroy all the asteroids"
 msgstr "KESİRLER: Kazanmak için tüm asteroitleri yok etmen gerekiyor."
 
-#: src/factoroids.c:571
+#: src/factoroids.c:565
 msgid "type a number that can simplify the fraction, and press space or return"
 msgstr ""
 "Kesiri basitleştirebilecek bir sayıyı yazıp boşluk ya da enter'e basarak onu"
 
-#: src/factoroids.c:572
+#: src/factoroids.c:566
 msgid ""
 "to split it.  Destroy fractions that can not be further simplified in a "
 "single shot!"
 msgstr ""
 "parçalayın. Daha fazla basitleştirilemeyen kesirleri tek bir atışta yok et!"
 
-#: src/game.c:717
+#: src/game.c:989
 msgid "Welcome to TuxMath!"
 msgstr "TuxMath'e Hoş Geldin!"
 
-#: src/game.c:734
+#: src/game.c:1006
 msgid "Your mission is to save your"
 msgstr "Görevin penguenlerin evlerini"
 
-#: src/game.c:735
+#: src/game.c:1007
 msgid "penguins' igloos from the"
 msgstr "düşen kuyruklu yıldızlardan"
 
-#: src/game.c:736
+#: src/game.c:1008
 msgid "falling comets."
 msgstr "korumak."
 
-#: src/game.c:755
+#: src/game.c:1027
 msgid "Stop a comet by typing"
 msgstr "Kuyruklu yıldızı durdurmak için"
 
-#: src/game.c:756
+#: src/game.c:1028
 msgid "the answer to the math problem"
 msgstr "matematik probleminin yanıtını yaz"
 
-#: src/game.c:757
+#: src/game.c:1029
 msgid "and hitting 'space' or 'enter'."
 msgstr "ve 'boşluk' ya da 'enter' tuşuna bas."
 
-#: src/game.c:758
+#: src/game.c:1030
 msgid "Try it now!"
 msgstr "Şimdi dene!"
 
-#: src/game.c:766
+#: src/game.c:1038
 msgid "Good shot!"
 msgstr "İyi atış!"
 
-#: src/game.c:776
+#: src/game.c:1048
 msgid "If an igloo gets hit by a comet,"
 msgstr "Eğer bir ev kuyruklu yıldız tarafından"
 
-#: src/game.c:777
+#: src/game.c:1049
 msgid "it melts. But don't worry: the"
 msgstr "vurulursa erir. Ama merak etme :"
 
-#: src/game.c:778
+#: src/game.c:1050
 msgid "penguin is OK!"
 msgstr "içindeki penguene zarar gelmez!"
 
-#: src/game.c:779
+#: src/game.c:1051
 msgid "Just watch what happens:"
 msgstr "Yalnız ne olduğunu izle:"
 
-#: src/game.c:780
+#: src/game.c:1052
 msgid "(Press a key to start)"
 msgstr "(Başlamak için bir tuşa bas)"
 
-#: src/game.c:793
+#: src/game.c:1065
 msgid "Notice the answer"
 msgstr "Yanıta dikkat et"
 
-#: src/game.c:803
+#: src/game.c:1075
 msgid "If it gets hit again, the"
 msgstr "Eğer ev tekrar vurulursa,"
 
-#: src/game.c:804
+#: src/game.c:1076
 msgid "penguin leaves."
 msgstr "içindeki penguen evi terk eder."
 
-#: src/game.c:805
+#: src/game.c:1077
 msgid "(Press a key when ready)"
 msgstr "(Hazır olunca herhangi bir tuşa basın)"
 
-#: src/game.c:824
+#: src/game.c:1100
 msgid "You can fix the igloos"
 msgstr "Ek kuyruklu yıldızları durdurarak"
 
-#: src/game.c:825
+#: src/game.c:1101
 msgid "by stopping bonus comets."
 msgstr "evlerini tamir edebilirsin."
 
-#: src/game.c:834
+#: src/game.c:1112
 msgid "Zap it now!"
 msgstr "Hemen vur onu!"
 
-#: src/game.c:838
+#: src/game.c:1118
 msgid "Great job!"
 msgstr "İyi iş!"
 
-#: src/game.c:852
+#: src/game.c:1136
 msgid "Quit at any time by pressing"
 msgstr "Her an 'Esc'e basarak ya da"
 
-#: src/game.c:853
+#: src/game.c:1137
 msgid "'Esc' or clicking the 'X'"
 msgstr "sağ üst köşedeki 'X'e"
 
-#: src/game.c:854
+#: src/game.c:1138
 msgid "in the upper right corner."
 msgstr "tıklayarak çıkabilirsin."
 
-#: src/game.c:855
+#: src/game.c:1139
 msgid "Do it now, and then play!"
 msgstr "Hemen şimdi yap ve sonra oyna!"
 
-#: src/highscore.c:212 src/titlescreen.c:849
+#: src/highscore.c:167
 msgid "Hall Of Fame"
 msgstr "Gurur Tablosu"
 
-#: src/highscore.c:232 src/highscore.c:253 src/titlescreen.c:785
-#: src/titlescreen.c:844
+#: src/highscore.c:187 src/highscore.c:208
 msgid "Space Cadet"
 msgstr "Uzay Tertibi"
 
-#: src/highscore.c:235 src/titlescreen.c:786 src/titlescreen.c:845
+#: src/highscore.c:190
 msgid "Scout"
 msgstr "İzci"
 
-#: src/highscore.c:238 src/titlescreen.c:787 src/titlescreen.c:846
+#: src/highscore.c:193
 msgid "Ranger"
 msgstr "Korucu"
 
-#: src/highscore.c:241 src/titlescreen.c:788 src/titlescreen.c:847
+#: src/highscore.c:196
 msgid "Ace"
 msgstr "As"
 
-#: src/highscore.c:244 src/titlescreen.c:789 src/titlescreen.c:848
+#: src/highscore.c:199
 msgid "Commando"
 msgstr "Komando"
 
-#: src/highscore.c:247 src/titlescreen.c:968
+#: src/highscore.c:202
 msgid "Factors"
 msgstr "Çarpanlar"
 
-#: src/highscore.c:250 src/titlescreen.c:969
+#: src/highscore.c:205
 msgid "Fractions"
 msgstr "Kesirler"
 
-#: src/highscore.c:353
+#: src/highscore.c:286
 msgid "You Are In The Hall of Fame!"
 msgstr ""
 
-#: src/highscore.c:353
+#: src/highscore.c:286
 msgid "Enter Your Name:"
 msgstr ""
 
-#: src/multiplayer.c:244
+#: src/multiplayer.c:183
+#, c-format
+msgid "Then %s\n"
+msgstr ""
+
+#: src/multiplayer.c:258
 msgid "Who is playing first?"
 msgstr ""
 
-#: src/multiplayer.c:244 src/multiplayer.c:246
+#: src/multiplayer.c:258 src/multiplayer.c:260
 msgid "Enter your name:"
 msgstr ""
 
-#: src/multiplayer.c:246
+#: src/multiplayer.c:260
 msgid "Who is playing next?"
 msgstr ""
 
-#: src/multiplayer.c:260
+#: src/multiplayer.c:274
 msgid "How many rounds will you play?"
 msgstr ""
 
-#: src/multiplayer.c:260
+#: src/multiplayer.c:274
 msgid "Enter a number"
 msgstr ""
 
-#: src/titlescreen.c:487
+#: src/titlescreen.c:476
 msgid "Work In Progress!"
 msgstr "Çalışmalar Sürüyor!"
 
-#: src/titlescreen.c:488
+#: src/titlescreen.c:477
 msgid "This feature is not ready yet"
 msgstr "Bu özellik henüz hazır değil"
 
-#: src/titlescreen.c:489
+#: src/titlescreen.c:478
 msgid "Discuss the future of TuxMath at"
 msgstr "Tuxmath'in geleceğini tartışıldığı liste :"
 
-#: src/titlescreen.c:490
+#: src/titlescreen.c:479
 msgid "tuxmath-devel at lists.sourceforge.net"
 msgstr "tuxmath-devel at lists.sourceforge.net"
 
-#: src/titlescreen.c:647
-msgid "Play Alone"
-msgstr "Yalnız Oyna"
-
-#: src/titlescreen.c:648
-msgid "Play With Friends"
-msgstr "Arkadaşlarla Oyna"
-
-#: src/titlescreen.c:649
-#, fuzzy
-msgid "Factoroids!"
-msgstr "Çarpanlar"
-
-#: src/titlescreen.c:650
-msgid "Help"
-msgstr "Yardım"
-
-#: src/titlescreen.c:651
-msgid "More Options"
-msgstr "Daha Çok Seçenek"
-
-#: src/titlescreen.c:652
-msgid "Quit"
-msgstr "Çıkış"
-
-#: src/titlescreen.c:726
-msgid "Math Command Training Academy"
-msgstr "Matematik Komutanlığı Eğitim Akademisi"
-
-#: src/titlescreen.c:727
-msgid "Math Command Fleet Missions"
-msgstr "Matematik Komutanlığı Donanması Görevleri"
-
-#: src/titlescreen.c:728
-msgid "Play Arcade Game"
-msgstr "Eğlence Oyunu Oyna"
-
-#: src/titlescreen.c:729
-msgid "Play Custom Game"
-msgstr "Özel Oyun Oyna"
-
-#: src/titlescreen.c:730 src/titlescreen.c:781 src/titlescreen.c:790
-#: src/titlescreen.c:850 src/titlescreen.c:970
-msgid "Main menu"
-msgstr "Ana menü"
-
-#: src/titlescreen.c:779
-msgid "Score Sweep"
-msgstr ""
-
-#: src/titlescreen.c:780
-msgid "Elimination"
-msgstr ""
-
-#: src/titlescreen.c:824
-msgid "How many kids are playing?"
-msgstr ""
-
-#: src/titlescreen.c:825
-msgid "(Between 2 and 4 players)"
-msgstr ""
-
-#: src/titlescreen.c:944
-msgid "Edit 'options' file in your home directory"
-msgstr "Özelleştirilmiş oyun yaratmak için"
-
-#: src/titlescreen.c:945
-msgid "to create customized game!"
-msgstr "ev dizinindeki 'options' dosyasını düzenle!"
-
-#: src/titlescreen.c:946
-msgid "Press a key or click your mouse to start game."
-msgstr "Oyuna başlamak için bir tuşa basın ya da fareye tıklayın."
-
-#: src/titlescreen.c:947
-msgid "See README.txt for more information"
-msgstr "Daha fazla bilgi için README.txt dosyasına bakın"
-
-#: src/titlescreen.c:1062
-msgid "Demo"
-msgstr "Gösteri (Demo)"
-
-#: src/titlescreen.c:1063
-msgid "Project Info"
-msgstr "Proje Bilgisi"
-
-#: src/titlescreen.c:1064
-msgid "Credits"
-msgstr "Hazırlayanlar"
-
-#: src/titlescreen.c:1065
-msgid "Main Menu"
-msgstr "Ana Menü"
-
-#: src/titlescreen.c:1113
-msgid "TuxMath is free and open-source!"
-msgstr "TuxMath özgür ve açık kaynak kodlu!"
-
-#: src/titlescreen.c:1114
-msgid "You can help make it better by reporting problems,"
-msgstr "Sorunları bildirerek, iyileştirmeler önererek ya da kod yazarak"
-
-#: src/titlescreen.c:1115
-msgid "suggesting improvements, or adding code."
-msgstr "daha iyi olmasına yardımcı olabilirsin."
-
-#: src/titlescreen.c:1116
-msgid "Discuss the future at tuxmath-devel at lists.sourceforge.net"
-msgstr ""
-"tuxmath-devel at lists.sourceforge.net e-posta listesinde TuxMath'in geleceğini "
-"tartışabilirsin"
-
 #: data/missions/lessons/descr_lessons:1
 msgid "Number Typing"
 msgstr "Sayı Yazmak"
@@ -771,6 +663,78 @@
 msgid "Division of Positives and Negatives"
 msgstr "Pozitif ve Negatiflerin Bölünmesi"
 
+#~ msgid "Play Alone"
+#~ msgstr "Yalnız Oyna"
+
+#~ msgid "Play With Friends"
+#~ msgstr "Arkadaşlarla Oyna"
+
+#, fuzzy
+#~ msgid "Factoroids!"
+#~ msgstr "Çarpanlar"
+
+#~ msgid "Help"
+#~ msgstr "Yardım"
+
+#~ msgid "More Options"
+#~ msgstr "Daha Çok Seçenek"
+
+#~ msgid "Quit"
+#~ msgstr "Çıkış"
+
+#~ msgid "Math Command Training Academy"
+#~ msgstr "Matematik Komutanlığı Eğitim Akademisi"
+
+#~ msgid "Math Command Fleet Missions"
+#~ msgstr "Matematik Komutanlığı Donanması Görevleri"
+
+#~ msgid "Play Arcade Game"
+#~ msgstr "Eğlence Oyunu Oyna"
+
+#~ msgid "Play Custom Game"
+#~ msgstr "Özel Oyun Oyna"
+
+#~ msgid "Main menu"
+#~ msgstr "Ana menü"
+
+#~ msgid "Edit 'options' file in your home directory"
+#~ msgstr "Özelleştirilmiş oyun yaratmak için"
+
+#~ msgid "to create customized game!"
+#~ msgstr "ev dizinindeki 'options' dosyasını düzenle!"
+
+#~ msgid "Press a key or click your mouse to start game."
+#~ msgstr "Oyuna başlamak için bir tuşa basın ya da fareye tıklayın."
+
+#~ msgid "See README.txt for more information"
+#~ msgstr "Daha fazla bilgi için README.txt dosyasına bakın"
+
+#~ msgid "Demo"
+#~ msgstr "Gösteri (Demo)"
+
+#~ msgid "Project Info"
+#~ msgstr "Proje Bilgisi"
+
+#~ msgid "Credits"
+#~ msgstr "Hazırlayanlar"
+
+#~ msgid "Main Menu"
+#~ msgstr "Ana Menü"
+
+#~ msgid "TuxMath is free and open-source!"
+#~ msgstr "TuxMath özgür ve açık kaynak kodlu!"
+
+#~ msgid "You can help make it better by reporting problems,"
+#~ msgstr "Sorunları bildirerek, iyileştirmeler önererek ya da kod yazarak"
+
+#~ msgid "suggesting improvements, or adding code."
+#~ msgstr "daha iyi olmasına yardımcı olabilirsin."
+
+#~ msgid "Discuss the future at tuxmath-devel at lists.sourceforge.net"
+#~ msgstr ""
+#~ "tuxmath-devel at lists.sourceforge.net e-posta listesinde TuxMath'in "
+#~ "geleceğini tartışabilirsin"
+
 #~ msgid "The penguins need your help! Comets"
 #~ msgstr "Penguenlerin yardımına ihtiyacı var!"
 

Modified: tuxmath/trunk/po/tuxmath.pot
===================================================================
--- tuxmath/trunk/po/tuxmath.pot	2009-09-04 19:47:19 UTC (rev 1488)
+++ tuxmath/trunk/po/tuxmath.pot	2009-09-05 02:31:43 UTC (rev 1489)
@@ -5,9 +5,9 @@
 #, fuzzy
 msgid ""
 msgstr ""
-"Project-Id-Version: tuxmath 1.7.2\n"
+"Project-Id-Version: tuxmath 1.7.3\n"
 "Report-Msgid-Bugs-To: tuxmath-devel at lists.sourceforge.net\n"
-"POT-Creation-Date: 2009-03-06 06:12-0600\n"
+"POT-Creation-Date: 2009-09-04 21:22-0500\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
 "Language-Team: LANGUAGE <LL at li.org>\n"
@@ -202,333 +202,228 @@
 
 #: src/credits.c:108
 msgid ""
-"A full copy of the GPL is included with the documenation for this program."
+"A full copy of the GPL is included with the documentation for this program."
 msgstr ""
 
 #: src/credits.c:110
 msgid "For more information about Free Software and the GNU GPL, visit:"
 msgstr ""
 
-#: src/factoroids.c:558
+#: src/factoroids.c:552
 msgid "FACTOROIDS: to win, you need destroy all the asteroids."
 msgstr ""
 
-#: src/factoroids.c:559 src/factoroids.c:570
+#: src/factoroids.c:553 src/factoroids.c:564
 msgid "Use the arrow keys to turn or go forward.  Aim at an asteroid,"
 msgstr ""
 
-#: src/factoroids.c:560
+#: src/factoroids.c:554
 msgid "type one of its factors, and press space or return"
 msgstr ""
 
-#: src/factoroids.c:561
+#: src/factoroids.c:555
 msgid "to split it into its factors.  Rocks with prime numbers are destroyed!"
 msgstr ""
 
-#: src/factoroids.c:569
+#: src/factoroids.c:563
 msgid "FRACTIONS: to win, you need destroy all the asteroids"
 msgstr ""
 
-#: src/factoroids.c:571
+#: src/factoroids.c:565
 msgid "type a number that can simplify the fraction, and press space or return"
 msgstr ""
 
-#: src/factoroids.c:572
+#: src/factoroids.c:566
 msgid ""
 "to split it.  Destroy fractions that can not be further simplified in a "
 "single shot!"
 msgstr ""
 
-#: src/game.c:717
+#: src/game.c:989
 msgid "Welcome to TuxMath!"
 msgstr ""
 
-#: src/game.c:734
+#: src/game.c:1006
 msgid "Your mission is to save your"
 msgstr ""
 
-#: src/game.c:735
+#: src/game.c:1007
 msgid "penguins' igloos from the"
 msgstr ""
 
-#: src/game.c:736
+#: src/game.c:1008
 msgid "falling comets."
 msgstr ""
 
-#: src/game.c:755
+#: src/game.c:1027
 msgid "Stop a comet by typing"
 msgstr ""
 
-#: src/game.c:756
+#: src/game.c:1028
 msgid "the answer to the math problem"
 msgstr ""
 
-#: src/game.c:757
+#: src/game.c:1029
 msgid "and hitting 'space' or 'enter'."
 msgstr ""
 
-#: src/game.c:758
+#: src/game.c:1030
 msgid "Try it now!"
 msgstr ""
 
-#: src/game.c:766
+#: src/game.c:1038
 msgid "Good shot!"
 msgstr ""
 
-#: src/game.c:776
+#: src/game.c:1048
 msgid "If an igloo gets hit by a comet,"
 msgstr ""
 
-#: src/game.c:777
+#: src/game.c:1049
 msgid "it melts. But don't worry: the"
 msgstr ""
 
-#: src/game.c:778
+#: src/game.c:1050
 msgid "penguin is OK!"
 msgstr ""
 
-#: src/game.c:779
+#: src/game.c:1051
 msgid "Just watch what happens:"
 msgstr ""
 
-#: src/game.c:780
+#: src/game.c:1052
 msgid "(Press a key to start)"
 msgstr ""
 
-#: src/game.c:793
+#: src/game.c:1065
 msgid "Notice the answer"
 msgstr ""
 
-#: src/game.c:803
+#: src/game.c:1075
 msgid "If it gets hit again, the"
 msgstr ""
 
-#: src/game.c:804
+#: src/game.c:1076
 msgid "penguin leaves."
 msgstr ""
 
-#: src/game.c:805
+#: src/game.c:1077
 msgid "(Press a key when ready)"
 msgstr ""
 
-#: src/game.c:824
+#: src/game.c:1100
 msgid "You can fix the igloos"
 msgstr ""
 
-#: src/game.c:825
+#: src/game.c:1101
 msgid "by stopping bonus comets."
 msgstr ""
 
-#: src/game.c:834
+#: src/game.c:1112
 msgid "Zap it now!"
 msgstr ""
 
-#: src/game.c:838
+#: src/game.c:1118
 msgid "Great job!"
 msgstr ""
 
-#: src/game.c:852
+#: src/game.c:1136
 msgid "Quit at any time by pressing"
 msgstr ""
 
-#: src/game.c:853
+#: src/game.c:1137
 msgid "'Esc' or clicking the 'X'"
 msgstr ""
 
-#: src/game.c:854
+#: src/game.c:1138
 msgid "in the upper right corner."
 msgstr ""
 
-#: src/game.c:855
+#: src/game.c:1139
 msgid "Do it now, and then play!"
 msgstr ""
 
-#: src/highscore.c:212 src/titlescreen.c:849
+#: src/highscore.c:167
 msgid "Hall Of Fame"
 msgstr ""
 
-#: src/highscore.c:232 src/highscore.c:253 src/titlescreen.c:785
-#: src/titlescreen.c:844
+#: src/highscore.c:187 src/highscore.c:208
 msgid "Space Cadet"
 msgstr ""
 
-#: src/highscore.c:235 src/titlescreen.c:786 src/titlescreen.c:845
+#: src/highscore.c:190
 msgid "Scout"
 msgstr ""
 
-#: src/highscore.c:238 src/titlescreen.c:787 src/titlescreen.c:846
+#: src/highscore.c:193
 msgid "Ranger"
 msgstr ""
 
-#: src/highscore.c:241 src/titlescreen.c:788 src/titlescreen.c:847
+#: src/highscore.c:196
 msgid "Ace"
 msgstr ""
 
-#: src/highscore.c:244 src/titlescreen.c:789 src/titlescreen.c:848
+#: src/highscore.c:199
 msgid "Commando"
 msgstr ""
 
-#: src/highscore.c:247 src/titlescreen.c:968
+#: src/highscore.c:202
 msgid "Factors"
 msgstr ""
 
-#: src/highscore.c:250 src/titlescreen.c:969
+#: src/highscore.c:205
 msgid "Fractions"
 msgstr ""
 
-#: src/highscore.c:353
+#: src/highscore.c:286
 msgid "You Are In The Hall of Fame!"
 msgstr ""
 
-#: src/highscore.c:353
+#: src/highscore.c:286
 msgid "Enter Your Name:"
 msgstr ""
 
-#: src/multiplayer.c:244
+#: src/multiplayer.c:183
+#, c-format
+msgid "Then %s\n"
+msgstr ""
+
+#: src/multiplayer.c:258
 msgid "Who is playing first?"
 msgstr ""
 
-#: src/multiplayer.c:244 src/multiplayer.c:246
+#: src/multiplayer.c:258 src/multiplayer.c:260
 msgid "Enter your name:"
 msgstr ""
 
-#: src/multiplayer.c:246
+#: src/multiplayer.c:260
 msgid "Who is playing next?"
 msgstr ""
 
-#: src/multiplayer.c:260
+#: src/multiplayer.c:274
 msgid "How many rounds will you play?"
 msgstr ""
 
-#: src/multiplayer.c:260
+#: src/multiplayer.c:274
 msgid "Enter a number"
 msgstr ""
 
-#: src/titlescreen.c:487
+#: src/titlescreen.c:476
 msgid "Work In Progress!"
 msgstr ""
 
-#: src/titlescreen.c:488
+#: src/titlescreen.c:477
 msgid "This feature is not ready yet"
 msgstr ""
 
-#: src/titlescreen.c:489
+#: src/titlescreen.c:478
 msgid "Discuss the future of TuxMath at"
 msgstr ""
 
-#: src/titlescreen.c:490
+#: src/titlescreen.c:479
 msgid "tuxmath-devel at lists.sourceforge.net"
 msgstr ""
 
-#: src/titlescreen.c:647
-msgid "Play Alone"
-msgstr ""
-
-#: src/titlescreen.c:648
-msgid "Play With Friends"
-msgstr ""
-
-#: src/titlescreen.c:649
-msgid "Factoroids!"
-msgstr ""
-
-#: src/titlescreen.c:650
-msgid "Help"
-msgstr ""
-
-#: src/titlescreen.c:651
-msgid "More Options"
-msgstr ""
-
-#: src/titlescreen.c:652
-msgid "Quit"
-msgstr ""
-
-#: src/titlescreen.c:726
-msgid "Math Command Training Academy"
-msgstr ""
-
-#: src/titlescreen.c:727
-msgid "Math Command Fleet Missions"
-msgstr ""
-
-#: src/titlescreen.c:728
-msgid "Play Arcade Game"
-msgstr ""
-
-#: src/titlescreen.c:729
-msgid "Play Custom Game"
-msgstr ""
-
-#: src/titlescreen.c:730 src/titlescreen.c:781 src/titlescreen.c:790
-#: src/titlescreen.c:850 src/titlescreen.c:970
-msgid "Main menu"
-msgstr ""
-
-#: src/titlescreen.c:779
-msgid "Score Sweep"
-msgstr ""
-
-#: src/titlescreen.c:780
-msgid "Elimination"
-msgstr ""
-
-#: src/titlescreen.c:824
-msgid "How many kids are playing?"
-msgstr ""
-
-#: src/titlescreen.c:825
-msgid "(Between 2 and 4 players)"
-msgstr ""
-
-#: src/titlescreen.c:944
-msgid "Edit 'options' file in your home directory"
-msgstr ""
-
-#: src/titlescreen.c:945
-msgid "to create customized game!"
-msgstr ""
-
-#: src/titlescreen.c:946
-msgid "Press a key or click your mouse to start game."
-msgstr ""
-
-#: src/titlescreen.c:947
-msgid "See README.txt for more information"
-msgstr ""
-
-#: src/titlescreen.c:1062
-msgid "Demo"
-msgstr ""
-
-#: src/titlescreen.c:1063
-msgid "Project Info"
-msgstr ""
-
-#: src/titlescreen.c:1064
-msgid "Credits"
-msgstr ""
-
-#: src/titlescreen.c:1065
-msgid "Main Menu"
-msgstr ""
-
-#: src/titlescreen.c:1113
-msgid "TuxMath is free and open-source!"
-msgstr ""
-
-#: src/titlescreen.c:1114
-msgid "You can help make it better by reporting problems,"
-msgstr ""
-
-#: src/titlescreen.c:1115
-msgid "suggesting improvements, or adding code."
-msgstr ""
-
-#: src/titlescreen.c:1116
-msgid "Discuss the future at tuxmath-devel at lists.sourceforge.net"
-msgstr ""
-
 #: data/missions/lessons/descr_lessons:1
 msgid "Number Typing"
 msgstr ""

Modified: tuxmath/trunk/po/zh_CN.gmo
===================================================================
(Binary files differ)

Modified: tuxmath/trunk/po/zh_CN.po
===================================================================
--- tuxmath/trunk/po/zh_CN.po	2009-09-04 19:47:19 UTC (rev 1488)
+++ tuxmath/trunk/po/zh_CN.po	2009-09-05 02:31:43 UTC (rev 1489)
@@ -9,7 +9,7 @@
 msgstr ""
 "Project-Id-Version: tuxmath\n"
 "Report-Msgid-Bugs-To: tuxmath-devel at lists.sourceforge.net\n"
-"POT-Creation-Date: 2009-03-06 06:12-0600\n"
+"POT-Creation-Date: 2009-09-04 21:22-0500\n"
 "PO-Revision-Date: 2009-02-07 18:04+0800\n"
 "Last-Translator: Xavier <XavierXavierye at gmail.com>\n"
 "Language-Team: Simplified Chinese <zh_CN at li.org>\n"
@@ -216,334 +216,229 @@
 
 #: src/credits.c:108
 msgid ""
-"A full copy of the GPL is included with the documenation for this program."
+"A full copy of the GPL is included with the documentation for this program."
 msgstr ""
 
 #: src/credits.c:110
 msgid "For more information about Free Software and the GNU GPL, visit:"
 msgstr ""
 
-#: src/factoroids.c:558
+#: src/factoroids.c:552
 msgid "FACTOROIDS: to win, you need destroy all the asteroids."
 msgstr "因数分解游戏:要赢的话,你得击毁所有的小行星。"
 
-#: src/factoroids.c:559 src/factoroids.c:570
+#: src/factoroids.c:553 src/factoroids.c:564
 msgid "Use the arrow keys to turn or go forward.  Aim at an asteroid,"
 msgstr "用键盘上的方向键转动或前进。瞄准一个小行星,"
 
-#: src/factoroids.c:560
+#: src/factoroids.c:554
 msgid "type one of its factors, and press space or return"
 msgstr "输入其中一个的系数,然后按空格或回车"
 
-#: src/factoroids.c:561
+#: src/factoroids.c:555
 msgid "to split it into its factors.  Rocks with prime numbers are destroyed!"
 msgstr "分解成系数。带有质数的岩石会被摧毁"
 
-#: src/factoroids.c:569
+#: src/factoroids.c:563
 msgid "FRACTIONS: to win, you need destroy all the asteroids"
 msgstr "分数:要赢的话,你得消灭所有的小行星"
 
-#: src/factoroids.c:571
+#: src/factoroids.c:565
 msgid "type a number that can simplify the fraction, and press space or return"
 msgstr "输入可以简化分数的数,然后按空格或回车键"
 
-#: src/factoroids.c:572
+#: src/factoroids.c:566
 msgid ""
 "to split it.  Destroy fractions that can not be further simplified in a "
 "single shot!"
 msgstr "分解它。"
 
-#: src/game.c:717
+#: src/game.c:989
 msgid "Welcome to TuxMath!"
 msgstr "欢迎来到TuxMax!"
 
-#: src/game.c:734
+#: src/game.c:1006
 msgid "Your mission is to save your"
 msgstr "你的任务是保护你的"
 
-#: src/game.c:735
+#: src/game.c:1007
 msgid "penguins' igloos from the"
 msgstr "企鹅的小屋"
 
-#: src/game.c:736
+#: src/game.c:1008
 msgid "falling comets."
 msgstr "正在降落的彗星。"
 
-#: src/game.c:755
+#: src/game.c:1027
 msgid "Stop a comet by typing"
 msgstr "要制止彗星的话,按"
 
-#: src/game.c:756
+#: src/game.c:1028
 msgid "the answer to the math problem"
 msgstr "数学问题的答案"
 
-#: src/game.c:757
+#: src/game.c:1029
 msgid "and hitting 'space' or 'enter'."
 msgstr "按空格或回车键"
 
-#: src/game.c:758
+#: src/game.c:1030
 msgid "Try it now!"
 msgstr "现在就试一试吧!"
 
-#: src/game.c:766
+#: src/game.c:1038
 msgid "Good shot!"
 msgstr "打的好!"
 
-#: src/game.c:776
+#: src/game.c:1048
 msgid "If an igloo gets hit by a comet,"
 msgstr "如果一个小屋被彗星击中的话,"
 
-#: src/game.c:777
+#: src/game.c:1049
 msgid "it melts. But don't worry: the"
 msgstr "如果融化的话,别担心:"
 
-#: src/game.c:778
+#: src/game.c:1050
 msgid "penguin is OK!"
 msgstr "企鹅正常!"
 
-#: src/game.c:779
+#: src/game.c:1051
 msgid "Just watch what happens:"
 msgstr "只要观察发生了什么:"
 
-#: src/game.c:780
+#: src/game.c:1052
 msgid "(Press a key to start)"
 msgstr "(按任意键开始)"
 
-#: src/game.c:793
+#: src/game.c:1065
 msgid "Notice the answer"
 msgstr "注意答案"
 
-#: src/game.c:803
+#: src/game.c:1075
 msgid "If it gets hit again, the"
 msgstr "如果再次被击中的话,"
 
-#: src/game.c:804
+#: src/game.c:1076
 msgid "penguin leaves."
 msgstr "企鹅离开了。"
 
-#: src/game.c:805
+#: src/game.c:1077
 msgid "(Press a key when ready)"
 msgstr "(准备好后按任意键)"
 
-#: src/game.c:824
+#: src/game.c:1100
 msgid "You can fix the igloos"
 msgstr "你可以修复小屋"
 
-#: src/game.c:825
+#: src/game.c:1101
 msgid "by stopping bonus comets."
 msgstr "通过停止奖励的彗星"
 
-#: src/game.c:834
+#: src/game.c:1112
 msgid "Zap it now!"
 msgstr "现在攻击!"
 
-#: src/game.c:838
+#: src/game.c:1118
 msgid "Great job!"
 msgstr "干的好!"
 
-#: src/game.c:852
+#: src/game.c:1136
 msgid "Quit at any time by pressing"
 msgstr "任何时间退出,按"
 
-#: src/game.c:853
+#: src/game.c:1137
 msgid "'Esc' or clicking the 'X'"
 msgstr "按'Esc'键或点击'X'"
 
-#: src/game.c:854
+#: src/game.c:1138
 msgid "in the upper right corner."
 msgstr "在右上角"
 
-#: src/game.c:855
+#: src/game.c:1139
 msgid "Do it now, and then play!"
 msgstr "现在就做,开始吧!"
 
-#: src/highscore.c:212 src/titlescreen.c:849
+#: src/highscore.c:167
 msgid "Hall Of Fame"
 msgstr "排行榜"
 
-#: src/highscore.c:232 src/highscore.c:253 src/titlescreen.c:785
-#: src/titlescreen.c:844
+#: src/highscore.c:187 src/highscore.c:208
 msgid "Space Cadet"
 msgstr "太空警"
 
-#: src/highscore.c:235 src/titlescreen.c:786 src/titlescreen.c:845
+#: src/highscore.c:190
 msgid "Scout"
 msgstr "童子军"
 
-#: src/highscore.c:238 src/titlescreen.c:787 src/titlescreen.c:846
+#: src/highscore.c:193
 msgid "Ranger"
 msgstr "巡逻兵"
 
-#: src/highscore.c:241 src/titlescreen.c:788 src/titlescreen.c:847
+#: src/highscore.c:196
 msgid "Ace"
 msgstr "王牌飞行员"
 
-#: src/highscore.c:244 src/titlescreen.c:789 src/titlescreen.c:848
+#: src/highscore.c:199
 msgid "Commando"
 msgstr "突击队"
 
-#: src/highscore.c:247 src/titlescreen.c:968
+#: src/highscore.c:202
 msgid "Factors"
 msgstr "系数"
 
-#: src/highscore.c:250 src/titlescreen.c:969
+#: src/highscore.c:205
 msgid "Fractions"
 msgstr "分数"
 
-#: src/highscore.c:353
+#: src/highscore.c:286
 msgid "You Are In The Hall of Fame!"
 msgstr ""
 
-#: src/highscore.c:353
+#: src/highscore.c:286
 msgid "Enter Your Name:"
 msgstr ""
 
-#: src/multiplayer.c:244
+#: src/multiplayer.c:183
+#, c-format
+msgid "Then %s\n"
+msgstr ""
+
+#: src/multiplayer.c:258
 msgid "Who is playing first?"
 msgstr ""
 
-#: src/multiplayer.c:244 src/multiplayer.c:246
+#: src/multiplayer.c:258 src/multiplayer.c:260
 msgid "Enter your name:"
 msgstr ""
 
-#: src/multiplayer.c:246
+#: src/multiplayer.c:260
 msgid "Who is playing next?"
 msgstr ""
 
-#: src/multiplayer.c:260
+#: src/multiplayer.c:274
 #, fuzzy
 msgid "How many rounds will you play?"
 msgstr "参加游戏的小朋友数量?"
 
-#: src/multiplayer.c:260
+#: src/multiplayer.c:274
 msgid "Enter a number"
 msgstr ""
 
-#: src/titlescreen.c:487
+#: src/titlescreen.c:476
 msgid "Work In Progress!"
 msgstr "运行中"
 
-#: src/titlescreen.c:488
+#: src/titlescreen.c:477
 msgid "This feature is not ready yet"
 msgstr "角色还没准备好"
 
-#: src/titlescreen.c:489
+#: src/titlescreen.c:478
 msgid "Discuss the future of TuxMath at"
 msgstr "讨论TuxMath:"
 
-#: src/titlescreen.c:490
+#: src/titlescreen.c:479
 msgid "tuxmath-devel at lists.sourceforge.net"
 msgstr "tuxmath-devel at lists.sourceforge.net"
 
-#: src/titlescreen.c:647
-msgid "Play Alone"
-msgstr "自己玩"
-
-#: src/titlescreen.c:648
-msgid "Play With Friends"
-msgstr "和朋友一起玩"
-
-#: src/titlescreen.c:649
-msgid "Factoroids!"
-msgstr "因数分解!"
-
-#: src/titlescreen.c:650
-msgid "Help"
-msgstr "帮助"
-
-#: src/titlescreen.c:651
-msgid "More Options"
-msgstr "更多选项"
-
-#: src/titlescreen.c:652
-msgid "Quit"
-msgstr "退出"
-
-#: src/titlescreen.c:726
-msgid "Math Command Training Academy"
-msgstr "数学运算练习"
-
-#: src/titlescreen.c:727
-msgid "Math Command Fleet Missions"
-msgstr "数学命令舰队任务"
-
-#: src/titlescreen.c:728
-msgid "Play Arcade Game"
-msgstr "街机游戏"
-
-#: src/titlescreen.c:729
-msgid "Play Custom Game"
-msgstr "自定义游戏"
-
-#: src/titlescreen.c:730 src/titlescreen.c:781 src/titlescreen.c:790
-#: src/titlescreen.c:850 src/titlescreen.c:970
-msgid "Main menu"
-msgstr "主菜单"
-
-#: src/titlescreen.c:779
-msgid "Score Sweep"
-msgstr "消除得分"
-
-#: src/titlescreen.c:780
-msgid "Elimination"
-msgstr "消减"
-
-#: src/titlescreen.c:824
-msgid "How many kids are playing?"
-msgstr "参加游戏的小朋友数量?"
-
-#: src/titlescreen.c:825
-msgid "(Between 2 and 4 players)"
-msgstr "(2到4个玩家)"
-
-#: src/titlescreen.c:944
-msgid "Edit 'options' file in your home directory"
-msgstr "在你的主文件夹编辑'options' 选项文件"
-
-#: src/titlescreen.c:945
-msgid "to create customized game!"
-msgstr "创建自定义游戏!"
-
-#: src/titlescreen.c:946
-msgid "Press a key or click your mouse to start game."
-msgstr "按任意键或点击鼠标开始游戏。"
-
-#: src/titlescreen.c:947
-msgid "See README.txt for more information"
-msgstr "查看 README.txt 文件以获得更多信息"
-
-#: src/titlescreen.c:1062
-msgid "Demo"
-msgstr "演示"
-
-#: src/titlescreen.c:1063
-msgid "Project Info"
-msgstr "工程信息"
-
-#: src/titlescreen.c:1064
-msgid "Credits"
-msgstr "贡献者"
-
-#: src/titlescreen.c:1065
-msgid "Main Menu"
-msgstr "主菜单"
-
-#: src/titlescreen.c:1113
-msgid "TuxMath is free and open-source!"
-msgstr "TuxMath 是自由软件而且是开放源代码的!"
-
-#: src/titlescreen.c:1114
-msgid "You can help make it better by reporting problems,"
-msgstr "你可以改进它或报告程序错误,"
-
-#: src/titlescreen.c:1115
-msgid "suggesting improvements, or adding code."
-msgstr "提出改进建议或增加代码。"
-
-#: src/titlescreen.c:1116
-msgid "Discuss the future at tuxmath-devel at lists.sourceforge.net"
-msgstr "讨论TuxMath: tuxmath-devel at lists.sourceforge.net"
-
 #: data/missions/lessons/descr_lessons:1
 msgid "Number Typing"
 msgstr "输入数字"
@@ -777,3 +672,84 @@
 #: data/missions/lessons/descr_lessons:58
 msgid "Division of Positives and Negatives"
 msgstr "正负数除法"
+
+#~ msgid "Play Alone"
+#~ msgstr "自己玩"
+
+#~ msgid "Play With Friends"
+#~ msgstr "和朋友一起玩"
+
+#~ msgid "Factoroids!"
+#~ msgstr "因数分解!"
+
+#~ msgid "Help"
+#~ msgstr "帮助"
+
+#~ msgid "More Options"
+#~ msgstr "更多选项"
+
+#~ msgid "Quit"
+#~ msgstr "退出"
+
+#~ msgid "Math Command Training Academy"
+#~ msgstr "数学运算练习"
+
+#~ msgid "Math Command Fleet Missions"
+#~ msgstr "数学命令舰队任务"
+
+#~ msgid "Play Arcade Game"
+#~ msgstr "街机游戏"
+
+#~ msgid "Play Custom Game"
+#~ msgstr "自定义游戏"
+
+#~ msgid "Main menu"
+#~ msgstr "主菜单"
+
+#~ msgid "Score Sweep"
+#~ msgstr "消除得分"
+
+#~ msgid "Elimination"
+#~ msgstr "消减"
+
+#~ msgid "How many kids are playing?"
+#~ msgstr "参加游戏的小朋友数量?"
+
+#~ msgid "(Between 2 and 4 players)"
+#~ msgstr "(2到4个玩家)"
+
+#~ msgid "Edit 'options' file in your home directory"
+#~ msgstr "在你的主文件夹编辑'options' 选项文件"
+
+#~ msgid "to create customized game!"
+#~ msgstr "创建自定义游戏!"
+
+#~ msgid "Press a key or click your mouse to start game."
+#~ msgstr "按任意键或点击鼠标开始游戏。"
+
+#~ msgid "See README.txt for more information"
+#~ msgstr "查看 README.txt 文件以获得更多信息"
+
+#~ msgid "Demo"
+#~ msgstr "演示"
+
+#~ msgid "Project Info"
+#~ msgstr "工程信息"
+
+#~ msgid "Credits"
+#~ msgstr "贡献者"
+
+#~ msgid "Main Menu"
+#~ msgstr "主菜单"
+
+#~ msgid "TuxMath is free and open-source!"
+#~ msgstr "TuxMath 是自由软件而且是开放源代码的!"
+
+#~ msgid "You can help make it better by reporting problems,"
+#~ msgstr "你可以改进它或报告程序错误,"
+
+#~ msgid "suggesting improvements, or adding code."
+#~ msgstr "提出改进建议或增加代码。"
+
+#~ msgid "Discuss the future at tuxmath-devel at lists.sourceforge.net"
+#~ msgstr "讨论TuxMath: tuxmath-devel at lists.sourceforge.net"


Property changes on: tuxmath/trunk/src
___________________________________________________________________
Modified: svn:ignore
   - *~
*.o
.deps
CMakeFiles
Makefile
Makefile.in
tuxmath
tuxmathadmin
generate_lesson

   + *~
*.o
Makefile
Makefile.in
tuxmath
tuxmathadmin
generate-lesson


Modified: tuxmath/trunk/src/Makefile.am
===================================================================
--- tuxmath/trunk/src/Makefile.am	2009-09-04 19:47:19 UTC (rev 1488)
+++ tuxmath/trunk/src/Makefile.am	2009-09-05 02:31:43 UTC (rev 1489)
@@ -31,6 +31,7 @@
 tuxmath_SOURCES = tuxmath.c \
 	setup.c 	\
 	titlescreen.c	\
+	menu.c		\
 	game.c 		\
 	factoroids.c    \
 	fileops_media.c \
@@ -40,7 +41,7 @@
 	linewrap.c	\
 	loaders.c	\
 	audio.c 	\
-	menu.c   	\
+        network.c       \
 	mathcards.c	\
 	campaign.c	\
 	multiplayer.c	\
@@ -50,7 +51,8 @@
 	SDL_rotozoom.c	\
 	lessons.c	\
 	scandir.c	\
-	pixels.c
+	pixels.c	\
+	throttle.c	
 
 
 # HACK "TuxMath" is the Windows program, whereas "tuxmath" is the Unix program
@@ -73,10 +75,12 @@
 	highscore.h 	\
 	linewrap.h	\
 	loaders.h	\
-	mathcards.h 	\
+        network.h       \
+	titlescreen.h   \
+	menu.h		\
 	options.h	\
 	setup.h		\
-	titlescreen.h	\
+	mathcards.h 	\
 	campaign.h	\
 	multiplayer.h	\
 	tuxmath.h	\
@@ -87,7 +91,10 @@
 	gettext.h	\
 	scandir.h	\
 	pixels.h	\
-	compiler.h
+	compiler.h	\
+	transtruct.h	\
+	throttle.h
+        
 
 
 WINDRES=@WINDRES@
@@ -95,7 +102,3 @@
 # How to make an RC file
 tuxmathrc.o: tuxmathrc.rc
 	$(WINDRES) -i $< -o $@
-
-
-
-

Modified: tuxmath/trunk/src/game.c
===================================================================
--- tuxmath/trunk/src/game.c	2009-09-04 19:47:19 UTC (rev 1488)
+++ tuxmath/trunk/src/game.c	2009-09-05 02:31:43 UTC (rev 1489)
@@ -15,9 +15,10 @@
   August 26, 2001 - February 18, 2004
 
   Revised by David Bruce, Tim Holy and others
-  2005-2007
+  2005-2009
 */
 
+#define TUXMATH_DEBUG
 /* put this first so we get <config.h> and <gettext.h> immediately: */
 #include "tuxmath.h"
 
@@ -31,6 +32,7 @@
 #endif
 #include "SDL_image.h"
 
+#include "transtruct.h"
 #include "game.h"
 #include "fileops.h"
 #include "setup.h"
@@ -40,7 +42,15 @@
 #include "titlescreen.h"
 #include "options.h"
 #include "SDL_extras.h"
+#include "throttle.h"
 
+/* Make sure we don't try to call network code if we built without */
+/* network support:                                                */
+#ifdef HAVE_LIBSDL_NET
+#include "network.h"
+#endif
+
+
 #define FPS 15                     /* 15 frames per second */
 #define MS_PER_FRAME (1000 / FPS)
 
@@ -80,11 +90,13 @@
 static int gameover_counter;
 static int game_status;
 static int user_quit_received;
+static int total_questions_left;
 static int paused;
 static int wave;
 static int score;
 static int pre_wave_score;
 static int prev_wave_comets;
+static int found;
 static int slowdown;
 static int num_attackers;
 static float speed;
@@ -106,6 +118,8 @@
 static int bonus_comet_counter;
 static int extra_life_earned;
 static int key_pressed;
+static int game_over_other;
+static int game_over_won;
 
 /* Feedback-related variables */
 static int city_expl_height;
@@ -131,7 +145,11 @@
 static game_message s1, s2, s3, s4, s5;
 static int start_message_chosen = 0;
 
-
+/*****************************************************************/
+MC_FlashCard comets_questions[TEST_COMETS];    //current questions
+int remaining_quests = 0;
+static int comet_counter = 0;
+/****************************************************************/
 typedef struct {
   int x_is_blinking;
   int extra_life_is_blinking;
@@ -146,6 +164,7 @@
 static void game_handle_user_events(void);
 static void game_handle_demo(void);
 static void game_handle_answer(void);
+static void game_handle_net_messages(char*,char*);
 static void game_countdown(void);
 static void game_handle_tux(void);
 static void game_handle_comets(void);
@@ -162,10 +181,10 @@
 static int check_extra_life(void);
 static int check_exit_conditions(void);
 
-static void game_set_message(game_message *,const char *,int x, int y);
+static void game_set_message(game_message*, const char* ,int x, int y);
 static void game_clear_message(game_message*);
 static void game_clear_messages(void);
-static void game_write_message(const game_message* msg);
+void game_write_message(const game_message* msg);
 static void game_write_messages(void);
 static void draw_led_console(void);
 static void draw_question_counter(void);
@@ -175,6 +194,7 @@
 static int add_comet(void);
 static void add_score(int inc);
 static void reset_comets(void);
+static void copy_card(MC_FlashCard* src, MC_FlashCard* dest);
 
 static void game_mouse_event(SDL_Event event);
 static void game_key_event(SDLKey key);
@@ -185,24 +205,44 @@
 static void game_recalc_positions(void);
 
 void putpixel(SDL_Surface* surface, int x, int y, Uint32 pixel);
+void seperate_commmand_and_buf(char command[NET_BUF_LEN],char buf[NET_BUF_LEN]);
 
+
+/*****************************************************/
+#ifdef HAVE_LIBSDL_NET
+int add_quest_recvd(char* buf);
+int remove_quest_recvd(char* buf);
+#endif
+
+int erase_flashcard(MC_FlashCard* fc);
+int erase_comet_on_screen(comet_type* comet_ques);
+
+/* Display to player: */
+void print_current_quests(void);
+MC_FlashCard* find_comet_by_id(int id);
+comet_type* finder(int id);
+/******************************************************/
+
+
 static void print_exit_conditions(void);
 static void print_status(void);
 
+
 /* --- MAIN GAME FUNCTION!!! --- */
 
 
 int game(void)
 {
-  Uint32 last_time, now_time;
+  char buf[NET_BUF_LEN];
+  char command[NET_BUF_LEN];
 
   DEBUGMSG(debug_game, "Entering game():\n");
 
   //see if the option matches the actual screen
   if (Opts_GetGlobalOpt(FULLSCREEN) == !(screen->flags & SDL_FULLSCREEN) )
-    {
-    ;//SwitchScreenMode();
-    }
+  {
+    ;//SwitchScreenMode();  //Huh??
+  }
 
 
    /* most code moved into smaller functions (game_*()): */
@@ -215,20 +255,20 @@
     return 0;
   }
 
+
   if (Opts_HelpMode()) {
     game_handle_help();
     game_cleanup();
     return GAME_OVER_OTHER;
   }
+ 
 
 
-
   /* --- MAIN GAME LOOP: --- */
   do
   {
     /* reset or increment various things with each loop: */
     frame++;
-    last_time = SDL_GetTicks();
     old_tux_img = tux_img;
     tux_pressing = 0;
 
@@ -237,6 +277,30 @@
       laser.alive--;
     }
 
+   /* Check for server messages if we are playing a LAN game: */
+   if(Opts_LanMode())
+   {
+#ifdef HAVE_LIBSDL_NET
+     int status = check_messages(buf);
+     while(!status)
+     {
+       seperate_commmand_and_buf(command, buf);
+       game_handle_net_messages(buf, command);
+       status = check_messages(buf);
+     }
+
+     if(status == -1)
+     {
+       game_cleanup();
+       return GAME_OVER_ERROR;
+     }
+#else
+     fprintf(stderr, "Warning - LAN mode selected but SDL_net not available!\n");
+     Opts_SetLanMode(0);
+#endif    
+   }
+
+
     /* Most code now in smaller functions: */
 
     // 1. Check for user input
@@ -254,9 +318,10 @@
     // 3. Redraw:
     game_draw();
     // 4. Figure out if we should leave loop:
-    game_status = check_exit_conditions();
+    game_status = check_exit_conditions();               //would have to work on these , as they follow question linked list method
+ 
+ 
 
-
     /* If we're in "PAUSE" mode, pause! */
     if (paused)
     {
@@ -276,18 +341,10 @@
     }
 #endif
 
+
     /* Pause (keep frame-rate event) */
-    now_time = SDL_GetTicks();
-    if (now_time < last_time + MS_PER_FRAME)
-    {
-      //Prevent any possibility of a time wrap-around
-      // (this is a very unlikely problem unless there is an SDL bug
-      //  or you leave tuxmath running for 49 days...)
-      now_time = (last_time+MS_PER_FRAME) - now_time;  // this holds the delay
-      if (now_time > MS_PER_FRAME)
-        now_time = MS_PER_FRAME;
-      SDL_Delay(now_time);
-    }
+    Throttle(MS_PER_FRAME);
+
   }
   while(GAME_IN_PROGRESS == game_status);
   /* END OF MAIN GAME LOOP! */
@@ -318,7 +375,6 @@
       do
       {
         frame++;
-        last_time = SDL_GetTicks();
 
         while (SDL_PollEvent(&event) > 0)
         {
@@ -333,8 +389,6 @@
         if (current_bkgd() )
           SDL_BlitSurface(current_bkgd(), NULL, screen, NULL);
 
-
-
         /* draw flashing victory message: */
         if (((frame / 2) % 4))
         {
@@ -368,20 +422,14 @@
 /*        draw_console_image(tux_img);*/
 
         SDL_Flip(screen);
-
-        now_time = SDL_GetTicks();
-
-        if (now_time < last_time + MS_PER_FRAME)
-          SDL_Delay(last_time + MS_PER_FRAME - now_time);
+        Throttle(MS_PER_FRAME);
       }
       while (looping);
       break;
     }
 
     case GAME_OVER_ERROR:
-    {
-      printf("\ngame() exiting with error");
-    }
+      DEBUGMSG(debug_game, "game() exiting with error:\n");
     case GAME_OVER_LOST:
     case GAME_OVER_OTHER:
     {
@@ -396,7 +444,6 @@
       do
       {
         frame++;
-        last_time = SDL_GetTicks();
 
         while (SDL_PollEvent(&event) > 0)
         {
@@ -411,10 +458,7 @@
         SDL_BlitSurface(images[IMG_GAMEOVER], NULL, screen, &dest_message);
         SDL_Flip(screen);
 
-        now_time = SDL_GetTicks();
-
-        if (now_time < last_time + MS_PER_FRAME)
-          SDL_Delay(last_time + MS_PER_FRAME - now_time);
+        Throttle(MS_PER_FRAME);
       }
       while (looping);
 
@@ -457,7 +501,206 @@
     return game_status;
   }
 }
+/**********************************These functions will be moved somewhere else probably a new header file**************************************/ 
+int erase_flashcard(MC_FlashCard* fc)
+{
+  if(!fc)
+    return 0;
+  fc->formula_string[0] = '\0';
+  fc->answer_string[0] = '\0';
+  fc->question_id = -1;
+  fc->answer = -9999;
+  fc->difficulty = 0;
+  return 1;
+}
 
+int erase_comet_on_screen(comet_type* comet_ques)
+{
+  if(!comet_ques)
+    return 0;
+  comet_ques->alive = 0;
+  comet_ques->expl = 0;
+  comet_ques->city = 0;
+  comet_ques->x = 0;
+  comet_ques->y = 0;
+  comet_ques->answer = 0;
+  num_comets_alive--;
+  erase_flashcard(&(comet_ques->flashcard));
+
+  return 1;
+}
+
+#ifdef HAVE_LIBSDL_NET
+
+int add_quest_recvd(char* buf)
+{
+  MC_FlashCard* fc = find_comet_by_id(-1);
+  // if fc = NULL means no empty slot for question
+  if(!fc || !buf)
+  {
+    printf("NULL fc or buf\n");
+    return 0;
+  }
+  /* function call to parse buffer and receive question */
+  if(!Make_Flashcard(buf, fc))
+  {
+    printf("Unable to parse buffer into FlashCard\n");
+    return 0;
+  }
+
+  return 1;
+}
+
+
+int remove_quest_recvd(char* buf)
+{
+  int id = 0;
+  char* p = NULL;
+  MC_FlashCard* fc = NULL;
+  comet_type* comet_screen;
+  if(!buf)
+    return 0;
+
+  p = strchr(buf, '\t');
+  if(!p)
+    return 0;
+
+  id = atoi(p);
+  if(id < 1)  // The question_id can never be negative or zero
+    return 0;
+
+  comet_screen = finder(id);
+  fc = find_comet_by_id(id);
+  if(!comet_screen && !fc)
+    return 0;
+
+  if(comet_screen)
+  {
+    erase_comet_on_screen(comet_screen);
+    playsound(SND_SIZZLE);
+  }
+  //NOTE: normally the question should no longer be in the queue,
+  //so the next statement should get executed:
+  if(fc)
+  {
+    DEBUGMSG(debug_game,
+             "Note - request to erase question still in queue: %s\n",
+             fc->formula_string);
+    erase_flashcard(fc);
+  }
+  return 1;
+}
+
+#endif
+
+
+/* Print the current questions and the number of remaining questions: */
+void print_current_quests(void)
+{
+  int i;
+  printf("\n------------  Current Questions:  -----------\n");
+  for(i = 0; i < MAX_COMETS; i ++)
+  { 
+    if(comets[i].alive==1)
+     printf("Comet %d - question %d:\t%s\n", i, comets[i].flashcard.question_id, comets[i].flashcard.formula_string);
+
+/*    if(comets_questions[i].question_id != -1)
+      printf("Comet %d - question %d:\t%s\n", i, comets_questions[i].question_id, comets_questions[i].formula_string);
+    else
+      printf("Comet %d:\tEmpty\n", i);
+*/}
+  printf("-----------------------------------------------\n");
+}
+
+
+/* Return a pointer to an empty comet slot, */
+/* returning NULL if no vacancy found:      */
+
+MC_FlashCard* find_comet_by_id(int id)
+{
+  int i = 0;
+  for(i = 0; i < TEST_COMETS; i++)
+  {
+    if(comets_questions[i].question_id == id)
+      return &comets_questions[i];
+  }
+  //if we don't find a match:
+  return NULL;
+}
+
+comet_type* finder(int id)
+{
+  int i;
+  for (i = 0; i < MAX_COMETS; i++)
+  {
+    if (comets[i].flashcard.question_id==id)
+     {printf("the question id is id=%d\n",i);
+      return &comets[i];}
+  }
+
+  return NULL;
+}
+/***************************************************************************************************************************/
+/*Examines the network messages from the buffer and calls
+  appropriate function accordingly*/
+/*Do we want a well defined function for each of the condition
+  like on each message a function should be called , or is it ok like this
+  I think this is better--akash*/
+/* As long the code for each command is really short, we can just have it here.
+   But if it starts to get long, I would have a function for each that is 
+   local to this file and located immediately below this function - DSB */
+
+
+
+void game_handle_net_messages(char buf[NET_BUF_LEN],char command[NET_BUF_LEN])
+{
+  if(strncmp(command,"PLAYER_MSG",strlen("PLAYER_MSG"))==0)
+  {
+    printf("buf is %s\n", buf);                                                  
+  }
+
+  else if(strncmp(command,"SEND_QUESTION",strlen("SEND_QUESTION"))==0)
+  {
+       if(!add_quest_recvd(buf))
+        printf("SEND_QUESTION received but could not add question\n");
+      else
+        // If we successfully added question, show new questions to user:
+        print_current_quests();
+  }
+
+  else if(strncmp(buf, "REMOVE_QUESTION", strlen("REMOVE_QUESTION")) == 0)
+  {
+    if(!remove_quest_recvd(buf)) //remove the question with id in buf
+      printf("REMOVE_QUESTION received but could not remove question\n");
+    else 
+      print_current_quests();
+  }
+
+  else if(strncmp(buf, "ADD_QUESTION", strlen("ADD_QUESTION")) == 0)
+  {
+    if(!add_quest_recvd(buf))
+      printf("ADD_QUESTION received but could not add question\n");
+    else  
+      print_current_quests();
+  }
+
+  else if(strncmp(command,"TOTAL_QUESTIONS",strlen("TOTAL_QUESTIONS"))==0)
+  {
+    sscanf(buf,"%*s %d", &total_questions_left);
+    if(!total_questions_left)
+      game_over_other=1;
+  }
+
+  else if(strncmp(command,"GAME_OVER_WON",strlen("GAME_OVER_WON"))==0)
+  {
+    game_over_won=1;
+  }
+  /* FIXME need to handle unrecognized messages, maybe just printf()
+     with a warning until they get implemented - DSB             */
+}
+
+
+
 /* 
 Set one to four lines of text to display at the game's start. Eventually
 this should stylishly fade out over the first few moments of the game.
@@ -472,12 +715,14 @@
   start_message_chosen = 1;
 }
 
+
+
 int game_initialize(void)
 {
   int i,img;
   
   DEBUGMSG(debug_game,"Entering game_initialize()\n");
-
+  
   /* Clear window: */
   SDL_FillRect(screen, NULL, SDL_MapRGB(screen->format, 0, 0, 0));
   SDL_Flip(screen);
@@ -486,57 +731,81 @@
   gameover_counter = -1;
   user_quit_received = 0;
 
-  /* Start MathCards backend: */
+  /* Make sure we don't try to call network code if we built without */
+  /* network support:                                                */
+#ifndef HAVE_LIBSDL_NET
+  Opts_SetLanMode(0);
+#endif
+
+  /* Start MathCards backend, unless we are getting questions from network: */
   /* FIXME may need to move this into tuxmath.c to accomodate option */
   /* to use MC_StartUsingWrongs() */
   /* NOTE MC_StartGame() will return 0 if the list length is zero due */
   /* (for example) to all math operations being deselected */
-  if (!MC_StartGame())
+  /* NOTE if we are playing a network game, MC_StartGame() has already */
+  /* been called on the server by the time we get to here:             */
+
+  if(!Opts_LanMode())
   {
-    fprintf(stderr, "\nMC_StartGame() failed!");
-    return 0;
+    if (!MC_StartGame())
+    {
+      fprintf(stderr, "\nMC_StartGame() failed!");
+      return 0;
+    }
+    DEBUGMSG(debug_mathcards | debug_game,"MC_StartGame() finished.\n")
   }
   DEBUGMSG(debug_mathcards | debug_game,"MC_StartGame() finished.\n")
 
+  /* Start out with our "comets" empty: */
+  {
+    int i;
+    for(i = 0; i < TEST_COMETS; i ++)
+      erase_flashcard(&(comets_questions[i]));
+  }
+
   /* Allocate memory */
   comets = NULL;  // set in case allocation fails partway through
   cities = NULL;
   penguins = NULL;
   steam = NULL;
   comets = (comet_type *) malloc(MAX_MAX_COMETS * sizeof(comet_type));
-  if (comets == NULL) {
+  if (comets == NULL)
+  {
     printf("Allocation of comets failed");
     return 0;
   }
-  else {
+  else 
+  {
     for (i = 0; i < MAX_MAX_COMETS; ++i)
-      {
+    {
       comets[i].flashcard = MC_AllocateFlashcard();
       if (!MC_FlashCardGood(&comets[i].flashcard) ) 
-        {
+      {
         //something's wrong
         printf("Allocation of flashcard %d failed\n", i);
         for (; i >= 0; --i) //free anything we've already gotten
           MC_FreeFlashcard(&comets[i].flashcard);
         return 0;
-        }
       }
+    }
   }
-
   DEBUGMSG(debug_game,"Flashcards allocated.\n");
-
+   
   cities = (city_type *) malloc(NUM_CITIES * sizeof(city_type));
-  if (cities == NULL) {
+  if (cities == NULL)
+  {
     printf("Allocation of cities failed");
     return 0;
   }
   penguins = (penguin_type *) malloc(NUM_CITIES * sizeof(penguin_type));
-  if (penguins == NULL) {
+  if (penguins == NULL)
+  {
     printf("Allocation of penguins failed");
     return 0;
   }
   steam = (steam_type *) malloc(NUM_CITIES * sizeof(steam_type));
-  if (steam == NULL) {
+  if (steam == NULL)
+  {
     printf("Allocation of steam failed");
     return 0;
   }
@@ -563,6 +832,7 @@
   slowdown = 0;
   score = 0;
   demo_countdown = 2000;
+  total_questions_left = 0;
   level_start_wait = LEVEL_START_WAIT_START;
   neg_answer_picked = 0;
 
@@ -601,7 +871,8 @@
   igloo_vertical_offset = images[IMG_CITY_BLUE]->h - images[IMG_IGLOO_INTACT]->h;
 
   /* Create and position the penguins and steam */
-  for (i = 0; i < NUM_CITIES; i++) {
+  for (i = 0; i < NUM_CITIES; i++)
+  {
     penguins[i].status = PENGUIN_HAPPY;
     penguins[i].counter = 0;
     penguins[i].x = cities[i].x;
@@ -611,10 +882,12 @@
     steam[i].counter = 0;
   }
 
-  if (Opts_BonusCometInterval()) {
+  if (Opts_BonusCometInterval())
+  {
     bonus_comet_counter = Opts_BonusCometInterval() + 1;
-    DEBUGMSG(debug_game,"\nInitializing with bonus_comet_counter = %d\n",bonus_comet_counter)
+    DEBUGMSG(debug_game,"\nInitializing with bonus_comet_counter = %d\n",bonus_comet_counter);
   }
+
   extra_life_earned = 0;
   cloud.status = EXTRA_LIFE_OFF;
 
@@ -658,6 +931,10 @@
 
 void game_cleanup(void)
 {
+#ifdef HAVE_LIBSDL_NET  
+  LAN_Cleanup();
+#endif
+
   /* Free background: */
   if (bkgd != NULL)
   {
@@ -690,6 +967,7 @@
   DEBUGMSG(debug_game, "Leaving game():\n");
 }
 
+
 void game_handle_help(void)
 {
   const int left_edge = 140;
@@ -806,39 +1084,51 @@
 
   help_add_comet("56 / 8 = ?", "7");
   comets[0].y = 2*(screen->h)/3;   // start it low down
+
   while (comets[0].alive && !(quit_help = help_renderframe_exit()));
+
   if (quit_help)
     return;
   frame_start = frame;
+
   while ((frame-frame_start < 3*FPS) && !(quit_help = help_renderframe_exit()));
+
   if (quit_help)
     return;
 
   help_controls.laser_enabled = 1;
-  game_set_message(&s1,_("You can fix the igloos"),left_edge,100);
-  game_set_message(&s2,_("by stopping bonus comets."),left_edge,135);
+  game_set_message(&s1,_("You can fix the igloos"), left_edge,100);
+  game_set_message(&s2,_("by stopping bonus comets."), left_edge,135);
   help_add_comet("2 + 2 = ?", "4");
   comets[0].bonus = 1;
   frame_start = frame;
+
   while (comets[0].alive && (frame-frame_start < 50) && !(quit_help = help_renderframe_exit()));
+
   if (quit_help)
     return;
   if (comets[0].alive)
     speed = 0;
   game_set_message(&s3,_("Zap it now!"),left_edge,225);
+
   while (comets[0].alive && !(quit_help = help_renderframe_exit()));
+
   if (quit_help)
     return;
   game_set_message(&s1,_("Great job!"),left_edge,100);
   game_clear_message(&s2);
   game_clear_message(&s3);
   frame_start = frame;
+
   while ((frame-frame_start < 2*FPS) && !(quit_help = help_renderframe_exit()));
+
   if (quit_help)
     return;
   check_extra_life();
   frame_start = frame;
+
   while ((frame-frame_start < 10*FPS) && !(quit_help = help_renderframe_exit()));
+
   if (quit_help)
     return;
 
@@ -849,6 +1139,7 @@
   game_set_message(&s4,_("Do it now, and then play!"),left_edge,225);
 
   help_controls.x_is_blinking = 1;
+
   while (!help_renderframe_exit());
 }
 
@@ -936,10 +1227,11 @@
 
 void game_write_message(const game_message *msg)
 {
-  SDL_Surface *surf;
+  SDL_Surface* surf;
   SDL_Rect rect;
 
-  if (strlen(msg->message) > 0) {
+  if (strlen(msg->message) > 0)
+  {
     surf = BlackOutline( _(msg->message), DEFAULT_HELP_FONT_SIZE, &white);
     rect.w = surf->w;
     rect.h = surf->h;
@@ -1020,7 +1312,8 @@
       if ((rand() % 3) < 1)
         demo_answer--;  // sometimes get it wrong on purpose
 
-      DEBUGMSG(debug_game, "Demo mode, comet %d attacked with answer %d\n",picked_comet,demo_answer);
+      DEBUGMSG(debug_game, "Demo mode, comet %d attacked with answer %d\n", picked_comet,demo_answer);
+
       /* handle negative answer: */
       if (demo_answer < 0)
       {
@@ -1064,7 +1357,8 @@
     else
     {
       /* "Press Return" */
-      DEBUGMSG(debug_game, "Demo mode firing with these digits: %d%d%d\n",digits[0],digits[1],digits[2]);
+      DEBUGMSG(debug_game, "Demo mode firing with these digits: %d%d%d\n",
+               digits[0], digits[1], digits[2]);
       doing_answer = 1;
       picked_comet = -1;
     }
@@ -1087,11 +1381,7 @@
   }
 
   doing_answer = 0;
-/*
-  num = (digits[0] * 100 +
-         digits[1] * 10 +
-         digits[2]);
-*/
+
   /* negative answer support DSB */
   
   ans[0] = '-'; //for math questions only, this is just replaced.
@@ -1100,28 +1390,8 @@
     ans[j] = digits[i] + '0';
   ans[j] = '\0';
   
-/*
-  if (neg_answer_picked)
-  {
-    ans[0] = '-';
-    for (i = j = 0; i < MC_MAX_DIGITS; ++i)
-    {
-      if (digits[i] == 0)
-        continue;
-      ans[++j] = digits[i] + '0';
-    }
-  }
-  else
-  {
-    for (i = j = 0; i < MC_MAX_DIGITS; ++i)
-    {
-      if (digits[i] == 0)
-        continue;
-      ans[j++] = digits[i] + '0';
-    }
-  } 
-*/
 
+
   /*  Pick the lowest comet which has the right answer: */
   /*  FIXME: do we want it to prefer bonus comets to regular comets? */
   lowest_y = 0;
@@ -1129,7 +1399,6 @@
 
   for (i = 0; i < MAX_COMETS; i++)
   {
-    mcdprintf("Comparing '%s' with '%s'\n", comets[i].flashcard.answer_string, ans);
     if (comets[i].alive &&
         comets[i].expl == -1 &&
         //comets[i].answer == num &&
@@ -1144,7 +1413,21 @@
   /* If there was an comet with this answer, destroy it! */
   if (lowest != -1)  /* -1 means no comet had this answer */
   {
-    MC_AnsweredCorrectly(&(comets[lowest].flashcard));
+    /* Tell Mathcards or the server that we answered correctly: */
+    if(Opts_LanMode())
+    {
+#ifdef HAVE_LIBSDL_NET
+      LAN_AnsweredCorrectly(comets[lowest].flashcard.question_id);
+#else
+      fprintf(stderr, "Warning - LAN mode selected but SDL_net not available!\n");
+      Opts_SetLanMode(0);
+      MC_AnsweredCorrectly(comets[lowest].flashcard.question_id);
+#endif
+    }
+    else
+    {
+      MC_AnsweredCorrectly(comets[lowest].flashcard.question_id);
+    }
 
     /* Store the time the question was present on screen (do this */
     /* in a way that avoids storing it if the time wrapped around */
@@ -1235,6 +1518,7 @@
   s2.alpha -= SDL_ALPHA_OPAQUE / LEVEL_START_WAIT_START;
   s3.alpha -= SDL_ALPHA_OPAQUE / LEVEL_START_WAIT_START;
   s4.alpha -= SDL_ALPHA_OPAQUE / LEVEL_START_WAIT_START;
+  DEBUGMSG(debug_game, "alpha = %d\n", s1.alpha);
 
   level_start_wait--;
   if (level_start_wait > LEVEL_START_WAIT_START / 4)
@@ -1334,8 +1618,22 @@
           comets[i].expl == -1)
       {
         /* Tell MathCards about it - question not answered correctly: */
-        MC_NotAnsweredCorrectly(&(comets[i].flashcard));
+        if(Opts_LanMode())
+        {
+#ifdef HAVE_LIBSDL_NET
+          LAN_NotAnsweredCorrectly(comets[i].flashcard.question_id);
+#else
+          fprintf(stderr, "Warning - LAN mode selected but SDL_net not available!\n");
+          Opts_SetLanMode(0);
+          MC_NotAnsweredCorrectly(comets[i].flashcard.question_id);
+#endif
+        }
+        else
+        {
+          MC_NotAnsweredCorrectly(comets[i].flashcard.question_id);
+        }
 
+
         /* Store the time the question was present on screen (do this */
         /* in a way that avoids storing it if the time wrapped around */
         ctime = SDL_GetTicks();
@@ -1419,19 +1717,24 @@
     }
   }
 
+  /* FIXME for the LAN game, the adding of comets needs to take place in  */
+  /* check_messages() when new questions come in from the server.  For    */
+  /* ease of understanding, we should do it at the same place in the game */
+  /* loop for the non-LAN (i.e. local MC_*() functions) game - DSB        */
   /* add more comets if needed: */
-  if (!Opts_HelpMode() && level_start_wait == 0 &&
-      (frame % 20) == 0)   /* FIXME:do we want this to vary with comet speed?*/
+  if (!Opts_HelpMode() && level_start_wait == 0) //&&
+     // (frame % 20) == 0)
   {
     /* num_attackers is how many comets are left in wave */
     if (num_attackers > 0)
     {
-      if ((rand() % 2) == 0 || num_comets_alive == 0)
+//      if ((rand() % 2) == 0 || num_comets_alive == 0)  NOTE also caused timing issue
       {
         if (add_comet())
         {
           num_attackers--;
         }
+        
       }
     }
     else
@@ -1678,6 +1981,7 @@
     return 1;
   DEBUGCODE(debug_game)
     print_status();
+    
   if (extra_life_earned) {
     /* Check to see if any ingloo has been hit */
     fewest_hits_left = 2;
@@ -1696,7 +2000,7 @@
     cloud.y = screen->h/3;
     cloud.city = fewest_index;
     bonus_comet_counter = Opts_BonusCometInterval()+1;
-
+    
     DEBUGMSG(debug_game, "Bonus comet counter restored to %d\n",bonus_comet_counter);
 
     if (cloud.city < NUM_CITIES/2)
@@ -1714,14 +2018,16 @@
     DEBUGCODE(debug_game)
       print_status();
     return 1;
-  } else
+  }
+  else
     return 0;
 }
 
+
 void game_handle_extra_life(void)
 {
   // This handles the animation sequence during the rebuilding of an igloo
-  int i,igloo_top,num_below_igloo,direction;
+  int i, igloo_top, num_below_igloo, direction;
 
   if (cloud.status == EXTRA_LIFE_ON) {
 
@@ -1840,7 +2146,7 @@
     fgcolor = SDL_MapRGB(screen->format, 64, 96, 64);
   if (old_wave != wave)
   {
-    DEBUGMSG(debug_game,"Wave %d\n", wave)
+    DEBUGMSG(debug_game,"Wave %d\n", wave);
     old_wave = wave;
     bgcolor = SDL_MapRGB(screen->format,
                          64,
@@ -1879,6 +2185,7 @@
 /* draw last (i.e. in front), as they can overlap          */
 void game_draw_comets(void)
 {
+
   int i;
   SDL_Surface* img = NULL;
   SDL_Rect dest;
@@ -1951,14 +2258,11 @@
         comet_str = comets[i].flashcard.answer_string;
       }
 
-      /* Move images[] index to bonus range: */
-
       /* Draw it! */
       dest.x = comets[i].x - (img->w / 2);
       dest.y = comets[i].y - img->h;
       dest.w = img->w;
       dest.h = img->h;
-
       SDL_BlitSurface(img, NULL, screen, &dest);
       if (comet_str != NULL)
       {
@@ -1968,6 +2272,8 @@
   }
 }
 
+
+
 void game_draw_cities(void)
 {
   int i, j, current_layer, max_layer;
@@ -2208,14 +2514,16 @@
 
 int check_exit_conditions(void)
 {
+//  int x;
+
   if (user_quit_received)
   {
     if (user_quit_received != GAME_OVER_WINDOW_CLOSE &&
         user_quit_received != GAME_OVER_ESCAPE &&
         user_quit_received != GAME_OVER_CHEATER)
     {
-    	 fprintf(stderr,"Unexpected value %d for user_quit_received\n", user_quit_received);
-    	 return GAME_OVER_OTHER;
+      fprintf(stderr, "Unexpected value %d for user_quit_received\n", user_quit_received);
+      return GAME_OVER_OTHER;
     }
     return user_quit_received;    
   }
@@ -2231,30 +2539,64 @@
   }
 
   /* determine if game won (i.e. all questions in mission answered correctly): */
-  if (MC_MissionAccomplished())
+  if(Opts_LanMode())
   {
-    DEBUGMSG(debug_game,"Mission accomplished!\n");
-    return GAME_OVER_WON;
+#ifdef HAVE_LIBSDL_NET
+    if(game_over_won)
+       return GAME_OVER_WON;
+#else
+    // Should not get here!
+    if (MC_MissionAccomplished())
+    {
+      DEBUGMSG(debug_game,"Mission accomplished!\n");
+      return GAME_OVER_WON;
+    }
+#endif
   }
+  else
+  {
+    if (MC_MissionAccomplished())
+    {
+      DEBUGMSG(debug_game,"Mission accomplished!\n");
+      return GAME_OVER_WON;
+    }
+  }
 
+  
   /* Could have situation where mathcards doesn't have more questions */
   /* even though not all questions answered correctly:                */
-  if (!MC_TotalQuestionsLeft())
+  if(Opts_LanMode())
   {
-    return GAME_OVER_OTHER;
+#ifdef HAVE_LIBSDL_NET
+    if(game_over_other)
+       return GAME_OVER_OTHER;
+#else  
+    if(!MC_TotalQuestionsLeft())
+    {
+      return GAME_OVER_OTHER;
+    }
+#endif
   }
-
+  else
+  {
+    if(!MC_TotalQuestionsLeft())
+    {
+      return GAME_OVER_OTHER;
+    }
+  }
+  
   /* Need to get out if no comets alive and MathCards has no questions left in list, */
   /* even though MathCards thinks there are still questions "in play".  */
   /* This SHOULD NOT HAPPEN and means we have a bug somewhere. */
   if (!MC_ListQuestionsLeft() && !num_comets_alive)
   {
+    fprintf(stderr, "Error - no questions left but game not over\n");
     DEBUGMSG(debug_game, "ListQuestionsLeft() = %d ", MC_ListQuestionsLeft());
     DEBUGMSG(debug_game, "num_comets_alive = %d", num_comets_alive);
     return GAME_OVER_ERROR;
   }
-
-  /* If using demo mode, see if counter has run out: */
+   
+   /* If using demo mode, see if counter has run out: */
   if (Opts_DemoMode())
   {
     if (demo_countdown <= 0 )
@@ -2265,6 +2607,7 @@
   return GAME_IN_PROGRESS;
 }
 
+
 void print_exit_conditions(void)
 {
   printf("\ngame_status:\t");
@@ -2315,6 +2658,7 @@
   }
 }
 
+
 /* Reset stuff for the next level! */
 void reset_level(void)
 {
@@ -2486,30 +2830,31 @@
 int add_comet(void)
 {
   static int prev_city = -1;
-  int i, found;
+  int i;
   float y_spacing;
 
-  /* Look for a free comet slot and see if all live comets are far */
-  /* enough down to avoid overlap and keep formulas legible:       */
   found = -1;
+
   y_spacing = (images[IMG_NUMS]->h) * 1.5;
 
-  for (i = 0; i < MAX_COMETS && found == -1; i++)
+  /* Return if any previous comet too high up to create another one yet: */
+  for (i = 0; i < MAX_COMETS; i++)
   {
     if (comets[i].alive)
-    {
       if (comets[i].y < y_spacing)
-      {
-        /* previous comet too high up to create another one yet: */
         return 0;
-      }
-    }
-    else  /* non-living comet so we found a free slot: */
+  }  
+    
+  /* Now look for a free comet slot: */
+  for (i = 0; i < MAX_COMETS; i++)
+  {
+    if (!comets[i].alive)
     {
       found = i;
+      break;
     }
   }
-
+ 
   if (-1 == found)
   {
     /* free comet slot not found - no comet added: */
@@ -2517,43 +2862,63 @@
   }
 
 
-  /* Get math question for new comet - the following function fills in */
-  /* the flashcard struct that is part of the comet struct:            */
-  if (!MC_NextQuestion(&(comets[found].flashcard)))
+  /* Get math question for new comet - if playing in LAN mode, we */
+  /* get the next question from our local queue. If not in LAN    */
+  /* mode, we get it with a direct function call to MathCards     */
+   
+  if(Opts_LanMode())
   {
-    /* no more questions available - cannot create comet.  */
+#ifdef HAVE_LIBSDL_NET
+    for (i = 0; i < TEST_COMETS; i++)
+    {
+      if(comets_questions[i].question_id != -1)
+      {
+        copy_card(&(comets_questions[i]), &(comets[found].flashcard));
+        erase_flashcard(&(comets_questions[i]));
+        break;
+      }
+    }
+
+    if(i == TEST_COMETS)
+    {
+      DEBUGMSG(debug_game, "add_comet() called but no question available in queue\n");
+      return 0;
+    } 
+#else
+    /* NOTE: Should not be able to get to here */
+    if (!MC_NextQuestion(&(comets[found].flashcard)))
+    {
+      /* no more questions available - cannot create comet.  */
+      return 0;
+    }
+#endif
+  }
+  else
+  {
+    if (!MC_NextQuestion(&(comets[found].flashcard)))
+    {
+      /* no more questions available - cannot create comet.  */
+      return 0;
+    }
+  }
+
+  DEBUGCODE(debug_game)
+  {
+    printf("In add_comet(), card is\n");
+    print_card(comets[found].flashcard);
+  }
+  
+  /* Make sure question is "sane" before we add it: */
+  if( (comets[found].flashcard.answer > 999)
+    ||(comets[found].flashcard.answer < -999))
+  {
+    printf("Warning, card with invalid answer encountered: %d\n",
+           comets[found].flashcard.answer);
     return 0;
   }
 
-  /* If we make it to here, create a new comet!                  */
-
+  /* If we make it to here, create a new comet!*/
   comets[found].answer = comets[found].flashcard.answer;
-//  /* The answer may be num1, num2, or num3, depending on format. */
-//  switch (comets[found].flashcard.format)
-//  {
-//    case MC_FORMAT_ANS_LAST:  /* e.g. num1 + num2 = ? */
-//    {
-//      comets[found].answer = comets[found].flashcard.num3;
-//      break;
-//    }
-//    case MC_FORMAT_ANS_MIDDLE:  /* e.g. num1 + ? = num3 */
-//    {
-//      comets[found].answer = comets[found].flashcard.num2;
-//      break;
-//    }
-//    case MC_FORMAT_ANS_FIRST:  /* e.g. ? + num2 = num3 */
-//    {
-//      comets[found].answer = comets[found].flashcard.num1;
-//      break;
-//    }
-//    default:  /* should not get to here if MathCards behaves correctly */
-//    {
-//      fprintf(stderr, "\nadd_comet() - invalid question format");
-//      return 0;
-//    }
-//  }
-  
-
   comets[found].alive = 1;
   num_comets_alive++;
 
@@ -2578,23 +2943,25 @@
 
   DEBUGMSG(debug_game, "bonus_comet_counter is %d\n",bonus_comet_counter);
 
-  if (bonus_comet_counter == 1) {
+  if (bonus_comet_counter == 1)
+  {
     bonus_comet_counter = 0;
     comets[found].bonus = 1;
     playsound(SND_BONUS_COMET);
-
     DEBUGMSG(debug_game, "Created bonus comet");
   }
 
   DEBUGMSG(debug_game, "add_comet(): formula string is: %s", comets[found].flashcard.formula_string);
-
+  
   /* Record the time at which this comet was created */
   comets[found].time_started = SDL_GetTicks();
-
+   
   /* comet slot found and question found so return successfully: */
   return 1;
 }
 
+
+
 /* Draw numbers/symbols over the attacker: */
 /* This draws the numbers related to the comets */
 void draw_nums(const char* str, int x, int y)
@@ -2619,19 +2986,14 @@
   /* the following code keeps the formula at least 8 pixels inside the window: */
   if (cur_x < 8)
     cur_x = 8;
-  if (cur_x + (image_length) >=
-      (screen->w - 8))
-    cur_x = ((screen->w - 8) -
-             (image_length));
+  if (cur_x + (image_length) >= (screen->w - 8))
+    cur_x = ((screen->w - 8) - (image_length));
 
-
   /* Draw each character: */
-
   for (i = 0; i < str_length; i++)
   {
     c = -1;
 
-
     /* Determine which character to display: */
 
     if (str[i] >= '0' && str[i] <= '9')
@@ -2691,46 +3053,38 @@
   int i, cur_x, c;
   SDL_Rect src, dest;
 
-
   cur_x = x;
 
-
   /* Draw each character: */
 
   for (i = 0; i < strlen(str); i++)
-    {
-      c = -1;
+  {
+    c = -1;
 
+    /* Determine which character to display: */
+    if (str[i] >= '0' && str[i] <= '9')
+      c = str[i] - '0';
 
-      /* Determine which character to display: */
+    /* Display this character! */
+    if (c != -1)
+    {
+      src.x = c * (images[IMG_NUMBERS]->w / 10);
+      src.y = 0;
+      src.w = (images[IMG_NUMBERS]->w / 10);
+      src.h = images[IMG_NUMBERS]->h;
 
-      if (str[i] >= '0' && str[i] <= '9')
-        c = str[i] - '0';
+      dest.x = cur_x;
+      dest.y = y;
+      dest.w = src.w;
+      dest.h = src.h;
 
-
-      /* Display this character! */
-
-      if (c != -1)
-        {
-          src.x = c * (images[IMG_NUMBERS]->w / 10);
-          src.y = 0;
-          src.w = (images[IMG_NUMBERS]->w / 10);
-          src.h = images[IMG_NUMBERS]->h;
-
-          dest.x = cur_x;
-          dest.y = y;
-          dest.w = src.w;
-          dest.h = src.h;
-
-          SDL_BlitSurface(images[IMG_NUMBERS], &src,
+      SDL_BlitSurface(images[IMG_NUMBERS], &src,
                           screen, &dest);
 
-
-          /* Move the 'cursor' one character width: */
-
-          cur_x = cur_x + (images[IMG_NUMBERS]->w / 10);
-        }
+      /* Move the 'cursor' one character width: */
+      cur_x = cur_x + (images[IMG_NUMBERS]->w / 10);
     }
+  }
 }
 
 
@@ -2798,8 +3152,9 @@
 
 
 
+/* FIXME these ought to be in SDL_extras - DSB */
+
 /* Draw a line: */
-
 void draw_line(int x1, int y1, int x2, int y2, int red, int grn, int blu)
 {
   int dx, dy, tmp;
@@ -2875,34 +3230,34 @@
   /* Assuming the X/Y values are within the bounds of this surface... */
 
   if (x >= 0 && y >= 0 && x < surface->w && y < surface->h)
-    {
+  {
       /* Set the (correctly-sized) piece of data in the surface's RAM
          to the pixel value sent in: */
 
-      if (bpp == 1)
-        *p = pixel;
-      else if (bpp == 2)
-        *(Uint16 *)p = pixel;
-      else if (bpp == 3)
-        {
-          if (SDL_BYTEORDER == SDL_BIG_ENDIAN)
-            {
-              p[0] = (pixel >> 16) & 0xff;
-              p[1] = (pixel >> 8) & 0xff;
-              p[2] = pixel & 0xff;
-            }
-          else
-            {
-              p[0] = pixel & 0xff;
-              p[1] = (pixel >> 8) & 0xff;
-              p[2] = (pixel >> 16) & 0xff;
-            }
-        }
-      else if (bpp == 4)
-        {
-          *(Uint32 *)p = pixel;
-        }
+    if (bpp == 1)
+      *p = pixel;
+    else if (bpp == 2)
+      *(Uint16 *)p = pixel;
+    else if (bpp == 3)
+    {
+      if (SDL_BYTEORDER == SDL_BIG_ENDIAN)
+      {
+        p[0] = (pixel >> 16) & 0xff;
+        p[1] = (pixel >> 8) & 0xff;
+        p[2] = pixel & 0xff;
+      }
+      else
+      {
+        p[0] = pixel & 0xff;
+        p[1] = (pixel >> 8) & 0xff;
+        p[2] = (pixel >> 16) & 0xff;
+      }
     }
+    else if (bpp == 4)
+    {
+      *(Uint32 *)p = pixel;
+    }
+  }
 #else
   SDL_Rect dest;
 
@@ -2960,7 +3315,11 @@
   SDL_BlitSurface(images[comet_img], NULL, screen, &dest);
 
   /* draw number of remaining questions: */
-  questions_left = MC_TotalQuestionsLeft();
+  if(Opts_LanMode())
+    questions_left = total_questions_left;
+  else
+    questions_left = MC_TotalQuestionsLeft();
+
   sprintf(str, "%.4d", questions_left);
   draw_numbers(str, nums_x, 0);
 }
@@ -3350,14 +3709,16 @@
 void add_score(int inc)
 {
   score += inc;
-  DEBUGMSG(debug_game,"Score is now: %d\n", score)
+  DEBUGMSG(debug_game,"Score is now: %d\n", score);
 }
 
 
 
 void reset_comets(void)
 {
-  int i =0;
+  int i = 0;
+  comet_counter = 0;
+
   for (i = 0; i < MAX_COMETS; i++)
   {
     comets[i].alive = 0;
@@ -3366,13 +3727,41 @@
     comets[i].x = 0;
     comets[i].y = 0;
     comets[i].answer = 0;
-//    strncpy(comets[i].flashcard.formula_string, " ", max_formula_size);
-//    strncpy(comets[i].flashcard.answer_string, " ", max_answer_size);
     MC_ResetFlashCard(&(comets[i].flashcard) );
     comets[i].bonus = 0;
   }
 }
 
+/* Copy the command name out of the tab-delimited buffer: */
+
+void seperate_commmand_and_buf(char command[NET_BUF_LEN],char buf[NET_BUF_LEN])
+{
+  int i;
+    for (i = 0;
+  buf[i] != '\0' && buf[i] != '\t' && i < NET_BUF_LEN;
+                                      i++)
+  {
+    command[i] = buf[i];
+  }
+  command[i] = '\0';
+}
+
+
+void copy_card(MC_FlashCard* src, MC_FlashCard* dest)
+{
+  if (!src || !dest)
+    return;
+  mcdprintf("Copying '%s' to '%s', ", src->formula_string,dest->formula_string);
+  mcdprintf("copying '%s' to '%s'\n", src->answer_string, dest->answer_string);
+  strncpy(dest->formula_string, src->formula_string, MC_FORMULA_LEN);
+  strncpy(dest->answer_string, src->answer_string, MC_ANSWER_LEN);
+  mcdprintf("Card is: '%s', '%s'\n", dest->formula_string, dest->answer_string);
+  dest->answer = src->answer;
+  dest->difficulty = src->difficulty;
+  dest->question_id = src->question_id;
+}
+
+
 void print_status(void)
 {
   int i;
@@ -3396,6 +3785,7 @@
   printf("\n");
 }
 
+
 void free_on_exit(void)
 {
   int i;
@@ -3413,8 +3803,8 @@
   int i, img;
   int old_city_expl_height = city_expl_height;
 
-  DEBUGMSG(debug_game,"Recalculating positions\n")
-
+  DEBUGMSG(debug_game,"Recalculating positions\n");
+  
   if (Opts_GetGlobalOpt(USE_IGLOOS))
     img = IMG_IGLOO_INTACT;
   else
@@ -3427,7 +3817,7 @@
     {
       cities[i].x = (((screen->w / (NUM_CITIES + 1)) * i) +
                      ((images[img] -> w) / 2));
-      DEBUGMSG(debug_game,"%d,", cities[i].x)
+      DEBUGMSG(debug_game,"%d,", cities[i].x);
     }
     else
     {
@@ -3455,6 +3845,4 @@
     //else
     //  comets[i].y = comets[i].y * RES_Y / screen->h;
   }
-
-
 }

Modified: tuxmath/trunk/src/globals.h
===================================================================
--- tuxmath/trunk/src/globals.h	2009-09-04 19:47:19 UTC (rev 1488)
+++ tuxmath/trunk/src/globals.h	2009-09-05 02:31:43 UTC (rev 1489)
@@ -75,6 +75,7 @@
 #define DEFAULT_MENU_SOUND 1
 #define DEFAULT_MENU_MUSIC 1
 #define DEFAULT_FULLSCREEN 1
+#define DEFAULT_LAN_MODE 0
 #define DEFAULT_USE_BKGD 1
 #define DEFAULT_HELP_MODE 0
 #define DEFAULT_DEMO_MODE 0

Modified: tuxmath/trunk/src/highscore.c
===================================================================
--- tuxmath/trunk/src/highscore.c	2009-09-04 19:47:19 UTC (rev 1488)
+++ tuxmath/trunk/src/highscore.c	2009-09-05 02:31:43 UTC (rev 1489)
@@ -20,6 +20,8 @@
 #include "options.h"
 #include "SDL_extras.h"
 #include "convert_utf.h"
+#include "transtruct.h"
+#include "network.h"
 
 
 typedef struct high_score_entry {
@@ -714,3 +716,471 @@
 
   return high_scores[diff_level][place].name;
 }
+
+
+void Ready(const char* heading)
+{
+  SDL_Rect loc;
+  SDL_Rect TuxRect,
+           stopRect,
+             okRect;
+
+  int finished = 0;
+  int tux_frame = 0;
+  Uint32 frame = 0;
+  Uint32 start = 0;
+  sprite* Tux = LoadSprite("tux/bigtux", IMG_ALPHA);
+
+
+  /* We need to get Unicode vals from SDL keysyms */
+  SDL_EnableUNICODE(SDL_ENABLE);
+
+
+
+  /* Draw background: */
+  if (current_bkg())
+    SDL_BlitSurface(current_bkg(), NULL, screen, NULL);
+ 
+  /* Red "Stop" circle in upper right corner to go back to main menu: */
+  if (images[IMG_STOP])
+  {
+    stopRect.w = images[IMG_STOP]->w;
+    stopRect.h = images[IMG_STOP]->h;
+    stopRect.x = screen->w - images[IMG_STOP]->w;
+    stopRect.y = 0;
+    SDL_BlitSurface(images[IMG_STOP], NULL, screen, &stopRect);
+  }
+
+ if (images[IMG_RIGHT])
+  {
+    okRect.w = (images[IMG_RIGHT]->w)*2;
+    okRect.h = (images[IMG_RIGHT]->h)*2;
+    okRect.x = (screen->w)/2;
+    okRect.y = 240;
+    SDL_BlitSurface(images[IMG_RIGHT], NULL, screen, &okRect);
+  }
+
+
+  if (Tux && Tux->frame[0]) /* make sure sprite has at least one frame */
+  {
+    TuxRect.w = Tux->frame[0]->w;
+    TuxRect.h = Tux->frame[0]->h;
+    TuxRect.x = 0;
+    TuxRect.y = screen->h - Tux->frame[0]->h;
+  }
+
+
+  /* Draw heading: */
+  {
+    SDL_Surface* s = BlackOutline(_(heading),
+                                  DEFAULT_MENU_FONT_SIZE, &white);
+    if (s)
+    {
+      loc.x = (screen->w/2) - (s->w/2);
+      loc.y = 110;
+      SDL_BlitSurface(s, NULL, screen, &loc);
+      SDL_FreeSurface(s);
+    }
+
+  }
+
+  /* and update: */
+  SDL_UpdateRect(screen, 0, 0, 0, 0);
+
+
+
+  while (!finished)
+  {
+    start = SDL_GetTicks();
+
+    while (SDL_PollEvent(&event)) 
+    {
+      switch (event.type)
+      {
+        case SDL_QUIT:
+        {
+          cleanup();
+        }
+
+        case SDL_MOUSEBUTTONDOWN:
+        /* "Stop" button - go to main menu: */
+        { 
+          if (inRect(stopRect, event.button.x, event.button.y ))
+          {
+            finished = 1;
+            playsound(SND_TOCK);
+            break;
+          }
+
+          if (inRect(okRect, event.button.x, event.button.y ))
+          {
+            finished = 1;
+            playsound(SND_TOCK);
+            break;
+          }
+          
+        }
+      }
+    }
+ 
+    /* --- make tux blink --- */
+    switch (frame % TUX6)
+    {
+      case 0:    tux_frame = 1; break;
+      case TUX1: tux_frame = 2; break;
+      case TUX2: tux_frame = 3; break;
+      case TUX3: tux_frame = 4; break;                        
+      case TUX4: tux_frame = 3; break;
+      case TUX5: tux_frame = 2; break;
+      default: tux_frame = 0;
+    }
+
+    if (Tux && tux_frame)
+    {
+      SDL_BlitSurface(Tux->frame[tux_frame - 1], NULL, screen, &TuxRect);
+      SDL_UpdateRect(screen, TuxRect.x, TuxRect.y, TuxRect.w, TuxRect.h);
+    }
+
+    /* Wait so we keep frame rate constant: */
+    while ((SDL_GetTicks() - start) < 33)
+    {
+      SDL_Delay(20);
+    }
+    frame++;
+  }  // End of while (!finished) loop
+
+  FreeSprite(Tux);
+
+  /* Turn off SDL Unicode lookup (because has some overhead): */
+  SDL_EnableUNICODE(SDL_DISABLE);
+
+}
+
+
+int Standby(const char* heading, const char* sub)
+{
+  
+  SDL_Rect loc;
+  SDL_Rect TuxRect,
+           stopRect;
+  char buf[NET_BUF_LEN];
+
+  int finished = 0;
+  int tux_frame = 0;
+  Uint32 frame = 0;
+  Uint32 start = 0;
+
+
+  sprite* Tux = LoadSprite("tux/bigtux", IMG_ALPHA);
+
+
+  /* We need to get Unicode vals from SDL keysyms */
+  SDL_EnableUNICODE(SDL_ENABLE);
+
+#ifdef TUXMATH_DEBUG
+  fprintf(stderr, "\nEnter HighScoreNameEntry()\n" );
+#endif
+
+
+  /* Draw background: */
+  if (current_bkg())
+    SDL_BlitSurface(current_bkg(), NULL, screen, NULL);
+
+  /* Red "Stop" circle in upper right corner to go back to main menu: */
+  if (images[IMG_STOP])
+  {
+    stopRect.w = images[IMG_STOP]->w;
+    stopRect.h = images[IMG_STOP]->h;
+    stopRect.x = screen->w - images[IMG_STOP]->w;
+    stopRect.y = 0;
+    SDL_BlitSurface(images[IMG_STOP], NULL, screen, &stopRect);
+  }
+
+  if (Tux && Tux->frame[0]) /* make sure sprite has at least one frame */
+  {
+    TuxRect.w = Tux->frame[0]->w;
+    TuxRect.h = Tux->frame[0]->h;
+    TuxRect.x = 0;
+    TuxRect.y = screen->h - Tux->frame[0]->h;
+  }
+
+  /* Draw heading: */
+  {
+    SDL_Surface* s = BlackOutline(_(heading),
+                                  DEFAULT_MENU_FONT_SIZE, &white);
+    if (s)
+    {
+      loc.x = (screen->w/2) - (s->w/2);
+      loc.y = 110;
+      SDL_BlitSurface(s, NULL, screen, &loc);
+      SDL_FreeSurface(s);
+    }
+
+    s = BlackOutline(_(sub),
+                     DEFAULT_MENU_FONT_SIZE, &white);
+    if (s)
+    {
+      loc.x = (screen->w/2) - (s->w/2);
+      loc.y = 140;
+      SDL_BlitSurface(s, NULL, screen, &loc);
+      SDL_FreeSurface(s);
+    }
+  }
+
+  /* and update: */
+  SDL_UpdateRect(screen, 0, 0, 0, 0);
+
+
+
+  while (!finished)
+  {
+    start = SDL_GetTicks();
+
+    while (SDL_PollEvent(&event)) 
+    {
+      switch (event.type)
+      {
+        case SDL_QUIT:
+        {
+          cleanup();
+        }
+
+        case SDL_MOUSEBUTTONDOWN:
+        /* "Stop" button - go to main menu: */
+        { 
+          if (inRect(stopRect, event.button.x, event.button.y ))
+          {
+            finished = -1;
+            playsound(SND_TOCK);
+            break;
+          }
+        }
+      }
+    }
+
+    //FIXME - so we pull all the messages out of the socket and ignore anything
+    //that isn't "GO_TO_GAME" - why are we ignoring them?  We cannot assume the
+    //server is going to send us what we expect. At a minimum, we need to 
+    //print any unrecognized messages to stderr with a warning - DSB
+    while(!check_messages(buf))
+    {
+      if(strncmp(buf,"GO_TO_GAME",strlen("GO_TO_GAME")) == 0)
+      {
+        finished = 1;
+        playsound(SND_TOCK);
+        break;
+      }
+      else if(strncmp(buf, "GAME_IN_PROGRESS", strlen("GAME_IN_PROGRESS")) == 0)
+      {
+        finished = -1;
+        playsound(SND_TOCK);
+        break;
+      }
+    }
+
+    /* --- make tux blink --- */
+    switch (frame % TUX6)
+    {
+      case 0:    tux_frame = 1; break;
+      case TUX1: tux_frame = 2; break;
+      case TUX2: tux_frame = 3; break;
+      case TUX3: tux_frame = 4; break;                        
+      case TUX4: tux_frame = 3; break;
+      case TUX5: tux_frame = 2; break;
+      default: tux_frame = 0;
+    }
+
+    if (Tux && tux_frame)
+    {
+      SDL_BlitSurface(Tux->frame[tux_frame - 1], NULL, screen, &TuxRect);
+      SDL_UpdateRect(screen, TuxRect.x, TuxRect.y, TuxRect.w, TuxRect.h);
+    }
+
+    /* Wait so we keep frame rate constant: */
+    while ((SDL_GetTicks() - start) < 33)
+    {
+      SDL_Delay(20);
+    }
+    frame++;
+  }  // End of while (!finished) loop
+
+  FreeSprite(Tux);
+
+  /* Turn off SDL Unicode lookup (because has some overhead): */
+  SDL_EnableUNICODE(SDL_DISABLE);
+
+  /* 1 means we start game, -1 means we go back to menu */
+  return finished;
+}
+
+
+int detecting_servers(const char* heading, const char* sub)
+{
+#ifndef HAVE_LIBSDL_NET
+  return 0;
+#else
+  SDL_Rect loc;
+  SDL_Rect TuxRect,
+           stopRect;
+
+  int finished = 0;
+  int tux_frame = 0;
+  Uint32 frame = 0;
+  Uint32 start = 0;
+  int servers_found = 0;  
+
+
+  sprite* Tux = LoadSprite("tux/bigtux", IMG_ALPHA);
+
+
+  /* We need to get Unicode vals from SDL keysyms */
+  SDL_EnableUNICODE(SDL_ENABLE);
+
+#ifdef TUXMATH_DEBUG
+  fprintf(stderr, "\nEnter detecting_servers()\n" );
+#endif
+
+
+  /* Draw background: */
+  if (current_bkg())
+    SDL_BlitSurface(current_bkg(), NULL, screen, NULL);
+
+  /* Red "Stop" circle in upper right corner to go back to main menu: */
+  if (images[IMG_STOP])
+  {
+    stopRect.w = images[IMG_STOP]->w;
+    stopRect.h = images[IMG_STOP]->h;
+    stopRect.x = screen->w - images[IMG_STOP]->w;
+    stopRect.y = 0;
+    SDL_BlitSurface(images[IMG_STOP], NULL, screen, &stopRect);
+  }
+
+  if (Tux && Tux->frame[0]) /* make sure sprite has at least one frame */
+  {
+    TuxRect.w = Tux->frame[0]->w;
+    TuxRect.h = Tux->frame[0]->h;
+    TuxRect.x = 0;
+    TuxRect.y = screen->h - Tux->frame[0]->h;
+  }
+
+  /* Draw heading: */
+  {
+    SDL_Surface* s = BlackOutline(_(heading),
+                                  DEFAULT_MENU_FONT_SIZE, &white);
+    if (s)
+    {
+      loc.x = (screen->w/2) - (s->w/2);
+      loc.y = 110;
+      SDL_BlitSurface(s, NULL, screen, &loc);
+      SDL_FreeSurface(s);
+    }
+
+    s = BlackOutline(_(sub),
+                     DEFAULT_MENU_FONT_SIZE, &white);
+    if (s)
+    {
+      loc.x = (screen->w/2) - (s->w/2);
+      loc.y = 140;
+      SDL_BlitSurface(s, NULL, screen, &loc);
+      SDL_FreeSurface(s);
+    }
+  }
+
+  /* and update: */
+  SDL_UpdateRect(screen, 0, 0, 0, 0);
+
+  while (!finished)
+  {
+    start = SDL_GetTicks();
+
+    //Scan local network to find running server:
+    servers_found = LAN_DetectServers();
+    if(servers_found < 1)
+    {
+      printf("No server could be found - returning.\n");
+      /* Turn off SDL Unicode lookup (because has some overhead): */
+      SDL_EnableUNICODE(SDL_DISABLE);
+      FreeSprite(Tux);
+      return 0;
+    }
+    else if(servers_found  == 1)  //One server - connect without player intervention
+    {
+      printf("Single server found - connecting automatically...");
+
+      if(!LAN_AutoSetup(0))  //i.e.first (and only) entry in list
+      {
+        printf("LAN_AutoSetup() failed - returning.\n");
+        /* Turn off SDL Unicode lookup (because has some overhead): */
+        SDL_EnableUNICODE(SDL_DISABLE);
+        FreeSprite(Tux);
+        return 0;
+      }
+      
+      
+      finished = 1;
+      break;  //So we quit scanning as soon as we connect
+      printf("connected\n");
+    } else if (servers_found  > 1)
+    {
+      //TODO display list of servers for player to choose from:
+    }
+
+
+    while (SDL_PollEvent(&event)) 
+    {
+      switch (event.type)
+      {
+        case SDL_QUIT:
+        {
+          cleanup();
+        }
+
+        case SDL_MOUSEBUTTONDOWN:
+        /* "Stop" button - go to main menu: */
+        { 
+          if (inRect(stopRect, event.button.x, event.button.y ))
+          {
+            finished = 1;
+            playsound(SND_TOCK);
+            break;
+          }
+        }
+      }
+    }
+
+    /* --- make tux blink --- */
+    switch (frame % TUX6)
+    {
+      case 0:    tux_frame = 1; break;
+      case TUX1: tux_frame = 2; break;
+      case TUX2: tux_frame = 3; break;
+      case TUX3: tux_frame = 4; break;                        
+      case TUX4: tux_frame = 3; break;
+      case TUX5: tux_frame = 2; break;
+      default: tux_frame = 0;
+    }
+
+    if (Tux && tux_frame)
+    {
+      SDL_BlitSurface(Tux->frame[tux_frame - 1], NULL, screen, &TuxRect);
+      SDL_UpdateRect(screen, TuxRect.x, TuxRect.y, TuxRect.w, TuxRect.h);
+    }
+
+    /* Wait so we keep frame rate constant: */
+    while ((SDL_GetTicks() - start) < 33)
+    {
+      SDL_Delay(20);
+    }
+    frame++;
+  }  // End of while (!finished) loop
+
+
+  /* Turn off SDL Unicode lookup (because has some overhead): */
+  SDL_EnableUNICODE(SDL_DISABLE);
+  FreeSprite(Tux);
+
+  return 1;
+
+#endif
+}
+

Modified: tuxmath/trunk/src/highscore.h
===================================================================
--- tuxmath/trunk/src/highscore.h	2009-09-04 19:47:19 UTC (rev 1488)
+++ tuxmath/trunk/src/highscore.h	2009-09-05 02:31:43 UTC (rev 1489)
@@ -16,9 +16,13 @@
 
 #include "globals.h"
 
+
 void DisplayHighScores(int level);
 void HighScoreNameEntry(char* pl_name);
 void NameEntry(char* pl_name, const char* heading, const char* sub);
+int Standby(const char* heading, const char* sub);
+int detecting_servers(const char* heading, const char* sub);
+void Ready(const char* heading);
 
 int check_score_place(int diff_level, int new_score);
 int insert_score(char* playername, int diff_level, int new_score);

Deleted: tuxmath/trunk/src/mathcards.c
===================================================================
--- tuxmath/trunk/src/mathcards.c	2009-09-04 19:47:19 UTC (rev 1488)
+++ tuxmath/trunk/src/mathcards.c	2009-09-05 02:31:43 UTC (rev 1489)
@@ -1,2438 +0,0 @@
-/*
-*  C Implementation: mathcards.c
-*
-*       Description: implementation of backend for a flashcard-type math game.
-        Developed as an enhancement to Bill Kendrick's "Tux of Math Command"
-        (aka tuxmath).  (If tuxmath were a C++ program, this would be a C++ class).
-        MathCards could be used as the basis for similar games using a different interface.
-
-*
-*
-* Author: David Bruce <dbruce at tampabay.rr.com>, (C) 2005
-*
-* Copyright: See COPYING file that comes with this distribution.  (Briefly, GNU GPL).
-*
-* Revised extensively in 2008 by Brendan Luchen, Tim Holy, and David Bruce
-*
-*/
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <math.h>
-#include <time.h>
-
-#include "globals.h"
-#include "mathcards.h"
-
-/* extern'd constants */
-
-const char* const MC_OPTION_TEXT[NOPTS+1] = {
-"PLAY_THROUGH_LIST",
-"QUESTION_COPIES",
-"REPEAT_WRONGS",
-"COPIES_REPEATED_WRONGS",
-"ALLOW_NEGATIVES",
-"MAX_ANSWER",
-"MAX_QUESTIONS",
-"MAX_FORMULA_NUMS",
-"MIN_FORMULA_NUMS",
-
-"FORMAT_ANSWER_LAST",
-"FORMAT_ANSWER_FIRST",
-"FORMAT_ANSWER_MIDDLE",
-"FORMAT_ADD_ANSWER_LAST",
-"FORMAT_ADD_ANSWER_FIRST",
-"FORMAT_ADD_ANSWER_MIDDLE",
-"FORMAT_SUB_ANSWER_LAST",
-"FORMAT_SUB_ANSWER_FIRST",
-"FORMAT_SUB_ANSWER_MIDDLE",
-"FORMAT_MULT_ANSWER_LAST",
-"FORMAT_MULT_ANSWER_FIRST",
-"FORMAT_MULT_ANSWER_MIDDLE",
-"FORMAT_DIV_ANSWER_LAST",
-"FORMAT_DIV_ANSWER_FIRST",
-"FORMAT_DIV_ANSWER_MIDDLE",
-
-"ADDITION_ALLOWED",
-"SUBTRACTION_ALLOWED",
-"MULTIPLICATION_ALLOWED",
-"DIVISION_ALLOWED",
-"TYPING_PRACTICE_ALLOWED",
-"ARITHMETIC_ALLOWED",
-"COMPARISON_ALLOWED",
-
-"MIN_AUGEND",
-"MAX_AUGEND",
-"MIN_ADDEND",
-"MAX_ADDEND",
-
-"MIN_MINUEND",
-"MAX_MINUEND",
-"MIN_SUBTRAHEND",
-"MAX_SUBTRAHEND",
-
-"MIN_MULTIPLIER",
-"MAX_MULTIPLIER",
-"MIN_MULTIPLICAND",
-"MAX_MULTIPLICAND",
-
-"MIN_DIVISOR",
-"MAX_DIVISOR",
-"MIN_QUOTIENT",
-"MAX_QUOTIENT",
-
-"MIN_TYPING_NUM",
-"MAX_TYPING_NUM",
-
-"MIN_COMPARATOR" ,
-"MAX_COMPARATOR" ,
-"MIN_COMPARISAND",
-"MAX_COMPARISAND",
-
-"RANDOMIZE",
-
-"COMPREHENSIVE",
-"AVG_LIST_LENGTH",
-"VARY_LIST_LENGTH",
-
-"END_OF_OPTS"
-};
-
-const int MC_DEFAULTS[] = {
-  1,    //PLAY_THROUGH_LIST
-  1,    //QUESTION_COPIES
-  1,    //REPEAT_WRONGS
-  1,    //COPIES_REPEATED_WRONGS
-  0,    //ALLOW_NEGATIVES
-  999,  //MAX_ANSWER
-  5000, //MAX_QUESTIONS
-  2,    //MAX_FORMULA_NUMS
-  2,    //MIN_FORMULA_NUMS
-        //
-  1,    //FORMAT_ANSWER_LAST
-  0,    //FORMAT_ANSWER_FIRST
-  0,    //FORMAT_ANSWER_MIDDLE
-  1,    //FORMAT_ADD_ANSWER_LAST
-  0,    //FORMAT_ADD_ANSWER_FIRST
-  0,    //FORMAT_ADD_ANSWER_MIDDLE
-  1,    //FORMAT_SUB_ANSWER_LAST
-  0,    //FORMAT_SUB_ANSWER_FIRST
-  0,    //FORMAT_SUB_ANSWER_MIDDLE
-  1,    //FORMAT_MULT_ANSWER_LAST
-  0,    //FORMAT_MULT_ANSWER_FIRST
-  0,    //FORMAT_MULT_ANSWER_MIDDLE
-  1,    //FORMAT_DIV_ANSWER_LAST
-  0,    //FORMAT_DIV_ANSWER_FIRST
-  0,    //FORMAT_DIV_ANSWER_MIDDLE
-        //
-  1,    //ADDITION_ALLOWED
-  1,    //SUBTRACTION_ALLOWED
-  1,    //MULTIPLICATION_ALLOWED
-  1,    //DIVISION_ALLOWED
-
-  0,    //TYPING_PRACTICE_ALLOWED
-  1,    //ARITHMETIC_ALLOWED
-  0,    //COMPARISON_ALLOWED
-        //
-  0,    //MIN_AUGEND
-  12,   //MAX_AUGEND
-  0,    //MIN_ADDEND
-  12,   //MAX_ADDEND
-        //
-  0,    //MIN_MINUEND
-  12,   //MAX_MINUEND
-  0,    //MIN_SUBTRAHEND
-  12,   //MAX_SUBTRAHEND
-        //
-  0,    //MIN_MULTIPLIER
-  12,   //MAX_MULTIPLIER
-  0,    //MIN_MULTIPLICAND
-  12,   //MAX_MULTIPLICAND
-        //
-  0,    //MIN_DIVISOR
-  12,   //MAX_DIVISOR
-  0,    //MIN_QUOTIENT
-  12,   //MAX_QUOTIENT
-        //
-  0,    //MIN_TYPING_NUM
-  12,   //MAX_TYPING_NUM
-        //
-  0,    //MIN_COMPARATOR
-  12,   //MAX_COMPARATOR
-  0,    //MIN_COMPARISAND
-  12,   //MAX_COMPARISAND
-
-  1,    //RANDOMIZE
-
-  0,    //COMPREHENSIVE
-  100,  //AVG_LIST_LENGTH
-  1     //VARY_LIST_LENGTH
-};
-
-
-
-/* "Globals" for mathcards.c: */
-#define PI_VAL 3.1415927
-#define NPRIMES 9
-const int smallprimes[NPRIMES] = {2, 3, 5 ,7, 11, 13, 17, 19, 23};
-const char operchars[4] = "+-*/";
-
-MC_Options* math_opts = 0;
-MC_MathQuestion* question_list = 0;
-MC_MathQuestion* wrong_quests = 0;
-MC_MathQuestion* next_wrong_quest = 0;
-int initialized = 0;
-int quest_list_length = 0;
-int answered_correctly = 0;
-int answered_wrong = 0;
-int questions_pending = 0;
-int unanswered = 0;
-int starting_length = 0;
-int max_formula_size = 0; //max length in chars of a flashcard's formula
-int max_answer_size = 0; //and of its answer
-
-/* For keeping track of timing data */
-float* time_per_question_list = NULL;
-int length_time_per_question_list = 0;
-int length_alloc_time_per_question_list = 0;
-
-const MC_FlashCard DEFAULT_CARD = {NULL,NULL,0,0}; //empty card to signal error
-
-/* "private" function prototypes:                        */
-/*                                                       */
-/* these are for internal use by MathCards only - like   */
-/* the private functions of a C++ class. Declared static */
-/* to give file scope rather than extern scope.          */
-
-static MC_MathQuestion* generate_list(void);
-static void clear_negatives(void);
-//static int validate_question(int n1, int n2, int n3);
-//static MC_MathQuestion* create_node(int n1, int n2, int op, int ans, int f);
-static MC_MathQuestion* create_node_from_card(const MC_FlashCard* flashcard);
-static MC_MathQuestion* insert_node(MC_MathQuestion* first, MC_MathQuestion* current, MC_MathQuestion* new_node);
-static MC_MathQuestion* append_node(MC_MathQuestion* list, MC_MathQuestion* new_node);
-static MC_MathQuestion* remove_node(MC_MathQuestion* first, MC_MathQuestion* n);
-static MC_MathQuestion* delete_list(MC_MathQuestion* list);
-//static int copy_node(MC_MathQuestion* original, MC_MathQuestion* copy);
-static int list_length(MC_MathQuestion* list);
-static int randomize_list(MC_MathQuestion** list);
-
-int comp_randomizer(const void *a, const void *b);
-static MC_MathQuestion* pick_random(int length, MC_MathQuestion* list);
-static int compare_node(MC_MathQuestion* first, MC_MathQuestion* other);
-static int already_in_list(MC_MathQuestion* list, MC_MathQuestion* ptr);
-//static int int_to_bool(int i);
-//static int sane_value(int i);
-//static int abs_value(int i);
-static int log10i(int i);
-static int floatCompare(const void *v1,const void *v2);
-
-static void print_list(FILE* fp,MC_MathQuestion* list);
-void print_vect_list(FILE* fp, MC_MathQuestion** vect, int length);
-
-/* these functions are dead code unless compiling with debug turned on: */
-static void print_card(MC_FlashCard card);
-static void print_counters(void);
-//static MC_MathQuestion* create_node_copy(MC_MathQuestion* other);
-//static MC_FlashCard    create_card_from_node(MC_MathQuestion* node);
-
-/* Functions for new mathcards architecture */
-static void free_node(MC_MathQuestion* mq); //wrapper for free() that also frees card
-static MC_FlashCard generate_random_flashcard(void);
-static MC_FlashCard generate_random_ooo_card_of_length(int length, int reformat);
-static void copy_card(const MC_FlashCard* src, MC_FlashCard* dest); //deep copy a flashcard
-static MC_MathQuestion* allocate_node(void); //allocate space for a node
-static int compare_card(const MC_FlashCard* a, const MC_FlashCard* b); //test for identical cards
-static int find_divisor(int a); //return a random positive divisor of a
-static int calc_num_valid_questions(void);
-static MC_MathQuestion* add_all_valid(MC_ProblemType pt, MC_MathQuestion* list, MC_MathQuestion** end_of_list);
-static MC_MathQuestion* find_node(MC_MathQuestion* list, int num);
-
-/*  MC_Initialize() sets up the struct containing all of  */
-/*  settings regarding math questions.  It should be      */
-/*  called before any other function.  Many of the other  */
-/*  functions will not work properly if MC_Initialize()   */
-/*  has not been called. It only needs to be called once, */
-/*  i.e when the program is starting, not at the beginning*/
-/*  of each math game for the player. Returns 1 if        */
-/*  successful, 0 otherwise.                              */
-int MC_Initialize(void)
-{
-  int i;
-
-  mcdprintf("\nEntering MC_Initialize()");
-  /* check flag to see if we did this already */
-  if (initialized)
-  {
-
-    if (debug_status & debug_mathcards) {
-      printf("\nAlready initialized");
-      MC_PrintMathOptions(stdout, 0);
-      printf("\nLeaving MC_Initialize()\n");
-    }
-
-    return 1;
-  }
-  math_opts = malloc(sizeof(MC_Options));
-  /* bail out if no struct */
-  if (!math_opts)
-  {
-
-    mcdprintf("\nError: math_opts null or invalid");
-    mcdprintf("\nLeaving MC_Initialize()\n");
-
-    fprintf(stderr, "\nUnable to initialize math_options");
-    return 0;
-  }
-
-  /* set defaults */
-  for (i = 0; i < NOPTS; ++i)
-    {
-    math_opts->iopts[i] = MC_DEFAULTS[i];
-    }
-
-  /* if no negatives to be used, reset any negatives to 0 */
-  if (!math_opts->iopts[ALLOW_NEGATIVES])
-  {
-    clear_negatives();
-  }
-
-  initialized = 1;
-
-  if (debug_status & debug_mathcards) {
-    MC_PrintMathOptions(stdout, 0);
-    printf("\nLeaving MC_Initialize()\n");
-  }
-
-  return 1;
-}
-
-
-
-/*  MC_StartGame() generates the list of math questions   */
-/*  based on existing settings. It should be called at    */
-/*  the beginning of each math game for the player.       */
-/*  Returns 1 if resultant list contains 1 or more        */
-/*  questions, 0 if list empty or not generated           */
-/*  successfully.                                         */
-int MC_StartGame(void)
-{
-  mcdprintf("\nEntering MC_StartGame()");
-
-  /* if math_opts not set up yet, initialize it: */
-  if (!initialized)
-  {
-
-    mcdprintf("\nNot initialized - calling MC_Initialize()");
-
-    MC_Initialize();
-  }
-
-  if (!math_opts)
-  {
-    mcdprintf("\nCould not initialize - bailing out");
-    mcdprintf("\nLeaving MC_StartGame()\n");
-
-    return 0;
-  }
-  /* we know math_opts exists if we make it to here */
-  srand(time(NULL));
-
-  /* clear out old lists if starting another game: (if not done already) */
-  delete_list(question_list);
-  question_list = NULL;
-  delete_list(wrong_quests);
-  wrong_quests = NULL;
-
-  /* clear the time list */
-  if (time_per_question_list != NULL) {
-    free(time_per_question_list);
-    time_per_question_list = NULL;
-    length_time_per_question_list = 0;
-    length_alloc_time_per_question_list = 0;
-  }
-
-  /* determine how much space needed for strings, based on user options */
-  max_formula_size = MC_GetOpt(MAX_FORMULA_NUMS)
-                   * (log10i(MC_GLOBAL_MAX) + 4) //sign/operator/spaces
-                   + 1; //question mark for answer
-  max_answer_size = (int)(log10i(MC_GLOBAL_MAX) ) + 2; //negative sign + digit
-
-  mcdprintf("max answer, formula size: %d, %d\n",
-            max_answer_size, max_formula_size);
-  /* set up new list with pointer to top: */
-  question_list = generate_list();
-
-  next_wrong_quest = 0;
-  /* initialize counters for new game: */
-  quest_list_length = list_length(question_list);
-  /* Note: the distinction between quest_list_length and  */
-  /* unanswered is that the latter includes questions     */
-  /* that are currently "in play" by the user interface - */
-  /* it is only decremented when an answer to the question*/
-  /* is received.                                         */
-  unanswered = starting_length = quest_list_length;
-  answered_correctly = 0;
-  answered_wrong = 0;
-  questions_pending = 0;
-
-  if (debug_status & debug_mathcards) {
-    print_counters();
-  }
-
-  /* make sure list now exists and has non-zero length: */
-  if (question_list && quest_list_length)
-  {
-    mcdprintf("\nGame set up successfully");
-    mcdprintf("\nLeaving MC_StartGame()\n");
-
-    return 1;
-  }
-  else
-  {
-    mcdprintf("\nGame NOT set up successfully - no valid list");
-    mcdprintf("\nLeaving MC_StartGame()\n");
-
-    return 0;
-  }
-}
-
-/*  MC_StartGameUsingWrongs() is like MC_StartGame(),     */
-/*  but uses the incorrectly answered questions from the  */
-/*  previous game for the question list as a review form  */
-/*  of learning. If there were no wrong answers (or no    */
-/*  previous game), it behaves just like MC_StartGame().  */
-/*  FIXME wonder if it should return a different value if */
-/*  the list is created from settings because there is no */
-/*  valid wrong question list?                            */
-int MC_StartGameUsingWrongs(void)
-{
-  mcdprintf("\nEntering MC_StartGameUsingWrongs()");
-
-  /* Note: if not initialized, control will pass to       */
-  /* MC_StartGame() via else clause so don't need to test */
-  /* for initialization here                              */
-  if (wrong_quests &&
-      list_length(wrong_quests))
-  {
-    mcdprintf("\nNon-zero length wrong_quests list found, will");
-    mcdprintf("\nuse for new game list:");
-
-    /* initialize lists for new game: */
-    delete_list(question_list);
-    if(!randomize_list(&wrong_quests)) {
-      fprintf(stderr, "Error during randomization of wrong_quests!\n");
-      /* Punt on trying wrong question list, just run normal game */
-      return MC_StartGame();
-    }
-    question_list = wrong_quests;
-    wrong_quests = 0;
-    next_wrong_quest = 0;
-   /* initialize counters for new game: */
-    quest_list_length = list_length(question_list);
-    unanswered = starting_length = quest_list_length;
-    answered_correctly = 0;
-    answered_wrong = 0;
-    questions_pending = 0;
-
-    if (debug_status & debug_mathcards) {
-      print_counters();
-      print_list(stdout, question_list);
-      printf("\nLeaving MC_StartGameUsingWrongs()\n");
-    }
-
-    return 1;
-  }
-  else /* if no wrong_quests list, go to MC_StartGame()   */
-       /* to set up list based on math_opts               */
-  {
-    mcdprintf("\nNo wrong questions to review - generate list from math_opts\n");
-    mcdprintf("\nLeaving MC_StartGameUsingWrongs()\n");
-
-    return MC_StartGame();
-  }
-}
-
-
-/*  MC_NextQuestion() takes a pointer to an allocated     */
-/*  MC_MathQuestion struct and fills in the fields for    */
-/*  use by the user interface program. It basically is    */
-/*  like taking the next flashcard from the pile. The     */
-/*  node containing the question is removed from the list.*/
-/*  Returns 1 if question found, 0 if list empty/invalid  */
-/*  or if argument pointer is invalid.                    */
-int MC_NextQuestion(MC_FlashCard* fc)
-{
-  mcdprintf("\nEntering MC_NextQuestion()\n");
-
-  /* (so we can free the node after removed from list:) */
-  MC_MathQuestion* ptr;
-  ptr = question_list;
-
-  if (!fc )
-  {
-    fprintf(stderr, "\nNull MC_FlashCard* argument!\n");
-    mcdprintf("\nLeaving MC_NextQuestion()\n");
-    return 0;
-  }
-
-  if (!question_list ||
-/*      !next_question || */
-      !list_length(question_list) )
-  {
-    mcdprintf("\nquestion_list invalid or empty");
-    mcdprintf("\nLeaving MC_NextQuestion()\n");
-
-    return 0;
-  }
-
-  /* 'draw' - copy over the first question */
-  copy_card(&question_list->card, fc);
-
-  /* 'discard' - take first question node out of list and free it */
-  question_list = remove_node(question_list, question_list);
-  free_node(ptr);
-  quest_list_length--;
-  questions_pending++;
-
-  if (debug_status & debug_mathcards) {
-    printf("\nnext question is:");
-    print_card(*fc);
-    print_counters();
-    printf("\n\nLeaving MC_NextQuestion()\n");
-  }
-
-  return 1;
-}
-
-/*  MC_AnsweredCorrectly() is how the user interface      */
-/*  tells MathCards that the question has been answered   */
-/*  correctly. Returns 1 if no errors.                    */
-int MC_AnsweredCorrectly(MC_FlashCard* fc)
-{
-  mcdprintf("\nEntering MC_AnsweredCorrectly()");
-
-  if (!fc)
-  {
-    fprintf(stderr, "\nMC_AnsweredCorrectly() passed invalid pointer as argument!\n");
-
-    mcdprintf("\nInvalid MC_FlashCard* argument!");
-    mcdprintf("\nLeaving MC_AnsweredCorrectly()\n");
-
-    return 0;
-  }
-
-  if (debug_status & debug_mathcards) {
-    printf("\nQuestion was:");
-    print_card(*fc);
-  }
-
-  answered_correctly++;
-  questions_pending--;
-
-  if (!math_opts->iopts[PLAY_THROUGH_LIST])
-  /* reinsert question into question list at random location */
-  {
-    mcdprintf("\nReinserting question into list");
-
-    MC_MathQuestion* ptr1;
-    MC_MathQuestion* ptr2;
-    /* make new node using values from flashcard */
-    ptr1 = create_node_from_card(fc);
-    /* put it into list */
-    ptr2 = pick_random(quest_list_length, question_list);
-    question_list = insert_node(question_list, ptr2, ptr1);
-    quest_list_length++;
-    /* unanswered does not change - was not decremented when */
-    /* question allocated!                                   */
-  }
-  else
-  {
-    mcdprintf("\nNot reinserting question into list");
-    /* not recycling questions so fewer questions remain:      */
-    unanswered--;
-  }
-
-  if (debug_status & debug_mathcards) {
-    print_counters();
-    printf("\nLeaving MC_AnsweredCorrectly()\n");
-  }
-
-  return 1;
-}
-
-/*  MC_NotAnsweredCorrectly() is how the user interface    */
-/*  tells MathCards that the player failed to answer the  */
-/*  question correctly. Returns 1 if no errors.           */
-/*  Note: this gets triggered only if a player's city     */
-/*  gets hit by a question, not if they "miss".           */
-int MC_NotAnsweredCorrectly(MC_FlashCard* fc)
-{
-  mcdprintf("\nEntering MC_NotAnsweredCorrectly()");
-
-  if (!fc)
-  {
-    fprintf(stderr, "\nMC_NotAnsweredCorrectly() passed invalid pointer as argument!\n");
-
-    mcdprintf("\nInvalid MC_FlashCard* argument!");
-    mcdprintf("\nLeaving MC_NotAnsweredCorrectly()\n");
-
-    return 0;
-  }
-
-  if (debug_status & debug_mathcards) {
-    printf("\nQuestion was:");
-    print_card(*fc);
-  }
-
-  answered_wrong++;
-  questions_pending--;
-
-  /* add question to wrong_quests list: */
-
-  MC_MathQuestion* ptr1;
-  MC_MathQuestion* ptr2;
-
-  ptr1 = create_node_from_card(fc);
-
-  if (!already_in_list(wrong_quests, ptr1)) /* avoid duplicates */
-  {
-    mcdprintf("\nAdding to wrong_quests list");
-    wrong_quests = append_node(wrong_quests, ptr1);
-  }
-  else /* avoid memory leak */
-  {
-    free(ptr1);
-  }
-
-  /* if desired, put question back in list so student sees it again */
-  if (math_opts->iopts[REPEAT_WRONGS])
-  {
-    int i;
-
-    mcdprintf("\nAdding %d copies to question_list:", math_opts->iopts[COPIES_REPEATED_WRONGS]);
-
-    /* can put in more than one copy (to drive the point home!) */
-    for (i = 0; i < math_opts->iopts[COPIES_REPEATED_WRONGS]; i++)
-    {
-      ptr1 = create_node_from_card(fc);
-      ptr2 = pick_random(quest_list_length, question_list);
-      question_list = insert_node(question_list, ptr2, ptr1);
-      quest_list_length++;
-    }
-    /* unanswered stays the same if a single copy recycled or */
-    /* increases by 1 for each "extra" copy reinserted:       */
-    unanswered += (math_opts->iopts[COPIES_REPEATED_WRONGS] - 1);
-  }
-  else
-  {
-    mcdprintf("\nNot repeating wrong answers\n");
-
-    /* not repeating questions so list gets shorter:      */
-    unanswered--;
-  }
-
-  if (debug_status & debug_mathcards) {
-    print_counters();
-    printf("\nLeaving MC_NotAnswered_Correctly()\n");
-  }
-
-  return 1;
-
-}
-
-/* Tells user interface if all questions have been answered correctly! */
-/* Requires that at list contained at least one question to start with */
-/* and that wrongly answered questions have been recycled.             */
-int MC_MissionAccomplished(void)
-{
-  if (starting_length
-    && math_opts->iopts[REPEAT_WRONGS]
-    && !unanswered)
-  {
-    return 1;
-  }
-  else
-  {
-    return 0;
-  }
-}
-
-/*  Returns number of questions left (either in list       */
-/*  or "in play")                                          */
-int MC_TotalQuestionsLeft(void)
-{
-  return unanswered;
-}
-
-/*  Returns number of questions left in list, NOT       */
-/*  including questions currently "in play".            */
-int MC_ListQuestionsLeft(void)
-{
-  return quest_list_length;
-}
-
-
-/*  Store the amount of time a given flashcard was      */
-/*  visible on the screen. Returns 1 if the request     */
-/*  succeeds, 0 otherwise.                              */
-int MC_AddTimeToList(float t)
-{
-  int newsize = 0;
-  float *newlist;
-
-  /* This list will be allocated in an STL-like manner: when the       */
-  /* list gets full, allocate an additional amount of storage equal    */
-  /* to the current size of the list, so that only O(logN) allocations */
-  /* will ever be needed. We therefore have to keep track of 2 sizes:  */
-  /* the allocated size, and the actual number of items currently on   */
-  /* the list.                                                         */
-  if (length_time_per_question_list >= length_alloc_time_per_question_list) {
-    /* The list is full, allocate more space */
-    newsize = 2*length_time_per_question_list;
-    if (newsize == 0)
-      newsize = 100;
-    newlist = realloc(time_per_question_list, newsize*sizeof(float));
-    if (newlist == NULL) {
-      DEBUGMSG(debug_mathcards,"\nError: allocation for time_per_question_list failed\n");
-      return 0;
-    }
-    time_per_question_list = newlist;
-    length_alloc_time_per_question_list = newsize;
-  }
-
-  /* Append the time to the list */
-  time_per_question_list[length_time_per_question_list++] = t;
-  return 1;
-}
-
-/* Frees heap memory used in program:                   */
-void MC_EndGame(void)
-{
-  delete_list(question_list);
-  question_list = 0;
-  delete_list(wrong_quests);
-  wrong_quests = 0;
-
-  if (math_opts)
-  {
-    free(math_opts);
-    math_opts = 0;
-  }
-
-  free(time_per_question_list);
-  time_per_question_list = NULL;
-  length_alloc_time_per_question_list = 0;
-  length_time_per_question_list = 0;
-
-  initialized = 0;
-}
-
-
-
-/* prints struct to file */
-void MC_PrintMathOptions(FILE* fp, int verbose)
-{
-  int i, vcommentsprimed = 0;
-  //comments when writing out verbose...perhaps they can go somewhere less conspicuous
-  static char* vcomments[NOPTS];
-  if (!vcommentsprimed) //we only want to initialize these once
-  {
-    vcommentsprimed = 1;
-    for (i = 0; i < NOPTS; ++i)
-      vcomments[i] = NULL;
-    vcomments[PLAY_THROUGH_LIST] =
-      "\n############################################################\n"
-      "#                                                          #\n"
-      "#                  General Math Options                    #\n"
-      "#                                                          #\n"
-      "# If 'play_through_list' is true, Tuxmath will ask each    #\n"
-      "# question in an internally-generated list. The list is    #\n"
-      "# generated based on the question ranges selected below.   #\n"
-      "# The game ends when no questions remain.                  #\n"
-      "# If 'play_through_list' is false, the game continues      #\n"
-      "# until all cities are destroyed.                          #\n"
-      "# Default is 1 (i.e. 'true' or 'yes').                     #\n"
-      "#                                                          #\n"
-      "# 'question_copies' is the number of times each question   #\n"
-      "# will be asked. It can be 1 to 10 - Default is 1.         #\n"
-      "#                                                          #\n"
-      "# 'repeat_wrongs' tells Tuxmath whether to reinsert        #\n"
-      "# incorrectly answered questions into the list to be       #\n"
-      "# asked again. Default is 1 (yes).                         #\n"
-      "#                                                          #\n"
-      "# 'copies_repeated_wrongs' gives the number of times an    #\n"
-      "# incorrectly answered question will reappear. Default     #\n"
-      "# is 1.                                                    #\n"
-      "#                                                          #\n"
-      "# The defaults for these values result in a 'mission'      #\n"
-      "# for Tux that is accomplished by answering all            #\n"
-      "# questions correctly with at least one surviving city.    #\n"
-      "############################################################\n\n";
-
-    vcomments[FORMAT_ADD_ANSWER_LAST] =
-      "\n############################################################\n"
-      "# The 'format_<op>_answer_<place>  options control         #\n"
-      "# generation of questions with the answer in different     #\n"
-      "# places in the equation.  i.e.:                           #\n"
-      "#                                                          #\n"
-      "#    format_add_answer_last:    2 + 2 = ?                  #\n"
-      "#    format_add_answer_first:   ? + 2 = 4                  #\n"
-      "#    format_add_answer_middle:  2 + ? = 4                  #\n"
-      "#                                                          #\n"
-      "# By default, 'format_answer_first' is enabled and the     #\n"
-      "# other two formats are disabled.  Note that the options   #\n"
-      "# are not mutually exclusive - the question list may       #\n"
-      "# contain questions with different formats.                #\n"
-      "#                                                          #\n"
-      "# The formats are set independently for each of the four   #\n"
-      "# math operations.                                         #\n"
-      "############################################################\n\n";
-
-    vcomments[ALLOW_NEGATIVES] =
-      "\n############################################################\n"
-      "# 'allow_negatives' allows or disallows use of negative    #\n"
-      "# numbers as both operands and answers.  Default is 0      #\n"
-      "# (no), which disallows questions like:                    #\n"
-      "#          2 - 4 = ?                                       #\n"
-      "# Note: this option must be enabled in order to set the    #\n"
-      "# operand ranges to include negatives (see below). If it   #\n"
-      "# is changed from 1 (yes) to 0 (no), any negative          #\n"
-      "# operand limits will be reset to 0.                       #\n"
-      "############################################################\n\n";
-
-    vcomments[MAX_ANSWER] =
-      "\n############################################################\n"
-      "# 'max_answer' is the largest absolute value allowed in    #\n"
-      "# any value in a question (not only the answer). Default   #\n"
-      "# is 144. It can be set as high as 999.                    #\n"
-      "############################################################\n\n";
-
-    vcomments[MAX_QUESTIONS] =
-      "\n############################################################\n"
-      "# 'max_questions' is limit of the length of the question   #\n"
-      "# list. Default is 5000 - only severe taskmasters will     #\n"
-      "# need to raise it.                                        #\n"
-      "############################################################\n\n";
-
-    vcomments[RANDOMIZE] =
-      "\n############################################################\n"
-      "# If 'randomize' selected, the list will be shuffled       #\n"
-      "# at the start of the game.  Default is 1 (yes).           #\n"
-      "############################################################\n\n";
-
-    vcomments[ADDITION_ALLOWED] =
-      "\n############################################################\n"
-      "#                                                          #\n"
-      "#                 Math Operations Allowed                  #\n"
-      "#                                                          #\n"
-      "# These options enable questions for each of the four math #\n"
-      "# operations.  All are 1 (yes) by default.                 #\n"
-      "############################################################\n\n";
-
-    vcomments[MIN_AUGEND] =
-      "\n############################################################\n"
-      "#                                                          #\n"
-      "#      Minimum and Maximum Values for Operand Ranges       #\n"
-      "#                                                          #\n"
-      "# Operand limits can be set to any integer up to the       #\n"
-      "# value of 'max_answer'.  If 'allow_negatives' is set to 1 #\n"
-      "# (yes), either negative or positive values can be used.   #\n"
-      "# Tuxmath will generate questions for every value in the   #\n"
-      "# specified range. The maximum must be greater than or     #\n"
-      "# equal to the corresponding minimum for any questions to  #\n"
-      "# be generated for that operation.                         #\n"
-      "############################################################\n\n";
-
-  }
-
-
-  mcdprintf("\nEntering MC_PrintMathOptions()\n");
-
-  /* bail out if no struct */
-  if (!math_opts)
-  {
-    fprintf(stderr, "\nMath Options struct does not exist!\n");
-    return;
-  }
-
-  for (i = 0; i < NOPTS; ++i)
-    {
-    if (verbose && vcomments[i] != NULL)
-      fprintf(fp, "%s", vcomments[i]);
-    fprintf(fp, "%s = %d\n", MC_OPTION_TEXT[i], math_opts->iopts[i]);
-    }
-  mcdprintf("\nLeaving MC_PrintMathOptions()\n");
-}
-
-
-
-int MC_PrintQuestionList(FILE* fp)
-{
-  if (fp && question_list)
-  {
-    print_list(fp, question_list);
-    return 1;
-  }
-  else
-  {
-    fprintf(stderr, "\nFile pointer and/or question list invalid\n");
-    return 0;
-  }
-}
-
-int MC_PrintWrongList(FILE* fp)
-{
-  if (!fp)
-  {
-    fprintf(stderr, "File pointer invalid\n");
-    return 0;
-  }
-
-  if (wrong_quests)
-  {
-    print_list(fp, wrong_quests);
-  }
-  else
-  {
-    fprintf(fp, "\nNo wrong questions!\n");
-  }
-
-  return 1;
-}
-
-
-int MC_StartingListLength(void)
-{
-  return starting_length;
-}
-
-
-int MC_WrongListLength(void)
-{
-  return list_length(wrong_quests);
-}
-
-int MC_NumAnsweredCorrectly(void)
-{
-  return answered_correctly;
-}
-
-
-int MC_NumNotAnsweredCorrectly(void)
-{
-  return answered_wrong;
-}
-
-
-/* Report the median time per question */
-float MC_MedianTimePerQuestion(void)
-{
-  if (length_time_per_question_list == 0)
-    return 0;
-
-  qsort(time_per_question_list,length_time_per_question_list,sizeof(float),floatCompare);
-  return time_per_question_list[length_time_per_question_list/2];
-}
-
-/* Implementation of "private methods" - (cannot be called from outside
-of this file) */
-
-
-
-/* Resets negative values to zero - used when allow_negatives deselected. */
-void clear_negatives(void)
-{
-  int i;
-  for (i = MIN_AUGEND; i <= MAX_TYPING_NUM; ++i)
-    if (math_opts->iopts[i]< 0)
-      math_opts->iopts[i]= 0;
-}
-
-// /* this is used by generate_list to see if a possible question */
-// /* meets criteria to be added to the list or not:              */
-// int validate_question(int n1, int n2, int n3)
-// {
-//   /* make sure none of values exceeds max_answer using absolute */
-//   /* value comparison:                                          */
-//   if (abs_value(n1) > abs_value(math_opts->iopts[MAX_ANSWER])
-//    || abs_value(n2) > abs_value(math_opts->iopts[MAX_ANSWER])
-//    || abs_value(n3) > abs_value(math_opts->iopts[MAX_ANSWER]))
-//   {
-//     return 0;
-//   }
-//   /* make sure none of values are negative if negatives not allowed: */
-//   if (!math_opts->iopts[ALLOW_NEGATIVES])
-//   {
-//     if (n1 < 0 || n2 < 0 || n3 < 0)
-//     {
-//       return 0;
-//     }
-//   }
-//   return 1;
-// }
-
-#if 0 //this code is probably on the way out...
-/* create a new node and return a pointer to it */
-MC_MathQuestion* create_node(int n1, int n2, int op, int ans, int f)
-{
-  MC_MathQuestion* ptr = NULL;
-
-  ptr = (MC_MathQuestion*)malloc(sizeof(MC_MathQuestion));
-
-  if (!ptr)
-  {
-    fprintf(stderr, "create_node() - malloc() failed!\n");
-    return NULL;
-  }
-
-  ptr->card = MC_AllocateFlashcard();
-  ptr->next = NULL;
-  ptr->previous = NULL;
-
-  snprintf(ptr->card.formula_string, max_formula_size, "%d %c %d = ?",
-           n1, op < MC_NUM_OPERS ? operchars[op] : '\0', n2);
-  snprintf(ptr->card.answer_string, max_formula_size, "%d", ans);
-  ptr->card.difficulty = 25 * (op + 1);
-
-
-  /* ptr should now point to a properly constructed node: */
-  return ptr;
-}
-#endif
-
-MC_MathQuestion* create_node_from_card(const MC_FlashCard* flashcard)
-{
-  MC_MathQuestion* ret = allocate_node();
-  copy_card(flashcard, &(ret->card));
-  return ret;
-}
-
-// /* FIXME take care of strings */
-// /* this one copies the contents, including pointers; both nodes must be allocated */
-// int copy_node(MC_MathQuestion* original, MC_MathQuestion* copy)
-// {
-//   if (!original)
-//   {
-//     fprintf(stderr, "\nIn copy_node(): invalid 'original' pointer arg.\n");
-//     return 0;
-//   }
-//   if (!copy)
-//   {
-//     fprintf(stderr, "\nIn copy_node(): invalid 'copy' pointer arg.\n");
-//     return 0;
-//   }
-// 
-//   copy_card(&(original->card), &(copy->card) );
-// 
-//   copy->next = original->next;
-//   copy->previous = original->previous;
-//   copy->randomizer = original->randomizer;
-//   return 1;
-// }
-
-
-
-
-/* this puts the node into the list AFTER the node pointed to by current */
-/* and returns a pointer to the top of the modified list  */
-MC_MathQuestion* insert_node(MC_MathQuestion* first, MC_MathQuestion* current, MC_MathQuestion* new_node)
-{
-  /* return pointer to list unchanged if new_node doesn't exist*/
-  if (!new_node)
-    return first;
-  /* if current doesn't exist, new_node is first */
-  if (!current)
-  {
-    new_node->previous = 0;
-    new_node->next =0;
-    first = new_node;
-    return first;
-  }
-
-  if (current->next)  /* avoid error if at end of list */
-    current->next->previous = new_node;
-  new_node->next = current->next;
-  current->next = new_node;
-  new_node->previous = current;
-  return first;
-}
-
-
-
-/* adds the new node to the end of the list */
-MC_MathQuestion* append_node(MC_MathQuestion* list, MC_MathQuestion* new_node)
-{
-  MC_MathQuestion* ptr;
-  /* return pointer to list unchanged if new_node doesn't exist*/
-  if (!new_node)
-  {
-    return list;
-  }
-
-  /* if list does not exist, new_node is the first (and only) node */
-  if (!list)
-  {
-    return new_node;
-  }
-  /* otherwise, go to end of list */
-  ptr = list;
-  while (ptr->next)
-  {
-    ptr = ptr->next;
-  }
-
-  ptr->next = new_node;
-  new_node->previous = ptr;
-  new_node->next = 0;
-  return list;
-}
-
-
-
-/* this takes the node out of the list but does not delete it */
-/* and returns a pointer to the top of the modified list  */
-MC_MathQuestion* remove_node(MC_MathQuestion* first, MC_MathQuestion* n)
-{
-  if (!n || !first)
-    return first;
-  /* special case if first node being removed */
-  if (n == first)
-     first = first->next;
-
-  if (n->previous)
-    n->previous->next = n->next;
-  if (n->next)
-      n->next->previous = n->previous;
-  n->previous = 0;
-  n->next = 0;
-  return first;
-}
-
-
-
-/* frees memory for entire list and returns null pointer */
-MC_MathQuestion* delete_list(MC_MathQuestion* list)
-{
-  MC_MathQuestion* tmp_ptr;
-  while (list)
-  {
-    tmp_ptr = list->next;
-    free_node (list);
-    list = tmp_ptr;
-  }
-  return list;
-}
-
-
-
-void print_list(FILE* fp, MC_MathQuestion* list)
-{
-  if (!list)
-  {
-    fprintf(stderr, "\nprint_list(): list empty or pointer invalid\n");
-    return;
-  }
-
-  MC_MathQuestion* ptr = list;
-  while (ptr)
-  {
-    fprintf(fp, "%s\n", ptr->card.formula_string);
-    ptr = ptr->next;
-  }
-}
-
-void print_vect_list(FILE* fp, MC_MathQuestion** vect, int length)
-{
-  if (!vect)
-  {
-    fprintf(fp, "\nprint_vect_list(): list empty or pointer invalid\n");
-    return;
-  }
-
-  int i = 0;
-  mcdprintf("Entering print_vect_list()\n");
-  for(i = 0; i < length; i++)
-    fprintf(fp, "%s\n", vect[i]->card.formula_string);
-
-  mcdprintf("Leaving print_vect_list()\n");
-}
-
-void print_card(MC_FlashCard card)
-{
-  printf("\nprint_card():");
-  printf("formula_string = %s\nanswer_string = %s\ndifficulty = %d\n\n",
-         card.formula_string,
-         card.answer_string,
-         card.difficulty);
-}
-
-/* This sends the values of all "global" counters and the */
-/* lengths of the question lists to stdout - for debugging */
-void print_counters(void)
-{
-  printf("\nquest_list_length = \t%d", quest_list_length);
-  printf("\nlist_length(question_list) = \t%d", list_length(question_list));
-  printf("\nstarting_length = \t%d", starting_length);
-  printf("\nunanswered = \t%d", unanswered);
-  printf("\nanswered_correctly = \t%d", answered_correctly);
-  printf("\nanswered_wrong = \t%d", answered_wrong);
-  printf("\nlist_length(wrong_quests) = \t%d", list_length(wrong_quests));
-  printf("\nquestions_pending = \t%d", questions_pending);
-}
-
-// /* a "copy constructor", so to speak */
-// /* FIXME should properly return newly allocated list if more than one node DSB */
-// MC_MathQuestion* create_node_copy(MC_MathQuestion* other)
-// {
-//   MC_MathQuestion* ret = allocate_node();
-//   if (ret)
-//     copy_card(&(other->card), &(ret->card) );
-//   return ret;
-// }
-// 
-// /* FIXME take care of strings */
-// 
-// MC_FlashCard create_card_from_node(MC_MathQuestion* node)
-// {
-//   MC_FlashCard fc;
-//   if (!node)
-//     return DEFAULT_CARD;
-//   fc = MC_AllocateFlashcard();
-//   copy_card(&(node->card), &fc);
-//   return fc;
-// }
-
-int list_length(MC_MathQuestion* list)
-{
-  int length = 0;
-  while (list)
-  {
-    length++;
-    list = list->next;
-  }
-  return length;
-}
-
-
-
-
-
-
-/* This is a new implementation written in an attempt to avoid       */
-/* the O(n^2) performance problems seen with the old randomization   */
-/* function. The list is created as a vector, but is for now still   */
-/* made a linked list to minimize changes needed elsewhere.          */
-/* The argument is a pointer to the top of the old list.  This extra */
-/* level of indirection allows the list to be shuffled "in-place".   */
-/* The function returns 1 if successful, 0 on errors.                */
-
-static int randomize_list(MC_MathQuestion** old_list)
-{
-  MC_MathQuestion* old_tmp = *old_list;
-  MC_MathQuestion** tmp_vect = NULL;
-
-  int i = 0;
-  if (!old_list || !*old_list) //invalid/empty list
-    return 0;
-  
-  int old_length = list_length(old_tmp);
-
-  /* set random seed: */
-  srand(time(0));
-
-
-  /* Allocate vector and set ptrs to nodes in old list: */
-
-  /* Allocate a list of pointers, not space for the nodes themselves: */
-  tmp_vect = (MC_MathQuestion**)malloc(sizeof(MC_MathQuestion*) * old_length);
-  /* Set each pointer in the vector to the corresponding node: */
-  for (i = 0; i < old_length; i++)
-  {
-    tmp_vect[i] = old_tmp;
-    tmp_vect[i]->randomizer = rand();
-    old_tmp = old_tmp->next;
-  }
-
-  /* Now simply sort on 'tmp_vect[i]->randomizer' to shuffle list: */
-  qsort(tmp_vect, old_length,
-        sizeof(MC_MathQuestion*),
-        comp_randomizer);
-
-  /* Re-create pointers to provide linked-list functionality:      */
-  /* (stop at 'old_length-1' because we dereference tmp_vect[i+1]) */
-  for(i = 0; i < old_length - 1; i++)
-  {
-    if (!tmp_vect[i])
-    {
-      fprintf(stderr, "Invalid pointer!\n");
-      return 0;
-    }
-    tmp_vect[i]->next = tmp_vect[i+1];
-    tmp_vect[i+1]->previous = tmp_vect[i];
-  }
-  /* Handle end cases: */
-  tmp_vect[0]->previous = NULL;
-  tmp_vect[old_length-1]->next = NULL;
-
-  /* Now arrange for arg pointer to indirectly point to first element! */
-  *old_list = tmp_vect[0];
-  free(tmp_vect);
-  return 1;
-}
-
-
-
-/* This is needed for qsort(): */
-int comp_randomizer (const void* a, const void* b)
-{
-
-  int int1 = (*(const struct MC_MathQuestion **) a)->randomizer;
-  int int2 = (*(const struct MC_MathQuestion **) b)->randomizer;
-
-  if (int1 > int2)
-    return 1;
-  else if (int1 == int2)
-    return 0;
-  else
-    return -1;
-}
-
-MC_MathQuestion* pick_random(int length, MC_MathQuestion* list)
-{
-  int i;
-  int rand_node;
-
-  /* set random seed DSB */
-  srand(time(0));
-
-  /* if length is zero, get out to avoid divide-by-zero error */
-  if (0 == length)
-  {
-    return list;
-  }
-
-  rand_node = rand() % length;
-
-  for (i=1; i < rand_node; i++)
-  {
-    if (list)
-     list = list->next;
-  }
-
-  return list;
-}
-
-/* compares fields other than pointers */
-int compare_node(MC_MathQuestion* first, MC_MathQuestion* other)
-{
-  if (!first || !other)
-    return 0;
-  if (compare_card(&(first->card), &(first->card) ) ) //cards are equal
-    return 1;
-  else
-    return 0;
-}
-
-/* check to see if list already contains an identical node */
-int already_in_list(MC_MathQuestion* list, MC_MathQuestion* ptr)
-{
-  if (!list || !ptr)
-    return 0;
-
-  while (list)
-  {
-    if (compare_node(list, ptr))
-      return 1;
-    list = list->next;
-  }
-  return 0;
-}
-
-// /* to prevent option settings in math_opts from getting set to */
-// /* values other than 0 or 1                                    */
-// int int_to_bool(int i)
-// {
-//   if (i)
-//     return 1;
-//   else
-//     return 0;
-// }
-
-// /* prevent values from getting into math_opts that are outside */
-// /* the range that can be handled by the program (i.e. more     */
-// /* than three digits; also disallow negatives if that has been */
-// /* selected.                                                   */
-// int sane_value(int i)
-// {
-//   if (i > MC_GLOBAL_MAX)
-//     i = MC_GLOBAL_MAX;
-//   else if (i < -MC_GLOBAL_MAX)
-//     i = -MC_GLOBAL_MAX;
-// 
-//   if (i < 0
-//    && math_opts
-//    && !math_opts->iopts[ALLOW_NEGATIVES])
-//   {
-//     i = 0;
-//   }
-// 
-//   return i;
-// }
-
-// int abs_value(int i)
-// {
-//   if (i > 0)
-//     return i;
-//   else
-//     return -i;
-// }
-
-int log10i(int i) //base 10 logarithm for ints
-{
-  int j;
-  for (j = 0; i > 0; i /= 10, ++j);
-  return j;
-}
-
-/* Compares two floats (needed for sorting in MC_MedianTimePerQuestion) */
-int floatCompare(const void *v1,const void *v2)
-{
-  float f1,f2;
-
-  f1 = *((float *) v1);
-  f2 = *((float *) v2);
-
-  if (f1 < f2)
-    return -1;
-  else if (f1 > f2)
-    return 1;
-  else
-    return 0;
-}
-
-
-
-/****************************************************
-Functions for new mathcards architecture
-****************************************************/
-
-void copy_card(const MC_FlashCard* src, MC_FlashCard* dest)
-{
-  if (!src || !dest)
-    return;
-  mcdprintf("Copying '%s' to '%s', ", src->formula_string,dest->formula_string);
-  mcdprintf("copying '%s' to '%s'\n", src->answer_string, dest->answer_string);
-  strncpy(dest->formula_string, src->formula_string, max_formula_size);
-  strncpy(dest->answer_string, src->answer_string, max_answer_size);
-  mcdprintf("Card is: '%s', '%s'\n", dest->formula_string, dest->answer_string);
-  dest->answer = src->answer;
-  dest->difficulty = src->difficulty;
-}
-
-void free_node(MC_MathQuestion* mq) //no, not that freenode.
-{
-  if (!mq)
-    return;
-  MC_FreeFlashcard(&(mq->card) );
-  free(mq);
-}
-
-MC_MathQuestion* allocate_node()
-{
-  MC_MathQuestion* ret = NULL;
-  ret = malloc(sizeof(MC_MathQuestion) );
-  if (!ret)
-  {
-    printf("Could not allocate space for a new node!\n");
-    return NULL;
-  }
-
-  ret->card = MC_AllocateFlashcard();
-  ret->next = ret->previous = NULL;
-  
-  return ret;
-}
-
-/*
-The function that does the central dirty work pertaining to flashcard
-creation. Extensible to just about any kind of math problem, perhaps
-with the exception of those with multiple answers, such as "8 + 2 > ?"
-Simply specify how the problem is presented to the user, and the
-answer the game should look for, as strings.
-*/
-MC_FlashCard generate_random_flashcard(void)
-{
-  int num;
-  int length;
-  MC_ProblemType pt;
-  MC_FlashCard ret;
-
-  mcdprintf("Entering generate_random_flashcard()\n");
-
-  do
-    pt = rand() % MC_NUM_PTYPES;
-  while ( (pt == MC_PT_TYPING && !MC_GetOpt(TYPING_PRACTICE_ALLOWED) ) ||
-          (pt == MC_PT_ARITHMETIC && !MC_GetOpt(ADDITION_ALLOWED) &&
-                                   !MC_GetOpt(SUBTRACTION_ALLOWED) &&
-                                   !MC_GetOpt(MULTIPLICATION_ALLOWED) &&
-                                   !MC_GetOpt(DIVISION_ALLOWED) ) ||
-          (pt == MC_PT_COMPARISON && !MC_GetOpt(COMPARISON_ALLOWED) )
-        );
-
-  if (pt == MC_PT_TYPING) //typing practice
-  {
-    mcdprintf("Generating typing question\n");
-    ret = MC_AllocateFlashcard();
-    num = rand() % (MC_GetOpt(MAX_TYPING_NUM)-MC_GetOpt(MIN_TYPING_NUM) + 1)
-                  + MC_GetOpt(MIN_TYPING_NUM);
-    snprintf(ret.formula_string, max_formula_size, "%d", num);
-    snprintf(ret.answer_string, max_answer_size, "%d", num);
-    ret.answer = num;
-    ret.difficulty = 10;
-  }
-  else //if (pt == MC_PT_ARITHMETIC)
-  {
-    mcdprintf("Generating arithmetic question");
-    length = rand() % (MC_GetOpt(MAX_FORMULA_NUMS) -
-                       MC_GetOpt(MIN_FORMULA_NUMS) + 1) //avoid div by 0
-                    +  MC_GetOpt(MIN_FORMULA_NUMS);
-    mcdprintf(" of length %d", length);
-    ret = generate_random_ooo_card_of_length(length, 1);
-    if (debug_status & debug_mathcards) {
-      print_card(ret);
-    }
-  }
-  //TODO comparison problems (e.g. "6 ? 9", "<")
-
-  mcdprintf("Exiting generate_random_flashcard()\n");
-
-  return ret;
-}
-
-/*
-Recursively generate an order of operations problem. Hopefully this won't
-raise performance issues. Difficulty is calculated based on the length of
-the formula and on the operators used. Problems have a 'base' difficulty of
-1 for binary operations, 3 for 3 numbers, 6, 10, etc. Each operator adds to
-the score: 0, 1, 2, and 3 respectively for addition, subtraction,
-multiplication and division.If reformat is 0, FORMAT_ANS_LAST will be used,
-otherwise a format is chosen at random.
-*/
-MC_FlashCard generate_random_ooo_card_of_length(int length, int reformat)
-{
-  int format = 0;
-  int r1 = 0;
-  int r2 = 0;
-  int ans = 0;
-  char tempstr[max_formula_size];
-  MC_FlashCard ret;
-  MC_Operation op;
-
-  printf(".");
-  if (length > MAX_FORMULA_NUMS)
-    return DEFAULT_CARD;
-  if (length <= 2)
-  {
-    mcdprintf("\n");
-    ret = MC_AllocateFlashcard();
-    for (op = rand() % MC_NUM_OPERS; //pick a random operation
-         MC_GetOpt(op + ADDITION_ALLOWED) == 0; //make sure it's allowed
-         op = rand() % MC_NUM_OPERS);
-
-    mcdprintf("Operation is %c\n", operchars[op]);
-    /*
-    if (op == MC_OPER_ADD)
-    {
-      r1 = rand() % (math_opts->iopts[MAX_AUGEND] - math_opts->iopts[MIN_AUGEND] + 1) + math_opts->iopts[MIN_AUGEND];
-      r2 = rand() % (math_opts->iopts[MAX_ADDEND] - math_opts->iopts[MIN_ADDEND] + 1) + math_opts->iopts[MIN_ADDEND];
-      ans = r1 + r2;
-    }
-    else if (op == MC_OPER_SUB)
-    {
-      r1 = rand() % (math_opts->iopts[MAX_MINUEND] - math_opts->iopts[MIN_MINUEND] + 1) + math_opts->iopts[MIN_MINUEND];
-      r2 = rand() % (math_opts->iopts[MAX_SUBTRAHEND] - math_opts->iopts[MIN_SUBTRAHEND] + 1) + math_opts->iopts[MIN_SUBTRAHEND];
-      ans = r1 - r2;
-    }
-    else if (op == MC_OPER_MULT)
-    {
-      r1 = rand() % (math_opts->iopts[MAX_MULTIPLIER] - math_opts->iopts[MIN_MULTIPLIER] + 1) + math_opts->iopts[MIN_MULTIPLIER];
-      r2 = rand() % (math_opts->iopts[MAX_MULTIPLICAND] - math_opts->iopts[MIN_MULTIPLICAND] + 1) + math_opts->iopts[MIN_MULTIPLICAND];
-      ans = r1 * r2;
-    }
-    else if (op == MC_OPER_DIV)
-    {
-      ans = rand() % (math_opts->iopts[MAX_QUOTIENT] - math_opts->iopts[MIN_QUOTIENT] + 1) + math_opts->iopts[MIN_QUOTIENT];
-      r2 = rand() % (math_opts->iopts[MAX_DIVISOR] - math_opts->iopts[MIN_DIVISOR] + 1) + math_opts->iopts[MIN_DIVISOR];
-      if (r2 == 0)
-        r2 = 1;
-      r1 = ans * r2;
-    }
-    */
-    if (op > MC_OPER_DIV || op < MC_OPER_ADD)
-    {
-      mcdprintf("Invalid operator: value %d\n", op);
-      return DEFAULT_CARD;
-    }
-    //choose two numbers in the proper range and get their result
-    
-    else do
-    {
-      r1 = rand() % (math_opts->iopts[MAX_AUGEND+4*op] - math_opts->iopts[MIN_AUGEND+4*op] + 1) + math_opts->iopts[MIN_AUGEND+4*op];    
-      r2 = rand() % (math_opts->iopts[MAX_ADDEND+4*op] - math_opts->iopts[MIN_ADDEND+4*op] + 1) + math_opts->iopts[MIN_ADDEND+4*op]; 
-
-      if (op == MC_OPER_ADD)
-        ans = r1 + r2;
-      if (op == MC_OPER_SUB)
-        ans = r1 - r2;
-      if (op == MC_OPER_MULT)
-        ans = r1 * r2;
-      if (op == MC_OPER_DIV)  
-      {
-        if (r2 == 0)
-          r2 = 1;
-        ret.difficulty = r1;
-        r1 *= r2;
-        ans = ret.difficulty;
-      }
-    } while ( (ans < 0 && !MC_GetOpt(ALLOW_NEGATIVES)) || ans > MC_GetOpt(MAX_ANSWER) );
-
-
-    mcdprintf("Constructing answer_string\n");
-    snprintf(ret.answer_string, max_answer_size+1, "%d", ans);
-    mcdprintf("Constructing formula_string\n");
-    snprintf(ret.formula_string, max_formula_size, "%d %c %d",
-             r1, operchars[op], r2);
-    ret.answer = ans;
-    ret.difficulty = op + 1;
-
-  }
-  else //recurse
-  {
-    ret = generate_random_ooo_card_of_length(length - 1, 0);
-
-    if (strchr(ret.formula_string, '+') || strchr(ret.formula_string, '-') )
-    {
-      //if the expression has addition or subtraction, we can't assume that
-      //introducing multiplication or division will produce a predictable
-      //result, so we'll limit ourselves to more addition/subtraction
-      for (op = rand() % 2 ? MC_OPER_ADD : MC_OPER_SUB;
-           MC_GetOpt(op + ADDITION_ALLOWED) == 0;
-           op = rand() % 2 ? MC_OPER_ADD : MC_OPER_SUB);
-
-    }
-    else
-    {
-      //the existing expression can be treated as a number in itself, so we
-      //can do anything to it and be confident of the result.
-      for (op = rand() % MC_NUM_OPERS; //pick a random operation
-         MC_GetOpt(op + ADDITION_ALLOWED) == 0; //make sure it's allowed
-         op = rand() % MC_NUM_OPERS);
-    }
-    mcdprintf("Next operation is %c,",  operchars[op]);
-
-    //pick the next operand
-    if (op == MC_OPER_ADD)
-    {
-      r1 = rand() % (math_opts->iopts[MAX_AUGEND] - math_opts->iopts[MIN_AUGEND] + 1) + math_opts->iopts[MIN_AUGEND];
-      ret.answer += r1;
-    }
-    else if (op == MC_OPER_SUB)
-    {
-      r1 = rand() % (math_opts->iopts[MAX_SUBTRAHEND] - math_opts->iopts[MIN_SUBTRAHEND] + 1) + math_opts->iopts[MIN_SUBTRAHEND];
-      ret.answer -= r1;
-    }
-    else if (op == MC_OPER_MULT)
-    {
-      r1 = rand() % (math_opts->iopts[MAX_MULTIPLICAND] - math_opts->iopts[MIN_MULTIPLICAND] + 1) + math_opts->iopts[MIN_AUGEND];
-      ret.answer *= r1;
-    }
-    else if (op == MC_OPER_DIV)
-    {
-      r1 = find_divisor(ret.answer);
-      ret.answer /= r1;
-    }
-    else
-    {
-      ; //invalid operator
-    }
-    mcdprintf(" operand is %d\n", r1);
-    mcdprintf("Answer: %d\n", ret.answer);
-
-    //next append or prepend the new number (might need optimization)
-    if (op == MC_OPER_SUB || op == MC_OPER_DIV || //noncommutative, append only
-        rand() % 2)
-    {
-      snprintf(tempstr, max_formula_size, "%s %c %d", //append
-               ret.formula_string, operchars[op], r1);
-      strncpy(ret.formula_string, tempstr, max_formula_size);
-    }
-    else //we're prepending
-    {
-      snprintf(tempstr, max_formula_size, "%d %c %s", //append
-               r1, operchars[op], ret.formula_string);
-      strncpy(ret.formula_string, tempstr, max_formula_size);
-    }
-
-    //finally update the answer and score
-    snprintf(ret.answer_string, max_answer_size, "%d", ret.answer);
-    ret.difficulty += (length - 1) + op;
-  }
-  
-  if (reformat)
-  {
-    mcdprintf("Reformatting...\n");
-    do {
-      format = rand() % MC_NUM_FORMATS;
-    } while (!MC_GetOpt(FORMAT_ANSWER_LAST + format) && 
-             !MC_GetOpt(FORMAT_ADD_ANSWER_LAST + op * 3 + format) );
-   
-    strncat(ret.formula_string, " = ?", max_formula_size - strlen(ret.formula_string) );
-    reformat_arithmetic(&ret, format );     
-  }
-  return ret;
-}
-
-
-
-MC_MathQuestion* generate_list(void)
-{
-  int i, j;
-  int length = MC_GetOpt(AVG_LIST_LENGTH);
-  int cl; //raw length
-  double r1, r2, delta, var; //randomizers for list length
-  MC_MathQuestion* list = NULL;
-  MC_MathQuestion* end_of_list = NULL;
-  MC_MathQuestion* tnode = NULL;
-
-  if (debug_status & debug_mathcards)
-    MC_PrintMathOptions(stdout, 0);
-  if (!(MC_GetOpt(ARITHMETIC_ALLOWED) ||
-      MC_GetOpt(TYPING_PRACTICE_ALLOWED) ||
-      MC_GetOpt(COMPARISON_ALLOWED) ) )
-    return NULL;
-
-  //randomize list length by a "bell curve" centered on average
-  if (length && MC_GetOpt(VARY_LIST_LENGTH) )
-  {
-    r1 = (double)rand() / RAND_MAX / 2 + 0.5; //interval (0, 1)
-    r2 = (double)rand() / RAND_MAX / 2 + 0.5; //interval (0, 1)
-    mcdprintf("Randoms chosen: %5f, %5f\n", r1, r2);
-    delta = sqrt(-2 * log(r1) ) * cos(2 * PI_VAL * r2); //standard normal dist.
-    var = length / 10.0; //variance
-    delta = delta * var;
-    mcdprintf("Delta of average is %5f\n", delta);
-    length += delta;
-    if (length < 0)
-      length = 1; //just in case...
-  }
-
-  if (MC_GetOpt(COMPREHENSIVE)) //generate all
-  {
-    int num_valid_questions; //How many questions the COMPREHENSIVE list specifies
-    int cycles_needed;       //How many times we need to generate it to get enough
-
-    num_valid_questions = calc_num_valid_questions();
-    if(num_valid_questions == 0)
-    {
-      fprintf(stderr, "generate_list() - no valid questions\n");
-      return NULL;
-    }
-
-    cycles_needed = length/num_valid_questions;
-
-    if((cycles_needed * num_valid_questions) < length)
-      cycles_needed++;
-
-    mcdprintf("In generate_list() - COMPREHENSIVE method requested\n");
-    mcdprintf("num_valid_questions = %d\t cycles_needed = %d\n",
-              num_valid_questions, cycles_needed);
-
-    for (i = MC_PT_TYPING; i < MC_NUM_PTYPES; ++i)
-    {
-      if (!MC_GetOpt(i + TYPING_PRACTICE_ALLOWED))
-          continue;
-      for (j = 0; j < cycles_needed; j++)
-        list = add_all_valid(i, list, &end_of_list);
-    }
-
-
-    if (MC_GetOpt(RANDOMIZE) )
-    {
-      mcdprintf("Randomizing list\n");
-      randomize_list(&list);
-    }
-
-    if (length)
-    {
-      cl = list_length(list);
-      // NOTE this should no longer happen - we run the COMPREHENSIVE
-      // generation until we have enough questions.
-      if (length > cl) //if not enough questions, pad out with randoms
-      {
-        mcdprintf("Padding out list from %d to %d questions\n", cl, length);
-        for (i = cl; i < length; ++i)
-        {
-          tnode = malloc(sizeof(MC_MathQuestion) );
-          if(!tnode)
-          {
-            fprintf(stderr, "In generate_list() - allocation failed!\n");
-            delete_list(list);
-            return NULL;
-          }
-
-          tnode->card = generate_random_flashcard();
-          list = insert_node(list, end_of_list, tnode);
-          end_of_list = tnode;
-          mcdprintf("%d...", list_length(list) );
-        }
-      }
-      else if (length < cl) //if too many questions, chop off tail end of list
-      {
-        mcdprintf("Cutting list to %d questions\n", length);
-        end_of_list = find_node(list, length);
-        delete_list(end_of_list->next);
-        end_of_list->next = NULL;
-      }
-    }
-  }
-
-  /* Here we are just generating random questions, one at a */
-  /* time until we have enough                              */
-  else 
-  {
-    mcdprintf("In generate_list() - COMPREHENSIVE method NOT requested\n");
-
-    for (i = 0; i < length; ++i)
-    {
-      tnode = malloc(sizeof(MC_MathQuestion) );
-      if(!tnode)
-      {
-        fprintf(stderr, "In generate_list() - allocation failed!\n");
-        delete_list(list);
-        return NULL;
-      }
-
-      tnode->card = generate_random_flashcard();
-      list = insert_node(list, end_of_list, tnode);
-      end_of_list = tnode;
-    }
-  }
-  return list;
-}
-
-static int compare_card(const MC_FlashCard* a, const MC_FlashCard* b)
-{
-  if (strncmp(a->formula_string, b->formula_string, max_formula_size) )
-    return 1;
-  if (strncmp(a->answer_string, b->answer_string, max_answer_size) )
-    return 1;
-  if (a->answer != b->answer);
-    return 1;
-
-  return 0; //the cards are identical
-}
-
-/* Public functions */
-
-/* allocate space for an MC_Flashcard */
-MC_FlashCard MC_AllocateFlashcard(void)
-{
-  MC_FlashCard ret;
-  mcdprintf("Allocating %d + %d bytes for flashcard\n",
-            max_formula_size + 1, max_answer_size + 1);
-  ret.formula_string = malloc( (max_formula_size + 1) * sizeof(char));
-  ret.answer_string = malloc( (max_answer_size + 1) * sizeof(char));
-  if (!ret.formula_string || !ret.answer_string)
-    {
-    free(ret.formula_string);
-    free(ret.answer_string);
-    printf("Couldn't allocate space for a new flashcard!\n");
-    ret = DEFAULT_CARD;
-    }
-  return ret;
-}
-
-void MC_FreeFlashcard(MC_FlashCard* fc)
-{
-  if (!fc)
-    return;
-//  mcdprintf("Freeing formula_string\n");
-  if (fc->formula_string)
-  {
-    free(fc->formula_string);
-    fc->formula_string = NULL;
-  }
-//  mcdprintf("Freeing answer_string\n");
-  if (fc->answer_string)
-  {
-    free(fc->answer_string);
-    fc->answer_string = NULL;
-  }
-}
-
-unsigned int MC_MapTextToIndex(const char* text)
-{
-  int i;
-  for (i = 0; i < NOPTS; ++i)
-  {
-    if (!strcasecmp(text, MC_OPTION_TEXT[i]) )
-      return i;
-  }
-  mcdprintf("'%s' isn't a math option\n", text);
-  return NOT_VALID_OPTION;
-}
-
-
-//TODO more intuitive function names for access by index vs. by text
-void MC_SetOpt(unsigned int index, int val)
-{
-  if (index >= NOPTS)
-  {
-    mcdprintf("Invalid math option index: %d\n", index);
-    return;
-  }
-
-  /* Do some sanity checks before we throw val into the struct: */
-  switch(index)
-  {
-    /* All the booleans must be 0 or 1: */
-    case PLAY_THROUGH_LIST:
-    case REPEAT_WRONGS:
-    case ALLOW_NEGATIVES:
-    case FORMAT_ANSWER_LAST:
-    case FORMAT_ANSWER_FIRST:
-    case FORMAT_ANSWER_MIDDLE:
-    case FORMAT_ADD_ANSWER_LAST:
-    case FORMAT_ADD_ANSWER_FIRST:
-    case FORMAT_ADD_ANSWER_MIDDLE:
-    case FORMAT_SUB_ANSWER_LAST:
-    case FORMAT_SUB_ANSWER_FIRST:
-    case FORMAT_SUB_ANSWER_MIDDLE:
-    case FORMAT_MULT_ANSWER_LAST:
-    case FORMAT_MULT_ANSWER_FIRST:
-    case FORMAT_MULT_ANSWER_MIDDLE:
-    case FORMAT_DIV_ANSWER_LAST:
-    case FORMAT_DIV_ANSWER_FIRST:
-    case FORMAT_DIV_ANSWER_MIDDLE:
-    case ADDITION_ALLOWED:
-    case SUBTRACTION_ALLOWED:
-    case MULTIPLICATION_ALLOWED:
-    case DIVISION_ALLOWED:
-    case TYPING_PRACTICE_ALLOWED:
-    case ARITHMETIC_ALLOWED:
-    case COMPARISON_ALLOWED:
-    case RANDOMIZE:
-    case COMPREHENSIVE:
-    case VARY_LIST_LENGTH:
-    {
-      /* Reset all non-zero values to one: */
-      if(val)
-      {
-        if(val != 1)
-        {
-          fprintf(stderr, "Warning - parameter %s with invalid value %d, "
-                          "resetting to 1\n", MC_OPTION_TEXT[index], val);
-          val = 1;
-        }
-      }
-      break;
-    }
-
-    /* Parameters concerning numbers of questions */
-    /* must be greater than or equal to zero:     */
-    /* TODO some additional checks would make sense */
-    case QUESTION_COPIES:
-    case COPIES_REPEATED_WRONGS:
-    case MAX_QUESTIONS:
-    case MAX_FORMULA_NUMS:
-    case MIN_FORMULA_NUMS:
-    case AVG_LIST_LENGTH:
-    {
-      /* Reset all negative values to zero: */
-      if(val < 0)
-      {
-        fprintf(stderr, "Warning - parameter %s with invalid value %d, "
-                        "resetting to 0\n", MC_OPTION_TEXT[index], val);
-        val = 0;
-      }
-      break;
-    }
-
-    /* Operand values - make sure they are in displayable range */
-    /* i.e. -999 to 999                                         */ 
-    case MAX_ANSWER:
-    case MIN_AUGEND:
-    case MAX_AUGEND:
-    case MIN_ADDEND:
-    case MAX_ADDEND:
-    case MIN_MINUEND:
-    case MAX_MINUEND:
-    case MIN_SUBTRAHEND:
-    case MAX_SUBTRAHEND:
-    case MIN_MULTIPLIER:
-    case MAX_MULTIPLIER:
-    case MIN_MULTIPLICAND:
-    case MAX_MULTIPLICAND:
-    case MIN_DIVISOR:
-    case MAX_DIVISOR:
-    case MIN_QUOTIENT:
-    case MAX_QUOTIENT:
-    case MIN_TYPING_NUM:
-    case MAX_TYPING_NUM:
-    case MIN_COMPARATOR:
-    case MAX_COMPARATOR:
-    case MIN_COMPARISAND:
-    case MAX_COMPARISAND:
-    {
-      if(val > MC_GLOBAL_MAX)
-      {
-        fprintf(stderr, "Warning - parameter %s with invalid value %d, "
-                       "resetting to %d\n", MC_OPTION_TEXT[index],
-                       val, MC_GLOBAL_MAX);
-        val = MC_GLOBAL_MAX;
-      }
-
-      if(val < (0 - MC_GLOBAL_MAX))
-      {
-        fprintf(stderr, "Warning - parameter %s with invalid value %d, "
-                        "resetting to %d\n", MC_OPTION_TEXT[index],
-                       val, (0 - MC_GLOBAL_MAX));
-        val = (0 - MC_GLOBAL_MAX);
-      }
-
-      break;
-    }
-
-    default:
-        fprintf(stderr, "Warning - in MC_SetOpt() - unrecognized index %d\n",
-                index);
-  }
-  /* Should now be safe to put "sanitized" value into struct: */
-  math_opts->iopts[index] = val;
-}
-
-void MC_SetOp(const char* param, int val)
-{
-  MC_SetOpt(MC_MapTextToIndex(param), val);
-}
-
-int MC_GetOpt(unsigned int index)
-{
-  if (index >= NOPTS)
-  {
-    mcdprintf("Invalid option index: %d\n", index);
-    return MC_MATH_OPTS_INVALID;
-  }
-  if (!math_opts)
-  {
-    printf("Invalid options list!\n");
-    return MC_MATH_OPTS_INVALID;
-  }
-  return math_opts->iopts[index];
-}
-
-int MC_GetOp(const char* param)
-{
-  return MC_GetOpt(MC_MapTextToIndex(param) );
-}
-
-int MC_VerifyOptionListSane(void)
-{
-  return strcmp(MC_OPTION_TEXT[NOPTS], "END_OF_OPTS") == 0;
-}
-
-int MC_MaxFormulaSize(void)
-{
-  return max_formula_size;
-}
-
-int MC_MaxAnswerSize(void)
-{
-  return max_answer_size;
-}
-
-void MC_ResetFlashCard(MC_FlashCard* fc)
-{
-  if (!fc || !fc->formula_string || !fc->answer_string)
-    return;
-  strncpy(fc->formula_string, " ", max_formula_size);
-  strncpy(fc->answer_string, " ", max_answer_size);
-  fc->answer = 0;
-  fc->difficulty = 0;
-}
-
-int MC_FlashCardGood(const MC_FlashCard* fc)
-{
-  return fc && fc->formula_string && fc->answer_string;
-}
-
-int find_divisor(int a)
-{
-  int div = 1; //the divisor to return
-  int realisticpasses = 3; //reasonable time after which a minimum should be met
-  int i;
-  do
-    for (i = 0; i < NPRIMES; ++i) //test each prime
-      if (a % smallprimes[i] == 0)  //if it is a prime factor,
-        if (rand() % (i + 1) == 0) //maybe we'll keep it
-          if (div * smallprimes[i] <= MC_GetOpt(MAX_DIVISOR) ) //if we can,
-            div *= smallprimes[i]; //update our real divisor
-  //keep going if the divisor is too small
-  while (div < MC_GetOpt(MIN_DIVISOR) && --realisticpasses); 
-  
-  return div;
-}
-
-
-//Computes (approximately) the number of questions that will be returned
-//by add_all_valid() as specified by the current options. This does not 
-//take into account screening out of invalid questions, such
-//as divide-by-zero and questions like "0 x ? = 0".
-static int calc_num_valid_questions(void)
-{
-  int total_questions = 0;
-  int k = 0;
-  //First add the number of typing questions
-  if (MC_GetOpt(TYPING_PRACTICE_ALLOWED))
-    total_questions += (MC_GetOpt(MAX_TYPING_NUM) - MC_GetOpt(MIN_TYPING_NUM));
-
-  //Now add how many questions we will have for each operation:
-  for (k = MC_OPER_ADD; k < MC_NUM_OPERS; ++k)
-  {
-    int num_this_oper = 0;
-    int formats_this_oper = 0;
-
-    if (!MC_GetOpt(k + ADDITION_ALLOWED) )
-      continue;
-
-    //calculate number of ordered pairs of first and second operands:
-    //note the "+ 1" is due to the ranges being inclusive
-    num_this_oper = (MC_GetOpt(MAX_AUGEND + 4 * k) - MC_GetOpt(MIN_AUGEND + 4 * k) + 1)
-                    *
-                    (MC_GetOpt(MAX_ADDEND + 4 * k) - MC_GetOpt(MIN_ADDEND + 4 * k) + 1);
-    //check what formats are allowed
-    if (MC_GetOpt(FORMAT_ANSWER_LAST) && MC_GetOpt(FORMAT_ADD_ANSWER_LAST + k * 3))
-      formats_this_oper++;
-    if (MC_GetOpt(FORMAT_ANSWER_FIRST) && MC_GetOpt(FORMAT_ADD_ANSWER_FIRST + k * 3))
-      formats_this_oper++;
-    if (MC_GetOpt(FORMAT_ANSWER_MIDDLE) && MC_GetOpt(FORMAT_ADD_ANSWER_MIDDLE + k * 3))
-      formats_this_oper++;
-    //Get total of e.g. addition questions:
-    num_this_oper *= formats_this_oper;
-    //add to overall total:
-    total_questions += num_this_oper;
-  }
-
-  //TODO will also need to count up the COMPARISON questions once
-  //they are implemented
-  {
-  }
-
-  mcdprintf("calc_num_valid_questions():\t%d\n", total_questions);
-  return total_questions;
-}
-
-
-//NOTE end_of_list** needs to be doubly indirect because otherwise the end does not
-//get updated in the calling code
-//NOTE the difficulty is set as add = 1, sub = 2, mult = 3, div = 4, plus a 2 point
-//bonus if the format is a "missing number".
-MC_MathQuestion* add_all_valid(MC_ProblemType pt, MC_MathQuestion* list, MC_MathQuestion** end_of_list)
-{
-  int i, j;
-  int ans = 0, tmp;
-  MC_Operation k;
-  MC_MathQuestion* tnode;
-
-  mcdprintf("Entering add_all_valid(%d)\n", pt);
-  mcdprintf("List already has %d questions\n", list_length(list));
-
-  //make sure this problem type is actually allowed
-  if (!MC_GetOpt(pt + TYPING_PRACTICE_ALLOWED) )
-    return list;
-
-  //add all typing questions in range
-  if (pt == MC_PT_TYPING)
-  {
-    mcdprintf("Adding typing...\n");
-    for (i = MC_GetOpt(MIN_TYPING_NUM); i <= MC_GetOpt(MAX_TYPING_NUM); ++i)
-    {
-      mcdprintf("(%d)\n", i);
-      tnode = allocate_node();
-      if(!tnode)
-      {
-        fprintf(stderr, "In add_all_valid() - allocate_node() failed!\n");
-        delete_list(list);
-        return NULL;
-      }
-
-      snprintf(tnode->card.formula_string, max_formula_size, "%d", i);
-      snprintf(tnode->card.answer_string, max_formula_size, "%d", i);
-      tnode->card.difficulty = 1;
-      list = insert_node(list, *end_of_list, tnode);
-      *end_of_list = tnode;
-    }
-  }
-
-  //add all allowed arithmetic questions
-  else if (MC_PT_ARITHMETIC)
-  {
-    mcdprintf("Adding arithmetic...\n");
-
-    // The k loop iterates through the four arithmetic operations:
-    // k = 0 means addition
-    // k = 1 means subtraction
-    // k = 2 means multiplication
-    // k = 3 means division
-    for (k = MC_OPER_ADD; k < MC_NUM_OPERS; ++k)
-    {
-      if (!MC_GetOpt(k + ADDITION_ALLOWED) )
-        continue;
-      mcdprintf("\n*%d*\n", k);
-
-      // The i loop iterates through the first value in the question:
-      for (i = MC_GetOpt(MIN_AUGEND + 4 * k); i <= MC_GetOpt(MAX_AUGEND + 4 * k); ++i)
-      {
-        mcdprintf("\n%d:\n", i);
-
-        // The j loop iterates through the second value in the question:
-        for (j = MC_GetOpt(MIN_ADDEND + 4 * k); j <= MC_GetOpt(MAX_ADDEND + 4 * k); ++j)
-        {
-          // Generate the third number according to the operation.
-          // Although it is called "ans", it will not be the actual
-          // answer if it is a "missing number" type problem
-          // (e.g. "3 x ? = 12")
-          // We also filter out invalid questions here
-          switch (k)
-          {
-            case MC_OPER_ADD:
-            {
-              ans = i + j;
-              // throw anything over MAX_ANSWER
-              if (ans > MC_GetOpt(MAX_ANSWER))
-                continue;
-              break;
-            }
-            case MC_OPER_SUB:
-            {
-              ans = i - j;
-              // throw out negatives if they aren't allowed:
-              if (ans < 0 && !MC_GetOpt(ALLOW_NEGATIVES))
-                continue;
-              // throw anything over MAX_ANSWER
-              if (ans > MC_GetOpt(MAX_ANSWER))
-                continue;
-              break;
-            }
-            case MC_OPER_MULT:
-            {
-              ans = i * j;
-              // throw anything over MAX_ANSWER
-              if (ans > MC_GetOpt(MAX_ANSWER))
-                continue;
-              break;
-            }
-            case MC_OPER_DIV:
-            {
-               // throw anything over MAX_ANSWER
-              if (i * j > MC_GetOpt(MAX_ANSWER))
-                continue;
-
-              tmp = i;
-              i *= j;
-              ans = j;
-              j = tmp;
-              break;
-            }
-            default:
-              fprintf(stderr, "Unrecognized operation type: %d\n", k);
-              continue;
-          }
-
-          mcdprintf("Generating: %d %c %d = %d\n", i, operchars[k], j, ans);
-
-          //add each format, provided it's allowed in general and for this op
-
-          // Questions like "a + b = ?"
-          if (MC_GetOpt(FORMAT_ANSWER_LAST) && MC_GetOpt(FORMAT_ADD_ANSWER_LAST + k * 3))
-          {
-            // Avoid division by zero:
-            if (k == MC_OPER_DIV && j == 0)
-            {
-              // need to restore i and j to original values so loop works:
-              j = ans;
-              i = tmp;
-              continue;
-            }
-
-            tnode = allocate_node();
-            if(!tnode)
-            {
-              fprintf(stderr, "In add_all_valid() - allocate_node() failed!\n");
-              delete_list(list);
-              return NULL;
-            }
-
-            snprintf(tnode->card.answer_string, max_formula_size, "%d", ans);
-            snprintf(tnode->card.formula_string, max_formula_size,
-                     "%d %c %d = ?", i, operchars[k], j);
-            tnode->card.difficulty = k + 1;
-            list = insert_node(list, *end_of_list, tnode);
-            *end_of_list = tnode;
-          }
-
-
-          // Questions like "? + b = c"
-          if (MC_GetOpt(FORMAT_ANSWER_FIRST) && MC_GetOpt(FORMAT_ADD_ANSWER_FIRST + k * 3) )
-          {
-            // Avoid questions with indeterminate answer:
-            // e.g. "? x 0 = 0"
-            if (k == MC_OPER_MULT && j == 0)
-            {
-              continue;
-            }
-            // Avoid division by zero:
-            if (k == MC_OPER_DIV && j == 0)
-            {
-              // need to restore i and j to original values so loop works:
-              j = ans;
-              i = tmp;
-              continue;
-            }
-
-            tnode = allocate_node();
-            if(!tnode)
-            {
-              fprintf(stderr, "In add_all_valid() - allocate_node() failed!\n");
-              delete_list(list);
-              return NULL;
-            }
-
-            snprintf(tnode->card.answer_string, max_formula_size, "%d", i);
-            snprintf(tnode->card.formula_string, max_formula_size,
-                     "? %c %d = %d", operchars[k], j, ans);
-            tnode->card.difficulty = k + 3;
-            list = insert_node(list, *end_of_list, tnode);
-            *end_of_list = tnode;
-          }
-
-
-          // Questions like "a + ? = c"
-          if (MC_GetOpt(FORMAT_ANSWER_MIDDLE) && MC_GetOpt(FORMAT_ADD_ANSWER_MIDDLE + k * 3))
-          {
-            // Avoid questions with indeterminate answer:
-            // e.g. "0 x ? = 0"
-            if (k == MC_OPER_MULT && i == 0)
-              continue;
-
-            // e.g. "0 / ? = 0"
-            if (k == MC_OPER_DIV && i == 0)
-            {
-              // need to restore i and j to original values so loop works:
-              j = ans;
-              i = tmp;
-              continue;
-            }
-
-            tnode = allocate_node();
-            if(!tnode)
-            {
-              fprintf(stderr, "In add_all_valid() - allocate_node() failed!\n");
-              delete_list(list);
-              return NULL;
-            }
-
-            snprintf(tnode->card.answer_string, max_formula_size, "%d", j);
-            snprintf(tnode->card.formula_string, max_formula_size,
-                     "%d %c ? = %d", i, operchars[k], ans);
-            tnode->card.difficulty = k + 3;
-            list = insert_node(list, *end_of_list, tnode);
-            *end_of_list = tnode;
-          }
-          //If we divided, reset i and j so loop works correctly
-          if (k == MC_OPER_DIV)
-          {
-            j = ans;
-            i = tmp;
-            mcdprintf("resetting to %d %d\n", j, i);
-          }
-        }
-      }
-    }
-  }
-  //add all comparison questions (TODO implement them!)
-  else if (pt == MC_PT_COMPARISON)
-  {
-    for (i = MC_GetOpt(MIN_COMPARATOR); i < MC_GetOpt(MAX_COMPARATOR); ++i)
-    {
-      for (j = MC_GetOpt(MIN_COMPARISAND); j < MC_GetOpt(MAX_COMPARISAND); ++j)
-      {
-        tnode = allocate_node();
-        if(!tnode)
-        {
-          fprintf(stderr, "In add_all_valid() - allocate_node() failed!\n");
-          delete_list(list);
-          return NULL;
-        }
-
-        snprintf(tnode->card.formula_string, max_formula_size, "%d ? %d", i,j);
-        snprintf(tnode->card.answer_string, max_formula_size,
-                 i < j ? "<" : 
-                 i > j ? ">" : 
-                         "=");
-        tnode->card.difficulty = 1;
-        list = insert_node(list, *end_of_list, tnode);
-        *end_of_list = tnode;
-      }
-    }
-  }
-  mcdprintf("Exiting add_all_valid()\n");  
-  mcdprintf("List now has %d questions\n\n", list_length(list));
-
-  return list;
-}
-
-MC_MathQuestion* find_node(MC_MathQuestion* list, int num)
-{
-  while (--num > 0 && list)
-    list = list->next;
-  return list;
-}
-
-void reformat_arithmetic(MC_FlashCard* card, MC_Format f)
-{
-  int i, j;
-  char* beg = 0;
-  char* end = 0;
-  char nans[max_answer_size];
-  char nformula[max_formula_size + max_answer_size]; //gets a bit larger than usual in the meantime
-  
-  {
-    //snprintf(nans, max_answer_size, "%s", card->answer_string);
-   
-    //insert old answer where question mark was
-    for (i = 0, j = 0; card->formula_string[j] != '?'; ++i, ++j)
-      nformula[i] = card->formula_string[j];
-    i += snprintf(nformula + i, max_answer_size - 1, "%s", card->answer_string);
-    snprintf(nformula + i, max_formula_size - i, "%s", card->formula_string + j + 1);
-
-    //replace the new answer with a question mark
-    if (f == MC_FORMAT_ANS_LAST)
-      beg = strrchr(nformula, ' ') + 1;
-    if (f == MC_FORMAT_ANS_FIRST)
-      beg = nformula;
-    if (f == MC_FORMAT_ANS_MIDDLE)
-      beg = strchr(nformula, ' ') + 3;
-    end = strchr(beg + 1, ' ');
-    if (!end)
-      end = "";
-    //we now have beg = first digit of number to replace, end = the char after
-    sscanf(beg, "%s", nans);
-    *beg = 0; //sequester the first half of the string
-    snprintf(card->formula_string, max_formula_size, "%s?%s", nformula, end);
-    snprintf(card->answer_string, max_answer_size, "%s", nans);
-    card->answer = atoi(card->answer_string);
-  }
-}

Copied: tuxmath/trunk/src/mathcards.c (from rev 1488, tuxmath/branches/lan/src/mathcards.c)
===================================================================
--- tuxmath/trunk/src/mathcards.c	                        (rev 0)
+++ tuxmath/trunk/src/mathcards.c	2009-09-05 02:31:43 UTC (rev 1489)
@@ -0,0 +1,2567 @@
+/*
+*  C Implementation: mathcards.c
+*
+*       Description: implementation of backend for a flashcard-type math game.
+        Developed as an enhancement to Bill Kendrick's "Tux of Math Command"
+        (aka tuxmath).  (If tuxmath were a C++ program, this would be a C++ class).
+        MathCards could be used as the basis for similar games using a different interface.
+
+*
+*
+* Author: David Bruce <davidstuartbruce at gmail.com>, (C) 2005
+*
+* Copyright: See COPYING file that comes with this distribution.  (Briefly, GNU GPL).
+*
+* Revised extensively in 2008 by Brendan Luchen, Tim Holy, and David Bruce
+* Revised more in 2009 by David Bruce
+*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <math.h>
+#include <time.h>
+
+
+#include "transtruct.h"
+#include "mathcards.h"
+#include "globals.h"
+
+/* extern'd constants */
+
+const char* const MC_OPTION_TEXT[NOPTS+1] = {
+"PLAY_THROUGH_LIST",
+"QUESTION_COPIES",
+"REPEAT_WRONGS",
+"COPIES_REPEATED_WRONGS",
+"ALLOW_NEGATIVES",
+"MAX_ANSWER",
+"MAX_QUESTIONS",
+"MAX_FORMULA_NUMS",
+"MIN_FORMULA_NUMS",
+
+"FORMAT_ANSWER_LAST",
+"FORMAT_ANSWER_FIRST",
+"FORMAT_ANSWER_MIDDLE",
+"FORMAT_ADD_ANSWER_LAST",
+"FORMAT_ADD_ANSWER_FIRST",
+"FORMAT_ADD_ANSWER_MIDDLE",
+"FORMAT_SUB_ANSWER_LAST",
+"FORMAT_SUB_ANSWER_FIRST",
+"FORMAT_SUB_ANSWER_MIDDLE",
+"FORMAT_MULT_ANSWER_LAST",
+"FORMAT_MULT_ANSWER_FIRST",
+"FORMAT_MULT_ANSWER_MIDDLE",
+"FORMAT_DIV_ANSWER_LAST",
+"FORMAT_DIV_ANSWER_FIRST",
+"FORMAT_DIV_ANSWER_MIDDLE",
+
+"ADDITION_ALLOWED",
+"SUBTRACTION_ALLOWED",
+"MULTIPLICATION_ALLOWED",
+"DIVISION_ALLOWED",
+"TYPING_PRACTICE_ALLOWED",
+"ARITHMETIC_ALLOWED",
+"COMPARISON_ALLOWED",
+
+"MIN_AUGEND",
+"MAX_AUGEND",
+"MIN_ADDEND",
+"MAX_ADDEND",
+
+"MIN_MINUEND",
+"MAX_MINUEND",
+"MIN_SUBTRAHEND",
+"MAX_SUBTRAHEND",
+
+"MIN_MULTIPLIER",
+"MAX_MULTIPLIER",
+"MIN_MULTIPLICAND",
+"MAX_MULTIPLICAND",
+
+"MIN_DIVISOR",
+"MAX_DIVISOR",
+"MIN_QUOTIENT",
+"MAX_QUOTIENT",
+
+"MIN_TYPING_NUM",
+"MAX_TYPING_NUM",
+
+"MIN_COMPARATOR" ,
+"MAX_COMPARATOR" ,
+"MIN_COMPARISAND",
+"MAX_COMPARISAND",
+
+"RANDOMIZE",
+
+"COMPREHENSIVE",
+"AVG_LIST_LENGTH",
+"VARY_LIST_LENGTH",
+
+"END_OF_OPTS"
+};
+
+
+  
+const int MC_DEFAULTS[] = {
+  1,    //PLAY_THROUGH_LIST
+  1,    //QUESTION_COPIES
+  1,    //REPEAT_WRONGS
+  1,    //COPIES_REPEATED_WRONGS
+  0,    //ALLOW_NEGATIVES
+  999,  //MAX_ANSWER
+  5000, //MAX_QUESTIONS
+  2,    //MAX_FORMULA_NUMS
+  2,    //MIN_FORMULA_NUMS
+        //
+  1,    //FORMAT_ANSWER_LAST
+  0,    //FORMAT_ANSWER_FIRST
+  0,    //FORMAT_ANSWER_MIDDLE
+  1,    //FORMAT_ADD_ANSWER_LAST
+  0,    //FORMAT_ADD_ANSWER_FIRST
+  0,    //FORMAT_ADD_ANSWER_MIDDLE
+  1,    //FORMAT_SUB_ANSWER_LAST
+  0,    //FORMAT_SUB_ANSWER_FIRST
+  0,    //FORMAT_SUB_ANSWER_MIDDLE
+  1,    //FORMAT_MULT_ANSWER_LAST
+  0,    //FORMAT_MULT_ANSWER_FIRST
+  0,    //FORMAT_MULT_ANSWER_MIDDLE
+  1,    //FORMAT_DIV_ANSWER_LAST
+  0,    //FORMAT_DIV_ANSWER_FIRST
+  0,    //FORMAT_DIV_ANSWER_MIDDLE
+        //
+  1,    //ADDITION_ALLOWED
+  1,    //SUBTRACTION_ALLOWED
+  1,    //MULTIPLICATION_ALLOWED
+  1,    //DIVISION_ALLOWED
+
+  0,    //TYPING_PRACTICE_ALLOWED
+  1,    //ARITHMETIC_ALLOWED
+  0,    //COMPARISON_ALLOWED
+        //
+  0,    //MIN_AUGEND
+  12,   //MAX_AUGEND
+  0,    //MIN_ADDEND
+  12,   //MAX_ADDEND
+        //
+  0,    //MIN_MINUEND
+  12,   //MAX_MINUEND
+  0,    //MIN_SUBTRAHEND
+  12,   //MAX_SUBTRAHEND
+        //
+  0,    //MIN_MULTIPLIER
+  12,   //MAX_MULTIPLIER
+  0,    //MIN_MULTIPLICAND
+  12,   //MAX_MULTIPLICAND
+        //
+  0,    //MIN_DIVISOR
+  12,   //MAX_DIVISOR
+  0,    //MIN_QUOTIENT
+  12,   //MAX_QUOTIENT
+        //
+  0,    //MIN_TYPING_NUM
+  12,   //MAX_TYPING_NUM
+        //
+  0,    //MIN_COMPARATOR
+  12,   //MAX_COMPARATOR
+  0,    //MIN_COMPARISAND
+  12,   //MAX_COMPARISAND
+
+  1,    //RANDOMIZE
+
+  0,    //COMPREHENSIVE
+  100,  //AVG_LIST_LENGTH
+  0     //VARY_LIST_LENGTH  FIXME what is the purpose of this?
+};
+
+
+
+/* "Globals" for mathcards.c: */
+#define PI_VAL 3.1415927
+#define NPRIMES 9
+const int smallprimes[NPRIMES] = {2, 3, 5 ,7, 11, 13, 17, 19, 23};
+const char operchars[4] = "+-*/";
+extern int n;
+
+MC_Options* math_opts = 0;
+MC_MathQuestion* question_list = 0;
+MC_MathQuestion* wrong_quests = 0;
+MC_MathQuestion* active_quests = 0;
+MC_MathQuestion* next_wrong_quest = 0;
+int initialized = 0;
+int quest_list_length = 0;
+int answered_correctly = 0;
+int answered_wrong = 0;
+int questions_pending = 0;
+int unanswered = 0;
+int starting_length = 0;
+static int id = 0;
+
+//NOTE these are no longer used:
+int max_formula_size = 0; //max length in chars of a flashcard's formula
+int max_answer_size = 0; //and of its answer
+
+/* For keeping track of timing data */
+float* time_per_question_list = NULL;
+int length_time_per_question_list = 0;
+int length_alloc_time_per_question_list = 0;
+
+const MC_FlashCard DEFAULT_CARD = {0,0,0,0}; //empty card to signal error
+
+/* "private" function prototypes:                        */
+/*                                                       */
+/* these are for internal use by MathCards only - like   */
+/* the private functions of a C++ class. Declared static */
+/* to give file scope rather than extern scope.          */
+
+static MC_MathQuestion* generate_list(void);
+static void clear_negatives(void);
+//static int validate_question(int n1, int n2, int n3);
+//static MC_MathQuestion* create_node(int n1, int n2, int op, int ans, int f);
+static MC_MathQuestion* create_node_from_card(const MC_FlashCard* flashcard);
+static MC_MathQuestion* create_node_copy(MC_MathQuestion* other);
+static MC_MathQuestion* insert_node(MC_MathQuestion* first, MC_MathQuestion* current, MC_MathQuestion* new_node);
+static MC_MathQuestion* append_node(MC_MathQuestion* list, MC_MathQuestion* new_node);
+static MC_MathQuestion* remove_node(MC_MathQuestion* first, MC_MathQuestion* n);
+static MC_MathQuestion* delete_list(MC_MathQuestion* list);
+//static int copy_node(MC_MathQuestion* original, MC_MathQuestion* copy);
+static int list_length(MC_MathQuestion* list);
+static int randomize_list(MC_MathQuestion** list);
+
+int comp_randomizer(const void *a, const void *b);
+static MC_MathQuestion* pick_random(int length, MC_MathQuestion* list);
+static int compare_node(MC_MathQuestion* first, MC_MathQuestion* other);
+static int already_in_list(MC_MathQuestion* list, MC_MathQuestion* ptr);
+//static int int_to_bool(int i);
+//static int sane_value(int i);
+//static int abs_value(int i);
+static int log10i(int i);
+static int floatCompare(const void *v1,const void *v2);
+
+static void print_list(FILE* fp,MC_MathQuestion* list);
+void print_vect_list(FILE* fp, MC_MathQuestion** vect, int length);
+
+/* these functions are dead code unless compiling with debug turned on: */
+#ifdef MC_DEBUG
+static void print_counters(void);
+//static MC_FlashCard    create_card_from_node(MC_MathQuestion* node);
+#endif
+
+/* Functions for new mathcards architecture */
+static void free_node(MC_MathQuestion* mq); //wrapper for free() that also frees card
+static MC_FlashCard generate_random_flashcard(void);
+static MC_FlashCard generate_random_ooo_card_of_length(int length, int reformat);
+static void copy_card(const MC_FlashCard* src, MC_FlashCard* dest); //deep copy a flashcard
+static MC_MathQuestion* allocate_node(void); //allocate space for a node
+static int compare_card(const MC_FlashCard* a, const MC_FlashCard* b); //test for identical cards
+static int find_divisor(int a); //return a random positive divisor of a
+static int calc_num_valid_questions(void);
+static MC_MathQuestion* add_all_valid(MC_ProblemType pt, MC_MathQuestion* list, MC_MathQuestion** end_of_list);
+static MC_MathQuestion* find_node(MC_MathQuestion* list, int num);
+
+/*  MC_Initialize() sets up the struct containing all of  */
+/*  settings regarding math questions.  It should be      */
+/*  called before any other function.  Many of the other  */
+/*  functions will not work properly if MC_Initialize()   */
+/*  has not been called. It only needs to be called once, */
+/*  i.e when the program is starting, not at the beginning*/
+/*  of each math game for the player. Returns 1 if        */
+/*  successful, 0 otherwise.                              */
+int MC_Initialize(void)
+{
+  int i;
+
+  mcdprintf("\nEntering MC_Initialize()");
+  /* check flag to see if we did this already */
+  if (initialized)
+  {
+
+    #ifdef MC_DEBUG
+    printf("\nAlready initialized");
+    MC_PrintMathOptions(stdout, 0);
+    printf("\nLeaving MC_Initialize()\n");
+    #endif
+
+    return 1;
+  }
+  math_opts = malloc(sizeof(MC_Options));
+  /* bail out if no struct */
+  if (!math_opts)
+  {
+    mcdprintf("\nError: malloc couldn't allocate math_opts for some reason\n");
+    mcdprintf("\nLeaving MC_Initialize()\n");
+
+    fprintf(stderr, "\nUnable to initialize math_options");
+    return 0;
+  }
+
+  /* set defaults */
+  for (i = 0; i < NOPTS; ++i)
+    {
+      math_opts->iopts[i] = MC_DEFAULTS[i];
+    }
+
+  /* if no negatives to be used, reset any negatives to 0 */
+  if (!math_opts->iopts[ALLOW_NEGATIVES])
+  {
+    clear_negatives();
+  }
+
+  initialized = 1;
+
+  #ifdef MC_DEBUG
+  MC_PrintMathOptions(stdout, 0);
+  printf("\nLeaving MC_Initialize()\n");
+  #endif
+
+  return 1;
+}
+
+
+
+/*  MC_StartGame() generates the list of math questions   */
+/*  based on existing settings. It should be called at    */
+/*  the beginning of each math game for the player.       */
+/*  Returns 1 if resultant list contains 1 or more        */
+/*  questions, 0 if list empty or not generated           */
+/*  successfully.                                         */
+int MC_StartGame(void)
+{
+
+  mcdprintf("\nEntering MC_StartGame()");
+
+  /* if math_opts not set up yet, initialize it: */
+  if (!initialized)
+  {
+
+    mcdprintf("\nNot initialized - calling MC_Initialize()");
+
+    MC_Initialize();
+  }
+
+  if (!math_opts)
+  {
+    mcdprintf("\nCould not initialize - bailing out");
+    mcdprintf("\nLeaving MC_StartGame()\n");
+
+    return 0;
+  }
+  /* we know math_opts exists if we make it to here */
+  srand(time(NULL));
+
+  /* clear out old lists if starting another game: (if not done already) */
+  delete_list(question_list);
+  question_list = NULL;
+  delete_list(wrong_quests);
+  wrong_quests = NULL;
+  delete_list(active_quests);
+  active_quests = NULL;
+  
+  /* clear the time list */
+  if (time_per_question_list != NULL) {
+    free(time_per_question_list);
+    time_per_question_list = NULL;
+    length_time_per_question_list = 0;
+    length_alloc_time_per_question_list = 0;
+  }
+
+  //NOTE this is going away - complicates code too much to calculate this to
+  //save a few bytes rather than making the string size constant
+  /* determine how much space needed for strings, based on user options */
+  max_formula_size = MC_GetOpt(MAX_FORMULA_NUMS)
+                   * (log10i(MC_GLOBAL_MAX) + 4) //sign/operator/spaces
+                   + 1; //question mark for answer
+  max_answer_size = (int)(log10i(MC_GLOBAL_MAX) ) + 2; //negative sign + digit
+
+  mcdprintf("max answer, formula size: %d, %d\n",
+            max_answer_size, max_formula_size);
+
+  question_list = generate_list();
+
+  next_wrong_quest = 0;
+  /* initialize counters for new game: */
+  quest_list_length = list_length(question_list);
+  
+
+  /* Note: the distinction between quest_list_length and  */
+  /* unanswered is that the latter includes questions     */
+  /* that are currently "in play" by the user interface - */
+  /* it is only decremented when an answer to the question*/
+  /* is received.                                         */
+  unanswered = starting_length = quest_list_length;
+  answered_correctly = 0;
+  answered_wrong = 0;
+  questions_pending = 0;
+
+  if (debug_status & debug_mathcards) {
+    print_counters();
+  }
+
+/* make sure list now exists and has non-zero length: */
+  if (question_list && quest_list_length)
+  {
+    mcdprintf("\nGame set up successfully");
+    mcdprintf("\nLeaving MC_StartGame()\n");
+
+    return 1;
+  }
+  else
+  {
+    mcdprintf("\nGame NOT set up successfully - no valid list");
+    mcdprintf("\nLeaving MC_StartGame()\n");
+
+    return 0;
+  }
+}
+
+/*  MC_StartGameUsingWrongs() is like MC_StartGame(),     */
+/*  but uses the incorrectly answered questions from the  */
+/*  previous game for the question list as a review form  */
+/*  of learning. If there were no wrong answers (or no    */
+/*  previous game), it behaves just like MC_StartGame().  */
+/*  FIXME wonder if it should return a different value if */
+/*  the list is created from settings because there is no */
+/*  valid wrong question list?                            */
+int MC_StartGameUsingWrongs(void)
+{
+  mcdprintf("\nEntering MC_StartGameUsingWrongs()");
+
+  /* Note: if not initialized, control will pass to       */
+  /* MC_StartGame() via else clause so don't need to test */
+  /* for initialization here                              */
+  if (wrong_quests &&
+      list_length(wrong_quests))
+  {
+    mcdprintf("\nNon-zero length wrong_quests list found, will");
+    mcdprintf("\nuse for new game list:");
+
+    /* initialize lists for new game: */
+    delete_list(question_list);
+    if(!randomize_list(&wrong_quests))
+    {
+      fprintf(stderr, "Error during randomization of wrong_quests!\n");
+      /* Punt on trying wrong question list, just run normal game */
+      return MC_StartGame();
+    }
+    question_list = wrong_quests;
+    wrong_quests = 0;
+    next_wrong_quest = 0;
+    delete_list(active_quests);
+    active_quests = 0;
+   /* initialize counters for new game: */
+    quest_list_length = list_length(question_list);
+    unanswered = starting_length = quest_list_length;
+    answered_correctly = 0;
+    answered_wrong = 0;
+    questions_pending = 0;
+
+    if (debug_status & debug_mathcards) {
+      print_counters();
+      print_list(stdout, question_list);
+      printf("\nLeaving MC_StartGameUsingWrongs()\n");
+    }
+
+    return 1;
+  }
+  else /* if no wrong_quests list, go to MC_StartGame()   */
+       /* to set up list based on math_opts               */
+  {
+    mcdprintf("\nNo wrong questions to review - generate list from math_opts\n");
+    mcdprintf("\nLeaving MC_StartGameUsingWrongs()\n");
+
+    return MC_StartGame();
+  }
+}
+
+
+/*  MC_NextQuestion() takes a pointer to an allocated      */
+/*  MC_FlashCard struct and fills in the fields for     */
+/*  use by the user interface program. It basically is     */
+/*  like taking the next flashcard from the pile. The      */
+/*  node containing the question is removed from the list. */
+/*  Returns 1 if question found, 0 if list empty/invalid   */
+/*  or if argument pointer is invalid.                     */
+int MC_NextQuestion(MC_FlashCard* fc)
+{
+  mcdprintf("\nEntering MC_NextQuestion()\n");
+
+  /* (so we can move the node into active_quests:) */
+  MC_MathQuestion* ptr;
+
+  if (!fc )
+  {
+    fprintf(stderr, "\nNull MC_FlashCard* argument!\n");
+    mcdprintf("\nLeaving MC_NextQuestion()\n");
+    return 0;
+  }
+
+  if (!question_list ||
+/*      !next_question || */
+      !list_length(question_list) )
+  {
+    mcdprintf("\nquestion_list invalid or empty");
+    mcdprintf("\nLeaving MC_NextQuestion()\n");
+    
+    return 0;
+  }
+
+  /* 'draw' - copy over the first question */
+  copy_card(&question_list->card, fc);
+ 
+  /* take first question node out of list and move it into active_quests list: */
+  ptr = question_list;
+  question_list = remove_node(question_list, ptr);
+//  free_node(ptr);
+  quest_list_length--;
+  questions_pending++;
+  active_quests = append_node(active_quests, ptr);
+
+  if (debug_status & debug_mathcards) {
+    printf("\nnext question is:");
+    print_card(*fc);
+    print_counters();
+    printf("\n\nLeaving MC_NextQuestion()\n");
+  }
+
+  return 1;
+}
+
+
+
+/*  MC_AnsweredCorrectly() is how the user interface      */
+/*  tells MathCards that the question has been answered   */
+/*  correctly. Returns 1 if no errors.                    */
+int MC_AnsweredCorrectly(int id)
+{
+  mcdprintf("\nEntering MC_AnsweredCorrectly()");
+
+  MC_MathQuestion* quest = NULL;
+
+  if(!active_quests) // No questions currently "in play" - something is wrong:
+  {
+    fprintf(stderr, "MC_AnsweredCorrectly() - active_quests empty\n");
+    return 0;
+  }
+
+  mcdprintf("\nQuestion id was: %d\n", id);
+
+  //First take the question out of the active_quests list
+  quest = active_quests;  
+  // Loop until quest is NULL or we find card with same id:
+  while(quest && (id != quest->card.question_id))
+    quest = quest->next;
+  if(!quest) // Means we didn't find matching card - something is wrong:
+  {
+    fprintf(stderr, "MC_AnsweredCorrectly() - matching question not found!\n");
+    return 0;
+  }
+
+  if (debug_status & debug_mathcards) {
+    printf("\nQuestion was:");
+    print_card(quest->card);
+  }
+
+  //We found a matching question, now we take it out of the 
+  //"active_quests" list and either put it back into the 
+  //main question list in a random location, or delete it:
+  active_quests = remove_node(active_quests, quest);
+  questions_pending--;  //the length of the 'active_quests' list
+  answered_correctly++;
+
+  if (!math_opts->iopts[PLAY_THROUGH_LIST])
+  /* reinsert question into question list at random location */
+  {
+    mcdprintf("\nReinserting question into list");
+
+    MC_MathQuestion* rand_spot;
+    /* put it into list */
+    rand_spot = pick_random(quest_list_length, question_list);
+    question_list = insert_node(question_list, rand_spot, quest);
+    quest_list_length++;
+    /* unanswered does not change - was not decremented when */
+    /* question allocated!                                   */
+  }
+  else
+  {
+    mcdprintf("\nNot reinserting question into list");
+    free_node(quest);
+    /* not recycling questions so fewer questions remain:      */
+    unanswered--;
+  }
+
+   if (debug_status & debug_mathcards) {
+    print_counters();
+    printf("\nLeaving MC_AnsweredCorrectly()\n");
+  }
+  
+  return 1;
+}
+
+
+
+
+
+/*  MC_NotAnsweredCorrectly() is how the user interface    */
+/*  tells MathCards that the player failed to answer the  */
+/*  question correctly. Returns 1 if no errors.           */
+/*  Note: this gets triggered only if a player's igloo/city */
+/*  gets hit by a question, not if they "miss".             */
+int MC_NotAnsweredCorrectly(int id)
+{
+  mcdprintf("\nEntering MC_NotAnsweredCorrectly()");
+
+  MC_MathQuestion* quest = NULL;
+
+  if(!active_quests) // No questions currently "in play" - something is wrong:
+  {
+    fprintf(stderr, "MC_NotAnsweredCorrectly() - active_quests empty\n");
+    return 0;
+  }
+
+  mcdprintf("\nQuestion id was: %d\n", id);
+
+  //First take the question out of the active_quests list
+  quest = active_quests;  
+  // Loop until quest is NULL or we find card with same id:
+  while(quest && (id != quest->card.question_id))
+    quest = quest->next;
+  if(!quest) // Means we didn't find matching card - something is wrong:
+  {
+    fprintf(stderr, "MC_NotAnsweredCorrectly() - matching question not found!\n");
+    return 0;
+  }
+
+  mcdprintf("\nMatching question is:");
+  print_card(quest->card);
+
+
+  /* if desired, put question back in list so student sees it again */
+  if (math_opts->iopts[REPEAT_WRONGS])
+  {
+    int i;
+    MC_MathQuestion* quest_copy;
+    MC_MathQuestion* rand_loc;
+
+    mcdprintf("\nAdding %d copies to question_list:", math_opts->iopts[COPIES_REPEATED_WRONGS]);
+
+    if (debug_status & debug_mathcards) {
+      print_counters();
+      printf("\nLeaving MC_AnsweredCorrectly()\n");
+    }
+
+    /* can put in more than one copy (to drive the point home!) */
+    for (i = 0; i < math_opts->iopts[COPIES_REPEATED_WRONGS]; i++)
+    {
+      quest_copy = create_node_copy(quest);
+      rand_loc = pick_random(quest_list_length, question_list);
+      question_list = insert_node(question_list, rand_loc, quest_copy);
+      quest_list_length++;
+    }
+    /* unanswered stays the same if a single copy recycled or */
+    /* increases by 1 for each "extra" copy reinserted:       */
+    unanswered += (math_opts->iopts[COPIES_REPEATED_WRONGS] - 1);
+  }
+  else
+  {
+    mcdprintf("\nNot repeating wrong answers\n");
+    /* not repeating questions so list gets shorter:      */
+    unanswered--;
+  }
+
+  //Take the question out of the active_quests list and add it to
+  //the wrong_quests list, unless an identical question is already
+  //in the wrong_quests list:
+  active_quests = remove_node(active_quests, quest);
+  questions_pending--;  //the length of the 'active_quests' list
+  answered_wrong++;
+
+  /* add question to wrong_quests list: */
+  if (!already_in_list(wrong_quests, quest)) /* avoid duplicates */
+  {
+    mcdprintf("\nAdding to wrong_quests list");
+    wrong_quests = append_node(wrong_quests, quest);
+  }
+  else /* avoid memory leak */
+  {
+    free_node(quest);
+  }
+
+  if (debug_status & debug_mathcards) {
+    print_counters();
+    printf("\nLeaving MC_NotAnswered_Correctly()\n");
+  }
+
+  return 1;
+}
+
+
+
+
+
+
+/* Tells user interface if all questions have been answered correctly! */
+/* Requires that at list contained at least one question to start with */
+/* and that wrongly answered questions have been recycled.             */
+int MC_MissionAccomplished(void)
+{
+  if (starting_length
+    && math_opts->iopts[REPEAT_WRONGS]
+    && !unanswered)
+  {
+    return 1;
+  }
+  else
+  {
+    return 0;
+  }
+}
+
+
+/*  Returns number of questions left (either in list       */
+/*  or "in play")                                          */
+int MC_TotalQuestionsLeft(void)
+{
+  return unanswered;
+}
+
+/*  Returns number of questions left in list, NOT       */
+/*  including questions currently "in play".            */
+int MC_ListQuestionsLeft(void)
+{
+  return quest_list_length;
+}
+
+
+/*  Store the amount of time a given flashcard was      */
+/*  visible on the screen. Returns 1 if the request     */
+/*  succeeds, 0 otherwise.                              */
+int MC_AddTimeToList(float t)
+{
+  int newsize = 0;
+  float *newlist;
+
+  /* This list will be allocated in an STL-like manner: when the       */
+  /* list gets full, allocate an additional amount of storage equal    */
+  /* to the current size of the list, so that only O(logN) allocations */
+  /* will ever be needed. We therefore have to keep track of 2 sizes:  */
+  /* the allocated size, and the actual number of items currently on   */
+  /* the list.                                                         */
+  if (length_time_per_question_list >= length_alloc_time_per_question_list) {
+    /* The list is full, allocate more space */
+    newsize = 2*length_time_per_question_list;
+    if (newsize == 0)
+      newsize = 100;
+    newlist = realloc(time_per_question_list, newsize*sizeof(float));
+    if (newlist == NULL) {
+      DEBUGMSG(debug_mathcards,"\nError: allocation for time_per_question_list failed\n");
+      return 0;
+    }
+    time_per_question_list = newlist;
+    length_alloc_time_per_question_list = newsize;
+  }
+
+  /* Append the time to the list */
+  time_per_question_list[length_time_per_question_list++] = t;
+  return 1;
+}
+
+/* Frees heap memory used in program:                   */
+void MC_EndGame(void)
+{
+  delete_list(question_list);
+  question_list = 0;
+  delete_list(wrong_quests);
+  wrong_quests = 0;
+
+  if (math_opts)
+  {
+    free(math_opts);
+    math_opts = 0;
+  }
+
+  free(time_per_question_list);
+  time_per_question_list = NULL;
+  length_alloc_time_per_question_list = 0;
+  length_time_per_question_list = 0;
+
+  initialized = 0;
+}
+
+
+
+/* prints struct to file */
+void MC_PrintMathOptions(FILE* fp, int verbose)
+{
+  int i, vcommentsprimed = 0;
+  //comments when writing out verbose...perhaps they can go somewhere less conspicuous
+  static char* vcomments[NOPTS];
+  if (!vcommentsprimed) //we only want to initialize these once
+  {
+    vcommentsprimed = 1;
+    for (i = 0; i < NOPTS; ++i)
+      vcomments[i] = NULL;
+    vcomments[PLAY_THROUGH_LIST] =
+      "\n############################################################\n"
+      "#                                                          #\n"
+      "#                  General Math Options                    #\n"
+      "#                                                          #\n"
+      "# If 'play_through_list' is true, Tuxmath will ask each    #\n"
+      "# question in an internally-generated list. The list is    #\n"
+      "# generated based on the question ranges selected below.   #\n"
+      "# The game ends when no questions remain.                  #\n"
+      "# If 'play_through_list' is false, the game continues      #\n"
+      "# until all cities are destroyed.                          #\n"
+      "# Default is 1 (i.e. 'true' or 'yes').                     #\n"
+      "#                                                          #\n"
+      "# 'question_copies' is the number of times each question   #\n"
+      "# will be asked. It can be 1 to 10 - Default is 1.         #\n"
+      "#                                                          #\n"
+      "# 'repeat_wrongs' tells Tuxmath whether to reinsert        #\n"
+      "# incorrectly answered questions into the list to be       #\n"
+      "# asked again. Default is 1 (yes).                         #\n"
+      "#                                                          #\n"
+      "# 'copies_repeated_wrongs' gives the number of times an    #\n"
+      "# incorrectly answered question will reappear. Default     #\n"
+      "# is 1.                                                    #\n"
+      "#                                                          #\n"
+      "# The defaults for these values result in a 'mission'      #\n"
+      "# for Tux that is accomplished by answering all            #\n"
+      "# questions correctly with at least one surviving city.    #\n"
+      "############################################################\n\n";
+
+    vcomments[FORMAT_ADD_ANSWER_LAST] =
+      "\n############################################################\n"
+      "# The 'format_<op>_answer_<place>  options control         #\n"
+      "# generation of questions with the answer in different     #\n"
+      "# places in the equation.  i.e.:                           #\n"
+      "#                                                          #\n"
+      "#    format_add_answer_last:    2 + 2 = ?                  #\n"
+      "#    format_add_answer_first:   ? + 2 = 4                  #\n"
+      "#    format_add_answer_middle:  2 + ? = 4                  #\n"
+      "#                                                          #\n"
+      "# By default, 'format_answer_first' is enabled and the     #\n"
+      "# other two formats are disabled.  Note that the options   #\n"
+      "# are not mutually exclusive - the question list may       #\n"
+      "# contain questions with different formats.                #\n"
+      "#                                                          #\n"
+      "# The formats are set independently for each of the four   #\n"
+      "# math operations.                                         #\n"
+      "############################################################\n\n";
+
+    vcomments[ALLOW_NEGATIVES] =
+      "\n############################################################\n"
+      "# 'allow_negatives' allows or disallows use of negative    #\n"
+      "# numbers as both operands and answers.  Default is 0      #\n"
+      "# (no), which disallows questions like:                    #\n"
+      "#          2 - 4 = ?                                       #\n"
+      "# Note: this option must be enabled in order to set the    #\n"
+      "# operand ranges to include negatives (see below). If it   #\n"
+      "# is changed from 1 (yes) to 0 (no), any negative          #\n"
+      "# operand limits will be reset to 0.                       #\n"
+      "############################################################\n\n";
+
+    vcomments[MAX_ANSWER] =
+      "\n############################################################\n"
+      "# 'max_answer' is the largest absolute value allowed in    #\n"
+      "# any value in a question (not only the answer). Default   #\n"
+      "# is 144. It can be set as high as 999.                    #\n"
+      "############################################################\n\n";
+
+    vcomments[MAX_QUESTIONS] =
+      "\n############################################################\n"
+      "# 'max_questions' is limit of the length of the question   #\n"
+      "# list. Default is 5000 - only severe taskmasters will     #\n"
+      "# need to raise it.                                        #\n"
+      "############################################################\n\n";
+
+    vcomments[RANDOMIZE] =
+      "\n############################################################\n"
+      "# If 'randomize' selected, the list will be shuffled       #\n"
+      "# at the start of the game.  Default is 1 (yes).           #\n"
+      "############################################################\n\n";
+
+    vcomments[ADDITION_ALLOWED] =
+      "\n############################################################\n"
+      "#                                                          #\n"
+      "#                 Math Operations Allowed                  #\n"
+      "#                                                          #\n"
+      "# These options enable questions for each of the four math #\n"
+      "# operations.  All are 1 (yes) by default.                 #\n"
+      "############################################################\n\n";
+
+    vcomments[MIN_AUGEND] =
+      "\n############################################################\n"
+      "#                                                          #\n"
+      "#      Minimum and Maximum Values for Operand Ranges       #\n"
+      "#                                                          #\n"
+      "# Operand limits can be set to any integer up to the       #\n"
+      "# value of 'max_answer'.  If 'allow_negatives' is set to 1 #\n"
+      "# (yes), either negative or positive values can be used.   #\n"
+      "# Tuxmath will generate questions for every value in the   #\n"
+      "# specified range. The maximum must be greater than or     #\n"
+      "# equal to the corresponding minimum for any questions to  #\n"
+      "# be generated for that operation.                         #\n"
+      "############################################################\n\n";
+
+  }
+
+
+  mcdprintf("\nEntering MC_PrintMathOptions()\n");
+
+  /* bail out if no struct */
+  if (!math_opts)
+  {
+    fprintf(stderr, "\nMath Options struct does not exist!\n");
+    return;
+  }
+
+  for (i = 0; i < NOPTS; ++i)
+    {
+    if (verbose && vcomments[i] != NULL)
+      fprintf(fp, "%s", vcomments[i]);
+    fprintf(fp, "%s = %d\n", MC_OPTION_TEXT[i], math_opts->iopts[i]);
+    }
+  mcdprintf("\nLeaving MC_PrintMathOptions()\n");
+}
+
+
+
+int MC_PrintQuestionList(FILE* fp)
+{
+  if (fp && question_list)
+  {
+    print_list(fp, question_list);
+    return 1;
+  }
+  else
+  {
+    fprintf(stderr, "\nFile pointer and/or question list invalid\n");
+    return 0;
+  }
+}
+
+int MC_PrintWrongList(FILE* fp)
+{
+  if (!fp)
+  {
+    fprintf(stderr, "File pointer invalid\n");
+    return 0;
+  }
+
+  if (wrong_quests)
+  {
+    print_list(fp, wrong_quests);
+  }
+  else
+  {
+    fprintf(fp, "\nNo wrong questions!\n");
+  }
+
+  return 1;
+}
+
+
+int MC_StartingListLength(void)
+{
+  return starting_length;
+}
+
+
+int MC_WrongListLength(void)
+{
+  return list_length(wrong_quests);
+}
+
+int MC_NumAnsweredCorrectly(void)
+{
+  return answered_correctly;
+}
+
+
+int MC_NumNotAnsweredCorrectly(void)
+{
+  return answered_wrong;
+}
+
+
+/* Report the median time per question */
+float MC_MedianTimePerQuestion(void)
+{
+  if (length_time_per_question_list == 0)
+    return 0;
+
+  qsort(time_per_question_list,length_time_per_question_list,sizeof(float),floatCompare);
+  return time_per_question_list[length_time_per_question_list/2];
+}
+
+
+
+
+/* Implementation of "private methods" - (cannot be called from outside
+of this file) */
+
+
+
+/* Resets negative values to zero - used when allow_negatives deselected. */
+void clear_negatives(void)
+{
+  int i;
+  for (i = MIN_AUGEND; i <= MAX_TYPING_NUM; ++i)
+    if (math_opts->iopts[i]< 0)
+      math_opts->iopts[i]= 0;
+}
+
+// /* this is used by generate_list to see if a possible question */
+// /* meets criteria to be added to the list or not:              */
+// int validate_question(int n1, int n2, int n3)
+// {
+//   /* make sure none of values exceeds max_answer using absolute */
+//   /* value comparison:                                          */
+//   if (abs_value(n1) > abs_value(math_opts->iopts[MAX_ANSWER])
+//    || abs_value(n2) > abs_value(math_opts->iopts[MAX_ANSWER])
+//    || abs_value(n3) > abs_value(math_opts->iopts[MAX_ANSWER]))
+//   {
+//     return 0;
+//   }
+//   /* make sure none of values are negative if negatives not allowed: */
+//   if (!math_opts->iopts[ALLOW_NEGATIVES])
+//   {
+//     if (n1 < 0 || n2 < 0 || n3 < 0)
+//     {
+//       return 0;
+//     }
+//   }
+//   return 1;
+// }
+
+#if 0 //this code is probably on the way out...
+/* create a new node and return a pointer to it */
+MC_MathQuestion* create_node(int n1, int n2, int op, int ans, int f)
+{
+  MC_MathQuestion* ptr = NULL;
+
+  ptr = (MC_MathQuestion*)malloc(sizeof(MC_MathQuestion));
+
+  if (!ptr)
+  {
+    fprintf(stderr, "create_node() - malloc() failed!\n");
+    return NULL;
+  }
+
+  ptr->card = MC_AllocateFlashcard();
+  ptr->next = NULL;
+  ptr->previous = NULL;
+
+  snprintf(ptr->card.formula_string, max_formula_size, "%d %c %d = ?",
+           n1, op < MC_NUM_OPERS ? operchars[op] : '\0', n2);
+  snprintf(ptr->card.answer_string, max_formula_size, "%d", ans);
+  ptr->card.difficulty = 25 * (op + 1);
+
+
+  /* ptr should now point to a properly constructed node: */
+  return ptr;
+}
+#endif
+
+MC_MathQuestion* create_node_from_card(const MC_FlashCard* flashcard)
+{
+  MC_MathQuestion* ret = allocate_node();
+  copy_card(flashcard, &(ret->card));
+  return ret;
+}
+
+// /* FIXME take care of strings */
+// /* this one copies the contents, including pointers; both nodes must be allocated */
+// int copy_node(MC_MathQuestion* original, MC_MathQuestion* copy)
+// {
+//   if (!original)
+//   {
+//     fprintf(stderr, "\nIn copy_node(): invalid 'original' pointer arg.\n");
+//     return 0;
+//   }
+//   if (!copy)
+//   {
+//     fprintf(stderr, "\nIn copy_node(): invalid 'copy' pointer arg.\n");
+//     return 0;
+//   }
+// 
+//   copy_card(&(original->card), &(copy->card) );
+// 
+//   copy->next = original->next;
+//   copy->previous = original->previous;
+//   copy->randomizer = original->randomizer;
+//   return 1;
+// }
+
+
+
+
+/* this puts the node into the list AFTER the node pointed to by current */
+/* and returns a pointer to the top of the modified list  */
+MC_MathQuestion* insert_node(MC_MathQuestion* first,
+                             MC_MathQuestion* current,
+                             MC_MathQuestion* new_node)
+{
+  /* return pointer to list unchanged if new_node doesn't exist*/
+  if (!new_node)
+    return first;
+  /* if current doesn't exist, new_node is first */
+  if (!current)
+  {
+    new_node->previous = 0;
+    new_node->next =0;
+    first = new_node;
+    return first;
+  }
+
+  if (current->next)  /* avoid error if at end of list */
+    current->next->previous = new_node;
+  new_node->next = current->next;
+  current->next = new_node;
+  new_node->previous = current;
+  return first;
+}
+
+
+
+/* adds the new node to the end of the list */
+MC_MathQuestion* append_node(MC_MathQuestion* list, MC_MathQuestion* new_node)
+{
+  MC_MathQuestion* ptr;
+  /* return pointer to list unchanged if new_node doesn't exist*/
+  if (!new_node)
+  {
+    return list;
+  }
+
+  /* if list does not exist, new_node is the first (and only) node */
+  if (!list)
+  {
+    return new_node;
+  }
+  /* otherwise, go to end of list */
+  ptr = list;
+  while (ptr->next)
+  {
+    ptr = ptr->next;
+  }
+
+  ptr->next = new_node;
+  new_node->previous = ptr;
+  new_node->next = 0;
+  return list;
+}
+
+
+
+/* this takes the node out of the list but does not delete it */
+/* and returns a pointer to the top of the modified list  */
+MC_MathQuestion* remove_node(MC_MathQuestion* first, MC_MathQuestion* n)
+{
+  if (!n || !first)
+    return first;
+  /* special case if first node being removed */
+  if (n == first)
+     first = first->next;
+
+  if (n->previous)
+    n->previous->next = n->next;
+  if (n->next)
+      n->next->previous = n->previous;
+  n->previous = 0;
+  n->next = 0;
+  return first;
+}
+
+
+
+/* frees memory for entire list and returns null pointer */
+MC_MathQuestion* delete_list(MC_MathQuestion* list)
+{
+  MC_MathQuestion* tmp_ptr;
+  while (list)
+  {
+    tmp_ptr = list->next;
+    free_node (list);
+    list = tmp_ptr;
+  }
+  return list;
+}
+
+
+
+void print_list(FILE* fp, MC_MathQuestion* list)
+{
+  if (!list)
+  {
+    fprintf(fp, "\nprint_list(): list empty or pointer invalid\n");
+    return;
+  }
+
+  MC_MathQuestion* ptr = list;
+  while (ptr)
+  {
+    fprintf(stderr, "%s\n", ptr->card.formula_string);
+    ptr = ptr->next;
+  }
+}
+
+
+void print_vect_list(FILE* fp, MC_MathQuestion** vect, int length)
+{
+  if (!vect)
+  {
+    fprintf(fp, "\nprint_vect_list(): list empty or pointer invalid\n");
+    return;
+  }
+
+  int i = 0;
+  mcdprintf("Entering print_vect_list()\n");
+  for(i = 0; i < length; i++)
+    fprintf(fp, "%s\n", vect[i]->card.formula_string);
+
+  mcdprintf("Leaving print_vect_list()\n");
+}
+
+
+
+#ifdef MC_DEBUG
+void print_card(MC_FlashCard card)
+{
+  printf("\nprint_card():\n");
+  printf("question_id: %d\nformula_string: %s\nanswer_string: %s\n"
+         "answer: %d\ndifficulty: %d\n\n",
+         card.question_id,
+         card.formula_string,
+         card.answer_string,
+         card.answer,
+         card.difficulty);
+}
+
+/* This sends the values of all "global" counters and the */
+/* lengths of the question lists to stdout - for debugging */
+void print_counters(void)
+{
+  printf("\nquest_list_length = \t%d", quest_list_length);
+  printf("\nlist_length(question_list) = \t%d", list_length(question_list));
+  printf("\nstarting_length = \t%d", starting_length);
+  printf("\nunanswered = \t%d", unanswered);
+  printf("\nanswered_correctly = \t%d", answered_correctly);
+  printf("\nanswered_wrong = \t%d", answered_wrong);
+  printf("\nlist_length(wrong_quests) = \t%d", list_length(wrong_quests));
+  printf("\nquestions_pending = \t%d", questions_pending);
+  printf("\nlist_length(active_quests) = \t%d", list_length(active_quests));
+}
+
+
+
+
+
+
+// 
+// /* FIXME take care of strings */
+// 
+// MC_FlashCard create_card_from_node(MC_MathQuestion* node)
+// {
+//   MC_FlashCard fc;
+//   if (!node)
+//     return DEFAULT_CARD;
+//   fc = MC_AllocateFlashcard();
+//   copy_card(&(node->card), &fc);
+//   return fc;
+// }
+#endif
+
+
+/* a "copy constructor", so to speak */
+/* FIXME perhaps should return newly allocated list if more than one node DSB */
+MC_MathQuestion* create_node_copy(MC_MathQuestion* other)
+{
+  MC_MathQuestion* ret = allocate_node();
+  if (ret)
+    copy_card(&(other->card), &(ret->card) );
+  return ret;
+}
+
+
+int list_length(MC_MathQuestion* list)
+{
+  int length = 0;
+  while (list)
+  {
+    length++;
+    list = list->next;
+  }
+  return length;
+}
+
+
+
+
+
+
+/* This is a new implementation written in an attempt to avoid       */
+/* the O(n^2) performance problems seen with the old randomization   */
+/* function. The list is created as a vector, but is for now still   */
+/* made a linked list to minimize changes needed elsewhere.          */
+/* The argument is a pointer to the top of the old list.  This extra */
+/* level of indirection allows the list to be shuffled "in-place".   */
+/* The function returns 1 if successful, 0 on errors.                */
+
+static int randomize_list(MC_MathQuestion** old_list)
+{
+  MC_MathQuestion* old_tmp = *old_list;
+  MC_MathQuestion** tmp_vect = NULL;
+
+  int i = 0;
+  if (!old_list || !*old_list) //invalid/empty list
+    return 0;
+  
+  int old_length = list_length(old_tmp);
+
+  /* set random seed: */
+  srand(time(0));
+
+
+  /* Allocate vector and set ptrs to nodes in old list: */
+
+  /* Allocate a list of pointers, not space for the nodes themselves: */
+  tmp_vect = (MC_MathQuestion**)malloc(sizeof(MC_MathQuestion*) * old_length);
+  /* Set each pointer in the vector to the corresponding node: */
+  for (i = 0; i < old_length; i++)
+  {
+    tmp_vect[i] = old_tmp;
+    tmp_vect[i]->randomizer = rand();
+    old_tmp = old_tmp->next;
+  }
+
+  /* Now simply sort on 'tmp_vect[i]->randomizer' to shuffle list: */
+  qsort(tmp_vect, old_length,
+        sizeof(MC_MathQuestion*),
+        comp_randomizer);
+
+  /* Re-create pointers to provide linked-list functionality:      */
+  /* (stop at 'old_length-1' because we dereference tmp_vect[i+1]) */
+  for(i = 0; i < old_length - 1; i++)
+  {
+    if (!tmp_vect[i])
+    {
+      fprintf(stderr, "Invalid pointer!\n");
+      return 0;
+    }
+    tmp_vect[i]->next = tmp_vect[i+1];
+    tmp_vect[i+1]->previous = tmp_vect[i];
+  }
+  /* Handle end cases: */
+  tmp_vect[0]->previous = NULL;
+  tmp_vect[old_length-1]->next = NULL;
+
+  /* Now arrange for arg pointer to indirectly point to first element! */
+  *old_list = tmp_vect[0];
+  free(tmp_vect);
+  return 1;
+}
+
+
+
+/* This is needed for qsort(): */
+int comp_randomizer (const void* a, const void* b)
+{
+
+  int int1 = (*(const struct MC_MathQuestion **) a)->randomizer;
+  int int2 = (*(const struct MC_MathQuestion **) b)->randomizer;
+
+  if (int1 > int2)
+    return 1;
+  else if (int1 == int2)
+    return 0;
+  else
+    return -1;
+}
+
+MC_MathQuestion* pick_random(int length, MC_MathQuestion* list)
+{
+  int i;
+  int rand_node;
+
+  /* set random seed DSB */
+  srand(time(0));
+
+  /* if length is zero, get out to avoid divide-by-zero error */
+  if (0 == length)
+  {
+    return list;
+  }
+
+  rand_node = rand() % length;
+
+  for (i=1; i < rand_node; i++)
+  {
+    if (list)
+     list = list->next;
+  }
+
+  return list;
+}
+
+/* compares fields other than pointers */
+int compare_node(MC_MathQuestion* first, MC_MathQuestion* other)
+{
+  if (!first || !other)
+    return 0;
+  if (compare_card(&(first->card), &(first->card) ) ) //cards are equal
+    return 1;
+  else
+    return 0;
+}
+
+/* check to see if list already contains an identical node */
+int already_in_list(MC_MathQuestion* list, MC_MathQuestion* ptr)
+{
+  if (!list || !ptr)
+    return 0;
+
+  while (list)
+  {
+    if (compare_node(list, ptr))
+      return 1;
+    list = list->next;
+  }
+  return 0;
+}
+
+// /* to prevent option settings in math_opts from getting set to */
+// /* values other than 0 or 1                                    */
+// int int_to_bool(int i)
+// {
+//   if (i)
+//     return 1;
+//   else
+//     return 0;
+// }
+
+// /* prevent values from getting into math_opts that are outside */
+// /* the range that can be handled by the program (i.e. more     */
+// /* than three digits; also disallow negatives if that has been */
+// /* selected.                                                   */
+// int sane_value(int i)
+// {
+//   if (i > MC_GLOBAL_MAX)
+//     i = MC_GLOBAL_MAX;
+//   else if (i < -MC_GLOBAL_MAX)
+//     i = -MC_GLOBAL_MAX;
+// 
+//   if (i < 0
+//    && math_opts
+//    && !math_opts->iopts[ALLOW_NEGATIVES])
+//   {
+//     i = 0;
+//   }
+// 
+//   return i;
+// }
+
+// int abs_value(int i)
+// {
+//   if (i > 0)
+//     return i;
+//   else
+//     return -i;
+// }
+
+int log10i(int i) //base 10 logarithm for ints
+{
+  int j;
+  for (j = 0; i > 0; i /= 10, ++j);
+  return j;
+}
+
+/* Compares two floats (needed for sorting in MC_MedianTimePerQuestion) */
+int floatCompare(const void *v1,const void *v2)
+{
+  float f1,f2;
+
+  f1 = *((float *) v1);
+  f2 = *((float *) v2);
+
+  if (f1 < f2)
+    return -1;
+  else if (f1 > f2)
+    return 1;
+  else
+    return 0;
+}
+
+
+
+/****************************************************
+Functions for new mathcards architecture
+****************************************************/
+
+void copy_card(const MC_FlashCard* src, MC_FlashCard* dest)
+{
+  if (!src || !dest)
+    return;
+  mcdprintf("Copying '%s' to '%s', ", src->formula_string,dest->formula_string);
+  mcdprintf("copying '%s' to '%s'\n", src->answer_string, dest->answer_string);
+  strncpy(dest->formula_string, src->formula_string, MC_FORMULA_LEN);
+  strncpy(dest->answer_string, src->answer_string, MC_ANSWER_LEN);
+  mcdprintf("Card is: '%s', '%s'\n", dest->formula_string, dest->answer_string);
+  dest->answer = src->answer;
+  dest->difficulty = src->difficulty;
+  dest->question_id = src->question_id;
+}
+
+void free_node(MC_MathQuestion* mq) //no, not that freenode.
+{
+  if (!mq)
+    return;
+  MC_FreeFlashcard(&(mq->card) );
+  free(mq);
+}
+
+MC_MathQuestion* allocate_node()
+{
+  MC_MathQuestion* ret = NULL;
+  ret = malloc(sizeof(MC_MathQuestion) );
+  if (!ret)
+  {
+    printf("Could not allocate space for a new node!\n");
+    return NULL;
+  }
+
+  ret->card = MC_AllocateFlashcard();
+  ret->next = ret->previous = NULL;
+  
+  return ret;
+}
+
+/*
+The function that does the central dirty work pertaining to flashcard
+creation. Extensible to just about any kind of math problem, perhaps
+with the exception of those with multiple answers, such as "8 + 2 > ?"
+Simply specify how the problem is presented to the user, and the
+answer the game should look for, as strings.
+*/
+MC_FlashCard generate_random_flashcard(void)
+{
+  int num;
+  int length;
+  MC_ProblemType pt;
+  MC_FlashCard ret;
+  static int generate_random_flashcard_id=0;
+
+  generate_random_flashcard_id+=1;
+  mcdprintf("Entering generate_random_flashcard()\n");
+  mcdprintf("%d\n",generate_random_flashcard_id);
+  do
+    pt = rand() % MC_NUM_PTYPES;
+  while ( (pt == MC_PT_TYPING && !MC_GetOpt(TYPING_PRACTICE_ALLOWED) ) ||
+          (pt == MC_PT_ARITHMETIC && !MC_GetOpt(ADDITION_ALLOWED) &&
+                                   !MC_GetOpt(SUBTRACTION_ALLOWED) &&
+                                   !MC_GetOpt(MULTIPLICATION_ALLOWED) &&
+                                   !MC_GetOpt(DIVISION_ALLOWED) ) ||
+          (pt == MC_PT_COMPARISON && !MC_GetOpt(COMPARISON_ALLOWED) )
+        );
+
+  if (pt == MC_PT_TYPING) //typing practice
+  {
+    mcdprintf("Generating typing question\n");
+    ret = MC_AllocateFlashcard();
+    num = rand() % (MC_GetOpt(MAX_TYPING_NUM)-MC_GetOpt(MIN_TYPING_NUM) + 1)
+                  + MC_GetOpt(MIN_TYPING_NUM);
+    snprintf(ret.formula_string, MC_FORMULA_LEN, "%d", num);
+    snprintf(ret.answer_string, MC_ANSWER_LEN, "%d", num);
+    ret.answer = num;
+    ret.difficulty = 10;
+    ret.question_id=generate_random_flashcard_id;
+  }
+  else //if (pt == MC_PT_ARITHMETIC)
+  {
+    mcdprintf("Generating arithmetic question");
+    length = rand() % (MC_GetOpt(MAX_FORMULA_NUMS) -
+                       MC_GetOpt(MIN_FORMULA_NUMS) + 1) //avoid div by 0
+                    +  MC_GetOpt(MIN_FORMULA_NUMS);
+    mcdprintf(" of length %d", length);
+    ret = generate_random_ooo_card_of_length(length, 1);
+    
+    if (debug_status & debug_mathcards) {
+      print_card(ret);
+    }
+  }
+  //TODO comparison problems (e.g. "6 ? 9", "<")
+
+  mcdprintf("Exiting generate_random_flashcard()\n");
+
+  return ret;
+}
+
+/*
+Recursively generate an order of operations problem. Hopefully this won't
+raise performance issues. Difficulty is calculated based on the length of
+the formula and on the operators used. Problems have a 'base' difficulty of
+1 for binary operations, 3 for 3 numbers, 6, 10, etc. Each operator adds to
+the score: 0, 1, 2, and 3 respectively for addition, subtraction,
+multiplication and division.If reformat is 0, FORMAT_ANS_LAST will be used,
+otherwise a format is chosen at random.
+*/
+
+/* FIXME this function has to go - it is extremely difficult to follow,
+   it is impossible to check for invalid questions, and it really 
+   cannot be maintained.
+*/
+
+MC_FlashCard generate_random_ooo_card_of_length(int length, int reformat)
+{
+  int format = 0;
+  int r1 = 0;
+  int r2 = 0;
+  int ans = 0;
+  char tempstr[MC_FORMULA_LEN];
+  MC_FlashCard ret;
+  MC_Operation op;
+
+  id += 1;
+  mcdprintf(".");
+  if (length > MAX_FORMULA_NUMS)
+    return DEFAULT_CARD;
+  if (length <= 2)
+  {
+    mcdprintf("\n");
+    ret = MC_AllocateFlashcard();
+    for (op = rand() % MC_NUM_OPERS; //pick a random operation
+         MC_GetOpt(op + ADDITION_ALLOWED) == 0; //make sure it's allowed
+         op = rand() % MC_NUM_OPERS);
+
+    mcdprintf("Operation is %c\n", operchars[op]);
+    /*
+    if (op == MC_OPER_ADD)
+    {
+      r1 = rand() % (math_opts->iopts[MAX_AUGEND] - math_opts->iopts[MIN_AUGEND] + 1) + math_opts->iopts[MIN_AUGEND];
+      r2 = rand() % (math_opts->iopts[MAX_ADDEND] - math_opts->iopts[MIN_ADDEND] + 1) + math_opts->iopts[MIN_ADDEND];
+      ans = r1 + r2;
+    }
+    else if (op == MC_OPER_SUB)
+    {
+      r1 = rand() % (math_opts->iopts[MAX_MINUEND] - math_opts->iopts[MIN_MINUEND] + 1) + math_opts->iopts[MIN_MINUEND];
+      r2 = rand() % (math_opts->iopts[MAX_SUBTRAHEND] - math_opts->iopts[MIN_SUBTRAHEND] + 1) + math_opts->iopts[MIN_SUBTRAHEND];
+      ans = r1 - r2;
+    }
+    else if (op == MC_OPER_MULT)
+    {
+      r1 = rand() % (math_opts->iopts[MAX_MULTIPLIER] - math_opts->iopts[MIN_MULTIPLIER] + 1) + math_opts->iopts[MIN_MULTIPLIER];
+      r2 = rand() % (math_opts->iopts[MAX_MULTIPLICAND] - math_opts->iopts[MIN_MULTIPLICAND] + 1) + math_opts->iopts[MIN_MULTIPLICAND];
+      ans = r1 * r2;
+    }
+    else if (op == MC_OPER_DIV)
+    {
+      ans = rand() % (math_opts->iopts[MAX_QUOTIENT] - math_opts->iopts[MIN_QUOTIENT] + 1) + math_opts->iopts[MIN_QUOTIENT];
+      r2 = rand() % (math_opts->iopts[MAX_DIVISOR] - math_opts->iopts[MIN_DIVISOR] + 1) + math_opts->iopts[MIN_DIVISOR];
+      if (r2 == 0)
+        r2 = 1;
+      r1 = ans * r2;
+    }
+    */
+    if (op > MC_OPER_DIV || op < MC_OPER_ADD)
+    {
+      mcdprintf("Invalid operator: value %d\n", op);
+      return DEFAULT_CARD;
+    }
+    //choose two numbers in the proper range and get their result
+    
+    else do
+    {
+      r1 = rand() % (math_opts->iopts[MAX_AUGEND+4*op] - math_opts->iopts[MIN_AUGEND+4*op] + 1) + math_opts->iopts[MIN_AUGEND+4*op];    
+      r2 = rand() % (math_opts->iopts[MAX_ADDEND+4*op] - math_opts->iopts[MIN_ADDEND+4*op] + 1) + math_opts->iopts[MIN_ADDEND+4*op]; 
+
+      if (op == MC_OPER_ADD)
+        ans = r1 + r2;
+      if (op == MC_OPER_SUB)
+        ans = r1 - r2;
+      if (op == MC_OPER_MULT)
+        ans = r1 * r2;
+      if (op == MC_OPER_DIV)  
+      {
+        if (r2 == 0)
+          r2 = 1;
+        ret.difficulty = r1;
+        r1 *= r2;
+        ans = ret.difficulty;
+      }
+    } while ( (ans < 0 && !MC_GetOpt(ALLOW_NEGATIVES)) || ans > MC_GetOpt(MAX_ANSWER) );
+
+
+    mcdprintf("Constructing answer_string\n");
+    snprintf(ret.answer_string, MC_ANSWER_LEN, "%d", ans);
+    mcdprintf("Constructing formula_string\n");
+    snprintf(ret.formula_string, MC_FORMULA_LEN, "%d %c %d",
+             r1, operchars[op], r2);
+    ret.answer = ans;
+    mcdprintf("int answer is %d\n", ret.answer);
+    ret.difficulty = op + 1;
+
+  }
+  else //recurse
+  {
+    ret = generate_random_ooo_card_of_length(length - 1, 0);
+
+    if (strchr(ret.formula_string, '+') || strchr(ret.formula_string, '-') )
+    {
+      //if the expression has addition or subtraction, we can't assume that
+      //introducing multiplication or division will produce a predictable
+      //result, so we'll limit ourselves to more addition/subtraction
+      for (op = rand() % 2 ? MC_OPER_ADD : MC_OPER_SUB;
+           MC_GetOpt(op + ADDITION_ALLOWED) == 0;
+           op = rand() % 2 ? MC_OPER_ADD : MC_OPER_SUB);
+
+    }
+    else
+    {
+      //the existing expression can be treated as a number in itself, so we
+      //can do anything to it and be confident of the result.
+      for (op = rand() % MC_NUM_OPERS; //pick a random operation
+         MC_GetOpt(op + ADDITION_ALLOWED) == 0; //make sure it's allowed
+         op = rand() % MC_NUM_OPERS);
+    }
+    mcdprintf("Next operation is %c,",  operchars[op]);
+
+    //pick the next operand
+    if (op == MC_OPER_ADD)
+    {
+      r1 = rand() % (math_opts->iopts[MAX_AUGEND] - math_opts->iopts[MIN_AUGEND] + 1) + math_opts->iopts[MIN_AUGEND];
+      ret.answer += r1;
+    }
+    else if (op == MC_OPER_SUB)
+    {
+      r1 = rand() % (math_opts->iopts[MAX_SUBTRAHEND] - math_opts->iopts[MIN_SUBTRAHEND] + 1) + math_opts->iopts[MIN_SUBTRAHEND];
+      ret.answer -= r1;
+    }
+    else if (op == MC_OPER_MULT)
+    {
+      r1 = rand() % (math_opts->iopts[MAX_MULTIPLICAND] - math_opts->iopts[MIN_MULTIPLICAND] + 1) + math_opts->iopts[MIN_AUGEND];
+      ret.answer *= r1;
+    }
+    else if (op == MC_OPER_DIV)
+    {
+      r1 = find_divisor(ret.answer);
+      ret.answer /= r1;
+    }
+    else
+    {
+      ; //invalid operator
+    }
+    mcdprintf(" operand is %d\n", r1);
+    mcdprintf("Answer: %d\n", ret.answer);
+
+    //next append or prepend the new number (might need optimization)
+    if (op == MC_OPER_SUB || op == MC_OPER_DIV || //noncommutative, append only
+        rand() % 2)
+    {
+      snprintf(tempstr, MC_FORMULA_LEN, "%s %c %d", //append
+               ret.formula_string, operchars[op], r1);
+      strncpy(ret.formula_string, tempstr, MC_FORMULA_LEN);
+    }
+    else //we're prepending
+    {
+      snprintf(tempstr, MC_FORMULA_LEN, "%d %c %s", //append
+               r1, operchars[op], ret.formula_string);
+      strncpy(ret.formula_string, tempstr, MC_FORMULA_LEN);
+    }
+
+    //finally update the answer and score
+    snprintf(ret.answer_string, MC_ANSWER_LEN, "%d", ret.answer);
+    ret.difficulty += (length - 1) + op;
+  }
+  
+  if (reformat)
+  {
+    mcdprintf("Reformatting...\n");
+    do {
+      format = rand() % MC_NUM_FORMATS;
+    } while (!MC_GetOpt(FORMAT_ANSWER_LAST + format) && 
+             !MC_GetOpt(FORMAT_ADD_ANSWER_LAST + op * 3 + format) );
+   
+    strncat(ret.formula_string, " = ?", MC_FORMULA_LEN - strlen(ret.formula_string) );
+    reformat_arithmetic(&ret, format );     
+  }
+  ret.question_id = id;
+
+  mcdprintf("At end of generate_rand_ooo_card_of_length():\n");
+  print_card(ret);
+
+  return ret;
+}
+
+
+
+MC_MathQuestion* generate_list(void)
+{
+  int i, j;
+  int length = MC_GetOpt(AVG_LIST_LENGTH);
+  int cl; //raw length
+  double r1, r2, delta, var; //randomizers for list length
+  MC_MathQuestion* list = NULL;
+  MC_MathQuestion* end_of_list = NULL;
+  MC_MathQuestion* tnode = NULL;
+
+  if (debug_status & debug_mathcards)
+    MC_PrintMathOptions(stdout, 0);
+
+  if (!(MC_GetOpt(ARITHMETIC_ALLOWED) ||
+      MC_GetOpt(TYPING_PRACTICE_ALLOWED) ||
+      MC_GetOpt(COMPARISON_ALLOWED) ) )
+    return NULL;
+
+  //FIXME - remind me, why are we doing this??
+  //randomize list length by a "bell curve" centered on average
+  if (length && MC_GetOpt(VARY_LIST_LENGTH) )
+  {
+    r1 = (double)rand() / RAND_MAX / 2 + 0.5; //interval (0, 1)
+    r2 = (double)rand() / RAND_MAX / 2 + 0.5; //interval (0, 1)
+    mcdprintf("Randoms chosen: %5f, %5f\n", r1, r2);
+    delta = sqrt(-2 * log(r1) ) * cos(2 * PI_VAL * r2); //standard normal dist.
+    var = length / 10.0; //variance
+    delta = delta * var;
+    mcdprintf("Delta of average is %5f\n", delta);
+    length += delta;
+    if (length < 0)
+      length = 1; //just in case...
+  }
+
+  if (MC_GetOpt(COMPREHENSIVE)) //generate all
+  {
+    int num_valid_questions; //How many questions the COMPREHENSIVE list specifies
+    int cycles_needed;       //How many times we need to generate it to get enough
+
+    num_valid_questions = calc_num_valid_questions();
+    if(num_valid_questions == 0)
+    {
+      fprintf(stderr, "generate_list() - no valid questions\n");
+      return NULL;
+    }
+
+    cycles_needed = length/num_valid_questions;
+
+    if((cycles_needed * num_valid_questions) < length)
+      cycles_needed++;
+
+    mcdprintf("In generate_list() - COMPREHENSIVE method requested\n");
+    mcdprintf("num_valid_questions = %d\t cycles_needed = %d\n",
+              num_valid_questions, cycles_needed);
+
+    for (i = MC_PT_TYPING; i < MC_NUM_PTYPES; ++i)
+    {
+      if (!MC_GetOpt(i + TYPING_PRACTICE_ALLOWED))
+          continue;
+      for (j = 0; j < cycles_needed; j++)
+        list = add_all_valid(i, list, &end_of_list);
+    }
+
+
+    if (MC_GetOpt(RANDOMIZE) )
+    {
+      mcdprintf("Randomizing list\n");
+      randomize_list(&list);
+    }
+
+    if (length)
+    {
+      cl = list_length(list);
+      // NOTE this should no longer happen - we run the COMPREHENSIVE
+      // generation until we have enough questions.
+      if (length > cl) //if not enough questions, pad out with randoms
+      {
+        mcdprintf("Padding out list from %d to %d questions\n", cl, length);
+        for (i = cl; i < length; ++i)
+        {
+          tnode = malloc(sizeof(MC_MathQuestion) );
+          if(!tnode)
+          {
+            fprintf(stderr, "In generate_list() - allocation failed!\n");
+            delete_list(list);
+            return NULL;
+          }
+
+          tnode->card = generate_random_flashcard();
+          list = insert_node(list, end_of_list, tnode);
+          end_of_list = tnode;
+//          mcdprintf("%d.", list_length(list) );
+        }
+      }
+      else if (length < cl) //if too many questions, chop off tail end of list
+      {
+        mcdprintf("Cutting list to %d questions\n", length);
+        end_of_list = find_node(list, length);
+        delete_list(end_of_list->next);
+        end_of_list->next = NULL;
+      }
+    }
+  }
+
+  /* Here we are just generating random questions, one at a */
+  /* time until we have enough                              */
+  else 
+  {
+    mcdprintf("In generate_list() - COMPREHENSIVE method NOT requested\n");
+
+    for (i = 0; i < length; ++i)
+    {
+      tnode = malloc(sizeof(MC_MathQuestion) );
+      if(!tnode)
+      {
+        fprintf(stderr, "In generate_list() - allocation failed!\n");
+        delete_list(list);
+        return NULL;
+      }
+
+      tnode->card = generate_random_flashcard();
+      list = insert_node(list, end_of_list, tnode);
+      end_of_list = tnode;
+    }
+  }
+  /* Now just put the question_id values in: */
+
+  {
+    int i = 1;
+    MC_MathQuestion* ptr = list;
+    while(ptr->next)
+    {
+      ptr->card.question_id = i;
+      ptr = ptr->next;
+      i++;
+    }
+  }
+
+  return list;
+}
+
+/* NOTE - returns 0 (i.e. "false") if *identical*, and */
+/* 1 (i.e. "true") if *different* - counterintuitive,  */
+/* but same behavior as e.g. strcmp()                  */
+
+static int compare_card(const MC_FlashCard* a, const MC_FlashCard* b)
+{
+  if (strncmp(a->formula_string, b->formula_string, MC_FORMULA_LEN) )
+    return 1;
+  if (strncmp(a->answer_string, b->answer_string, MC_ANSWER_LEN) )
+    return 1;
+  if (a->answer != b->answer);
+    return 1;
+
+  return 0; //the cards are identical
+}
+
+/* Public functions */
+
+/* allocate space for an MC_Flashcard */
+MC_FlashCard MC_AllocateFlashcard(void)
+{
+  MC_FlashCard ret;
+
+//NOTE strings now simply hard-coded to MC_FORMULA_LEN (= 40) and
+//MC_ANSWER_LEN (= 5) instead of tailoring them to save a few bytes - DSB
+//  mcdprintf("Allocating %d + %d bytes for flashcard\n",
+//            max_formula_size + 1, max_answer_size + 1);
+//  ret.formula_string = malloc( (max_formula_size + 1) * sizeof(char));
+//  ret.answer_string = malloc( (max_answer_size + 1) * sizeof(char));
+//   if (!ret.formula_string || !ret.answer_string)
+//     {
+//     free(ret.formula_string);
+//     free(ret.answer_string);
+//     printf("Couldn't allocate space for a new flashcard!\n");
+//     ret = DEFAULT_CARD;
+//     }
+  return ret;
+}
+
+//Now a no-op - MC_FlashCard no longer has dynamically allocated strings
+void MC_FreeFlashcard(MC_FlashCard* fc)
+{
+  return;
+//   if (!fc)
+//     return;
+// //  mcdprintf("Freeing formula_string\n");
+//   if (fc->formula_string)
+//   {
+//     free(fc->formula_string);
+//     fc->formula_string = NULL;
+//   }
+// //  mcdprintf("Freeing answer_string\n");
+//   if (fc->answer_string)
+//   {
+//     free(fc->answer_string);
+//     fc->answer_string = NULL;
+//   }
+}
+
+unsigned int MC_MapTextToIndex(const char* text)
+{
+  int i;
+  for (i = 0; i < NOPTS; ++i)
+  {
+    if (!strcasecmp(text, MC_OPTION_TEXT[i]) )
+      return i;
+  }
+  mcdprintf("'%s' isn't a math option\n", text);
+  return NOT_VALID_OPTION;
+}
+
+
+//TODO more intuitive function names for access by index vs. by text
+void MC_SetOpt(unsigned int index, int val)
+{
+  if (index >= NOPTS)
+  {
+    mcdprintf("Invalid math option index: %d\n", index);
+    return;
+  }
+
+  /* Do some sanity checks before we throw val into the struct: */
+  switch(index)
+  {
+    /* All the booleans must be 0 or 1: */
+    case PLAY_THROUGH_LIST:
+    case REPEAT_WRONGS:
+    case ALLOW_NEGATIVES:
+    case FORMAT_ANSWER_LAST:
+    case FORMAT_ANSWER_FIRST:
+    case FORMAT_ANSWER_MIDDLE:
+    case FORMAT_ADD_ANSWER_LAST:
+    case FORMAT_ADD_ANSWER_FIRST:
+    case FORMAT_ADD_ANSWER_MIDDLE:
+    case FORMAT_SUB_ANSWER_LAST:
+    case FORMAT_SUB_ANSWER_FIRST:
+    case FORMAT_SUB_ANSWER_MIDDLE:
+    case FORMAT_MULT_ANSWER_LAST:
+    case FORMAT_MULT_ANSWER_FIRST:
+    case FORMAT_MULT_ANSWER_MIDDLE:
+    case FORMAT_DIV_ANSWER_LAST:
+    case FORMAT_DIV_ANSWER_FIRST:
+    case FORMAT_DIV_ANSWER_MIDDLE:
+    case ADDITION_ALLOWED:
+    case SUBTRACTION_ALLOWED:
+    case MULTIPLICATION_ALLOWED:
+    case DIVISION_ALLOWED:
+    case TYPING_PRACTICE_ALLOWED:
+    case ARITHMETIC_ALLOWED:
+    case COMPARISON_ALLOWED:
+    case RANDOMIZE:
+    case COMPREHENSIVE:
+    case VARY_LIST_LENGTH:
+    {
+      /* Reset all non-zero values to one: */
+      if(val)
+      {
+        if(val != 1)
+        {
+          fprintf(stderr, "Warning - parameter %s with invalid value %d, "
+                          "resetting to 1\n", MC_OPTION_TEXT[index], val);
+          val = 1;
+        }
+      }
+      break;
+    }
+
+    /* Parameters concerning numbers of questions */
+    /* must be greater than or equal to zero:     */
+    /* TODO some additional checks would make sense */
+    case QUESTION_COPIES:
+    case COPIES_REPEATED_WRONGS:
+    case MAX_QUESTIONS:
+    case MAX_FORMULA_NUMS:
+    case MIN_FORMULA_NUMS:
+    case AVG_LIST_LENGTH:
+    {
+      /* Reset all negative values to zero: */
+      if(val < 0)
+      {
+        fprintf(stderr, "Warning - parameter %s with invalid value %d, "
+                        "resetting to 0\n", MC_OPTION_TEXT[index], val);
+        val = 0;
+      }
+      break;
+    }
+
+    /* Operand values - make sure they are in displayable range */
+    /* i.e. -999 to 999                                         */ 
+    case MAX_ANSWER:
+    case MIN_AUGEND:
+    case MAX_AUGEND:
+    case MIN_ADDEND:
+    case MAX_ADDEND:
+    case MIN_MINUEND:
+    case MAX_MINUEND:
+    case MIN_SUBTRAHEND:
+    case MAX_SUBTRAHEND:
+    case MIN_MULTIPLIER:
+    case MAX_MULTIPLIER:
+    case MIN_MULTIPLICAND:
+    case MAX_MULTIPLICAND:
+    case MIN_DIVISOR:
+    case MAX_DIVISOR:
+    case MIN_QUOTIENT:
+    case MAX_QUOTIENT:
+    case MIN_TYPING_NUM:
+    case MAX_TYPING_NUM:
+    case MIN_COMPARATOR:
+    case MAX_COMPARATOR:
+    case MIN_COMPARISAND:
+    case MAX_COMPARISAND:
+    {
+      if(val > MC_GLOBAL_MAX)
+      {
+        fprintf(stderr, "Warning - parameter %s with invalid value %d, "
+                       "resetting to %d\n", MC_OPTION_TEXT[index],
+                       val, MC_GLOBAL_MAX);
+        val = MC_GLOBAL_MAX;
+      }
+
+      if(val < (0 - MC_GLOBAL_MAX))
+      {
+        fprintf(stderr, "Warning - parameter %s with invalid value %d, "
+                        "resetting to %d\n", MC_OPTION_TEXT[index],
+                       val, (0 - MC_GLOBAL_MAX));
+        val = (0 - MC_GLOBAL_MAX);
+      }
+
+      break;
+    }
+
+    default:
+        fprintf(stderr, "Warning - in MC_SetOpt() - unrecognized index %d\n",
+                index);
+  }
+  /* Should now be safe to put "sanitized" value into struct: */
+  math_opts->iopts[index] = val;
+}
+
+void MC_SetOp(const char* param, int val)
+{
+  MC_SetOpt(MC_MapTextToIndex(param), val);
+}
+
+int MC_GetOpt(unsigned int index)
+{
+  if (index >= NOPTS)
+  {
+    mcdprintf("Invalid option index: %d\n", index);
+    return MC_MATH_OPTS_INVALID;
+  }
+  if (!math_opts)
+  {
+    printf("Invalid options list!\n");
+    return MC_MATH_OPTS_INVALID;
+  }
+  return math_opts->iopts[index];
+}
+
+int MC_GetOp(const char* param)
+{
+  return MC_GetOpt(MC_MapTextToIndex(param) );
+}
+
+int MC_VerifyOptionListSane(void)
+{
+  return strcmp(MC_OPTION_TEXT[NOPTS], "END_OF_OPTS") == 0;
+}
+
+int MC_MaxFormulaSize(void)
+{
+  return MC_FORMULA_LEN;
+}
+
+int MC_MaxAnswerSize(void)
+{
+  return MC_ANSWER_LEN;
+}
+
+void MC_ResetFlashCard(MC_FlashCard* fc)
+{
+  if (!fc || !fc->formula_string || !fc->answer_string)
+    return;
+  strncpy(fc->formula_string, " ", MC_FORMULA_LEN);
+  strncpy(fc->answer_string, " ", MC_ANSWER_LEN);
+  fc->answer = -9999;
+  fc->difficulty = 0;
+  fc->question_id = -1;
+}
+
+int MC_FlashCardGood(const MC_FlashCard* fc)
+{
+  return fc && fc->formula_string && fc->answer_string;
+}
+
+int find_divisor(int a)
+{
+  int div = 1; //the divisor to return
+  int realisticpasses = 3; //reasonable time after which a minimum should be met
+  int i;
+  do
+    for (i = 0; i < NPRIMES; ++i) //test each prime
+      if (a % smallprimes[i] == 0)  //if it is a prime factor,
+        if (rand() % (i + 1) == 0) //maybe we'll keep it
+          if (div * smallprimes[i] <= MC_GetOpt(MAX_DIVISOR) ) //if we can,
+            div *= smallprimes[i]; //update our real divisor
+  //keep going if the divisor is too small
+  while (div < MC_GetOpt(MIN_DIVISOR) && --realisticpasses); 
+  
+  return div;
+}
+
+
+//Computes (approximately) the number of questions that will be returned
+//by add_all_valid() as specified by the current options. This does not 
+//take into account screening out of invalid questions, such
+//as divide-by-zero and questions like "0 x ? = 0".
+static int calc_num_valid_questions(void)
+{
+  int total_questions = 0;
+  int k = 0;
+  //First add the number of typing questions
+  if (MC_GetOpt(TYPING_PRACTICE_ALLOWED))
+    total_questions += (MC_GetOpt(MAX_TYPING_NUM) - MC_GetOpt(MIN_TYPING_NUM));
+
+  //Now add how many questions we will have for each operation:
+  for (k = MC_OPER_ADD; k < MC_NUM_OPERS; ++k)
+  {
+    int num_this_oper = 0;
+    int formats_this_oper = 0;
+
+    if (!MC_GetOpt(k + ADDITION_ALLOWED) )
+      continue;
+
+    //calculate number of ordered pairs of first and second operands:
+    //note the "+ 1" is due to the ranges being inclusive
+    num_this_oper = (MC_GetOpt(MAX_AUGEND + 4 * k) - MC_GetOpt(MIN_AUGEND + 4 * k) + 1)
+                    *
+                    (MC_GetOpt(MAX_ADDEND + 4 * k) - MC_GetOpt(MIN_ADDEND + 4 * k) + 1);
+    //check what formats are allowed
+    if (MC_GetOpt(FORMAT_ANSWER_LAST) && MC_GetOpt(FORMAT_ADD_ANSWER_LAST + k * 3))
+      formats_this_oper++;
+    if (MC_GetOpt(FORMAT_ANSWER_FIRST) && MC_GetOpt(FORMAT_ADD_ANSWER_FIRST + k * 3))
+      formats_this_oper++;
+    if (MC_GetOpt(FORMAT_ANSWER_MIDDLE) && MC_GetOpt(FORMAT_ADD_ANSWER_MIDDLE + k * 3))
+      formats_this_oper++;
+    //Get total of e.g. addition questions:
+    num_this_oper *= formats_this_oper;
+    //add to overall total:
+    total_questions += num_this_oper;
+  }
+
+  //TODO will also need to count up the COMPARISON questions once
+  //they are implemented
+  {
+  }
+
+  mcdprintf("calc_num_valid_questions():\t%d\n", total_questions);
+  return total_questions;
+}
+
+
+
+
+//NOTE end_of_list** needs to be doubly indirect because otherwise the end does not
+//get updated in the calling code
+//NOTE the difficulty is set as add = 1, sub = 2, mult = 3, div = 4, plus a 2 point
+//bonus if the format is a "missing number".
+MC_MathQuestion* add_all_valid(MC_ProblemType pt, MC_MathQuestion* list, MC_MathQuestion** end_of_list)
+{
+  int i, j;
+  int ans = 0, tmp;
+  MC_Operation k;
+  MC_MathQuestion* tnode;
+
+  mcdprintf("Entering add_all_valid(%d)\n", pt);
+  mcdprintf("List already has %d questions\n", list_length(list));
+
+  //make sure this problem type is actually allowed
+  if (!MC_GetOpt(pt + TYPING_PRACTICE_ALLOWED) )
+    return list;
+
+  //add all typing questions in range
+  if (pt == MC_PT_TYPING)
+  {
+    mcdprintf("Adding typing...\n");
+    for (i = MC_GetOpt(MIN_TYPING_NUM); i <= MC_GetOpt(MAX_TYPING_NUM); ++i)
+    {
+      mcdprintf("(%d)\n", i);
+      tnode = allocate_node();
+      if(!tnode)
+      {
+        fprintf(stderr, "In add_all_valid() - allocate_node() failed!\n");
+        delete_list(list);
+        return NULL;
+      }
+
+      snprintf(tnode->card.formula_string, MC_FORMULA_LEN, "%d", i);
+      snprintf(tnode->card.answer_string, MC_ANSWER_LEN, "%d", i);
+      tnode->card.answer = i;
+      tnode->card.difficulty = 1;
+      list = insert_node(list, *end_of_list, tnode);
+      *end_of_list = tnode;
+    }
+  }
+
+  //add all allowed arithmetic questions
+  else if (MC_PT_ARITHMETIC)
+  {
+    mcdprintf("Adding arithmetic...\n");
+
+    // The k loop iterates through the four arithmetic operations:
+    // k = 0 means addition
+    // k = 1 means subtraction
+    // k = 2 means multiplication
+    // k = 3 means division
+    for (k = MC_OPER_ADD; k < MC_NUM_OPERS; ++k)
+    {
+      if (!MC_GetOpt(k + ADDITION_ALLOWED) )
+        continue;
+      mcdprintf("\n*%d*\n", k);
+
+      // The i loop iterates through the first value in the question:
+      for (i = MC_GetOpt(MIN_AUGEND + 4 * k); i <= MC_GetOpt(MAX_AUGEND + 4 * k); ++i)
+      {
+        mcdprintf("\n%d:\n", i);
+
+        // The j loop iterates through the second value in the question:
+        for (j = MC_GetOpt(MIN_ADDEND + 4 * k); j <= MC_GetOpt(MAX_ADDEND + 4 * k); ++j)
+        {
+          // Generate the third number according to the operation.
+          // Although it is called "ans", it will not be the actual
+          // answer if it is a "missing number" type problem
+          // (e.g. "3 x ? = 12")
+          // We also filter out invalid questions here
+          switch (k)
+          {
+            case MC_OPER_ADD:
+            {
+              ans = i + j;
+              // throw anything over MAX_ANSWER
+              if (ans > MC_GetOpt(MAX_ANSWER))
+                continue;
+              break;
+            }
+            case MC_OPER_SUB:
+            {
+              ans = i - j;
+              // throw out negatives if they aren't allowed:
+              if (ans < 0 && !MC_GetOpt(ALLOW_NEGATIVES))
+                continue;
+              // throw anything over MAX_ANSWER
+              if (ans > MC_GetOpt(MAX_ANSWER))
+                continue;
+              break;
+            }
+            case MC_OPER_MULT:
+            {
+              ans = i * j;
+              // throw anything over MAX_ANSWER
+              if (ans > MC_GetOpt(MAX_ANSWER))
+                continue;
+              break;
+            }
+            case MC_OPER_DIV:
+            {
+               // throw anything over MAX_ANSWER
+              if (i * j > MC_GetOpt(MAX_ANSWER))
+                continue;
+
+              tmp = i;
+              i *= j;
+              ans = j;
+              j = tmp;
+              break;
+            }
+            default:
+              fprintf(stderr, "Unrecognized operation type: %d\n", k);
+              continue;
+          }
+
+          mcdprintf("Generating: %d %c %d = %d\n", i, operchars[k], j, ans);
+
+          //add each format, provided it's allowed in general and for this op
+
+          // Questions like "a + b = ?"
+          if (MC_GetOpt(FORMAT_ANSWER_LAST) && MC_GetOpt(FORMAT_ADD_ANSWER_LAST + k * 3))
+          {
+            // Avoid division by zero:
+            if (k == MC_OPER_DIV && j == 0)
+            {
+              // need to restore i and j to original values so loop works:
+              j = ans;
+              i = tmp;
+              continue;
+            }
+
+            tnode = allocate_node();
+            if(!tnode)
+            {
+              fprintf(stderr, "In add_all_valid() - allocate_node() failed!\n");
+              delete_list(list);
+              return NULL;
+            }
+
+            snprintf(tnode->card.answer_string, MC_ANSWER_LEN, "%d", ans);
+            snprintf(tnode->card.formula_string, MC_FORMULA_LEN,
+                     "%d %c %d = ?", i, operchars[k], j);
+            tnode->card.difficulty = k + 1;
+            tnode->card.answer = ans;
+            list = insert_node(list, *end_of_list, tnode);
+            *end_of_list = tnode;
+          }
+
+
+          // Questions like "? + b = c"
+          if (MC_GetOpt(FORMAT_ANSWER_FIRST) && MC_GetOpt(FORMAT_ADD_ANSWER_FIRST + k * 3) )
+          {
+            // Avoid questions with indeterminate answer:
+            // e.g. "? x 0 = 0"
+            if (k == MC_OPER_MULT && j == 0)
+            {
+              continue;
+            }
+            // Avoid division by zero:
+            if (k == MC_OPER_DIV && j == 0)
+            {
+              // need to restore i and j to original values so loop works:
+              j = ans;
+              i = tmp;
+              continue;
+            }
+
+            tnode = allocate_node();
+            if(!tnode)
+            {
+              fprintf(stderr, "In add_all_valid() - allocate_node() failed!\n");
+              delete_list(list);
+              return NULL;
+            }
+
+            snprintf(tnode->card.answer_string, MC_ANSWER_LEN, "%d", i);
+            snprintf(tnode->card.formula_string, MC_FORMULA_LEN,
+                     "? %c %d = %d", operchars[k], j, ans);
+            tnode->card.answer = ans;
+            tnode->card.difficulty = k + 3;
+            list = insert_node(list, *end_of_list, tnode);
+            *end_of_list = tnode;
+          }
+
+
+          // Questions like "a + ? = c"
+          if (MC_GetOpt(FORMAT_ANSWER_MIDDLE) && MC_GetOpt(FORMAT_ADD_ANSWER_MIDDLE + k * 3))
+          {
+            // Avoid questions with indeterminate answer:
+            // e.g. "0 x ? = 0"
+            if (k == MC_OPER_MULT && i == 0)
+              continue;
+
+            // e.g. "0 / ? = 0"
+            if (k == MC_OPER_DIV && i == 0)
+            {
+              // need to restore i and j to original values so loop works:
+              j = ans;
+              i = tmp;
+              continue;
+            }
+
+            tnode = allocate_node();
+            if(!tnode)
+            {
+              fprintf(stderr, "In add_all_valid() - allocate_node() failed!\n");
+              delete_list(list);
+              return NULL;
+            }
+
+            snprintf(tnode->card.answer_string, MC_ANSWER_LEN, "%d", j);
+            snprintf(tnode->card.formula_string, MC_FORMULA_LEN,
+                     "%d %c ? = %d", i, operchars[k], ans);
+            tnode->card.answer = ans;
+            tnode->card.difficulty = k + 3;
+            list = insert_node(list, *end_of_list, tnode);
+            *end_of_list = tnode;
+          }
+          //If we divided, reset i and j so loop works correctly
+          if (k == MC_OPER_DIV)
+          {
+            j = ans;
+            i = tmp;
+            mcdprintf("resetting to %d %d\n", j, i);
+          }
+        }
+      }
+    }
+  }
+  //add all comparison questions (TODO implement them!)
+  else if (pt == MC_PT_COMPARISON)
+  {
+    for (i = MC_GetOpt(MIN_COMPARATOR); i < MC_GetOpt(MAX_COMPARATOR); ++i)
+    {
+      for (j = MC_GetOpt(MIN_COMPARISAND); j < MC_GetOpt(MAX_COMPARISAND); ++j)
+      {
+        tnode = allocate_node();
+        if(!tnode)
+        {
+          fprintf(stderr, "In add_all_valid() - allocate_node() failed!\n");
+          delete_list(list);
+          return NULL;
+        }
+
+        snprintf(tnode->card.formula_string, MC_FORMULA_LEN, "%d ? %d", i,j);
+        snprintf(tnode->card.answer_string, MC_ANSWER_LEN,
+                 i < j ? "<" : 
+                 i > j ? ">" : 
+                         "=");
+        tnode->card.difficulty = 1;
+        list = insert_node(list, *end_of_list, tnode);
+        *end_of_list = tnode;
+      }
+    }
+  }
+  mcdprintf("Exiting add_all_valid()\n");  
+  mcdprintf("List now has %d questions\n\n", list_length(list));
+
+  return list;
+}
+
+MC_MathQuestion* find_node(MC_MathQuestion* list, int num)
+{
+  while (--num > 0 && list)
+    list = list->next;
+  return list;
+}
+
+void reformat_arithmetic(MC_FlashCard* card, MC_Format f)
+{
+  int i, j;
+  char* beg = 0;
+  char* end = 0;
+  char nans[MC_ANSWER_LEN];
+  char nformula[MC_FORMULA_LEN + MC_ANSWER_LEN]; //gets a bit larger than usual in the meantime
+  
+  {
+    //snprintf(nans, max_answer_size, "%s", card->answer_string);
+   
+    //insert old answer where question mark was
+    for (i = 0, j = 0; card->formula_string[j] != '?'; ++i, ++j)
+      nformula[i] = card->formula_string[j];
+    i += snprintf(nformula + i, MC_ANSWER_LEN - 1, "%s", card->answer_string);
+    snprintf(nformula + i, MC_FORMULA_LEN - i, "%s", card->formula_string + j + 1);
+
+    //replace the new answer with a question mark
+    if (f == MC_FORMAT_ANS_LAST)
+      beg = strrchr(nformula, ' ') + 1;
+    if (f == MC_FORMAT_ANS_FIRST)
+      beg = nformula;
+    if (f == MC_FORMAT_ANS_MIDDLE)
+      beg = strchr(nformula, ' ') + 3;
+    end = strchr(beg + 1, ' ');
+    if (!end)
+      end = "";
+    //we now have beg = first digit of number to replace, end = the char after
+    sscanf(beg, "%s", nans);
+    *beg = 0; //sequester the first half of the string
+    snprintf(card->formula_string, MC_FORMULA_LEN, "%s?%s", nformula, end);
+    snprintf(card->answer_string, MC_ANSWER_LEN, "%s", nans);
+    card->answer = atoi(card->answer_string);
+  }
+}

Deleted: tuxmath/trunk/src/mathcards.h
===================================================================
--- tuxmath/trunk/src/mathcards.h	2009-09-04 19:47:19 UTC (rev 1488)
+++ tuxmath/trunk/src/mathcards.h	2009-09-05 02:31:43 UTC (rev 1489)
@@ -1,296 +0,0 @@
-/*
-
-        mathcards.h
-
-        Description: contains headers for a flashcard-type math game.
-        This is a sort of interface-independent backend that could be used with a different
-        user interface. Developed as an enhancement to Bill Kendrick's "Tux of Math Command"
-        (aka tuxmath).  If tuxmath were a C++ program, this would be a C++ class.
-
-        Author: David Bruce <dbruce at tampabay.rr.com>, (C) 2006
-
-        Copyright: See COPYING file that comes with this distribution (briefly, GNU GPL version 2 or later)
-
-*/
-#ifndef MATHCARDS_H
-#define MATHCARDS_H
-
-//#define MC_DEBUG
-//#ifdef MC_DEBUG
-#define mcdprintf(...) DEBUGMSG(debug_mathcards,__VA_ARGS__)
-//#else
-//#define mcdprintf(...) 0
-//#endif
-
-#define MC_USE_NEWARC
-
-/* different classes of problems TuxMath will ask */
-typedef enum _MC_ProblemType {
-  MC_PT_TYPING,
-  MC_PT_ARITHMETIC,
-  MC_PT_COMPARISON,
-  MC_NUM_PTYPES
-} MC_ProblemType;
-
-/* type of math operation used in an arithmetic question */
-typedef enum _MC_Operation {
-  MC_OPER_ADD,
-  MC_OPER_SUB,
-  MC_OPER_MULT,
-  MC_OPER_DIV,
-  MC_NUM_OPERS
-} MC_Operation;
-
-/* math question formats: */
-typedef enum _MC_Format {
-  MC_FORMAT_ANS_LAST,     /* a + b = ? */
-  MC_FORMAT_ANS_FIRST,    /* ? + b = c */
-  MC_FORMAT_ANS_MIDDLE,    /* a + ? = c */
-  MC_NUM_FORMATS
-} MC_Format;
-
-
-/*
-Indices for the various integer options. These are NOT the actual values!
-Actual values are accessed as such: options.iopts[PLAY_THROUGH_LIST] = val;
-Creating additional [integral] options is now centralized--it should only
-be necessary to add to this list, the list of text, and the list of
-defaults. (Besides actually using the new options!)
-*/
-enum {
-  NOT_VALID_OPTION = -1     ,
-  PLAY_THROUGH_LIST = 0     , /* play until all questions answered correctly */
-  QUESTION_COPIES           , /* # times each question is put in list */
-  REPEAT_WRONGS             , /* reuse incorrectly answered questions or not */
-  COPIES_REPEATED_WRONGS    , /* how many copies of an incorrectly answered question to re-insert*/
-  ALLOW_NEGATIVES           ,
-  MAX_ANSWER                ,
-  MAX_QUESTIONS             ,
-  MAX_FORMULA_NUMS          ,
-  MIN_FORMULA_NUMS          ,
-
-  //NOTE: Do _not_ rearrange the FORMAT values because the functions
-  //rely on index arithmetic to iterate through these, and will be
-  //broken if the relative position changes!
-  FORMAT_ANSWER_LAST        , /* question format is: a + b = ? */
-  FORMAT_ANSWER_FIRST       , /* question format is: ? + b = c */
-  FORMAT_ANSWER_MIDDLE      , /* question format is: a + ? = c */
-  FORMAT_ADD_ANSWER_LAST    , /* a + b = ?    */
-  FORMAT_ADD_ANSWER_FIRST   , /* ? + b = c    */
-  FORMAT_ADD_ANSWER_MIDDLE  , /* a + ? = c    */
-  FORMAT_SUB_ANSWER_LAST    , /* a - b = ?    */
-  FORMAT_SUB_ANSWER_FIRST   , /* ? - b = c    */
-  FORMAT_SUB_ANSWER_MIDDLE  , /* a - ? = c    */
-  FORMAT_MULT_ANSWER_LAST   , /* a * b = ?    */
-  FORMAT_MULT_ANSWER_FIRST  , /* ? * b = c    */
-  FORMAT_MULT_ANSWER_MIDDLE , /* a * ? = c    */
-  FORMAT_DIV_ANSWER_LAST    , /* a / b = ?    */
-  FORMAT_DIV_ANSWER_FIRST   , /* ? / b = c    */
-  FORMAT_DIV_ANSWER_MIDDLE  , /* a / ? = c    */
-
-  ADDITION_ALLOWED          ,
-  SUBTRACTION_ALLOWED       ,
-  MULTIPLICATION_ALLOWED    ,
-  DIVISION_ALLOWED          ,
-  TYPING_PRACTICE_ALLOWED   ,
-  ARITHMETIC_ALLOWED        ,
-  COMPARISON_ALLOWED        ,
-
-  MIN_AUGEND                , /* augend + addend = sum */
-  MAX_AUGEND                ,
-  MIN_ADDEND                ,
-  MAX_ADDEND                ,
-
-  MIN_MINUEND               , /* minuend - subtrahend = difference */
-  MAX_MINUEND               ,
-  MIN_SUBTRAHEND            ,
-  MAX_SUBTRAHEND            ,
-
-  MIN_MULTIPLIER            , /* multiplier * multiplicand = product */
-  MAX_MULTIPLIER            ,
-  MIN_MULTIPLICAND          ,
-  MAX_MULTIPLICAND          ,
-
-  MIN_DIVISOR               , /* dividend/divisor = quotient */
-  MAX_DIVISOR               , /* note - generate_list() will prevent */
-  MIN_QUOTIENT              , /* questions with division by zero.    */
-  MAX_QUOTIENT              ,
-
-  MIN_TYPING_NUM            , /* range for "typing tutor" mode, for  */
-  MAX_TYPING_NUM            , /* kids just learning to use keyboard. */
-
-  MIN_COMPARATOR            , /* left comparison operand */
-  MAX_COMPARATOR            ,
-  MIN_COMPARISAND           , /* right comparison operannd */
-  MAX_COMPARISAND           ,
-
-  RANDOMIZE                 , /* whether to shuffle cards */
-
-  COMPREHENSIVE             , /* whether to generate all questions 'in order' */
-  AVG_LIST_LENGTH           , /* the average number of questions in a list */
-  VARY_LIST_LENGTH          , /* whether to randomly adjust list length */
-
-  NOPTS
-};
-
-extern const char* const MC_OPTION_TEXT[];
-extern const int MC_DEFAULTS[];
-extern const char operchars[MC_NUM_OPERS];
-
-/* default values for math_options */
-#define MC_MAX_DIGITS 3 
-#define MC_GLOBAL_MAX 999          /* This is the largest absolute value that */
-                                   /* can be entered for math question values.*/
-#define MC_MATH_OPTS_INVALID -9999 /* Return value for accessor functions     */
-                                   /* if math_opts not valid                  */
-//#define DEFAULT_FRACTION_TO_KEEP 1
-
-
-typedef struct _MC_Options
-{
-  int iopts[NOPTS];
-} MC_Options;
-
-#ifndef MC_USE_NEWARC
-/* struct for individual "flashcard" */
-typedef struct MC_FlashCard {
-  int num1;
-  int num2;
-  int num3;
-  int operation;
-  int format;
-  char formula_string[MC_FORMULA_LEN];
-  char answer_string[MC_ANSWER_LEN];
-} MC_FlashCard;
-#else
-/* experimental struct for a more generalized flashcard */
-typedef struct _MC_FlashCard {
-  char* formula_string;
-  char* answer_string;
-  int answer;
-  int difficulty;
-} MC_FlashCard;
-#endif
-
-/* struct for node in math "flashcard" list */
-typedef struct MC_MathQuestion {
-  MC_FlashCard card;
-  struct MC_MathQuestion* next;
-  struct MC_MathQuestion* previous;
-  int randomizer;
-} MC_MathQuestion;
-
-
-/* "public" function prototypes: these functions are how */
-/* a user interface communicates with MathCards:         */
-/* TODO provide comments thoroughly explaining these functions */
-
-/*  MC_Initialize() sets up the struct containing all of  */
-/*  settings regarding math questions.  It should be      */
-/*  called before any other function.  Many of the other  */
-/*  functions will not work properly if MC_Initialize()   */
-/*  has not been called. It only needs to be called once, */
-/*  i.e when the program is starting, not at the beginning*/
-/*  of each math game for the player. Returns 1 if        */
-/*  successful, 0 otherwise.                              */
-int MC_Initialize(void);
-
-/*  MC_StartGame() generates the list of math questions   */
-/*  based on existing settings. It should be called at    */
-/*  the beginning of each math game for the player.       */
-/*  Returns 1 if resultant list contains 1 or more        */
-/*  questions, 0 if list empty or not generated           */
-/*  successfully.                                         */
-int MC_StartGame(void);
-
-/*  MC_StartGameUsingWrongs() is like MC_StartGame(),     */
-/*  but uses the incorrectly answered questions from the  */
-/*  previous game for the question list as a review form  */
-/*  of learning. If there were no wrong answers (or no    */
-/*  previous game), it behaves just like MC_StartGame().  */
-/*  FIXME wonder if it should generate a message if the   */
-/*  list is created from settings because there is no     */
-/*  valid wrong question list?                            */
-int MC_StartGameUsingWrongs(void);
-
-/*  MC_NextQuestion() takes a pointer to an allocated     */
-/*  MC_MathQuestion struct and fills in the fields for    */
-/*  use by the user interface program. It basically is    */
-/*  like taking the next flashcard from the pile.         */
-/*  Returns 1 if question found, 0 if list empty/invalid  */
-/*  or if argument pointer is invalid                     */
-int MC_NextQuestion(MC_FlashCard* q);
-
-/*  MC_AnsweredCorrectly() is how the user interface      */
-/*  tells MathCards that the question has been answered   */
-/*  correctly. Returns 1 if no errors.                    */
-int MC_AnsweredCorrectly(MC_FlashCard* q);
-
-/*  MC_NotAnsweredCorrectly() is how the user interface    */
-/*  tells MathCards that the question has not been        */
-/*  answered correctly. Returns 1 if no errors.           */
-int MC_NotAnsweredCorrectly(MC_FlashCard* q);
-
-/*  Like MC_NextQuestion(), but takes "flashcard" from    */
-/*  pile of incorrectly answered questions.               */
-/*  Returns 1 if question found, 0 if list empty/invalid  */
-int MC_NextWrongQuest(MC_FlashCard* q);
-
-/*  Returns 1 if all have been answered correctly,        */
-/* 0 otherwise.                                           */
-int MC_MissionAccomplished(void);
-
-/*  Returns number of questions left (either in list      */
-/*  or "in play")                                         */
-int MC_TotalQuestionsLeft(void);
-
-/*  Returns questions left in list, NOT                   */
-/*  including questions currently "in play".              */
-int MC_ListQuestionsLeft(void);
-
-/*  To keep track of how long students take to answer the */
-/*  questions, one can report the time needed to answer   */
-/*  an individual question:                               */
-int MC_AddTimeToList(float t);
-/*  Note that initialization of the list is handled by    */
-/*  MC_StartGame.                                         */
-
-/*  Tells MathCards to clean up - should be called when   */
-/*  user interface program exits.                         */
-void MC_EndGame(void);
-
-/*  Prints contents of math_opts struct in human-readable   */
-/*  form to given file. "verbose" tells the function to     */
-/*  write a lot of descriptive "help"-type info for each    */
-/*  option (intended to make config files self-documenting).*/
-void MC_PrintMathOptions(FILE* fp, int verbose);
-
-/* Additional functions used to generate game summary files: */
-int MC_PrintQuestionList(FILE* fp);
-int MC_PrintWrongList(FILE* fp);
-int MC_StartingListLength(void);
-int MC_WrongListLength(void);
-int MC_NumAnsweredCorrectly(void);
-int MC_NumNotAnsweredCorrectly(void);
-float MC_MedianTimePerQuestion(void);
-
-/********************************************
-Public functions for new mathcards architecture
-*********************************************/
-/* Return the array index of the given text, e.g. randomize->47 */
-unsigned int MC_MapTextToIndex(const char* text);
-void MC_SetOpt(unsigned int index, int val); //access directly,for internal use
-int MC_GetOpt(unsigned int index);
-void MC_SetOp(const char* param, int val); //access by text, for config reading
-int MC_GetOp(const char* param);
-int MC_VerifyOptionListSane(void);
-int MC_MaxFormulaSize(void); //amount of memory needed to safely hold strings
-int MC_MaxAnswerSize(void);
-MC_FlashCard MC_AllocateFlashcard();
-void MC_FreeFlashcard(MC_FlashCard* fc);
-void MC_ResetFlashCard(MC_FlashCard* fc); //empty flashcard of strings & values
-int MC_FlashCardGood(const MC_FlashCard* fc); //verifies a flashcard is valid
-/* Reorganize formula_string and answer_string to render the same equation
-   in a different format */
-void reformat_arithmetic(MC_FlashCard* card, MC_Format f);
-#endif

Copied: tuxmath/trunk/src/mathcards.h (from rev 1488, tuxmath/branches/lan/src/mathcards.h)
===================================================================
--- tuxmath/trunk/src/mathcards.h	                        (rev 0)
+++ tuxmath/trunk/src/mathcards.h	2009-09-05 02:31:43 UTC (rev 1489)
@@ -0,0 +1,287 @@
+/*
+
+        mathcards.h
+
+        Description: contains headers for a flashcard-type math game.
+        This is a sort of interface-independent backend that could be used with a different
+        user interface. Developed as an enhancement to Bill Kendrick's "Tux of Math Command"
+        (aka tuxmath).  If tuxmath were a C++ program, this would be a C++ class.
+
+        Author: David Bruce <dbruce at tampabay.rr.com>, (C) 2006
+
+        Copyright: See COPYING file that comes with this distribution (briefly, GNU GPL version 2 or later)
+
+*/
+
+
+#ifndef MATHCARDS_H
+#define MATHCARDS_H
+
+#include "transtruct.h"
+
+#define MC_DEBUG
+#ifdef MC_DEBUG
+#define mcdprintf(...) DEBUGMSG(debug_mathcards,__VA_ARGS__)
+#else
+#define mcdprintf(...) 0
+#endif
+
+
+/* different classes of problems TuxMath will ask */
+typedef enum _MC_ProblemType {
+  MC_PT_TYPING,
+  MC_PT_ARITHMETIC,
+  MC_PT_COMPARISON,
+  MC_NUM_PTYPES
+} MC_ProblemType;
+
+/* type of math operation used in an arithmetic question */
+typedef enum _MC_Operation {
+  MC_OPER_ADD,
+  MC_OPER_SUB,
+  MC_OPER_MULT,
+  MC_OPER_DIV,
+  MC_NUM_OPERS
+} MC_Operation;
+
+/* math question formats: */
+typedef enum _MC_Format {
+  MC_FORMAT_ANS_LAST,     /* a + b = ? */
+  MC_FORMAT_ANS_FIRST,    /* ? + b = c */
+  MC_FORMAT_ANS_MIDDLE,    /* a + ? = c */
+  MC_NUM_FORMATS
+} MC_Format;
+
+
+/*
+Indices for the various integer options. These are NOT the actual values!
+Actual values are accessed as such: options.iopts[PLAY_THROUGH_LIST] = val;
+Creating additional [integral] options is now centralized--it should only
+be necessary to add to this list, the list of text, and the list of
+defaults. (Besides actually using the new options!)
+*/
+enum {
+  NOT_VALID_OPTION = -1     ,
+  PLAY_THROUGH_LIST = 0     , /* play until all questions answered correctly */
+  QUESTION_COPIES           , /* # times each question is put in list */
+  REPEAT_WRONGS             , /* reuse incorrectly answered questions or not */
+  COPIES_REPEATED_WRONGS    , /* how many copies of an incorrectly answered question to re-insert*/
+  ALLOW_NEGATIVES           ,
+  MAX_ANSWER                ,
+  MAX_QUESTIONS             ,
+  MAX_FORMULA_NUMS          ,
+  MIN_FORMULA_NUMS          ,
+
+  //NOTE: Do _not_ rearrange the FORMAT values because the functions
+  //rely on index arithmetic to iterate through these, and will be
+  //broken if the relative position changes!
+  FORMAT_ANSWER_LAST        , /* question format is: a + b = ? */
+  FORMAT_ANSWER_FIRST       , /* question format is: ? + b = c */
+  FORMAT_ANSWER_MIDDLE      , /* question format is: a + ? = c */
+  FORMAT_ADD_ANSWER_LAST    , /* a + b = ?    */
+  FORMAT_ADD_ANSWER_FIRST   , /* ? + b = c    */
+  FORMAT_ADD_ANSWER_MIDDLE  , /* a + ? = c    */
+  FORMAT_SUB_ANSWER_LAST    , /* a - b = ?    */
+  FORMAT_SUB_ANSWER_FIRST   , /* ? - b = c    */
+  FORMAT_SUB_ANSWER_MIDDLE  , /* a - ? = c    */
+  FORMAT_MULT_ANSWER_LAST   , /* a * b = ?    */
+  FORMAT_MULT_ANSWER_FIRST  , /* ? * b = c    */
+  FORMAT_MULT_ANSWER_MIDDLE , /* a * ? = c    */
+  FORMAT_DIV_ANSWER_LAST    , /* a / b = ?    */
+  FORMAT_DIV_ANSWER_FIRST   , /* ? / b = c    */
+  FORMAT_DIV_ANSWER_MIDDLE  , /* a / ? = c    */
+
+  ADDITION_ALLOWED          ,
+  SUBTRACTION_ALLOWED       ,
+  MULTIPLICATION_ALLOWED    ,
+  DIVISION_ALLOWED          ,
+  TYPING_PRACTICE_ALLOWED   ,
+  ARITHMETIC_ALLOWED        ,
+  COMPARISON_ALLOWED        ,
+
+  MIN_AUGEND                , /* augend + addend = sum */
+  MAX_AUGEND                ,
+  MIN_ADDEND                ,
+  MAX_ADDEND                ,
+
+  MIN_MINUEND               , /* minuend - subtrahend = difference */
+  MAX_MINUEND               ,
+  MIN_SUBTRAHEND            ,
+  MAX_SUBTRAHEND            ,
+
+  MIN_MULTIPLIER            , /* multiplier * multiplicand = product */
+  MAX_MULTIPLIER            ,
+  MIN_MULTIPLICAND          ,
+  MAX_MULTIPLICAND          ,
+
+  MIN_DIVISOR               , /* dividend/divisor = quotient */
+  MAX_DIVISOR               , /* note - generate_list() will prevent */
+  MIN_QUOTIENT              , /* questions with division by zero.    */
+  MAX_QUOTIENT              ,
+
+  MIN_TYPING_NUM            , /* range for "typing tutor" mode, for  */
+  MAX_TYPING_NUM            , /* kids just learning to use keyboard. */
+
+  MIN_COMPARATOR            , /* left comparison operand */
+  MAX_COMPARATOR            ,
+  MIN_COMPARISAND           , /* right comparison operannd */
+  MAX_COMPARISAND           ,
+
+  RANDOMIZE                 , /* whether to shuffle cards */
+
+  COMPREHENSIVE             , /* whether to generate all questions 'in order' */
+  AVG_LIST_LENGTH           , /* the average number of questions in a list */
+  VARY_LIST_LENGTH          , /* whether to randomly adjust list length */
+
+  NOPTS
+};
+
+extern const char* const MC_OPTION_TEXT[];
+extern const int MC_DEFAULTS[];
+extern const char operchars[MC_NUM_OPERS];
+
+/* default values for math_options */
+#define MC_MAX_DIGITS 3 
+#define MC_GLOBAL_MAX 999          /* This is the largest absolute value that */
+                                   /* can be entered for math question values.*/
+#define MC_MATH_OPTS_INVALID -9999 /* Return value for accessor functions     */
+                                   /* if math_opts not valid                  */
+//#define DEFAULT_FRACTION_TO_KEEP 1
+
+
+/* FIXME I think this array-based options system is *much* more error-prone */
+/* and confusing than the old struct with a named field for each option,    */
+/* albeit more compact. I think it would be worth the effort to change the  */
+/* code back to the old system - DSB                                        */
+typedef struct _MC_Options
+{
+  int iopts[NOPTS];
+} MC_Options;
+
+
+
+/* struct for node in math "flashcard" list */
+typedef struct MC_MathQuestion {
+  MC_FlashCard card;
+  struct MC_MathQuestion* next;
+  struct MC_MathQuestion* previous;
+  int randomizer;
+} MC_MathQuestion;
+
+
+/* "public" function prototypes: these functions are how */
+/* a user interface communicates with MathCards:         */
+/* TODO provide comments thoroughly explaining these functions */
+
+/*  MC_Initialize() sets up the struct containing all of  */
+/*  settings regarding math questions.  It should be      */
+/*  called before any other function.  Many of the other  */
+/*  functions will not work properly if MC_Initialize()   */
+/*  has not been called. It only needs to be called once, */
+/*  i.e when the program is starting, not at the beginning*/
+/*  of each math game for the player. Returns 1 if        */
+/*  successful, 0 otherwise.                              */
+int MC_Initialize(void);
+
+/*  MC_StartGame() generates the list of math questions   */
+/*  based on existing settings. It should be called at    */
+/*  the beginning of each math game for the player.       */
+/*  Returns 1 if resultant list contains 1 or more        */
+/*  questions, 0 if list empty or not generated           */
+/*  successfully.                                         */
+int MC_StartGame(void);
+
+/*  MC_StartGameUsingWrongs() is like MC_StartGame(),     */
+/*  but uses the incorrectly answered questions from the  */
+/*  previous game for the question list as a review form  */
+/*  of learning. If there were no wrong answers (or no    */
+/*  previous game), it behaves just like MC_StartGame().  */
+/*  FIXME wonder if it should generate a message if the   */
+/*  list is created from settings because there is no     */
+/*  valid wrong question list?                            */
+int MC_StartGameUsingWrongs(void);
+
+/*  MC_NextQuestion() takes a pointer to an allocated     */
+/*  MC_MathQuestion struct and fills in the fields for    */
+/*  use by the user interface program. It basically is    */
+/*  like taking the next flashcard from the pile.         */
+/*  Returns 1 if question found, 0 if list empty/invalid  */
+/*  or if argument pointer is invalid                     */
+int MC_NextQuestion(MC_FlashCard* q);
+
+/*  MC_AnsweredCorrectly() is how the user interface      */
+/*  tells MathCards that the question has been answered   */
+/*  correctly. Returns 1 if no errors.                    */
+int MC_AnsweredCorrectly(int id);
+//int MC_AnsweredCorrectly_id(int id);
+
+/*  MC_NotAnsweredCorrectly() is how the user interface    */
+/*  tells MathCards that the question has not been        */
+/*  answered correctly. Returns 1 if no errors.           */
+int MC_NotAnsweredCorrectly(int id);
+
+/*  Like MC_NextQuestion(), but takes "flashcard" from    */
+/*  pile of incorrectly answered questions.               */
+/*  Returns 1 if question found, 0 if list empty/invalid  */
+int MC_NextWrongQuest(MC_FlashCard* q);
+
+/*  Returns 1 if all have been answered correctly,        */
+/*  0 otherwise.                                          */
+int MC_MissionAccomplished(void);
+
+/*  Returns number of questions left (either in list      */
+/*  or "in play")                                         */
+int MC_TotalQuestionsLeft(void);
+
+/*  Returns questions left in list, NOT                   */
+/*  including questions currently "in play".              */
+int MC_ListQuestionsLeft(void);
+
+/*  To keep track of how long students take to answer the */
+/*  questions, one can report the time needed to answer   */
+/*  an individual question:                               */
+int MC_AddTimeToList(float t);
+/*  Note that initialization of the list is handled by    */
+/*  MC_StartGame.                                         */
+
+/*  Tells MathCards to clean up - should be called when   */
+/*  user interface program exits.                         */
+void MC_EndGame(void);
+
+/*  Prints contents of math_opts struct in human-readable   */
+/*  form to given file. "verbose" tells the function to     */
+/*  write a lot of descriptive "help"-type info for each    */
+/*  option (intended to make config files self-documenting).*/
+void MC_PrintMathOptions(FILE* fp, int verbose);
+
+/* Additional functions used to generate game summary files: */
+int MC_PrintQuestionList(FILE* fp);
+int MC_PrintWrongList(FILE* fp);
+int MC_StartingListLength(void);
+int MC_WrongListLength(void);
+int MC_NumAnsweredCorrectly(void);
+int MC_NumNotAnsweredCorrectly(void);
+float MC_MedianTimePerQuestion(void);
+void print_card(MC_FlashCard card);
+
+/********************************************
+Public functions for new mathcards architecture
+*********************************************/
+/* Return the array index of the given text, e.g. randomize->47 */
+unsigned int MC_MapTextToIndex(const char* text);
+void MC_SetOpt(unsigned int index, int val); //access directly,for internal use
+int MC_GetOpt(unsigned int index);
+void MC_SetOp(const char* param, int val); //access by text, for config reading
+int MC_GetOp(const char* param);
+int MC_VerifyOptionListSane(void);
+int MC_MaxFormulaSize(void); //amount of memory needed to safely hold strings
+int MC_MaxAnswerSize(void);
+MC_FlashCard MC_AllocateFlashcard();
+void MC_FreeFlashcard(MC_FlashCard* fc);
+void MC_ResetFlashCard(MC_FlashCard* fc); //empty flashcard of strings & values
+int MC_FlashCardGood(const MC_FlashCard* fc); //verifies a flashcard is valid
+/* Reorganize formula_string and answer_string to render the same equation
+   in a different format */
+void reformat_arithmetic(MC_FlashCard* card, MC_Format f);
+
+#endif

Modified: tuxmath/trunk/src/network.c
===================================================================
--- tuxmath/trunk/src/network.c	2009-09-04 19:47:19 UTC (rev 1488)
+++ tuxmath/trunk/src/network.c	2009-09-05 02:31:43 UTC (rev 1489)
@@ -1,136 +1,510 @@
+/*
+*  C Implementation: network.c
+*
+*       Description: Contains all the network realted functions , for LAN-based play in Tux,of Math Command.
+*
+*
+* Author: Akash Gangil, David Bruce, and the TuxMath team, (C) 2009
+* Developers list: <tuxmath-devel at lists.sourceforge.net>
+*
+* Copyright: See COPYING file that comes with this distribution.  (Briefly, GNU GPL).
+*/
 
-//** this file would contain all the network related functions**
-
-
-
 #include <stdio.h>
 #include <stdlib.h>
+#include <string.h>
+#include <sys/types.h>
 #include <unistd.h>
-#include "SDL.h"
-#include "SDL_net.h"
+#include <fcntl.h> 
 
-//*** ipaddress of the server and the port would be taken by the user @ the time he selects "LAN multiplayer" from the options menu..
+#include "transtruct.h"
+#include "network.h"
+#include "throttle.h"
+//#include "testclient.h"
 
-//***also should I fix the port beforehand or ask it from the user...
 
-int lan_client_connect(char *host,int port)            //here "host" is either the hostname or the ipaddress(of the server) in string
+TCPsocket sd;           /* Server socket descriptor */
+SDLNet_SocketSet set;
+IPaddress serv_ip;
+ServerEntry servers[MAX_SERVERS];
+static int connected_server = -1;
+
+/* Local function prototypes: */
+int say_to_server(char *statement);
+int evaluate(char *statement);
+int add_to_server_list(UDPpacket* pkt);
+void print_server_list(void);
+
+
+int LAN_DetectServers(void)
 {
-IPaddress ip;
-TCPsocket sock;
-Uint16 portnum;
+  UDPsocket udpsock = NULL;  
+  UDPpacket* out;
+  UDPpacket* in;
+  IPaddress bcast_ip;
+  int sent = 0;
+  int done = 0;
+  int seconds = 0;
+  int num_servers = 0;
+  int i = 0;
 
-portnum=(Uint16) strtol(port,NULL,0);
+  //zero out old server list
+  for(i = 0; i < MAX_SERVERS; i++)
+    servers[i].ip.host = 0;
 
-// initialize SDL
-if(SDL_Init(0)==-1)
+  /* Docs say we are supposed to call SDL_Init() before SDLNet_Init(): */
+  if(SDL_Init(0)==-1)
+  {
+    printf("SDL_Init: %s\n", SDL_GetError());
+    return 0;;
+  }
+
+  /* Initialize SDL_net */
+  if (SDLNet_Init() < 0)
+  {
+    fprintf(stderr, "SDLNet_Init: %s\n", SDLNet_GetError());
+    exit(EXIT_FAILURE);
+  }
+
+  //NOTE we can't open a UDP socket on the same port if both client
+  //and server are running on the same machine, so for now we let
+  //it be auto-assigned:
+  udpsock = SDLNet_UDP_Open(0);
+  if(!udpsock)
+  {
+    printf("SDLNet_UDP_Open: %s\n", SDLNet_GetError());
+    return 0;
+  }
+  
+  out = SDLNet_AllocPacket(NET_BUF_LEN);
+  in = SDLNet_AllocPacket(NET_BUF_LEN);
+
+  SDLNet_ResolveHost(&bcast_ip, "255.255.255.255", DEFAULT_PORT);
+  out->address.host = bcast_ip.host;
+  sprintf(out->data, "TUXMATH_CLIENT");
+  out->address.port = bcast_ip.port;
+  out->len = strlen("TUXMATH_CLIENT") + 1;
+
+  //Here we will need to send every few sec onds until we hear back from server
+  //and get its ip address:  IPaddress bcast_ip;
+  printf("\nAutodetecting TuxMath servers:");
+  fflush(stdout);
+  while(!done)
+  {
+    printf(".");
+    fflush(stdout);
+
+    sent = SDLNet_UDP_Send(udpsock, -1, out);
+    if(!sent)
+    {
+      printf("broadcast failed - network inaccessible.\nTrying localhost (for testing)\n");
+      SDLNet_ResolveHost(&bcast_ip, "localhost", DEFAULT_PORT);
+      out->address.host = bcast_ip.host;
+    }
+    SDL_Delay(250);  //give server chance to answer
+
+    while(SDLNet_UDP_Recv(udpsock, in))
+    {
+      if(strncmp((char*)in->data, "TUXMATH_SERVER", strlen("TUXMATH_SERVER")) == 0)
+      {
+        done = 1;
+        //add to list, checking for duplicates
+        num_servers = add_to_server_list(in);
+      }
+    }
+    //Make sure we always scan at least one but not more than five seconds:
+    Throttle(1000); //repeat once per second
+    seconds++;
+    if(seconds < 1)
+      done = 0;
+    if(seconds > 5)
+      done = 1;
+
+  }
+
+  printf("done\n\n");
+
+  SDLNet_FreePacket(out); 
+  SDLNet_FreePacket(in); 
+  print_server_list();
+  return num_servers;
+}
+
+
+char* LAN_ServerName(int i)
 {
-printf("SDL_Init: %s\n",SDL_GetError());
-exit(1);
+  if(i < 0 || i > MAX_SERVERS)
+    return NULL;
+  if(servers[i].ip.host != 0)
+    return servers[i].name;
+  else
+    return NULL; 
 }
 
-// initialize SDL_net
-if(SDLNet_Init()==-1)
+char* LAN_ConnectedServerName(void)
 {
-printf("SDLNet_Init: %s\n",SDLNet_GetError());
-exit(2);
+   return servers[connected_server].name;
 }
 
+//For the simple case where a single server is found, i is 
+//always 0. Otherwise the player has to review the choices
+//via LAN_ServerName(i) to get the index 
+int LAN_AutoSetup(int i)
+{
+  if(i < 0 || i > MAX_SERVERS)
+    return 0;
 
-// Resolve the argument into an IPaddress type
-if(SDLNet_ResolveHost(&ip,*host,portnum)==-1)
+  /* Open a connection based on autodetection routine: */
+  if (!(sd = SDLNet_TCP_Open(&servers[i].ip)))
+  {
+    fprintf(stderr, "SDLNet_TCP_Open: %s\n", SDLNet_GetError());
+    return 0;
+  }
+
+  /* We create a socket set so we can check for activity: */
+  set = SDLNet_AllocSocketSet(1);
+  if(!set)
+  {
+    printf("SDLNet_AllocSocketSet: %s\n", SDLNet_GetError());
+    return 0;
+  }
+
+  if(SDLNet_TCP_AddSocket(set, sd) == -1)
+  {
+    printf("SDLNet_AddSocket: %s\n", SDLNet_GetError());
+    // perhaps you need to restart the set and make it bigger...
+  }
+
+  // Success - record the index for future reference:
+  connected_server = i;
+  return 1;
+}
+
+
+
+// int LAN_Setup(char *host, int port)
+// {
+//   IPaddress ip;           /* Server address */
+// 
+//   if(SDL_Init(0)==-1)
+//   {
+//     printf("SDL_Init: %s\n", SDL_GetError());
+//     return 0;;
+//   }
+// 
+//   if (SDLNet_Init() < 0)
+//   {
+//     fprintf(stderr, "SDLNet_Init: %s\n", SDLNet_GetError());
+//     return 0;
+//   } 
+// 
+//    /* Resolve the host we are connecting to */
+//   if (SDLNet_ResolveHost(&ip, host, port) < 0)
+//   {
+//     fprintf(stderr, "SDLNet_ResolveHost: %s\n", SDLNet_GetError());
+//     return 0;
+//   }
+//  
+//   /* Open a connection with the IP provided (listen on the host's port) */
+//   if (!(sd = SDLNet_TCP_Open(&ip)))
+//   {
+//     fprintf(stderr, "SDLNet_TCP_Open: %s\n", SDLNet_GetError());
+//     return 0;
+//   }
+// 
+//   /* We create a socket set so we can check for activity: */
+//   set = SDLNet_AllocSocketSet(1);
+//   if(!set)
+//   {
+//     printf("SDLNet_AllocSocketSet: %s\n", SDLNet_GetError());
+//     return 0;
+//   }
+// 
+//   if(SDLNet_TCP_AddSocket(set, sd) == -1)
+//   {
+//     printf("SDLNet_AddSocket: %s\n", SDLNet_GetError());
+//     // perhaps you need to restart the set and make it bigger...
+//   }
+// 
+// 
+//   return 1;
+// }
+
+
+void LAN_Cleanup(void)
 {
-printf("SDLNet_ResolveHost: %s\n",SDLNet_GetError());
-exit(3);
+  if(sd)
+  {
+    SDLNet_TCP_Close(sd);
+    sd = NULL;
+  }
+
+  if(set)
+  {
+    SDLNet_FreeSocketSet(set);
+    set = NULL;
+  }
+  SDLNet_Quit();
 }
 
-//connect to the "host" @ port "portnum"
-sock=SDLNet_TCP_Open(&ip);
-if(!sock)
+
+
+int LAN_SetName(char* name)
 {
-printf("SDLNet_TCP_Open: %s\n",SDLNet_GetError());
-exit(4);
+  char buf[NET_BUF_LEN];
+  if(!name)
+    return 0;
+  snprintf(buf, NET_BUF_LEN, "%s\t%s", "SET_NAME", name);
+  return say_to_server(buf);
 }
 
 
 
-return(0);
+
+
+
+/* Appears a return value of 0 means message received, 1 means no socket activity */
+int check_messages(char buf[NET_BUF_LEN])
+{ 
+  int numready;
+  
+  //This is supposed to check to see if there is activity:
+  numready = SDLNet_CheckSockets(set, 0);
+  if(numready == -1)
+  {
+    printf("SDLNet_CheckSockets: %s\n", SDLNet_GetError());
+    //most of the time this is a system error, where perror might help you.
+    perror("SDLNet_CheckSockets");
+  }
+  else if(numready > 0)
+  {
+#ifdef LAN_DEBUG
+//  printf("There are %d sockets with activity!\n", numready);
+#endif
+   // check socket with SDLNet_SocketReady and handle if active:
+    if(SDLNet_SocketReady(sd))
+    {
+      buf[0] = '\0';
+      if(SDLNet_TCP_Recv(sd, buf, NET_BUF_LEN) <= 0)
+      {
+        fprintf(stderr, "In check_messages(), SDLNet_TCP_Recv() failed!\n");
+        return -1;
+      }
+      return 0;
+    }
+  }
+  return 1;
 }
 
 
-/***      server connection function    ****/
+/* Here we get the next message from the server if one is available. */
+/* We return 1 if a message received, 0 if no activity, -1 on errors */
+/* or if connection is lost:                                         */
+int LAN_NextMsg(char* buf)
+{ 
+  int numready = 0;
 
-int lan_server_connect(int port)
+  /* Make sure we have place to put message: */
+  if(buf == NULL)
+  {
+    printf("get_next_msg() passed NULL buffer\n");
+    return -1;
+  }
+  
+  //Check to see if there is socket activity:
+  numready = SDLNet_CheckSockets(set, 0);
+  if(numready == -1)
+  {
+    printf("SDLNet_CheckSockets: %s\n", SDLNet_GetError());
+    //most of the time this is a system error, where perror might help you.
+    perror("SDLNet_CheckSockets");
+    return -1;
+  }
+  else if(numready > 0)
+  {
+   // check with SDLNet_SocketReady():
+    if(SDLNet_SocketReady(sd))
+    {
+      buf[0] = '\0';
+      
+      if(SDLNet_TCP_Recv(sd, buf, NET_BUF_LEN) > 0)
+      {
+        //Success - message is now in buffer
+        return 1;
+      }
+      else
+      {
+        fprintf(stderr, "In get_next_msg(), SDLNet_TCP_Recv() failed!\n");
+        SDLNet_TCP_DelSocket(set, sd);
+        if(sd != NULL)
+          SDLNet_TCP_Close(sd);
+        sd = NULL;
+        return -1;
+      }
+    }
+    else
+    {
+      fprintf(stderr, "In get_next_msg(), socket set reported active but no activity found\n");
+      SDLNet_TCP_DelSocket(set, sd);
+      if(sd != NULL)
+        SDLNet_TCP_Close(sd);
+      sd = NULL;
+      return -1;
+    }
+  }
+  // No socket activity - just return 0:
+  return 0;
+}
+
+
+
+
+int Make_Flashcard(char* buf, MC_FlashCard* fc)
 {
-IPaddress ip; //int *remoteip;
-TCPsocket server,client;
-//Uint32 ipaddr;
-Uint16 portnum;
+  int i = 0,tab = 0, s = 0;
+  char formula[MC_FORMULA_LEN];
+  sscanf (buf,"%*s%d%d%d%s",
+              &fc->question_id,
+              &fc->difficulty,
+              &fc->answer,
+              fc->answer_string); /* can't formula_string in sscanf in here cause it includes spaces*/
+ 
+  /*doing all this cause sscanf will break on encountering space in formula_string*/
+  /* NOTE changed to index notation so we keep within NET_BUF_LEN */
+  while(buf[i]!='\n' && i < NET_BUF_LEN)
+  {
+    if(buf[i]=='\t')
+      tab++; 
+    i++;
+    if(tab == 5)
+      break;
+  }
 
+  while((buf[i] != '\n') 
+    && (s < MC_FORMULA_LEN - 1)) //Must leave room for terminating null
+  {
+    formula[s] = buf[i] ;
+    i++;
+    s++;
+  }
+  formula[s]='\0';
+  strcpy(fc->formula_string, formula); 
 
-// initialize SDL
-if(SDL_Init(0)==-1)
+#ifdef LAN_DEBUG
+  printf ("card is:\n");
+  printf("QUESTION_ID       :      %d\n",fc->question_id);
+  printf("FORMULA_STRING    :      %s\n",fc->formula_string);
+  printf("ANSWER STRING     :      %s\n",fc->answer_string);
+  printf("ANSWER            :      %d\n",fc->answer);
+  printf("DIFFICULTY        :      %d\n",fc->difficulty);  
+#endif
+
+return 1;
+} 
+
+
+int LAN_StartGame(void)
 {
-printf("SDL_Init: %s\n",SDL_GetError());
-exit(1);
+  char buffer[NET_BUF_LEN];
+  snprintf(buffer, NET_BUF_LEN, "%s", "START_GAME");
+  return say_to_server(buffer);
 }
 
-// initialize SDL_net
-if(SDLNet_Init()==-1)
+
+int LAN_AnsweredCorrectly(int id)
 {
-printf("SDLNet_Init: %s\n",SDLNet_GetError());
-exit(2);
+  char buffer[NET_BUF_LEN];
+  snprintf(buffer, NET_BUF_LEN, "%s\t%d", "CORRECT_ANSWER", id);
+  return say_to_server(buffer);
 }
 
 
-portnum=(Uint16)strtol(port,NULL,0);
-
-// Resolve the argument into an IPaddress type
-if(SDLNet_ResolveHost(&ip,NULL,portum)==-1)
+int LAN_NotAnsweredCorrectly(int id)
 {
-printf("SDLNet_ResolveHost: %s\n",SDLNet_GetError());
-exit(3);
+  char buffer[NET_BUF_LEN];
+  snprintf(buffer, NET_BUF_LEN, "%s\t%d", "WRONG_ANSWER", id);
+  return say_to_server(buffer);
 }
 
-// open the server socket
-server=SDLNet_TCP_Open(&ip);
-if(!server)
+
+/* This tells the server we are quitting the current math game, but */
+/* not disconnecting our socket:                                    */
+int LAN_LeaveGame(void)
 {
-printf("SDLNet_TCP_Open: %s\n",SDLNet_GetError());
-exit(4);
+  char buf[NET_BUF_LEN];
+  snprintf(buf, NET_BUF_LEN, "%s", "LEAVE_GAME");
+  return say_to_server(buf);
 }
 
-while(1)
+
+
+/*private to network.c functions*/
+
+int say_to_server(char* statement)
 {
-// try to accept a connection
-client=SDLNet_TCP_Accept(server);
-if(!client)
-{ // no connection accepted
-//printf("SDLNet_TCP_Accept: %s\n",SDLNet_GetError());
-SDL_Delay(100); //sleep 1/10th of a second
-continue;
+  char buffer[NET_BUF_LEN];
+
+  if(!statement)
+    return 0;
+
+  snprintf(buffer, NET_BUF_LEN, 
+                  "%s",
+                  statement);
+  if (SDLNet_TCP_Send(sd, (void *)buffer, NET_BUF_LEN) < NET_BUF_LEN)
+  {
+    fprintf(stderr, "SDLNet_TCP_Send: %s\n", SDLNet_GetError());
+    return 0;
+  }
+
+  return 1;
 }
 
-/// get the clients IP and port number
-//remoteip=SDLNet_TCP_GetPeerAddress(client);
-//if(!remoteip)
-//{
-//printf("SDLNet_TCP_GetPeerAddress: %s\n",SDLNet_GetError());
-//continue;
-//}
+//add name to list, checking for duplicates:
+int add_to_server_list(UDPpacket* pkt)
+{
+  int i = 0;
+  int already_in = 0;
+  char* p = NULL;
 
-/*for testing purpose to check if it is connected to the desired client
-// print out the clients IP and port number
-ipaddr=SDL_SwapBE32(remoteip->host);
-printf("Accepted a connection from %d.%d.%d.%d port %hu\n",
-ipaddr>>24,
-(ipaddr>>16)&0xff,
-(ipaddr>>8)&0xff,
-ipaddr&0xff,
-remoteip->port);
+  if(!pkt)
+    return 0;
+ 
+  //first see if it is already in list:
+  while((i < MAX_SERVERS)
+      && (servers[i].ip.host != 0))
+  {
+    if(pkt->address.host == servers[i].ip.host)
+      already_in = 1;
+    i++;
+  }
 
-*/
+  //Copy it in unless it's already there, or we are out of room:
+  if(!already_in && i < MAX_SERVERS)
+  {
+    servers[i].ip.host = pkt->address.host;
+    servers[i].ip.port = pkt->address.port;
+    // not using sscanf() because server_name could contain whitespace:
+    p = strchr(pkt->data, '\t');
+    p++;
+    if(p)
+      strncpy(servers[i].name, p, NAME_SIZE);
 
-return(0);
+    i++;
+  }
+
+  return i;  //i should be the number of items in the list
 }
 
+void print_server_list(void)
+{
+  int i = 0;
+  printf("Detected servers:\n");
+  while(i < MAX_SERVERS && servers[i].ip.host != 0)
+  {
+    printf("SERVER NUMBER %d: %s\n", i, servers[i].name);
+    i++;
+  }
+}
 
+
+

Copied: tuxmath/trunk/src/network.h (from rev 1488, tuxmath/branches/lan/src/network.h)
===================================================================
--- tuxmath/trunk/src/network.h	                        (rev 0)
+++ tuxmath/trunk/src/network.h	2009-09-05 02:31:43 UTC (rev 1489)
@@ -0,0 +1,57 @@
+/*
+
+        network.h
+
+        Description: Provides routines for various networking functions to be used
+                     in the LAN multiplayer game.
+        Author: David Bruce ,Akash Gangil and the TuxMath team, (C) 2009
+
+        Copyright: See COPYING file that comes with this distribution (briefly, GNU GPL version 2 or later)
+
+*/
+
+
+
+
+#ifndef NETWORK_H
+#define NETWORK_H
+
+#include "transtruct.h"
+#include "SDL_net.h"
+
+
+typedef struct {
+    IPaddress ip;            /* 32-bit IPv4 host address */
+    char name[NAME_SIZE];
+}ServerEntry;
+
+
+/* Networking setup and cleanup: */
+int LAN_DetectServers(void);
+int LAN_AutoSetup(int i);
+char* LAN_ServerName(int i);
+char* LAN_ConnectedServerName(void);
+//int LAN_Setup(char* host, int port);
+void LAN_Cleanup(void);
+int LAN_SetName(char* name);
+
+/* Network replacement functions for mathcards "API": */
+/* These functions are how the client tells things to the server: */
+int LAN_StartGame(void);
+int LAN_AnsweredCorrectly(int id);
+int LAN_NotAnsweredCorrectly(int id);
+int LAN_LeaveGame(void);
+/* This is how the client receives messages from the server: */
+int LAN_NextMsg(char* buf);
+
+/* NOTE probably won't have this in multiplayer - new quests determined by server */
+//int LAN_NextQuestion(void);
+
+
+
+/* FIXME appears this one is basically the same as LAN_NextMsg() */
+int check_messages(char *);
+/* FIXME this should be local to network.c */
+int Make_Flashcard(char* buf, MC_FlashCard* fc);
+
+#endif // NETWORK_H

Modified: tuxmath/trunk/src/options.c
===================================================================
--- tuxmath/trunk/src/options.c	2009-09-04 19:47:19 UTC (rev 1488)
+++ tuxmath/trunk/src/options.c	2009-09-05 02:31:43 UTC (rev 1489)
@@ -119,7 +119,9 @@
   global_options->iopts[FULLSCREEN] = DEFAULT_FULLSCREEN;
   global_options->iopts[USE_KEYPAD] = DEFAULT_USE_KEYPAD;
   global_options->iopts[USE_IGLOOS] = DEFAULT_USE_IGLOOS;
-  strncpy(game_options->current_font_name, DEFAULT_FONT_NAME, sizeof(game_options->current_font_name));
+  strncpy(game_options->current_font_name, DEFAULT_FONT_NAME,
+          sizeof(game_options->current_font_name));
+  game_options->lan_mode = DEFAULT_LAN_MODE;
   game_options->use_bkgd = DEFAULT_USE_BKGD;
   game_options->help_mode = DEFAULT_HELP_MODE;
   game_options->demo_mode = DEFAULT_DEMO_MODE;
@@ -242,6 +244,12 @@
 //  global_options->iopts[FULLSCREEN] = int_to_bool(val);
 //}
 
+void Opts_SetLanMode(int val)
+{
+  game_options->lan_mode = int_to_bool(val);
+}
+ 
+
 void Opts_SetFontName(char* font_name)
 {
   if (font_name && font_name[0] != '\0')
@@ -609,6 +617,18 @@
 //  return global_options->iopts[FULLSCREEN];
 //}
 
+
+int Opts_LanMode(void)
+{
+  if (!game_options)
+  {
+    fprintf(stderr, "\nOpts_LanMode(): game_options not valid!\n");
+    return GAME_OPTS_INVALID;
+  }
+  return game_options->lan_mode;
+}
+ 
+
 const char* Opts_FontName(void)
 {
   if (!game_options)

Modified: tuxmath/trunk/src/options.h
===================================================================
--- tuxmath/trunk/src/options.h	2009-09-04 19:47:19 UTC (rev 1488)
+++ tuxmath/trunk/src/options.h	2009-09-05 02:31:43 UTC (rev 1489)
@@ -49,6 +49,7 @@
 typedef struct game_option_type {
   /* general game options */
   char current_font_name[FONT_NAME_LENGTH];
+  int lan_mode;
   int use_bkgd;
   int help_mode;
   int demo_mode;
@@ -121,6 +122,7 @@
 void Opts_SetGlobalOpt(unsigned int index, int val);
 
 void Opts_SetFontName(char* font_name);
+void Opts_SetLanMode(int val);
 void Opts_SetUseBkgd(int val);
 void Opts_SetHelpMode(int val);
 void Opts_SetDemoMode(int val);
@@ -154,6 +156,7 @@
 
 /* "Get" functions for tuxmath options struct: */
 const char* Opts_FontName(void);
+int Opts_LanMode(void);
 int Opts_UseBkgd(void);
 int Opts_HelpMode(void);
 int Opts_DemoMode(void);

Added: tuxmath/trunk/src/throttle.c
===================================================================
--- tuxmath/trunk/src/throttle.c	                        (rev 0)
+++ tuxmath/trunk/src/throttle.c	2009-09-05 02:31:43 UTC (rev 1489)
@@ -0,0 +1,41 @@
+/*
+*  C Implementation: network.c
+*
+*         Description: A simple function that uses SDL_Delay() to keep 
+*                      loops from eating all available CPU.
+
+*
+* Author: David Bruce, and the TuxMath team, (C) 2009
+* Developers list: <tuxmath-devel at lists.sourceforge.net>
+*
+* Copyright: See COPYING file that comes with this distribution.  (Briefly, GNU GPL).
+*/
+
+
+#include "SDL.h"
+
+void Throttle(int loop_msec)
+{
+  static Uint32 now_t, last_t; //These will be zero first time through
+  int wait_t;
+
+  //Target loop time must be between 0 and 1000 msec:
+  if(loop_msec < 0)
+    loop_msec = 0;
+  if(loop_msec > 1000)
+    loop_msec = 1000;
+
+  //See if we need to wait:
+  now_t = SDL_GetTicks();
+  if (now_t < (last_t + loop_msec))
+  {
+    wait_t = (last_t + loop_msec) - now_t;
+    //Avoid problem if we somehow wrap past uint32 size (at 49.7 days!)
+    if(wait_t < 0)
+      wait_t = 0;
+    if(wait_t > loop_msec)
+      wait_t = loop_msec;
+    SDL_Delay(wait_t);
+  }
+  last_t = SDL_GetTicks();
+}

Copied: tuxmath/trunk/src/throttle.h (from rev 1488, tuxmath/branches/lan/src/throttle.h)
===================================================================
--- tuxmath/trunk/src/throttle.h	                        (rev 0)
+++ tuxmath/trunk/src/throttle.h	2009-09-05 02:31:43 UTC (rev 1489)
@@ -0,0 +1,20 @@
+/*
+
+        throttle.h
+
+        Description: A simple function that uses SDL_Delay() to keep loops from eating all available
+                     CPU
+        Author: David Bruce and the TuxMath team, (C) 2009
+
+        Copyright: See COPYING file that comes with this distribution (briefly, GNU GPL version 2 or later)
+
+*/
+
+#ifndef THROTTLE_H
+#define THROTTLE_H
+// This simple function uses SDL_Delay() to wait to return until 'loop_msec'
+// milliseconds after it returned the last time. Per SDL docs, the granularity
+// is likely no better than 10 msec
+void Throttle(int loop_msec);
+
+#endif

Copied: tuxmath/trunk/src/transtruct.h (from rev 1488, tuxmath/branches/lan/src/transtruct.h)
===================================================================
--- tuxmath/trunk/src/transtruct.h	                        (rev 0)
+++ tuxmath/trunk/src/transtruct.h	2009-09-05 02:31:43 UTC (rev 1489)
@@ -0,0 +1,39 @@
+/*
+
+        transtruct.h
+
+        Description: contains headers for the data structures
+        that would be transferred between the server and the client
+        during the multiplayer LAN game.
+
+        Author: David Bruce ,Akash Gangil and the TuxMath team, (C) 2009
+
+        Copyright: See COPYING file that comes with this distribution (briefly, GNU GPL version 2 or later)
+
+*/
+#ifndef TRANSTRUCT_H
+#define TRANSTRUCT_H
+
+#define LAN_DEBUG
+#define NET_BUF_LEN 512
+#define DEFAULT_PORT 4779
+#define NAME_SIZE 50
+#define MAX_SERVERS 50
+
+#define MC_USE_NEWARC
+#define MC_FORMULA_LEN 40
+#define MC_ANSWER_LEN 5
+
+#define TEST_COMETS 4
+
+
+typedef struct _MC_FlashCard {
+  char formula_string[MC_FORMULA_LEN];
+  char answer_string[MC_ANSWER_LEN];
+  int question_id;
+  int answer;
+  int difficulty;
+} MC_FlashCard;
+
+
+#endif

Modified: tuxmath/trunk/tuxmath.desktop
===================================================================
--- tuxmath/trunk/tuxmath.desktop	2009-09-04 19:47:19 UTC (rev 1488)
+++ tuxmath/trunk/tuxmath.desktop	2009-09-05 02:31:43 UTC (rev 1489)
@@ -1,5 +1,5 @@
 [Desktop Entry]
-Name=Tux Math
+Name=Tux Math 
 GenericName=Educational math game
 GenericName[de]=Mathe Spiel
 GenericName[ru]=Образовательная игра
@@ -15,4 +15,4 @@
 Terminal=false
 Categories=Education;Math;
 ## X-SuSE-translate=false
-X-Ubuntu-Gettext-Domain=tuxmath
\ No newline at end of file
+X-Ubuntu-Gettext-Domain=tuxmath




More information about the Tux4kids-commits mailing list