Advertisement
Guest User

Untitled

a guest
Nov 18th, 2019
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.33 KB | None | 0 0
  1. #include <iostream>
  2. #include <array>
  3. #include <string.h>
  4. using namespace std;
  5. struct Joueur{
  6. array<int,6> terrain;
  7. int Sac; //PROF : cf initialisation
  8. bool tour=false;
  9. };
  10.  
  11. void initialisation (Joueur & J1,Joueur & J2){
  12. //Création et remplissage des tableaux à 4
  13. for (int i=0;i<6;i++){
  14. J1.terrain[i]=4;
  15. J2.terrain[i]=4;
  16. }
  17. // PROF : mettre ici le Sac a 0 et tour a faux
  18. J1.Sac = J2.Sac = 0;
  19. J1.tour = J2.tour = false;
  20. }
  21.  
  22. int compteGraines (Joueur J1, Joueur J2){ //PROF : inutile de les passer par reference
  23. //mise en place d'un compteur
  24. int nbgraines=0;
  25.  
  26. for (int i=0;i<6;i++){
  27. nbgraines+=J1.terrain[i]+J2.terrain[i];
  28. }
  29. return nbgraines;
  30. }
  31.  
  32.  
  33. int saisieCase(){ //PROF : pas besoin de passer J1 et J2
  34.  
  35. int Case=-1;
  36.  
  37. while (Case<0 || Case>5){
  38. //demande de saisir un nombre entre 0 et 4
  39. cout<<"Saisir la case a jouer(entre 0 et 5)"<<endl;
  40. cin>>Case;
  41.  
  42. if(Case<0 || Case>5){
  43. cout<<"Erreur! recommencer la saisie"<<endl;
  44. }
  45.  
  46.  
  47. }
  48.  
  49. return Case;
  50. }
  51.  
  52. int joueCase(Joueur & J1,Joueur & J2,int & Casedep, int & a)
  53. // PROF : tu n'as pas besoin de "Casearr" en parametre, juste "a" si verif==1, attention "a" a toujours la valeur de la case suivante et pas celle d'arret !
  54.  
  55. {
  56. int verif=0;
  57. if(J1.tour==true)
  58. {
  59. //Mise en place d'une variable pour l'arrivée
  60. a=Casedep+J1.terrain[Casedep];
  61. a=5;
  62.  
  63. //Mettre 0 à la case selectionnée
  64. J1.terrain[Casedep]=0;
  65.  
  66. for(int i=Casedep+1;i<=a;i++)
  67. {
  68. //Ajoute 1 le temps que la case et != de la case d'arrivée
  69. if (i<=5){
  70. J1.terrain[i]+=1;//PROF : que si i est plus petit ou egal à 5, ca devait deborder sur l'entier stocké consécutivement soit celui qui correspondait a "Sac"
  71. }
  72.  
  73. else //PROF : if(i>5)
  74. {
  75. //changement de tableau
  76. J2.terrain[a]+=1;
  77. verif=1;
  78. a--;
  79. }
  80.  
  81. }
  82.  
  83. //PROF : si i>6 c'est que tu as utilise "a" donc faire a++ (pour avoir la derniere case du tableau adeverse dans laquelle on a depose une graine)
  84. J2.tour=true;
  85. J1.tour=false;
  86. }
  87.  
  88.  
  89. else{
  90. a=Casedep-J2.terrain[Casedep];
  91. a=0;
  92.  
  93. //Mettre 0 à la case selectionnée
  94. J2.terrain[Casedep]=0;
  95.  
  96. for(int i=Casedep-1;i>=a;i--)
  97. {
  98. //Ajoute 1 le temps que la case et != de la case d'arrivée
  99. if (i>=0)
  100. {J2.terrain[i]+=1;
  101. }//PROF : que si i >=0
  102.  
  103. else //PROF : if(i<0)
  104. {
  105. //changement de tableau
  106. J1.terrain[a]+=1;
  107. verif=0; //PROF : verif devrait etre a 1 pour signaler que tu as change de tableau
  108. a++;
  109. }
  110.  
  111. }
  112. //PROF : si i<-1 c'est que tu as utilise "a" donc faire a-- (pour avoir la derniere case du tableau adeverse dans laquelle on a depose une graine)
  113.  
  114. J1.tour=true;
  115. J2.tour=false;
  116. }
  117.  
  118. return verif;
  119. }
  120.  
  121. void capture(Joueur & J1,Joueur & J2, int & verif, int & Casearr)
  122. //PROF : ici "Casearr" doit etre en fait le "a" de joueCase, donc pas besoin de a !
  123. //PROF : Vous devez appeler cette fonction que si verif est a 1 donc pas la peine de le passer en paramètre !
  124. {
  125. if(J1.tour==true && verif ==1) //PROF : si tu utilises finalement verif, c'est J2 qui a joue donc c'est lui qui doit recuperer !
  126. {
  127. if(J1.terrain[Casearr]>=2 && J1.terrain[Casearr]<=3){
  128. //PROF : il faut recommencer tant que c'est vrai et que Casearr n'est pas à 0, ne pas oublie de faire Casearr--
  129. J1.Sac+=J1.terrain[Casearr]; //PROF : J2.Sac+=J1.terrain
  130. //cout<<J1.terrain[Casearr]<<" "<<J1.Sac<<endl;
  131.  
  132. }
  133.  
  134. /* }else{
  135. if(verif=0 && J2.terrain[Casearr]>=2 && J2.terrain[Casearr]<=3){ //pour moi verif doit valoir 1 cf fonction precedente
  136. //PROF : il faut recommencer tant que c'est vrai et que Casearr n'est pas à 5, ne pas oublie de faire Casearr++
  137. J1.Sac+=J2.terrain[Casearr]; //PROF : là ok
  138. }*/
  139. }
  140. cout<<"Capture sac :"<<J1.Sac<<endl;
  141. }
  142.  
  143. void affichage (Joueur & J1,Joueur & J2)
  144. {
  145. //affichage du terrain 1
  146. for (int i=0; i<6; i++)
  147. {
  148. cout<<J1.terrain[i]<<" ";
  149. }
  150. cout<<"\t"<<J1.Sac;
  151. cout<<endl<<endl;
  152. //affichage du terrain 2
  153. for (int i=0; i<6; i++)
  154. {
  155. cout<<J2.terrain[i]<<" ";
  156. }
  157. cout<<"\t"<<J2.Sac;
  158. cout<<endl;
  159.  
  160. }
  161.  
  162. int main (){
  163. Joueur J1;
  164. Joueur J2;
  165.  
  166. int Casedep;
  167. int verif;
  168. int Casearr;
  169. initialisation(J1,J2);
  170. J1.tour=true; //PROF : on lance le tour avec J1
  171.  
  172. affichage(J1,J2);
  173.  
  174. for(int i=0;i<=7;i++)
  175. {
  176. Casedep=saisieCase();
  177. verif=joueCase(J1,J2,Casedep,Casearr); // PROF : il faut recuperer la valeur de joueCase
  178. //capture(J1,J2,verif,Casearr,a);
  179. //cout<<"verif = " << verif << " a = " << a << "casearr = " << Casearr << "Capture sac main J1:"<<J1.Sac<<endl; //PROF : debuggage
  180. affichage(J1,J2);
  181.  
  182. }
  183.  
  184.  
  185.  
  186. return 0;
  187. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement