1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128
|
#include<iostream>
#include<string>
using namespace std;
class Case {
private:
int x ; //ligne
int y ; //colonne
char etiq ; // etiquette pour savoir si c'est un pion P ou vide '_'
public:
// getters et setters
int getX(){return x;}
int getY(){return y;}
void setX(int a){x = a;}
void setY(int b){y=b;}
void setEtiq(char C){etiq = C;}
char getEtiq(){return etiq;}
// constructeur
Case();
Case(const Case& C); // constructeur par recopie je ne sais pas si la déclaration est bonne
Case(int lig,int col,char& etiqette);
~Case();
void Afficher();
ostream& operator <<(const Case& B); // surcharge de l'operateur << afin d'afficher une case
};
// deinition des méthodes Case
Case::Case():x(0),y(0),etiq('_'){}
Case::Case(const Case& D){
x= D.x;
y = D.y;
etiq = D.etiq;
}
Case::Case(int lig,int col,char& etiqette):x(lig),y(col),etiq(etiqette){}
ostream& operator <<(ostream& out, Case B){
out << "ligne= "<<B.getX() <<" "<<"colonne= " << B.getY() <<" "<<"etiquette= "<<B.getEtiq()<< endl;
}
void Case::Afficher(){
cout << "renseignement sur cette case" << *this << endl ;
}
Case::~Case(){}
// Class Piece
class Piece {
private:
Case* place; // je pensais qu'une pièce pointe sur une case
public:
Piece();
~Piece();
void Deplacer(int ligne , int colonne,char C); // pour pouvoir le déplacer
void DeplacerCase(const Case& B); // délacement à partir d'une case
};
Piece::Piece(){
place = new Case();
}
Piece::~Piece(){}
void Piece::Deplacer(int ligne , int colonne , char P){
place->setX(ligne);
place->setY(colonne);
place->setEtiq(P);
}
void Piece::DeplacerCase(const Case& C1){
int ligne1;
ligne1 = C1.getX();
int colonne1 = C1.getY();
char eti = place->getEtiq();
place->setX(ligne1); // on change ligne piece
place->setY(colonne1); // on change colonne piece
C1.setEtiq(eti); // on change l'étiquette de la case
}
// classe Pion : un pion est une pièce
class Pion:public Piece {
private:
string couleur;
char eti ;
public:
Pion(string noir);
~Pion();
void setCouleur(string N){couleur = N;}
};
Pion::Pion(string noir){
Piece();// on fait appel au constructeur de base
couleur = "noir";
eti = 'p';
}
Pion::~Pion(){}
// more pointers
#include <iostream>
using namespace std;
int main ()
{
Case P1;
Pion P2("noir");
P1.Afficher();
return 0;
} |
Partager