52 lines
2.2 KiB
Markdown
52 lines
2.2 KiB
Markdown
# The Game module
|
|
|
|
The `Game` class is probably the most important class in this architecture,
|
|
since it is the class you will get as a parameter in your AI. Your AI will need
|
|
to analyse the game in order to take a decision that will make it win.
|
|
|
|
It contains the size of the game, the [Map](/wiki/Map)s of each step of the
|
|
game, the players, and can run.
|
|
|
|
Before detailling the content of the `Game` class, we first need to describe
|
|
some other classes in the same module.
|
|
|
|
## The `PositionPlayer` class
|
|
|
|
*Yes, this is a really poor name, but I had no imagination for that one...*
|
|
|
|
Basically, this class contains the things that the game needs to know about the
|
|
player:
|
|
- the `player` attribute is the one corresponding to the player described in
|
|
the [player section](/wiki/Player) (which serves the purpose of the AI)
|
|
- the `position` attribute is the current position of the player
|
|
- the `id` is a number (between 1 and 2) that allows the game to know which
|
|
player we are talking about
|
|
- the `alive` attribute is a boolean which allows the game to know if the
|
|
player is still alive so it can know if the game ended and which player
|
|
has won
|
|
|
|
It also contains two methods, `head` and `body` which returns the tile the
|
|
corresponding to the head or the body of the given player.
|
|
|
|
## The `HistoryElement` class
|
|
|
|
This class desribes the elements you will find in the game history. It contains
|
|
the directions that were given by the players, and the state of the map after
|
|
the turn.
|
|
|
|
## And finally, the `Game` class
|
|
|
|
This class contains:
|
|
- the width and height of the game, which are integers
|
|
- the history of the states of the game, which is an array of
|
|
`HistoryElement`s that we described in the previous section
|
|
- the `PositionPlayer`s of the game (in the `pps` attribute), which is an
|
|
array of `PositionPlayer` described previously
|
|
- the `winner` which is initialized to `None`, at the begining of the game,
|
|
but will be 1 or 2 if player 1 or 2 won the game
|
|
|
|
It also contains a few methods:
|
|
- `map`, which returns the current map of the game
|
|
- `next_frame` which advances one step in the game and updates the history
|
|
- `main_loop`, that runs the game until it's finished
|