Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <array>
- #include <string.h>
- using namespace std;
- struct Joueur{
- array<int,6> terrain;
- int Sac; //PROF : cf initialisation
- bool tour=false;
- };
- void initialisation (Joueur & J1,Joueur & J2){
- //Création et remplissage des tableaux à 4
- for (int i=0;i<6;i++){
- J1.terrain[i]=4;
- J2.terrain[i]=4;
- }
- // PROF : mettre ici le Sac a 0 et tour a faux
- J1.Sac = J2.Sac = 0;
- J1.tour = J2.tour = false;
- }
- int compteGraines (Joueur J1, Joueur J2){ //PROF : inutile de les passer par reference
- //mise en place d'un compteur
- int nbgraines=0;
- for (int i=0;i<6;i++){
- nbgraines+=J1.terrain[i]+J2.terrain[i];
- }
- return nbgraines;
- }
- int saisieCase(){ //PROF : pas besoin de passer J1 et J2
- int Case=-1;
- while (Case<0 || Case>5){
- //demande de saisir un nombre entre 0 et 4
- cout<<"Saisir la case a jouer(entre 0 et 5)"<<endl;
- cin>>Case;
- if(Case<0 || Case>5){
- cout<<"Erreur! recommencer la saisie"<<endl;
- }
- }
- return Case;
- }
- int joueCase(Joueur & J1,Joueur & J2,int & Casedep, int & a)
- // 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 !
- {
- int verif=0;
- if(J1.tour==true)
- {
- //Mise en place d'une variable pour l'arrivée
- a=Casedep+J1.terrain[Casedep];
- a=5;
- //Mettre 0 à la case selectionnée
- J1.terrain[Casedep]=0;
- for(int i=Casedep+1;i<=a;i++)
- {
- //Ajoute 1 le temps que la case et != de la case d'arrivée
- if (i<=5){
- 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"
- }
- else //PROF : if(i>5)
- {
- //changement de tableau
- J2.terrain[a]+=1;
- verif=1;
- a--;
- }
- }
- //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)
- J2.tour=true;
- J1.tour=false;
- }
- else{
- a=Casedep-J2.terrain[Casedep];
- a=0;
- //Mettre 0 à la case selectionnée
- J2.terrain[Casedep]=0;
- for(int i=Casedep-1;i>=a;i--)
- {
- //Ajoute 1 le temps que la case et != de la case d'arrivée
- if (i>=0)
- {J2.terrain[i]+=1;
- }//PROF : que si i >=0
- else //PROF : if(i<0)
- {
- //changement de tableau
- J1.terrain[a]+=1;
- verif=0; //PROF : verif devrait etre a 1 pour signaler que tu as change de tableau
- a++;
- }
- }
- //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)
- J1.tour=true;
- J2.tour=false;
- }
- return verif;
- }
- void capture(Joueur & J1,Joueur & J2, int & verif, int & Casearr)
- //PROF : ici "Casearr" doit etre en fait le "a" de joueCase, donc pas besoin de a !
- //PROF : Vous devez appeler cette fonction que si verif est a 1 donc pas la peine de le passer en paramètre !
- {
- 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 !
- {
- if(J1.terrain[Casearr]>=2 && J1.terrain[Casearr]<=3){
- //PROF : il faut recommencer tant que c'est vrai et que Casearr n'est pas à 0, ne pas oublie de faire Casearr--
- J1.Sac+=J1.terrain[Casearr]; //PROF : J2.Sac+=J1.terrain
- //cout<<J1.terrain[Casearr]<<" "<<J1.Sac<<endl;
- }
- /* }else{
- if(verif=0 && J2.terrain[Casearr]>=2 && J2.terrain[Casearr]<=3){ //pour moi verif doit valoir 1 cf fonction precedente
- //PROF : il faut recommencer tant que c'est vrai et que Casearr n'est pas à 5, ne pas oublie de faire Casearr++
- J1.Sac+=J2.terrain[Casearr]; //PROF : là ok
- }*/
- }
- cout<<"Capture sac :"<<J1.Sac<<endl;
- }
- void affichage (Joueur & J1,Joueur & J2)
- {
- //affichage du terrain 1
- for (int i=0; i<6; i++)
- {
- cout<<J1.terrain[i]<<" ";
- }
- cout<<"\t"<<J1.Sac;
- cout<<endl<<endl;
- //affichage du terrain 2
- for (int i=0; i<6; i++)
- {
- cout<<J2.terrain[i]<<" ";
- }
- cout<<"\t"<<J2.Sac;
- cout<<endl;
- }
- int main (){
- Joueur J1;
- Joueur J2;
- int Casedep;
- int verif;
- int Casearr;
- initialisation(J1,J2);
- J1.tour=true; //PROF : on lance le tour avec J1
- affichage(J1,J2);
- for(int i=0;i<=7;i++)
- {
- Casedep=saisieCase();
- verif=joueCase(J1,J2,Casedep,Casearr); // PROF : il faut recuperer la valeur de joueCase
- //capture(J1,J2,verif,Casearr,a);
- //cout<<"verif = " << verif << " a = " << a << "casearr = " << Casearr << "Capture sac main J1:"<<J1.Sac<<endl; //PROF : debuggage
- affichage(J1,J2);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement