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
|
#include <iostream>
#include <cmath>
using namespace std;
enum Pavillon { JollyRogers, CompagnieDuSenegal, CompagnieDOstende };
enum Etat { Intact, Endommage, Coule };
int sq(int x)
{
return x*x;
}
class Coordonnees
{
public:
Coordonnees(int un_x, int un_y) : x_(un_x), y_(un_y) {}
int x() const {
return x_;
}
int y() const {
return y_;
}
void operator+=(Coordonnees const& autre);
private:
int x_;
int y_;
};
class Navire
{
private:
Coordonnees position_;
protected:
Pavillon pavillon_;
Etat etat_;
public:
Navire(int x, int y, Pavillon p) :
position_(x, y),
pavillon_(p),
etat_(Etat::Intact) {};
Coordonnees position() const { return position_; }
void avancer(int de_x, int de_y) {
position_ += Coordonnees(de_x, de_y);
}
void renflouer() { etat_ = Etat::Intact; }
friend std::ostream& operator <<(std::ostream&, const Coordonnees&);
void afficher(ostream& sortie) const {
sortie << " en " << position_
<< " battant pavillon " << pavillon_
<< ", " << etat_;
}
};
ostream& operator<< (ostream& sortie, Coordonnees const& c) {
sortie << "(" << c.x() << ", " << c.y() << ")";
return sortie;
} |
Partager