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: December 16, 2025
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: December 16, 2025
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: December 16, 2025
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: December 16, 2025
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: December 16, 2025