Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Constantes booléennes
- const int true = 1;
- const int false = 0;
- // Représente un joueur
- enum player {
- P1, // Joueur 1
- P2, // Joueur 2
- NP // Aucun joueur
- };
- typedef enum player player_t;
- // Représente un triangle dans le jeu
- struct point {
- player_t player; // Joueur courant
- unsigned int nb_checkers; // Nombre de pion du joueur sur le triangle
- };
- typedef struct point point_t;
- // Constantes des zones pour le tableau points
- const int P1_OUT = 0;
- const int P2_OUT = 25;
- const int P1_BAR = 26;
- const int P2_BAR = 27;
- // Cette structure représente le jeu avec son plateau et les dés
- struct game {
- /* Tableau contenants les zones où les pions peuvent se trouver
- * Le joueur 1 se déplace dans le sens décroissant
- * Le joueur 2 se déplace dans le sens croissant
- * Indices des flèches : 1 à 24
- * Indices des zones de sortie et des pions prisonniers
- * définies par les constantes ci-dessus
- */
- point_t points[28];
- // Les dés de jeu
- unsigned int die1;
- unsigned int die2;
- // Les scores des joueurs
- unsigned int p1_score;
- unsigned int p2_score;
- // Mise de la partie
- unsigned int stake;
- // Propriétaire du videau
- player_t cube_owner;
- };
- typedef struct game game_t;
- // Structure de représentation d'un mouvement
- struct move {
- unsigned int src_point;
- unsigned int dest_point;
- };
- typedef struct move move_t;
- struct moves_order {
- move_t moves[4];
- unsigned int nb_moves;
- }
- typedef struct moves_order moves_order_t;
- // Codes de retour pour la fonction de décision -> A DEFINIR
- const int CODE1 = 0;
- const int CODE2 = 1;
- /**
- * Prise de décision de la part de l'IA
- * @param const game_t
- * l'état du jeu courant
- * @param const player_t
- * joueur actif à faire jouer
- * @param const moves_order_t*
- * pointeur vers les mouvements à effectuer par l'IA
- * @return int
- * code de retour défini par des constantes
- */
- int make_decision(const game_t, const player_t, const moves_order_t*);
- /**
- * Doubler la mise
- * @param const game_t
- * l'état du jeu courant
- * @param const player_t
- * joueur actif qui demande la mise
- * @return int
- * true si on propose de doubler
- * false sinon
- */
- int double_stake(const game_t, const player_t);
- /**
- * Accepter ou refuser la nouvelle mise
- * @param const game_t
- * l'état du jeu courant
- * @param const player_t
- * joueur non actif à qui on demande la mise
- * @return int
- * true si on accepte la nouvelle mise
- * false sinon
- */
- int take_double(const game_t, const player_t);
- /**
- * Initialiser l'IA pour un match
- * @param const unsigned int target_score
- * score cible pour gagner un match
- * @return void
- */
- void start_match(const unsigned int target_score);
- /**
- * Initialiser l'IA pour une partie (d'un match)
- * @return void
- */
- void start_game();
- /**
- * Terminer une partie (d'un match)
- * @return void
- */
- void end_game();
- /**
- * Terminer un match
- * @return void
- */
- void end_match();
Add Comment
Please, Sign In to add comment