Xonix32

Version 2.5

- Download it! (approx 200 kb)
- Send comments or complaints
- Visit the NUTware home page

Overview

Xonix32 is an adaptation of the classic X-Windows game "Xonix" for the Win32 platform. It has a few new surprises... As always, comments and suggestions are welcome!

Installation

Run the setup utility.

Choose a destination directory, or accept the default.

Click the [Unzip] button.

Close the setup utility.

To create a shortcut, simply browse to the destination directory using Windows Explorer, and drag the executable file to your desktop or Start menu (or wherever).

When you create a shortcut to Xonix32.exe, be aware of the "Start in" directory. This is where Xonix32 will store the "HiScores.dat" file! To reset the high score table, simply delete, move, or rename this file.

Uninstallation

Like all good and decent software, Xonix32 does not store anything outside of its own directory, not even in the registry. To uninstall Xonix32, simply delete the directory in which it was installed. No special uninstall utility is required.

Minimum System Requirements

Intel (or compatible) P90. Microsoft Windows 95 or Windows NT 4.0.

Note: if game performance is poor, try using a 256-color video mode.

Instructions

The following keys control the game...

- [arrows] to move
- [Esc] to quickly hide the game from your boss!
- [F1] for help
- [F2] to start a new game
- [F3] or [Pause] to pause/resume gameplay
- [F4] to end a game
- [Alt-F4] to exit the application
- [F5] to adjust the speed of the game
- [F6] to alter the starting level
- [F7] to view the high-score table

Avoid the white diamonds, black diamonds, yellow wipers, green clovers, pink stars, blue moons, and purple horseshoes.

The object is to fill in 75% of the area with blueness. For each level completed, you earn an extra Xoni and at least 100 points. The amount of the bonus depends on how quickly you clear the level.

If you run out of time, you lose a Xoni. At default game speed, the time limit for level 1 is 1 minute. Level 2 allows 2 minutes, and so on, up to a maximum of 5 minutes for levels five and higher.

If you complete a level without "dying", you will earn a bonus, depending on how much time remains. You can also earn a bonus by filling more than the required 75%.

Note: when playing with faster frame-rates, the clock also runs faster!

Basic Tactics

Compressing: This technique is simple... successively fill in small areas of the screen, when no white diamonds are nearby, to effectively reduce the amount of black space. Compressing becomes quite difficult when as the fill percentage approaches 75%, especially in higher levels.

Trapping: This was the most effective technique in the original Xonix, but the yellow wipers (new to Xonix32) make things more difficult. Trapping involves making many small parallel peninsulas, and waiting nearby for unlucky white diamonds to enter the "trap". To spring the trap, run to the end of a peninsula and connect to an adjacent peninsula before the white diamond can escape. Trapping is easier (but more dangerous) if you wait at end of one of the peninsulas.

Protecting Traps: The yellow wipers like to wipe out your peninsulas, which makes it difficult to build traps in the first place. But they can also destroy your traps after you've captured a white diamond (this is far more troublesome!). To protect your traps, try to fill in the areas on each side of the trap. If your trap is sealed behind a solid wall of blueness, the yellow wipers won't be able to penetrate it.

Advanced Tactics

Splitting: Splitting is similar to trapping, but the technique is usually performed by cutting across the entire screen, vertically, in one daring and well-timed move. Ignore the yellow wipers. They will rip holes in your partition, but you can always wait for them to leave, and patch up the holes later. Some people refer to this technique as "divide and conquer". Some geeky people refer to this technique as "Maxwell's Daemon". If you don't get it, dig out your old thermodynamics textbooks.

Trapping Black Diamonds: How can you possibly trap these annoying critters? If a black diamond bounces off an angled edge at just the right spot, it may get stuck in a perpetual back-and-forth bouncing motion. In general, this isn't something you can do on purpose -- you have to be lucky. But once it does happen, you should take advantage of the situation by NOT filling in any of the space that would disturb the trapped diamond. Of course, once you crash or run out of time, all black diamonds are repositioned randomly across the bottom of the screen, and the trap is broken.

Disabling Black Diamonds: An even better trick is to lure a black diamond onto a peninsula, just as the peninsula is being erased by a yellow wiper. If a black diamond is erased by a yellow wiper, it is frozen in an invisible state of quantum limbo. Or something. However, if you overfill that location with blueness, the black diamond will spring back to life! Of course, if you crash or run out of time, all black diamonds are repositioned randomly across the bottom of the screen, including the previously disabled ones. Did I mention that this is also incredibly difficult to do?

Design Notes

The source files were developed for MFC 5.0, but they should work with MFC 4.0 and higher. The code provides a good starting point to make your own Win32 arcade games. Feel free to reuse this code, within the provisions of the GNU General Public License.

Version History

- [2.5] Minor bug fix.
- [2.4] Minor bug fix.
- [2.3] New URL: www.nutware.com!
- [2.2] Changed source code packaging.
- [2.2] Minor bug fix.
- [2.1] Changed scoring rules.
- [2.1] Removed the bonus indicator from the statusbar.
- [2.0] Distributed in a self-extracting zip file.
- [2.0] Changed rule: colliding with your own red line no longer kills you.
- [2.0] Added animated welcome screen.
- [2.0] Restructured code to implement DibSection technology.
- [2.0] Misc bug fixes and optimizations.
- [2.0] Significant code restructuring (less API and more MFC).
- [1.3] Better-looking statusbar.
- [1.3] Command-line params have been disabled in favor of a larger, fixed-size window.
- [1.2] Misc bug fixes and optimizations.
- [1.1] Removed the "optimization" that sometimes caused the game screen to overfill. Many thanks to Onno and Matt!
- [1.0] Misc bug fixes and optimizations.
- [0.6] Various bugs in the dot-bouncing logic are now fixed.
- [0.6] Many small optimizations were made (mostly related to collision-detection logic) and a bit of class restructuring took place. The game is now much more robust.
- [0.5] The game should now work with MMX processors, and other CPUs with super-high resolution timing (greater than 200 MHz). Thanks Don!
- [0.3] The "pause" bug is fixed. Thanks Jane!
- [0.3] Dynamic refresh synchronization! Now you can play at higher speeds, in larger windows, on slower machines!
- [0.2] Splash screens and high score table. Go for the record! (about 2800 pts at the time of this writing...)
- [0.2] The "boss" key. Hitting [Esc] will minimize the app and rename it "Microsoft Excel" on the taskbar. [F4] now takes on the role of "end game". Have fun!
- [0.1] Original version.

Known Bugs

- The low-time warning doesn't flash perfectly.

Copyright Info

Copyright (C) 1997-1998 Shawn A. VanNess

For detailed licensing information, see the file gnu_license.txt included with this source code distribution.

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, 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 General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.