     XMINES(1)                 X Version 11 Release 4                  XMINES(1)
                                   22 August 1990

     NAME
          xmines - a minefield game

     SYNOPSIS
          xmines [ -toolkitoption ...] [-cellsize cellsize] [-rows rows] [-
          columns columns] [-mines mines]

     DESCRIPTION
          The xmines program is a game in which you attempt to cross a minefield
          without getting blown up.  You can control the size of the minefield
          and the density of the mines.  At each step, you are told how many
          mines are in the neighboring locations, from which you can often
          deduce the locations of the mines.  If you are stuck, you have the
          option of asking for a hint if you don't feel like taking a chance on
          moving to a location which might contain a mine.  Xmines keeps track
          of how many moves and hints you have used, and how many safe and mined
          locations you have marked.

     OPTIONS
          Xmines accepts all of the standard X Toolkit command line options.  In
          addition, the command line options listed below may be specified.
          Each of these command line options corresponds to a resource.  For
          more information about the effect of these command line options, see
          the RESOURCES section below.

          The command line options and the resources they represent are:

          -cellsize size
                  This option specifies the size in pixels of each of the cells
                  (squares) in the playing field.  The cellsize command line
                  option corresponds to the "cellSize" resource.

          -rows number
                  This option specifies the number of rows in the playing field.
                  The rows command line option corresponds to the "rows"
                  resource.

          -columns number
                  This option specifies the number of columns in the playing
                  field.  The columns command line option corresponds to the
                  "columns" resource.

          -mines number
                  This option specifies the number of mines to be placed in the
                  playing field.  The mines command line option corresponds to
                  the "mines" resource.

     THE DISPLAY
          The xmines window contains the following: a title line, a command
          widget line, a count display line, a status line, and the playing
          field.

                                        - 1 -         Formatted:  April 10, 2000

     XMINES(1)                 X Version 11 Release 4                  XMINES(1)
                                   22 August 1990

          The title line lists the class name (XMines) and the current version
          of xmines.

          The command widget line contains a number of input widgets that you
          use to control the program.  These are:

          Mine count
                  This text field allows you to enter a new mine count.  This
                  allows you to play an easier or harder game.  When you enter a
                  return in this field, a restart is automatically done.  Note
                  that you must delete the old number before putting in a new
                  number.  If you enter a number that is too large, xmines will
                  limit it to the largest number of mines that will fit into the
                  board; however, this will always produce a minefield which is
                  impossible to traverse (see the discussion under the "restart"
                  button below).  This is a standard text widget, so you can cut
                  and paste or define editing translations to your own desires
                  using the standard text widget actions.

          restart When this button is pressed, xmines resets the playing field.
                  The number of mines specified in the "Mine count" widget are
                  hidden in the playing field, and the player is placed into the
                  upper left square.  The object of the game is to move the
                  player to the goal square in the lower right corner of the
                  playing field.  Xmines will never place a mine in the starting
                  square, the goal square, or the three squares immediately
                  adjacent to the starting square.  Thus, when you first start a
                  game, you will always see the message "No mines nearby" in the
                  status line.  If the number of mines is very large, it is
                  possible to generate a minefield which has no safe path from
                  start to goal.  In this case, the word "(impossible)" appears
                  in the status line.  You can either select a smaller number of
                  mines and try again, or simply try again with the same number
                  until a potentially traversable minefield is generated.

          hint    If you are stuck and want to know which neighboring square you
                  can move to that is guaranteed not to contain a mine, you can
                  press this button, and xmines will mark one of the adjacent
                  squares as "ok", meaning there is no mine there.  If one of
                  the adjacent squares is already marked as "ok" but not yet
                  traversed, or if there are no adjacent and untraversed squares
                  which do not contain mines, then no square is marked.  The
                  number of hints you have asked for is displayed in the line
                  below the buttons.

          quit    When this button is pressed, xmines exits.

          The count display line displays the various numbers that the program
          keeps track of:

                                        - 2 -         Formatted:  April 10, 2000

     XMINES(1)                 X Version 11 Release 4                  XMINES(1)
                                   22 August 1990

          Moves   The number of moves that you have made so far in this round.

          Hints   The number of hints that you have asked for so far in this
                  round.  This number is incremented even if you ask for a hint
                  and no squares are marked "ok".

          Safes   The number of squares which are marked "ok".  Each time you
                  mark a square as safe, this number increments.  Each time you
                  unmark a safe square, either by explicitly unmarking it,
                  marking it as a mine, or moving onto it, this number is
                  decremented.

          Mines   The number of squares which are marked as mines.  Each time
                  you mark a square as mined, this number increments.  Each time
                  you unmark a mined square, either by explicitly unmarking it,
                  marking it as safe, this number is decremented.

          The status line displays messages concerning the progress of the game.
          On a normal move, it tells you how many mines are in the adjacent
          squares.  If you reach the goal, or step on a mine, it displays an
          appropriate message.

          The playing field is an array of cells (locations, squares), each of
          which can potentially contain a mine.  One of the squares contains a
          stick man which represents your current location in the minefield.
          Squares which you have already been traversed show the number of mines
          which are adjacent to that square.  The number in the same square as
          the stick man shows the number of mines adjacent to that position.
          You use the pointer buttons to move your man around the minefield or
          to mark squares as safe or mined (see the section "ACTIONS" below).

     X RESOURCES
          Xmines accepts all of the standard X Toolkit resource names and
          classes as well as:

          cellSize (class CellSize)
                  This resource specifies the size, in pixels, of each cell in
                  the playing field.  Since the pictures which are placed into
                  the cells are pixmaps, cell sizes which do not match the
                  pixmap sizes lead to white space (if cell size is larger than
                  pixmap size), or a cropped picture (if cell size is smaller
                  than pixmap size).  There are two sizes of pixmap available,
                  16 and 32.  Xmines will use the 16 bit pixmaps if the cell
                  size is 31 or less, and will use the 32 bit pixmaps if the
                  cell size is 32 or greater.

          rows (class ArraySize)
                  This resource specifies the number of the rows in the playing
                  field.  This is typically the same number as the columns
                  resources.

                                        - 3 -         Formatted:  April 10, 2000

     XMINES(1)                 X Version 11 Release 4                  XMINES(1)
                                   22 August 1990

          columns (class ArraySize)
                  This resource specifies the number of the columns in the
                  playing field.  This is typically the same number as the rows
                  resources.

          mines (class Mines)
                  This resource specifies the number of mines to place into the
                  playing field.

     WIDGET NAMES
          This section describes the widget tree used in xmines.  By using these
          names in your resource specifications, you can configure things like
          colors and sizes for the various widgets.

          The program name is taken from the command line, and the class name is
          XMines.

          The chart below gives the widget name followed by the name of its
          class in parentheses.  All of the widgets are from the Athena Widget
          set.

          xmines(Shell - top level toolkit widget)
               form(Form)
                    title(Label)
                    info(Command)
                    countlabel(Label)
                    mineinputcount(AsciiText)
                    restart(Command)
                    hint(Command)
                    quit(Command)
                    movelabel(Label)
                    movecount(Label)
                    hintlabel(Label)
                    hintcount(Label)
                    safelabel(Label)
                    safecount(Label)
                    minelabel(Label)
                    minecount(Label)
                    message(Label)
                    cell(Form)
                         R%dC%d(Widget) *
          xmines_info(ApplicationShell)
               info(Form)
                    version(Label)
                    text(Command)

          * The widgets labeled R%dC%d are the array of cells.   The  %d  fields
          are filled in with the row and column number of that cell, starting at
          0.  Thus the cell in the top left corner of the  array  is  R0C0,  the
          cell  to  its  right is R0C1, etc.  These widgets are Core widgets, so
          they have only the basic resources.

                                        - 4 -         Formatted:  April 10, 2000

     XMINES(1)                 X Version 11 Release 4                  XMINES(1)
                                   22 August 1990

     ACTIONS
          XMines defines four actions that can be invoked through  translations.
          These actions are:

          DrawCell(row,col)
                  Refreshes the specified cell.  This action is invoked by  each
                  cell  in  response  to  an  expose  event  in order to refresh
                  itself.  If DrawCell is invoked with no  parameters,  it  will
                  refresh the current cell.

          MovePlayer()
                  Moves the player  to  the  cell  from  which  the  action  was
                  invoked.   This  is normally bound to the left mouse button to
                  allow you to move around the playing field.  If you move  onto
                  a  mine,  the  game ends.  You can not move to a cell which is
                  marked as mined.  You can move directly to  any  square  which
                  has  been  previously  traversed, or to any square immediately
                  adjacent to one which has been  previously  traversed  (except
                  those marked as mined).

          MarkMined()
                  Marks the cell as a mined cell.  This is normally bound to the
                  center  mouse button.  If the cell is already marked as mined,
                  it will be unmarked.  If the cell is marked as safe,  it  will
                  be  marked  as  mined.   The  safe  and mined count fields are
                  updated.

          MarkSafe()
                  Marks the cell as a safe cell.  This is normally bound to  the
                  right mouse button.  If the cell is already marked as safe, it
                  will be unmarked.  If the cell is marked as mined, it will  be
                  marked as safe.  The safe and mined count fields are updated.

     COPYRIGHT
          Copyright 1987, Tom Anderson
          Copyright 1990, Globetrotter Software, Inc.
          See X(1) for a full statement of rights and permissions.

     AUTHORS
          Tom Anderson, Fluke Manufacturing Co. Inc.
          Brian Dalio, Mentor Graphics, Silicon Design Division.
          Jim McBeath, Globetrotter Software, Inc.

                                        - 5 -         Formatted:  April 10, 2000