Duo is a kind of crazy eight or Unotm card game. It is designed to be modular, so that rule sets AI or user interfaces can be removed or added very easily. It is a free software (as in free speech), which is developed in pure Python and is available in a lot of languages.
This document is aimed at describing all the aspects of the program useful to the player. The game rules are described in their own document. AI, rule sets or interface developers will find more useful information in the API or in the Developers Corner.
The command line interface
To launch the program, simply enter duo.py. Standard and common arguments are:
Usage: duo [-q] [-v] duo -h|--help | -c|--conditions | -w|--warranty
By default, the program outputs some information in duo.log. -v increases the quantity of information output, while -q makes duo really quiet. Some other options can be available to start a quick game, select an interface or a rule set, and so on. Type duo.py -h to learn more.
The Tk interface
The Tk interface is the user interface historically developed for the game. Its name comes from the underlying widgets framework which is called Tkinter in Python, and relies on Tk. It is still today the only supported interface, but please keep in mind that it can be replaced by any other kind of interface, specially to provide a good game experience in different environments like heavy 3D systems, text terminals or mobiles. Every interface can introduce some limitations: in the case of the Tk interface, only four players can participate.
The Tk interface is a conventional application window with a menu bar and a frame divided in two zones. On the left is the game zone, where you can see your hand and the one of your opponents (cards turned back of course), the deck and the heap. On the right, you can find some information on the game like the points of everyone, and some controls.
The Tk interface automatically uses your preferred language (ie for POSIX systems, the content of your LANG environment variable). You can override the defaults with the Options > Language menu option. Note that the translations must have been generated on your machine previously. The make-locale.py script will do that for you.
You can start a new game with the Game > New Game menu option. The Start Game dialog will ask you for necessary information like the number of players, the number of cards to be dealt to each one, the rule set to use.
When the game starts, cards are dealt to each player and nothing more happens as long as all the players are not ready. This ensures everyone can check his cards and finish everything he could be doing before the first card is returned, which can be very important for some rules. The Ready button allows you to broadcast your readiness to all the players. Note that AI players are always ready to play.
The first card is returned on the heap, and then the game rules start to apply. The yellow line shows the player whose turn it is. The turn can get different significations depending on the rules you have chosen. You can click on a card to play it or on the deck to draw. If you have no other option, the Pass button will become active to let you pass your turn.
When the round is finished, a dialog will open with the new players score. You can choose to continue to play or to stop. You can leave the program any time with the Game > Quit menu option.