estPlacementPossible [c++]

Voir le sujet précédent Voir le sujet suivant Aller en bas

estPlacementPossible [c++]

Message  didi le Jeu 08 Déc 2011, 21:35

bonsoir


j'ai de problem avec cette methode estPlacementPossible

je vous explique je demande au joueur pour entrer une position format (1a) c'est une chaine de charecter
et puit je prends string[0] = ligne et string[1] colonne


Code:

string  Joueur::choisirUnePosition(char maxLigne,char maxColonne) {
      string pos ="";
      int cpt=0;
      char str[2];
   do {
      if(cpt > 0)
         cout << "\n** information incorrecte \n";

      cout << "\nVeuillez entrer la ligne et le colonne format commme  1a\n " ;
      if(cin >> str)   {
         cout << "\nMerci pour votre Position " << str ;
         cpt++;
      } else {
         cin.clear();
         cin.getline(str,2,'\n');
      }
   } while(!(str[0] >= '1' && str[0] <= maxLigne) || !(str[1] >= 'a' && str[1] <= maxColonne));
      pos = pos+str[0]+str[1];
   return pos;

}


et dans ma classe EtatPartie
j'ai des atributs :

Code:
private :
   Plateau   plateau ;
   Joueur joueurBlanc;
   Joueur joueurNoir ;
   Joueur joueurCourant ;
   Joueur joueurGagnant ;

et une methode :

Code:
void EtatPartie::joueurunCoup()   {
   bool estPossible;
   char maxL = getPlateau().getTableau().size()+ 48; //48 code ascii pour 0
   char maxC = getPlateau().getTableau()[1].size()+ 96; // code ascii charecter just avnt a
   cout << "\nLe MaxL est : " << maxL;
   cout << "\nLe MaxC est : " << maxC;
   string pos = getJoueurCourant().choisirUnePosition(maxL,maxC);

   cout << "\nLe getTableau().size est : " << getPlateau().getTableau().size();
   cout << "\nLe getTableau()[1].size() est : " << getPlateau().getTableau()[1].size();
   cout << "\nLe pos[0] est : " << pos[0];
   cout << "\nLe pos[1] est : " << pos[1];
   try {
      if(getJoueurCourant().getCouleur() ==OthelloOutils::BLANC)   {
            estPossible = OthelloOutils::estPlacementPossible(true,pos[0],pos[1],getPlateau().getTableau());
      } else {
         estPossible = OthelloOutils::estPlacementPossible(true,pos[0],pos[1],getPlateau().getTableau());
      }

   } catch(std::logic_error e){
      cout << "\n" << e.what();
   }


   cout << "\nEst-ce placemetPossible : " << estPossible;


}

en premier temps je just fait les tests

quand il demand au console pour la position je lui i fourni la position "1a"
voila qui me retourn comme resultats


Code:

                          a  b  c  d  e  f  g  h
          =================================
       1  |  |  |  |  |  |  |  |  |
          =================================
       2  |  |  |  |  |  |  |  |  |
          =================================
       3  |  |  |  |  |  |  |  |  |
          =================================
       4  |  |  |  | B | N |  |  |  |
          =================================
       5  |  |  |  | N | B |  |  |  |
          =================================
       6  |  |  |  |  |  |  |  |  |
          =================================
       7  |  |  |  |  |  |  |  |  |
          =================================
       8  |  |  |  |  |  |  |  |  |
          =================================
              a  b  c  d  e  f  g  h



Le MaxL est : 8
Le MaxC est : h
Veuillez entrer la ligne et le colonne format commme  1a
 1a

Merci pour votre Position 1a
Le getTableau().size est : 8
Le getTableau()[1].size() est : 8
Le pos[0] est : 1
Le pos[1] est : a
EPP- rangée ou colonne : hors borne
Est-ce placemetPossible : 0

merci d'avance

didi

Nombre de messages : 215
Prénom : Dinesh
Statut : Smile
Date d'inscription : 21/01/2009

Revenir en haut Aller en bas

Re: estPlacementPossible [c++]

Message  smb le Jeu 08 Déc 2011, 21:53

