CKBT
Messages postés2Date d'inscriptionmercredi 18 janvier 2012StatutMembreDernière intervention 2 avril 2012
-
2 avril 2012 à 02:49
CKBT
Messages postés2Date d'inscriptionmercredi 18 janvier 2012StatutMembreDernière intervention 2 avril 2012
-
2 avril 2012 à 19:29
bonjour,
Je débute en programmation C++, je dois réaliser un pseudo jeu d'echec.
Mais j'ai un soucis au niveau de l'echiquier.
Je veux utiliser un tableau de pointeur de type piece mais à la compilation j'ai ce message d'erreur:
(Exception non géree .......dans Echec.exe)
Pouvez vous me dire ce qui ne va pas dans mon code? svp!!!!!!!
Mon projet est composé des classes suivantes:
Position
#include "Position.h"
#include
using namespace std;
Position::Position()
{
l=0;
c=0;
}
Position::Position(int a, int b)//constructeur par copie
{
l=a;
c=b;
}
Position::Position(const Position & p)//acces en lectrue
{
l=p.l;
c=p.c;
}
/*inline int Chaine::getTaille(void) const { return _t; }
inline void Chaine::setTaille(int t) { _t=t; */
int Position::getLigne()const
{
return l;
}
int Position::getColonne()const
{
return c;
}
void Position::setLigne(int _l)
{
l=_l;
}
void Position::setColonne(int _c)
{
c=_c;
}
bool Position::operator==(Position const &p)const
{
return ((this->l==p.l)&&(this->c==p.c));
}
//Position Position::operator=(int a)
//{
// l= a;
// c=a;
// return ;
//}
Piece(classe mere)
#include "Piece.h"
#include "Position.h"
#include "PositionEchiquierException.h"
#include
#include <sstream>
using namespace std;
Piece::Piece(char symbole, int valeur, char couleur,Position p)
{
}
Piece::Piece()
{
}
int Piece::getValeur()const
{
return valeur;
}
char Piece::getSymbole()const
{
return symbole;
}
Position Piece::getPosition()const
{
return p;
}
char Piece:: getCouleur()const
{
return couleur;
}
void Piece:: setValeur(int a)
{
valeur=a;
}
void Piece::setCouleur(char c)
{
couleur=c;
}
void Piece::setSymbole(char s)
{
symbole=s;
}
void Piece::setPosition(Position _p)
{
p=_p;
}
char Piece::asChar()
{
char s=' ';
if(getCouleur()=='B')
{
s=putchar(toupper(getSymbole()));;
}
else if(getCouleur()=='N')
s=putchar(tolower(getSymbole()));
return s;
}
const string Piece::toDebug()
{
string s;
stringstream sst, ssl;
sst
using namespace std;
#include <sstream>
Pion::Pion(char symbole, int valeur,char couleur, Position p):Piece('P', 1, couleur,p)
{
}
Pion::Pion()
{
}
void Pion::deplacement()
{
int ligne=p.getLigne();
if (getCouleur()=='B')
p.setLigne(ligne+1);
else if(getCouleur()=='N')
p.setLigne(ligne-1);
cout<<"deplacement fait!!!!!!";
}
const string Pion::toDebug()
{
string s;
stringstream sst, ssl;
sst<roi
[code=cpp]#include "Roi.h"
#include <string>
#include<sstream>
using namespace std;
Roi::Roi(char s, int val,char couleur, Position p):Piece('R', 10, couleur,p)
{
}
Roi::~Roi(void)
{
}
void Roi:: deplacement()
{
char dir;
cout<<"dans quelle direction? v h d";
cin>>dir;
int c;
int ligne;
char sens;
switch(dir)
{
case 'v':
cout<<"saisissez un sens h ou b"<<endl;
cin>>sens;
if (sens=='h')
{
ligne=p.getLigne()+1;
p.setLigne(ligne);
}
else
{
ligne=p.getLigne()-1;
p.setLigne(ligne);
}
break;
case 'h':
cout<<" sens d ou g"<<endl;
cin>> sens;
c= p.getColonne();
if(sens='d')
p.setColonne(c+1);
else
p.setColonne(c-1);
break;
case 'd':
c=p.getColonne();
ligne= p.getLigne(); break;
}
}
->Cavalier
#include "Cavalier.h"
#include <string>
#include <sstream>
using namespace std;
Cavalier::Cavalier(char s, int val,char couleur, Position p):Piece('C', 3, couleur,p)
{
}
Cavalier::Cavalier()
{
}
void Cavalier::deplacement( )
{
char dir;
cout<<"donnez une direction verticale v horizontal h"<<endl;
cin>>dir;
int colonne;
int ligne;
char sens;
if(dir=='h')
{
cout<<" d pour droite g pour gauche"<<endl;
cin>>sens;
if(sens=='d')
{
colonne=p.getColonne()+1;
p.setColonne(colonne);
cout<<" h pr haut b pour bas"<<endl;
cin>>sens;
if(sens=='h')
{
ligne=p.getLigne()+2;
p.setLigne(ligne);
}
else
{
ligne=p.getLigne()-2;
p.setLigne(ligne);
}
}
else
{
colonne=p.getColonne()-1;
p.setColonne(colonne);
}
}
else//direction verticale
{
cout<<" h pr haut b pour bas"<<endl;
cin>>sens;
if(sens=='h')
{
ligne=p.getLigne()+1;
p.setLigne(ligne);
cout<<" d pour droite g pour gauche"<<endl;
cin>>sens;
if(sens=='d')
{
colonne=p.getColonne()+2;
p.setColonne(colonne);
}
else
{
colonne=p.getColonne()-2;
p.setColonne(colonne);
}
}
else
{
ligne=p.getLigne()-1;
p.setLigne(ligne);
}
}
cout<<"le deplacement a ete fait";
}
const string Cavalier::toDebug()
{
string s;
stringstream sst, ssl;
sst<0;i--)
{
cout<<endl<<i;
for(int j=0;j<8;j++)
{
if(ptab[i][j]=NULL)
cout<<"|--";
else
cout<asChar();
}
}
}
BunoCS
Messages postés15480Date d'inscriptionlundi 11 juillet 2005StatutModérateurDernière intervention26 juillet 2024103 2 avril 2012 à 09:27
Hello,
mais à la compilation j'ai ce message d'erreur
Non, non...c'est plutôt à l'exécution, ça...
Là, comme ça, on ne va pas pouvoir t'aider. Essaies de le lancer en debug, pas-à-pas et voir ce qui cloche...
@+
Buno, Admin CS
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
cptpingu
Messages postés3839Date d'inscriptiondimanche 12 décembre 2004StatutModérateurDernière intervention29 juin 2024124 2 avril 2012 à 10:27
Quelques conseils:
- Évite les "using namespace", voir: http://0217021.free.fr/portfolio/axel.berardino/articles/bon-usage-using-namespace
- Si tu retournes un élément par copie inutile de lui adjoindre "const". Ex: "const std::string pouet()" devrait être "std::string pouet()".
- "~Echiquier(void)" en C++, une fonction sans argument ne prend pas "void" mais rien du tout. Devrait être "~Echiquier()".
- Préfère 0 à NULL, voir: http://0217021.free.fr/portfolio/axel.berardino/articles/null-en-cpp
- Les attributs de classe sont généralement différenciés des autres par un "_". À la place de l et c, tu devrais plutôt avoir _l, _c.
- Utilise toujours la liste d'initialisation plutôt que d'initialiser tes variables dans le constructeur. Ex:
Position::Position()
{
l=0;
c=0;
}
devrait être
Position::Position()
: _l(0), _c(0)
{
}
- Pense à activer les warnings, parce qu'il y a plein de petites erreurs qu'un compilateur devrait normalement t'indiquer (notamment les const inutiles).
Enfin, au niveau du code, ceci me choque:
"for(int i=8; i>0;i--)"
Si ton échiquier est un tableau de 8x8, alors les bornes sont 0..7. Or ici, tu a 8 ! Donc tu dépasses les bornes. "int i = 7" serait préférable.
________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question