Apply a compiled move to the state
Note: there is no check if this compiled move is valid for this state, it will throw a NullPointerException if it is not the case
TODO: throw a more intelligent RunTimeException...
A compiled move describes all the translations caused by the sourceMove
It is faster to apply a compiledMove than a move because, as the name implies, the
consequences of the move are already computed, but applying a CompiledMove only
make sense if the board is in the same state as it was when the CompiledMove was
generated.
Give the estimated utility according to the formula:
a_VD * (sumBlack - sumYellow) + a_D8 * (numberOfBlackD8 - numberOfYellowD8) + a_D6 * (numberOfBlackD6 - numberOfYellowD6) + a_D4 * (numberOfBlackD4 - numberOfYellowD4)) / normalizationFactor
It will do the opposite (sumYellow-sumBlack) if gamestate's max color is yellow
If the previous move applied involved the roll of a dice, the dice to roll is left unchanged, BUT this field is
updated so it is the responsability of the player to reroll it/update it
getDir() -
Method in class knockabout.gamemodel.Move
Note that this function will leave the board in the same configuration
as the it was when the function was called, because the inverse move
is always applied after each move tried.
Note that this function will leave the board in the same configuration
as the it was when the function was called, because the inverse move
is always applied after each move tried.
Note that this function will leave the board in the same configuration
as the it was when the function was called, because the inverse move
is always applied after each move tried.
Note that this function will leave the board in the same configuration
as the it was when the function was called, because the inverse move
is always applied after each move tried.
Simulate a line of the game
Half of the time, we pick the best move using a greedy minmax, half of the time we pick a random move
For the chance node, we pick one value of the die at random