Provided by: xletters_1.1.1-4.1_i386 bug


       xletters - catch falling words


       xletters [ options ]


       X  Letters  is  a  game  under  X  to improve your typing skill.  It is
       inspired by the game letters(6)  by  Larry  Moss  and  Brent  Nordquist
       (which  itself  is inspired by the game Letter Invaders, and ultimately
       by the famous Space Invaders).

       The goal of the game is to destroy the words that fall  down  from  the
       top  before  they reach the bottom.  To destroy a word, you must simply
       type it.

       The game is organized in levels of increasing difficulty.   Each  level
       is  divided into two parts: a normal part and a bonus part.  During the
       normal part, ordinary english  words  will  fall  down  (found  in  the
       system's  dictionary, usually /usr/dict/words).  During the bonus part,
       the words are randomly generated from printable ascii characters.

       If a word hits the ground during the normal part, you lose a life  (you
       have  five  lives  initially),  and the word disappears (but the others
       keep on falling).  If a word hits the ground during the bonus part, the
       bonus  part  simply  ends,  with  no  additional  penalty, and the game
       proceeds to the next level.

       The normal part of a level ends when a certain time has  elapsed.   The
       bonus  part  ends when either a certain time has elapsed or when a word
       has hit the ground.  The normal duration of a half-level  is  600  time
       units, or 45 seconds (whatever the level).

       Typing  a  word  correctly  makes the word disappear and scores you one
       point per letter, plus five  more  points,  plus  another  extra  three
       points  if the word was destroyed in the top fifth of the window.  This
       is the only way of gaining points: partially typed words are not  worth
       anything,  and  even  moving  to another level doesn't bring you points
       (this is because even if you don't type anything you will go beyond the
       first level).

       Short  words fall faster than long ones.  Unless otherwise specified at
       compile time, words are  not  allowed  to  collide  into  one  another.
       Therefore,  when  a  new word appears, the game makes sure that all the
       words below it fall at least as fast as it.  The fall rate of the words
       also  increases  with  the  level (it is, however, the same between the
       normal part and the bonus part of the same level).  The rate  at  which
       words  appear  is  constant on a given level, but it increases with the

       A word is considered typed when the last printable characters that  you
       typed  since  the  word appeared are precisely the letters of the word.
       This means in particular that it is possible to ``kill two  birds  with
       one  stone''  if  one word ends with the letters with which another one
       begins - in fact, if two identical words appear (an  unlikely  but  not
       impossible  situation),  you need only type one of them.  To say things
       differently, if you type a correct letter it will make your position in
       the word advance by one letter, and if you type an incorrect letter, it
       will make your position move back to the last place in  the  word  that
       matches the characters you typed.  The current position in each word is
       indicated by putting the already typed letters  in  a  different  color
       (normally  red).   Note  that  a  different  behaviour is selectable at
       compile time with which a wrong letter will cause  all  letters  to  be
       considered  wrong  (to  make  the difference obvious, consider the word
       ``abracadabrx'': if after having  typed  ``abracadabr''  you  press  an
       ``a'',  the normal behaviour will take you back to ``abra'' whereas the
       alternate behaviour will take you back to the beginning).

       The game keeps a high score table.  When the game is over, one  way  or
       another,  xletters  will  show,  for  the  user and for the twenty best
       players, the name, the level reached, the final  score,  and  the  time
       during  which  the  game was running.  Normally, each player is allowed
       only one entry in the high  score  table.   This  can  be  modified  at
       compilation time, however.


       The  top  of the window shows three buttons.  The Quit button will take
       you out of the game, the Pause button will pause the game or resume  it
       if  it  was  already  paused, and the Next button will move to the next
       level (normal part).   These  buttons  can  also  be  accessed  through
       accelerators:  the  ``Escape''  key will quit the game, the ``Tab'' key
       (or ``Pause'' if you have one) will suspend it or resume  it,  and  the
       ``Page  Down''  key  (or ``Next'' if it is so labeled) will advance one

       Three labels on the right of the buttons  are  used  to  indicate  your
       lives, score and current level.

       Other  than  that, to play the game you must simply type the words.  In
       order for the typing to be effective, your mouse cursor must be in  the
       game  space  (the  large square area below the buttons and labels).  If
       you start typing while  the  game  is  paused,  it  will  automatically

       Scoring  is  made  much  more complicated if you choose to use the Next
       button to warp through levels.  (The point is that it should be used to
       avoid having to go through all the easy levels if you already type very
       fast.  So it should not handicap  you  excessively  by  giving  you  no
       points  which  you would have gotten if you had worked your way through
       those levels.  On the other hand, it should not be an  obvious  way  of
       gaining  arbitrarily  many points.)  Here is the way it works: when you
       use the Next button to warp to the next level, you gain 350 ``virtual''
       points.   Those  points  are  indicated  in parentheses after your real
       points in the score label.  They are not worth anything by  themselves.
       On the other hand, if you have virtual points, every time you gain some
       points, that many virtual points will also be converted to real  points
       (until  you  no  longer have virtual points).  Thus, virtual points are
       worth something only if you prove yourself good enough to make them so.

       There are some restrictions to the use of the Next button.   First,  it
       will  only  work in the bonus part of a level, or if no word has fallen
       lower than the top fifth of the screen.  This is so you can't use it to
       get  yourself easily out of a tricky situation.  Second, if you already
       scored some points on the current level, using  the  Next  button  will
       award you fewer than the normal 350 virtual points (see above), in fact
       precisely twice fewer than as many points as you gained  on  the  level
       (but no less than zero, of course).


       xletters  has  a  training  mode, which you can invoke using the -train
       command line option.  In training mode, only one (english) word appears
       at  a  time,  anywhere  on the game space, and it does not fall.  A new
       word appears as soon  as  you  finish  typing  the  previous  one.   In
       training mode, there are no lives, points, levels, or bonus words.


       xletters  also  has  the  amazing  ``deathmatch'' mode.  To invoke this
       mode, use the -death command  line  option.   This  has  the  following
       effects  on the behaviour of xletters: first, it will read words on the
       standard input, and make them fall.  Second,  you  can  choose  between
       typing falling words, or typing a special word in a special part of the
       display, just above the game space.  To switch between both modes,  use
       the Mode button or press the ``Backspace'' key.  The special word typed
       must be an english word: if the letter you type makes the word fragment
       no  longer  begin  a word in the dictionary, it immediately disappears.
       When you type a full word, you can then  send  it  by  using  the  Send
       button  or  by pressing the ``Return'' key.  The word sent gets printed
       on the standard output.

       These features make sense when  two  copies  of  xletters  are  run  in
       deathmatch  mode,  with  the  standard output of each being sent to the
       standard input of the other (possibly across the  network).   Then  the
       player  on  each game can not only kill his falling words but also send
       words to the other player.

       Even more extreme than the ``deathmatch'' mode is  the  ``duel''  mode,
       activated through the -duel command switch.  In duel mode, the computer
       does not send words of  its  own,  and  only  words  sent  through  the
       standard input will appear.  In this case, there is no Next button, and
       switching to the next level can only occur after a  certain  amount  of
       time.   In  fact,  there are no bonus parts of levels, so levels change
       twice more rapidly than in normal play.  Moreover, a level change  does
       not  erase all the current words contrary to what happens in normal (or
       deathmatch) mode.

       The X Letters distribution includes a shell script named  xletters-duel
       which  uses  Avian Research's netcat program (nc) to open a socket, run
       xletters in duel mode, and try to connect to the same socket on a given
       computer.   Thus, two people on two different computers can play a duel
       by each running xletters-duel with the name of the other's computer  as
       parameter.  (Both copies must be run within five seconds of the other.)


       X  Letters  recognizes all the standard X Toolkit command line options,
       among which the following:

       -bg color
              Specifies the background color to use.

       -fg color
              Specifies the  foreground  color  to  use  for  the  labels  and

       -fn font
              Specifies the font to use for displaying the labels and buttons.

       -name name
              Specifies  the  application name under which resources are to be
              obtained, rather than under the default  executable  file  name.
              name should not contain ``.'' or ``*'' characters.

       -title string
              Specifies the window title string.

       -geometry geometry
              Specifies  the  preferred  position of the window.  Specifying a
              size is not recommended.

       -display display
              Specifies the X server to use.

       -xrm resourcestring
              Explicitely give a resource string.

       The following additional options are recognized by xletters:

       -wfn font
              Specifies the font to use for  the  falling  words.   (Sets  the
              wordFont resource.)

       -wc color
              Specifies which color to use for the words.  (Sets the wordColor

       -tc color
              Specifies which color to use for the correctly typed part of the
              words.  (Sets the typedColor resource.)

       -gbg color
              Specifies  which  color  to  use  for the background of the game
              space.  (Sets the gameSpace.background resource.)

              Do not go in training mode (this is  the  default).   (Sets  the
              trainingMode resource to ``False''.)

       -train Run  the game in training mode (see TRAINING MODE above).  (Sets
              the trainingMode resource to ``True''.)

              Do not run in deathmatch or duel mode  (this  is  the  default).
              (Sets the deathMode resource to ``normal''.)

       -death Run  in  deathmatch mode (see DEATHMATCH AND DUEL above).  (Sets
              the deathMode resource to ``death''.)

       -duel  Run in duel mode (see DEATHMATCH AND  DUEL  above).   (Sets  the
              deathMode resource to ``duel''.)

       In addition, xletters recognizes -help and -version options.


       groundBox (class Box, parent (toplevel))
              This  is  the  main  application box that supports all the other

       label (class Label, parent groundBox)
              The xletters label.  The text of this label cannot be changed.

       quitButton (class Command, parent groundBox)
              The Quit button.

       pauseButton (class Toggle, parent groundBox)
              The Pause button.

       livesLabel (class Label, parent groundBox)
              The lives label.

       scoreLabel (class Label, parent groundBox)
              The score label.

       levelLabel (class Label, parent groundBox)
              The level label.

       gameSpace (class Core, parent groundBox)
              The game space in which the words fall.  Key presses and  Expose
              events  are  handled through event handlers and not the ordinary
              translation/action mechanism.


       In addition to the resources  of  the  various  widgets,  the  xletters
       application itself recognizes some resources.  These are:

       wordFont (class Font, type FontStruct)
              The font in which the falling words are written.

       wordColor (class Foreground, type Pixel)
              The  color  in which the (untyped part of the) falling words are

       typedColor (class HighlightColor, type Pixel)
              The color in which the typed  part  of  the  falling  words  are

       deathMode (class DeathMode, type String)
              Either normal, death or duel according as the game should be run
              in normal, deathmatch or duel  mode  (see  DEATHMATCH  AND  DUEL

       trainingMode (class TrainingMode, type Boolean)
              Whether  the game should be run in training mode (this overrides
              any value of the deathMode resource (see TRAINING MODE above).


       (If not overriden at compile time)

              The dictionary of words.

              The high score table.


       xletters                                                           -wfn
       '-bitstream-terminal-medium-r-normal--18-*-*-*-c-*-iso8859-1'      -gbg
       'MidnightBlue' -wc 'PaleGoldenrod' -tc 'Orchid'


       None known.  Surely a very temporary situation :-)

       This is one of the ugliest programs I  ever  wrote.   I  would  not  be
       surprized  to  discover  plenty  of bugs in it.  Version 1.0.0 was ugly
       enough.   Version  1.1.0  gave  a  whole  new  meaning  to   the   word


       xletters wants to access a high score table.  If this score table is to
       be shared between several users, xletters will probably  be  made  sgid
       games or some such thing.  Beware that it is probably very easy to fool
       (or even brake to pieces).  I have no doubt that running it  against  a
       fake X server (and probably other similar things) can give not-too-hard
       access to whatever permissions it has  been  given.   Consequently,  it
       should not be given any critical permissions.


       Peter  Horvai  (  wrote  the deathmatch feature and
       implemented mmap()ing the dictionary file.

       David Madore (  wrote  version  1.0.0,  all  the  X
       Windows parts of the game, and this man page.


       GNU public license.  See the file COPYING for more information.


       letters(6), xtetris(6)

                                  05 NOV 1998                      XLETTERS(6)