Guest User

Untitled

a guest
Apr 26th, 2018
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.23 KB | None | 0 0
  1. // Constantes booléennes
  2. const int true = 1;
  3. const int false = 0;
  4.  
  5. // Représente un joueur
  6. enum player {
  7.     P1, // Joueur 1
  8.     P2, // Joueur 2
  9.     NP  // Aucun joueur
  10. };
  11. typedef enum player player_t;
  12.  
  13. // Représente un triangle dans le jeu
  14. struct point {
  15.     player_t player;     // Joueur courant
  16.     unsigned int nb_checkers; // Nombre de pion du joueur sur le triangle
  17. };
  18. typedef struct point point_t;
  19.  
  20. // Constantes des zones pour le tableau points
  21. const int P1_OUT = 0;
  22. const int P2_OUT = 25;
  23. const int P1_BAR = 26;
  24. const int P2_BAR = 27;
  25.  
  26. // Cette structure représente le jeu avec son plateau et les dés
  27. struct game {
  28.     /* Tableau contenants les zones où les pions peuvent se trouver
  29.      * Le joueur 1 se déplace dans le sens décroissant
  30.      * Le joueur 2 se déplace dans le sens croissant
  31.      * Indices des flèches : 1 à 24
  32.      * Indices des zones de sortie et des pions prisonniers
  33.      * définies par les constantes ci-dessus
  34.     */
  35.     point_t points[28];
  36.  
  37.     // Les dés de jeu
  38.     unsigned int die1;
  39.     unsigned int die2;
  40.  
  41.     // Les scores des joueurs
  42.     unsigned int p1_score;
  43.     unsigned int p2_score;
  44.  
  45.     // Score à atteindre pour gagner le match
  46.     unsigned int target_score;
  47.  
  48.     // Mise de la partie
  49.     unsigned int stake;
  50.  
  51.     // Propriétaire du videau
  52.     player_t cube_owner;
  53. };
  54. typedef struct game game_t;
  55.  
  56. // Structure de représentation d'un mouvement
  57. struct move {
  58.     unsigned int src_point;
  59.     unsigned int dest_point;
  60. };
  61. typedef struct move move_t;
  62.  
  63. struct moves_order {
  64.     move_t moves[4];
  65.     unsigned int nb_moves;
  66. }
  67. typedef struct moves_order moves_order_t;
  68.  
  69. /* Codes de retour pour la fonction de décision
  70.  * AI_SUCCESS : l'IA n'a rencontré aucun problème
  71.  * AI_PARAM_ERROR : Erreur de paramètres
  72.  * AI_BOARD_ERROR : Erreur de pions mal placés sur le plateau
  73.  */
  74. const int AI_SUCCESS = 0;
  75. const int AI_PARAM_ERROR = 1;
  76. const int AI_BOARD_ERROR = 2;
  77.  
  78. /**
  79.  * Prise de décision de la part de l'IA
  80.  * @param const game_t
  81.  *  l'état du jeu courant
  82.  * @param const player_t
  83.  *  joueur actif à faire jouer
  84.  * @param const moves_order_t*
  85.  *  pointeur vers les mouvements à effectuer par l'IA
  86.  * @return int
  87.  *  code de retour défini par des constantes
  88.  */
  89. int make_decision(const game_t, const player_t, const moves_order_t*);
  90.  
  91. /**
  92.  * Doubler la mise
  93.  * @param const game_t
  94.  *  l'état du jeu courant
  95.  * @param const player_t
  96.  *  joueur actif qui demande la mise
  97.  * @return int
  98.  *  true si on propose de doubler
  99.  *  false sinon
  100.  */
  101. int double_stake(const game_t, const player_t);
  102.  
  103. /**
  104.  * Accepter ou refuser la nouvelle mise
  105.  * @param const game_t
  106.  *  l'état du jeu courant
  107.  * @param const player_t
  108.  *  joueur non actif à qui on demande la mise
  109.  * @return int
  110.  *  true si on accepte la nouvelle mise
  111.  *  false sinon
  112.  */
  113. int take_double(const game_t, const player_t);
  114.  
  115.  
  116. /**
  117.  * Initialiser l'IA pour un match
  118.  * @param const unsigned int target_score
  119.  *  score cible pour gagner un match
  120.  * @return void
  121.  */
  122. void start_match(const unsigned int target_score);
  123.  
  124. /**
  125.  * Initialiser l'IA pour une partie (d'un match)
  126.  * @return void
  127.  */
  128. void start_game();
  129.  
  130. /**
  131.  * Terminer une partie (d'un match)
  132.  * @return void
  133.  */
  134. void end_game();
  135.  
  136. /**
  137.  * Terminer un match
  138.  * @return void
  139.  */
  140. void end_match();
Add Comment
Please, Sign In to add comment