xonix — a game

Synopsis

xonix [ -toolkitoption ... ]

Description

The xonix application consists of a playing area and a status display below.

The status display shows the current values for level, filled area (in percent), number of players (lifes), and elapsed time.

The playing area has several regions. The brown region (initially only the border) is ``filled region'', where the player can move, starting from the top left corner. Beware of the bouncing yellow eater(s) that do also move across filled regions however, if they hit the player, a life will go away. The flyers can only bounce across the green (so-called empty) area in the middle.

The purpose of the game is to move the player across the empty region (whereby it leaves his way in a brown color to show where it came along), and finally cut off a piece of unfilled region by moving him back to some filled region. If the player itself or the (unfilled yet) way will be hit by a flyer, a life will be lost again. Once the player's way reached another part of filled region, the way and all adjacent unfilled regions where there is no flyer in will be filled in turn. One level has completed as soon as 75 % of the originally unfilled area have been filled this way.

Every level, there will be one flyer more. Every second level, an additional player will be granted. Every fifth level, an additional eater will be fired off.

The default keys to move the player around are the arrow keys. This can be changed in the app-defaults file, however, as well as the timeout between single steps (defaulting to 50 ms equal 20 moves per second).

The default keys to immediately quit the game are `Q' and `Escape'. Hitting `P' or iconizing the window with the window manager will pause the game; de-iconizing will continue it.

There is also a high-score file, /var/cache/xonix/xonix.scores. It records the top ten xonix players for that machine. As a special compile-time option, a mail is sent to the previous xonix score leader when he's lost his first rank.

Widgets

Xonix uses the X Toolkit and the Athena Widget Set. Below is the widget structure of the xonix application. Indentation indicates hierarchical structure. The widget class name is given first, followed by the widget instance name.

        Xonix  xonix
                VendorShellExt  shellext
                Form  container
                        MenuButton  game_button
                        Canvas  canvas
                        Form  status
                                Form  level
                                        Label  lev_label
                                        Label  lev_d10
                                        Label  lev_d1
                                Form  percentage
                                        Label  perc_label
                                        Label  perc_d10
                                        Label  perc_d1
                                Form  runner
                                        Label  run_label
                                        Label  run_d10
                                        Label  run_d1
                                Form  time
                                        Label  time_label
                                        Label  mins_d10
                                        Label  mins_d1
                                        Label  time_colon
                                        Label  secs_d10
                                        Label  secs_d1
                        SimpleMenu  game_menu
                                SmeBSB  about
                                SmeLine  game_l1
                                SmeBSB  quit
                TransientShell  about_shell
                        VendorShellExt  shellext
                        Box  about_box
                                Label  about_msg
                                Command  about_done
                TransientShell  gameover_shell
                        VendorShellExt  shellext
                        Box  gameover_box
                                Label  gameover_msg
                                Box  gameover_buttonbox
                                        Command  gameover_iknow
                                        Command  gameover_goon

Options

All the standard toolkit options apply. It's not particularly useful to attempt forcing any geometry however.

Authors

The original xonix game has been seen somewhere on an old PC/XT clone. This is a reimplementation from scratch, done by Torsten Schoenitz starting the project on a Macintosh. The X11 support has been written by Joerg Wunsch with the pleasant help by Alfredo Herrera Hernandez.

Bugs

Source code comments are still mostly in German. Some files require the unusal tab width of 4 in order to be displayed correctly.

It should be possible to pass some parameters from the command line as well (e.g. the time step value), which is currently only possible by the back-door via the -xrm toolkit option.

Mail any suggestions to <joerg_wunsch@uriah.heep.sax.de>.