------------------
Required packages:
------------------
gtk+-2.0
glib-2.0
gconf-2.0
librsvg-2.0
gobject-2.0	
atk-1.0	


---------------
How to install:
---------------
1. Enter the src directory in a shell
2. execute "./configure". If you want do install the game in a specific directory, use "--prefix=<PathToDirectory>" as an option to the configure command.
3. execute "make install"

If for some reason it doesn't install into the directory you specified, try
calling "make clean", then reinstall with the prefix option.

After the installation, you find the binary at <PathToDirectory>/bin/gnomine.


------------
User manual:
------------
When you start the game, there are two radio buttons below the timer for choosing whether you want the CSP- or the Backbone-solver. By default the game starts with the CSP-solver.
Both solvers will set a green square on a field if they found out that field is safe, and similarly a red square if t is a mine.

CSP-Solver:
-----------
The CSP-Solver enforces Arc-Consistency over Constraints defined by the numbers on the clear fields (eg a 2 sets the constraint that only two imediate neighbors of that field can be mines). Arc-Consistency means we are always only looking at one constraint. 
The field whose constraint we are looking at at the moment has a grey background, the surrounding cleared fields a blue, and the surrounding unknown fields a light orange background. In the helper GUI you will see 9 fields: In the middle is the examined field, labeled with the number of how many neighbor mines it constraints. The surrounding field are blue if they are clear or have a flag, labeled with a 0 denoting that they don't have a mine or a 1 denoting they have a mine. The orange fields are the fields which are yet unknown, they have both an 0 and a 1. 
We examine the current constraint by looking at each unknown field and trying out both possible values: if one value leads to an impossible configuration the other value automatically must be true, thus we can set that field to the true value.(e.g. if you have a 1 in the middle field and only one unknown field while all other fields are 0, it is impossible that the unknown field does not have a mine and we can say the unknown field must be flagged). In order to test out which values are impossible, we need to vary all other fields and test out if there is one valid combination of values or not.
In the helper GUI, the currently examined field has a yellow background. For all unknown values, the currently tested value is highlighted black while the other value is greyed out. The background of the middle field is red if the current combination does not satisfy the constraint, green otherwise.
On the right side of the 9 fields you see some helpful information: 
- Which field in the minefield we are examining
- which value for it we are examining
- how many combinations of values of the other unknown fields are possible
- how many of those combinations we tested yet
- whether we already found out if value 0/value 1 are possible or not 
Explanation of the buttons and radiobuttons:
next Constraint:	Jumps to the next constraint
next Variable:		Highlights the next variable to be tested
next Step:		tries out the next combination
check Field:		checks the entire field (all constriants)
apply Changes:		will apply all the changes the solver found out (denoted by the green and red squares on the minefield)
analzye:		analyze mode: If you click on a constraint on the minefield in this mode, the solver will jump to that constriant. In this mode you cannot click on unknown fields to set mines or clear them.
play:			play mode: In this mode you can click on unknown fields to set mines or clear them.

Backbone Solver:
----------------
The Backbone Solver works by encoding the minefield with all its information into a logical formula and then tries to find backbones - variables which have the same value in any possible model of the logical formula (=assignment of variables with which the formula becomes true).
The field is replicated in the helper-GUI, where cleared fields have a light grey background and all unknown have an orange background with at first a dark grey square and a black diagonal line. Flagged fields have a red background.
When the solver checks a field it basically tries out if it finds a model for the both cases where the field is clear and where it is mined. If it only finds a model for one case, we know the other case is impossible and we found a backbone. As soon as the algorithm started, we will see in each unknown field two small squares. They denote the two models we try to find: if the small square is red this means the field is a mine in the model, if its green it is clear. If no model could be found for one of the cases, all small squares denoting that model are black. The algorithm makes use of previous detected models, thus if it finds for any field (not only the currently tested one) a model where the value is different than in any previous model it knows that this field cannot be a backbone and rules it out from further considerations. All fields which are for sure no backbone are denoted by a grey square in them. If the algorithm found out that a field is safe, the field gets a green square, if the algorithm found out it is a mine, the field gets a red square.
Explanation of buttons and radiobuttons:
next Field:		jumps to the next field which should be checked for backbone
check entire Field:	checks the entire field for backbones
apply Changes:		will apply all the changes the solver found out (denoted by the green and red squares on the minefield)
analyze:		analyze mode: If you click on an unknown field, the field will be checked if it is a backbone.
play:			play mode: In this mode you can click on unknown fields to set mines or clear them.
