Guest User

Untitled

a guest
Apr 25th, 2018
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.96 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.     // Mise de la partie
  46.     unsigned int stake;
  47.  
  48.     // Propriétaire du videau
  49.     player_t cube_owner;
  50. };
  51. typedef struct game game_t;
  52.  
  53. // Structure de représentation d'un mouvement
  54. struct move {
  55.     unsigned int src_point;
  56.     unsigned int dest_point;
  57. };
  58. typedef struct move move_t;
  59.  
  60. struct moves_order {
  61.     move_t moves[4];
  62.     unsigned int nb_moves;
  63. }
  64. typedef struct moves_order moves_order_t;
  65.  
  66. // Codes de retour pour la fonction de décision -> A DEFINIR
  67. const int CODE1 = 0;
  68. const int CODE2 = 1;
  69.  
  70. /**
  71.  * Prise de décision de la part de l'IA
  72.  * @param const game_t
  73.  *  l'état du jeu courant
  74.  * @param const player_t
  75.  *  joueur actif à faire jouer
  76.  * @param const moves_order_t*
  77.  *  pointeur vers les mouvements à effectuer par l'IA
  78.  * @return int
  79.  *  code de retour défini par des constantes
  80.  */
  81. int make_decision(const game_t, const player_t, const moves_order_t*);
  82.  
  83. /**
  84.  * Doubler la mise
  85.  * @param const game_t
  86.  *  l'état du jeu courant
  87.  * @param const player_t
  88.  *  joueur actif qui demande la mise
  89.  * @return int
  90.  *  true si on propose de doubler
  91.  *  false sinon
  92.  */
  93. int double_stake(const game_t, const player_t);
  94.  
  95. /**
  96.  * Accepter ou refuser la nouvelle mise
  97.  * @param const game_t
  98.  *  l'état du jeu courant
  99.  * @param const player_t
  100.  *  joueur non actif à qui on demande la mise
  101.  * @return int
  102.  *  true si on accepte la nouvelle mise
  103.  *  false sinon
  104.  */
  105. int take_double(const game_t, const player_t);
  106.  
  107.  
  108. /**
  109.  * Initialiser l'IA pour un match
  110.  * @param const unsigned int target_score
  111.  *  score cible pour gagner un match
  112.  * @return void
  113.  */
  114. void start_match(const unsigned int target_score);
  115.  
  116. /**
  117.  * Initialiser l'IA pour une partie (d'un match)
  118.  * @return void
  119.  */
  120. void start_game();
  121.  
  122. /**
  123.  * Terminer une partie (d'un match)
  124.  * @return void
  125.  */
  126. void end_game();
  127.  
  128. /**
  129.  * Terminer un match
  130.  * @return void
  131.  */
  132. void end_match();
Add Comment
Please, Sign In to add comment