-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathPorte.cpp
More file actions
executable file
·105 lines (83 loc) · 1.75 KB
/
Porte.cpp
File metadata and controls
executable file
·105 lines (83 loc) · 1.75 KB
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
#include "Porte.h"
using namespace std;
/**
*Constructeur
*/
Porte::Porte(string nom, Case* c): Piece(nom), cheminSecret(c) {}
/**
*Constructeur
*/
Porte::Porte(string nom,int a, int b, Case* c) :Piece(a,b,nom),cheminSecret(c) {}
/**
*Constructeur
*/
Porte::Porte(const Porte& p,int a, int b):Piece(a,b,p.Porte::nom_), tabPiece_(p.tabPiece_){
cheminSecret = p.cheminSecret;
}
/**
* Affichage d'erreur
*/
string Porte::toString(){
string res;
ostringstream oss;
//oss << "["<< x_ << "]" << "["<< y_ << "]p";
oss<<"¤";
res = oss.str();
return res;
}
/**
* Methode qui ajoute une piece à la porte
* @param une piece a ajouter
*/
void Porte::ajouterPiece(Piece* p){
tabPiece_.push_back(p);
p->setPorte(this);
}
//Getter
/**
* Retourne le nom de la porte
* @param une case pointant vers la porte de l'autre piece
*/
string Porte::getNom() const{
return Porte::nom_;
}
/**
* Modificateur du chemin secret
* @return nom le nom de la porte
*/
void Porte::setCheminSecret(Case* c){
cheminSecret= c;
}
/**
* Methode qui va réaliser l'action selon la case
* @return le nom
*/
std::string Porte::action(){
return nom_;
}
/**
* Methode qui trouve tous les chemins possibles
* @param de le nombre a parcourir
* @param res le vetor des chemins
* @param p le plateau
*/
void Porte::trouverChemin(int de, vector<Case*> &res, Plateau* p){
//tester le taille du res
if(res.size() == 0){
Case::trouverChemin(de, res, p);
if(cheminSecret!=NULL)
res.push_back(cheminSecret);
}
else{
//on insere l'element courant
if(std::find(res.begin(), res.end(), this) == res.end())
res.push_back(this);
}
}
/**
* Destructeur
*/
Porte::~Porte()
{
//dtor
}