infector

details

This program came into being for a number of reasons. Firstly, I have had a soft spot for Ataxx clones since writing my first and only other game AI for the very same game, whilst learning Delphi at Reading University. Although it beat me the first time I got it to work correctly, the code - and the music - were hideous. Sadly I no longer have the code, and cannot seem to replicate what little I remember about the inner workings of its AI. Some good did come of it, though: I didn't try making any music for this version. :)

Secondly, the GNOME Games project conducted a survey regarding usage of their games, and GAtaxx came out bottom. It was subsequently discontinued and dropped from the package.

Thirdly, I wanted a reason to learn more about programming with GTK+, having barely cut my teeth on it with cteddy. This time I jumped right in, making extensive use of gtkmm and its companion libraries. Glade 3 has been a particular joy to work with. GUI programmers are really spoilt with tools like Delphi, but too much emphasis on the front end and over-use of code generation can lead to some very bad practices. Personally I find Glade to be a very good compromise between the "my first GUI" RAD tendencies of tools like Delphi and Visual Basic, and the tedium of building up a user interface with raw code using a library like GTK+ or wxWidgets directly. The combination of a simple yet powerful graphical design tool, and methods for instantiating and manipulating the resulting interface in the programming language of your choice, strikes me as almost ideal.

I've tried my best to make the code modern and portable, using xdg-utils for desktop integration, a standard autoconf and automake build system, and full i18n support. The latter is currently untested; at time of writing, only the native English translation is available. One of a few remaining issues is whether to ditch libglade and go with GtkBuilder - I was unaware of GtkBuilder's existence when I began the project, and get the impression that GtkBuilder support might still be somewhat lacklustre.