Relis la documentation (la dernière version), et à mon avis tu comprendras que la méthode attend un numéro de ligne de type int (donc des valeurs comme 1, 2, 3, ... et pas '1', '2, '3') ... ce qui change pas mal de chose, non ?

smb

Nombre de messages : 1035
Age : 64
Prénom : Stéphan
Statut : Don de sang, don de vie!
Localisation : Spy
Date d'inscription : 23/01/2007

Revenir en haut Aller en bas

Re: estPlacementPossible [c++]

Message  didi le Jeu 08 Déc 2011, 22:03

meeeerrrciii Smile

et j'ai encore des problemes .. (5 Warnings )
à cette constructeur

Code:

EtatPartie::EtatPartie(unsigned short maxLigne,unsigned short maxColonne) : plateau(maxLigne,maxColonne),
      joueurCourant(OthelloOutils::NOIR),
      joueurNoir(OthelloOutils::NOIR),
      joueurBlanc(OthelloOutils::BLANC),
      joueurGagnant(OthelloOutils::VIDE){
      
}


les warnings :

\
Code:
src\/EtatPartie.h:24:9: warning: 'EtatPartie::joueurCourant' will be initialized after
..\src\/EtatPartie.h:23:9: warning:  'Joueur EtatPartie::joueurNoir'
..\src\EtatPartie.cpp:16:1: warning:  when initialized here
..\src\/EtatPartie.h:23:9: warning: 'EtatPartie::joueurNoir' will be initialized after
..\src\/EtatPartie.h:22:9: warning:  'Joueur EtatPartie::joueurBlanc'
..\src\EtatPartie.cpp:16:1: warning:  when initialized here

je ne comprends pas trop .. Question

didi

Nombre de messages : 215
Prénom : Dinesh
Statut : Smile
Date d'inscription : 21/01/2009

Revenir en haut Aller en bas

Re: estPlacementPossible [c++]

Message  smb le Jeu 08 Déc 2011, 22:37

Allez, un peu de magie pour voir.
Si tu faisais comme ça :

Code:
EtatPartie::EtatPartie(unsigned short maxLigne,unsigned short maxColonne) : plateau(maxLigne,maxColonne),
      joueurBlanc(OthelloOutils::BLANC),
      joueurNoir(OthelloOutils::NOIR),
      joueurCourant(OthelloOutils::NOIR),
      joueurGagnant(OthelloOutils::VIDE){ 
}

... ça donne quoi ? Wink

smb

Nombre de messages : 1035
Age : 64
Prénom : Stéphan
Statut : Don de sang, don de vie!
Localisation : Spy
Date d'inscription : 23/01/2007

Revenir en haut Aller en bas

Re: estPlacementPossible [c++]

Message  didi le Jeu 08 Déc 2011, 22:52

smb a écrit:Allez, un peu de magie pour voir.
Si tu faisais comme ça :

Code:
EtatPartie::EtatPartie(unsigned short maxLigne,unsigned short maxColonne) : plateau(maxLigne,maxColonne),
      joueurBlanc(OthelloOutils::BLANC),
      joueurNoir(OthelloOutils::NOIR),
      joueurCourant(OthelloOutils::NOIR),
      joueurGagnant(OthelloOutils::VIDE){ 
}

... ça donne quoi ? Wink

ça marche vous êtes vrai magician ... cheers mais quelle est secret ..?
pourtant même code àpart changer l'ordre
joueurBlanc(OthelloOutils::BLANC),
joueurNoir(OthelloOutils::NOIR),
...

didi

Nombre de messages : 215
Prénom : Dinesh
Statut : Smile
Date d'inscription : 21/01/2009

Revenir en haut Aller en bas

Re: estPlacementPossible [c++]

Message  smb le Jeu 08 Déc 2011, 23:05

Le secret ?

Allons, un magicien ne dévoile jamais ses secrets !

Mais rien que pour toi voici deux indices (ne le dis pas aux autres) :

Spoiler:
- la baguette du magicien ... c'est l'ordre dans la liste d'initialisation
- le chapeau du magicien ... c'est l'ordre des attributs dans la classe

... abracadrabra ...



smb

Nombre de messages : 1035
Age : 64
Prénom : Stéphan
Statut : Don de sang, don de vie!
Localisation : Spy
Date d'inscription : 23/01/2007

Revenir en haut Aller en bas

Re: estPlacementPossible [c++]

Message  didi le Jeu 08 Déc 2011, 23:18

smb a écrit:Le secret ?

Allons, un magicien ne dévoile jamais ses secrets !

Mais rien que pour toi voici deux indices (ne le dis pas aux autres) :

Spoiler:
- la baguette du magicien ... c'est l'ordre dans la liste d'initialisation
- le chapeau du magicien ... c'est l'ordre des attributs dans la classe

... abracadrabra ...



http://www.youtube.com/watch?v=EJWc5HUgNNY

didi

Nombre de messages : 215
Prénom : Dinesh
Statut : Smile
Date d'inscription : 21/01/2009

Revenir en haut Aller en bas

Re: estPlacementPossible [c++]

Message  smb le Jeu 08 Déc 2011, 23:30

didi a écrit:
http://www.youtube.com/watch?v=EJWc5HUgNNY

... normal ... il n'a ni baguette ni chapeau lol!

smb

Nombre de messages : 1035
Age : 64
Prénom : Stéphan
Statut : Don de sang, don de vie!
Localisation : Spy
Date d'inscription : 23/01/2007

Revenir en haut Aller en bas

Re: estPlacementPossible [c++]

Message  Hana le Ven 09 Déc 2011, 21:02

smb a écrit:Relis la documentation (la dernière version), et à mon avis tu comprendras que la méthode attend un numéro de ligne de type int (donc des valeurs comme 1, 2, 3, ... et pas '1', '2, '3') ... ce qui change pas mal de chose, non ?

Est-il normal que la méthode estPlacementPossible attend 2 arguments de type int et la doc dit qu'il faut donner une lettre pour la colonne ?

Code:
bool OthelloOutils::estPlacementPossible (bool pionBlanc, int rangee, int colonne, const std::vector< std::vector< OthelloOutils::Etat > > & othellier ) throw (std::logic_error)

rangee   numéro de la rangée où placer le pion, parmi une des valeurs entières 1, 2, 3, ...
colonne   lettre de la colonne où placer le pion, parmi 'a', 'b', 'c', ...

J'obtiens toujours une erreur peu importe la position que je lui donne, pourriez-vous me dire où est mon problème ? Voici mon bout de code :

Code:
const std::vector < std::vector<OthelloOutils::Etat> > & plateauRef = plateau;
char tabColonne[13] = "abcdefghijkl";

try{
         if (OthelloOutils::estPlacementPossible(joueurBlanc, pos.numR, tabColonne[pos.numC], plateauRef)){
            ...
         }else{
            ...
         }
} catch(std::logic_error const& error){
            cerr << "Erreur : estPlacementPossible(...) : Argument(s) invalide(s)" << endl;
}

pos est une Position et donc pos.numR et pos.numC sont des int
joueurBlanc est un attribut de type bool
plateau est un vector de vector d'Etat

Hana

Nombre de messages : 40
Prénom : Quynh Anh
Date d'inscription : 29/03/2011

Revenir en haut Aller en bas

Re: estPlacementPossible [c++]

Message  galaeron le Ven 09 Déc 2011, 21:25

Fonctionne parfaitement ici :
Code:
   
char tabColonne[4] = "abcd";
    try{  if (OthelloOutils::estPlacementPossible(0, 1, tabColonne[1],Othellier)){
          cout << "Suceed\n";
          system("pause");} }
    catch (std::logic_error &e){
        cout << e.what() << endl;
        system("pause");
    }
Vérifie que ta position est correcte .. ( <!> La ligne 0 du vecteur est en faite la ligne 1 pour la fonction <!> (peux être simplement faire +1?))
Quel est le message d'erreur renvoyé?

galaeron

Nombre de messages : 113
Age : 28
Prénom : Arthur
Statut : 3IR12
Date d'inscription : 29/06/2011

Revenir en haut Aller en bas

Re: estPlacementPossible [c++]

Message  Hana le Sam 10 Déc 2011, 12:19

Effectivement mes positions étaient incorrectes, je n'avais pas remarqué que les lignes commencent par 1 au lieu de 0. Merci Very Happy

Hana

Nombre de messages : 40
Prénom : Quynh Anh
Date d'inscription : 29/03/2011

Revenir en haut Aller en bas

Re: estPlacementPossible [c++]

Message  Contenu sponsorisé Aujourd'hui à 10:52


Contenu sponsorisé


Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut


 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum