coucou

Dependencies:   RoboClaw mbed

Fork of Robot2016_2-0 by ARES

Committer:
IceTeam
Date:
Thu May 05 08:46:03 2016 +0000
Revision:
76:cd8c7da76768
Parent:
75:195dd2bb13a3
test

Who changed what in which revision?

UserRevisionLine numberNew contents of line
IceTeam 46:be4eebf40568 1 #include "map.h"
IceTeam 46:be4eebf40568 2
IceTeam 57:86f491f5b25d 3 /* Dernier Changement : Romain 20h30 */
IceTeam 57:86f491f5b25d 4
IceTeam 64:24e1057a97f7 5 void map::Build_Objectives() {
IceTeam 69:1b257fb65281 6 if (objectifs.empty()) {
IceTeam 69:1b257fb65281 7 logger.printf("map::Build_Objectives Creation des Objectifs ...\n\r");
IceTeam 69:1b257fb65281 8 if (couleur == VERT) {
IceTeam 75:195dd2bb13a3 9 addObj (objectif (OBJ_BLOC_PRISE, 120, 1000, 0, Codo, Parasol, pince));
IceTeam 75:195dd2bb13a3 10 addObj (objectif (OBJ_BLOC_LACHE, 120, 1000, 0, Codo, Parasol, pince, 50));
IceTeam 69:1b257fb65281 11 }
IceTeam 69:1b257fb65281 12 else {
IceTeam 75:195dd2bb13a3 13 addObj (objectif (OBJ_BLOC_PRISE, 3000-350, 850, 0, Codo, Parasol, pince));
IceTeam 75:195dd2bb13a3 14 addObj (objectif (RIEN, 3000-550, 850, 0, Codo, Parasol, pince));
IceTeam 75:195dd2bb13a3 15 addObj (objectif (OBJ_BLOC_LACHE, 3000-1050, 1100, 0, Codo, Parasol, pince));
IceTeam 75:195dd2bb13a3 16 addObj (objectif (RIEN, 3000-200, 850, 0, Codo, Parasol, pince));
IceTeam 69:1b257fb65281 17 }
IceTeam 64:24e1057a97f7 18 }
IceTeam 64:24e1057a97f7 19 }
IceTeam 64:24e1057a97f7 20
IceTeam 66:47353c8122de 21 map::map (Odometry* nodo, AX12 * np, ControlleurPince * npince, int ncouleur, int nformation) : Codo(nodo), Parasol(np), pince(npince) {
IceTeam 64:24e1057a97f7 22 couleur = ncouleur;
IceTeam 64:24e1057a97f7 23 formation = nformation;
IceTeam 64:24e1057a97f7 24
IceTeam 64:24e1057a97f7 25 if (couleur == VERT) {
IceTeam 64:24e1057a97f7 26 Codo->setPos(X_START_VERT, Y_START, 0);
IceTeam 64:24e1057a97f7 27 }
IceTeam 64:24e1057a97f7 28 else {
IceTeam 76:cd8c7da76768 29 Codo->setPos(X_START_VIOLET, Y_START, -PI);
IceTeam 64:24e1057a97f7 30 }
IceTeam 69:1b257fb65281 31 Build();
IceTeam 69:1b257fb65281 32 Build_Objectives();
IceTeam 46:be4eebf40568 33 }
IceTeam 46:be4eebf40568 34
IceTeam 46:be4eebf40568 35 void map::addObs (obsCarr nobs) {
IceTeam 46:be4eebf40568 36 obs.push_back (nobs);
IceTeam 46:be4eebf40568 37 }
IceTeam 60:8d2320a54a32 38 void map::addObj (objectif nobj) {
IceTeam 60:8d2320a54a32 39 objectifs.push_back(nobj);
IceTeam 60:8d2320a54a32 40 }
IceTeam 46:be4eebf40568 41
IceTeam 46:be4eebf40568 42 void map::FindWay (float depX, float depY, float arrX, float arrY) {
IceTeam 46:be4eebf40568 43 point depart(depX, depY);
IceTeam 46:be4eebf40568 44 point arrivee(arrX, arrY);
IceTeam 46:be4eebf40568 45 FindWay(depart, arrivee);
IceTeam 46:be4eebf40568 46 }
IceTeam 46:be4eebf40568 47
IceTeam 46:be4eebf40568 48 void map::FindWay (point dep, point arr) {
IceTeam 46:be4eebf40568 49 //logger.printf("On a cherche un chemin\n\r");
IceTeam 46:be4eebf40568 50 nVector<pointParcours> open;
IceTeam 46:be4eebf40568 51 nVector<pointParcours> close;
IceTeam 46:be4eebf40568 52 points4 tmp;
IceTeam 46:be4eebf40568 53 bool val[4] = {true,true,true,true};
IceTeam 46:be4eebf40568 54 int os = obs.size ();
IceTeam 46:be4eebf40568 55 int i, j;
IceTeam 46:be4eebf40568 56 bool ended=false; // On teste tous les points ajoutes dans l'open list pour savoir s'il y a intersection avec un obstacle. Ended passe à true quand aucun ne coupe un obstacle.
IceTeam 46:be4eebf40568 57 endedParc = false;
IceTeam 46:be4eebf40568 58
IceTeam 46:be4eebf40568 59 path.clear();
IceTeam 46:be4eebf40568 60
IceTeam 46:be4eebf40568 61 pointParcours depP (dep, NULL, arr);
IceTeam 46:be4eebf40568 62 int indTMP1=0; // Le point actuel
IceTeam 46:be4eebf40568 63 open.push_back (depP);
IceTeam 46:be4eebf40568 64
IceTeam 46:be4eebf40568 65 while (!ended && !open.empty ()) {
IceTeam 46:be4eebf40568 66 for (i = 0; i < open.size (); ++i) {
IceTeam 46:be4eebf40568 67 if (open[i].getP2 () < open[indTMP1].getP2 ())
IceTeam 46:be4eebf40568 68 indTMP1 = i;
IceTeam 46:be4eebf40568 69 }
IceTeam 46:be4eebf40568 70
IceTeam 46:be4eebf40568 71 close.push_first (open[indTMP1]);
IceTeam 46:be4eebf40568 72 open.erase (indTMP1);
IceTeam 46:be4eebf40568 73 indTMP1 = 0;
IceTeam 46:be4eebf40568 74
IceTeam 46:be4eebf40568 75 ended = true;
IceTeam 46:be4eebf40568 76 for (i = 0; i < os; ++i) {
IceTeam 46:be4eebf40568 77 if (obs[i].getCroisement (close[indTMP1].getX (), close[indTMP1].getY (), arr)) {
IceTeam 46:be4eebf40568 78 ended = false;
IceTeam 46:be4eebf40568 79 tmp = obs[i].getPoints ();
IceTeam 46:be4eebf40568 80
IceTeam 56:4fd9636dfb36 81 // On vérifie si le point est sur la table
IceTeam 56:4fd9636dfb36 82 if (tmp.p0.getX() < min_x_table || tmp.p0.getY() < min_y_table || tmp.p0.getX() > max_x_table || tmp.p0.getY() > max_y_table)
IceTeam 56:4fd9636dfb36 83 val[0] = false;
IceTeam 46:be4eebf40568 84 // On vérifie si le point croise un obstacle
IceTeam 56:4fd9636dfb36 85 for (j = 0; j < os && val[0]; ++j)
IceTeam 46:be4eebf40568 86 if (obs[j].getCroisement (tmp.p0, close[indTMP1]))
IceTeam 46:be4eebf40568 87 val[0] = false;
IceTeam 46:be4eebf40568 88 // On vérifie si le point existe déjà dans la liste ouverte
IceTeam 56:4fd9636dfb36 89 for (j = 0; j < open.size () && val[0]; ++j) {
IceTeam 46:be4eebf40568 90 if (open[j] == tmp.p0)
IceTeam 46:be4eebf40568 91 val[0] = false;
IceTeam 46:be4eebf40568 92 }
IceTeam 46:be4eebf40568 93 // On vérifie si le point existe déjà dans la liste fermée
IceTeam 56:4fd9636dfb36 94 for (j = 0; j < close.size () && val[0]; ++j) {
IceTeam 46:be4eebf40568 95 if (close[j] == tmp.p0)
IceTeam 46:be4eebf40568 96 val[0] = false;
IceTeam 46:be4eebf40568 97 }
IceTeam 46:be4eebf40568 98 if (val[0]) {
IceTeam 46:be4eebf40568 99 open.push_back (pointParcours (tmp.p0, &close[indTMP1], arr));
IceTeam 46:be4eebf40568 100 }
IceTeam 46:be4eebf40568 101
IceTeam 46:be4eebf40568 102 // On repete l'operation pour le second point
IceTeam 56:4fd9636dfb36 103 if (tmp.p1.getX() < min_x_table || tmp.p1.getY() < min_y_table || tmp.p1.getX() > max_x_table || tmp.p1.getY() > max_y_table)
IceTeam 56:4fd9636dfb36 104 val[1] = false;
IceTeam 56:4fd9636dfb36 105 for (j = 0; j < os && val[1]; ++j)
IceTeam 46:be4eebf40568 106 if (obs[j].getCroisement (tmp.p1, close[indTMP1]))
IceTeam 46:be4eebf40568 107 val[1] = false;
IceTeam 56:4fd9636dfb36 108 for (j = 0; j < open.size () && val[1]; ++j) {
IceTeam 46:be4eebf40568 109 if (open[j] == tmp.p1)
IceTeam 46:be4eebf40568 110 val[1] = false;
IceTeam 46:be4eebf40568 111 }
IceTeam 56:4fd9636dfb36 112 for (j = 0; j < close.size () && val[1]; ++j) {
IceTeam 46:be4eebf40568 113 if (close[j] == tmp.p1)
IceTeam 46:be4eebf40568 114 val[1] = false;
IceTeam 46:be4eebf40568 115 }
IceTeam 46:be4eebf40568 116 if (val[1]) {
IceTeam 46:be4eebf40568 117 open.push_back (pointParcours (tmp.p1, &close[indTMP1], arr));
IceTeam 46:be4eebf40568 118 }
IceTeam 46:be4eebf40568 119
IceTeam 46:be4eebf40568 120 // On répète l'opération pour le troisième point
IceTeam 56:4fd9636dfb36 121 if (tmp.p2.getX() < min_x_table || tmp.p2.getY() < min_y_table || tmp.p2.getX() > max_x_table || tmp.p2.getY() > max_y_table)
IceTeam 56:4fd9636dfb36 122 val[2] = false;
IceTeam 56:4fd9636dfb36 123 for (j = 0; j < os && val[2]; ++j)
IceTeam 46:be4eebf40568 124 if (obs[j].getCroisement (tmp.p2, close[indTMP1]))
IceTeam 46:be4eebf40568 125 val[2] = false;
IceTeam 56:4fd9636dfb36 126 for (j = 0; j < open.size () && val[2]; ++j) {
IceTeam 46:be4eebf40568 127 if (open[j] == tmp.p2)
IceTeam 46:be4eebf40568 128 val[2] = false;
IceTeam 46:be4eebf40568 129 }
IceTeam 56:4fd9636dfb36 130 for (j = 0; j < close.size () && val[2]; ++j) {
IceTeam 46:be4eebf40568 131 if (close[j] == tmp.p2)
IceTeam 46:be4eebf40568 132 val[2] = false;
IceTeam 46:be4eebf40568 133 }
IceTeam 46:be4eebf40568 134 if (val[2]) {
IceTeam 46:be4eebf40568 135 open.push_back (pointParcours (tmp.p2, &close[indTMP1], arr));
IceTeam 46:be4eebf40568 136 }
IceTeam 46:be4eebf40568 137
IceTeam 46:be4eebf40568 138 // On répète l'opération pour le quatrieme point
IceTeam 56:4fd9636dfb36 139 if (tmp.p3.getX() < min_x_table || tmp.p3.getY() < min_y_table || tmp.p3.getX() > max_x_table || tmp.p3.getY() > max_y_table)
IceTeam 56:4fd9636dfb36 140 val[3] = false;
IceTeam 56:4fd9636dfb36 141 for (j = 0; j < os && val[3]; ++j)
IceTeam 46:be4eebf40568 142 if (obs[j].getCroisement (tmp.p3, close[indTMP1]))
IceTeam 46:be4eebf40568 143 val[3] = false;
IceTeam 56:4fd9636dfb36 144 for (j = 0; j < open.size () && val[3]; ++j) {
IceTeam 46:be4eebf40568 145 if (open[j] == tmp.p3)
IceTeam 46:be4eebf40568 146 val[3] = false;
IceTeam 46:be4eebf40568 147 }
IceTeam 56:4fd9636dfb36 148 for (j = 0; j < close.size () && val[3]; ++j) {
IceTeam 46:be4eebf40568 149 if (close[j] == tmp.p3)
IceTeam 46:be4eebf40568 150 val[3] = false;
IceTeam 46:be4eebf40568 151 }
IceTeam 46:be4eebf40568 152 if (val[3]) {
IceTeam 46:be4eebf40568 153 open.push_back (pointParcours (tmp.p3, &close[indTMP1], arr));
IceTeam 46:be4eebf40568 154 }
IceTeam 46:be4eebf40568 155
IceTeam 46:be4eebf40568 156 val[0] = true;
IceTeam 46:be4eebf40568 157 val[1] = true;
IceTeam 46:be4eebf40568 158 val[2] = true;
IceTeam 46:be4eebf40568 159 val[3] = true;
IceTeam 46:be4eebf40568 160 }
IceTeam 46:be4eebf40568 161 }
IceTeam 46:be4eebf40568 162 }
IceTeam 46:be4eebf40568 163
IceTeam 46:be4eebf40568 164 /* L'algorithme n'est pas bon. Je devrais prendre ici le plus court chemin vers l'arrivée pour ceux qui ne sont pas bloqués, et pas un aléatoire ... */
IceTeam 46:be4eebf40568 165 if (ended) {
IceTeam 46:be4eebf40568 166 pointParcours* pente;
IceTeam 46:be4eebf40568 167 pente = &close[0];
IceTeam 46:be4eebf40568 168 while (pente != NULL) {
IceTeam 46:be4eebf40568 169 path.push_first (*pente);
IceTeam 46:be4eebf40568 170 pente = pente->getPere ();
IceTeam 46:be4eebf40568 171 }
IceTeam 46:be4eebf40568 172 path.push_back (pointParcours(arr, NULL, arr));
IceTeam 46:be4eebf40568 173 path.erase(0);
IceTeam 46:be4eebf40568 174 endedParc = true;
IceTeam 46:be4eebf40568 175 /*
IceTeam 46:be4eebf40568 176 if (path.size() > 1)
IceTeam 46:be4eebf40568 177 path.erase(0);*/
IceTeam 46:be4eebf40568 178 }
IceTeam 46:be4eebf40568 179 }
IceTeam 46:be4eebf40568 180
IceTeam 46:be4eebf40568 181 void map::Execute(float XObjectif, float YObjectif) {
IceTeam 46:be4eebf40568 182 logger.printf("Findway %f-%f -> %f-%f\n\r", Codo->getX(), Codo->getY(), XObjectif, YObjectif);
IceTeam 46:be4eebf40568 183 FindWay (Codo->getX(), Codo->getY(), XObjectif, YObjectif);
IceTeam 46:be4eebf40568 184
IceTeam 46:be4eebf40568 185 if (endedParc) {
IceTeam 46:be4eebf40568 186 //logger.printf("\n\r");
IceTeam 46:be4eebf40568 187 for (int i = 0; i < path.size (); i++) {
IceTeam 46:be4eebf40568 188 logger.printf("Goto %d/%d [%f, %f]... \n\r", i, path.size()-1, path[i].getX(), path[i].getY());
IceTeam 46:be4eebf40568 189 //the = (float) atan2((double) (p[i].gety() - odo.getY()), (double) (p[i].getx() - odo.getX()));
IceTeam 46:be4eebf40568 190 Codo->GotoXY((double)path[i].getX(), (double)path[i].getY());
IceTeam 46:be4eebf40568 191 logger.printf("Goto Fini\n\r");
IceTeam 46:be4eebf40568 192 }
IceTeam 46:be4eebf40568 193 //logger.printf("Chemin fini !\n\r");
IceTeam 46:be4eebf40568 194 }
IceTeam 46:be4eebf40568 195 else {
IceTeam 46:be4eebf40568 196 logger.printf("Chemin pas trouve ...\n\r");
IceTeam 46:be4eebf40568 197 }
IceTeam 46:be4eebf40568 198 endedParc = false;
IceTeam 57:86f491f5b25d 199 }
IceTeam 57:86f491f5b25d 200
IceTeam 60:8d2320a54a32 201 void map::Execute(int obj) {
IceTeam 68:d19988565dfd 202 objectif o = objectifs[obj];
IceTeam 68:d19988565dfd 203 logger.printf("map::Execute(int obj) Realisation de l'objectif %d\n\r", obj);
IceTeam 69:1b257fb65281 204 logger.printf("Depart [%f, %f] Objectif [%f, %f]\n\r", Codo->getX(), Codo->getY(), o.getX(), o.getY());
IceTeam 57:86f491f5b25d 205 // logger.printf("Findway %f-%f -> %f-%f\n\r", Codo->getX(), Codo->getY(), XObjectif, YObjectif);
IceTeam 57:86f491f5b25d 206 FindWay (Codo->getX(), Codo->getY(), o.getX(), o.getY());
IceTeam 57:86f491f5b25d 207
IceTeam 57:86f491f5b25d 208 if (endedParc) {
IceTeam 57:86f491f5b25d 209 //logger.printf("\n\r");
IceTeam 57:86f491f5b25d 210 for (int i = 0; i < path.size (); i++) {
IceTeam 57:86f491f5b25d 211 // logger.printf("Goto %d/%d [%f, %f]... \n\r", i, path.size()-1, path[i].getX(), path[i].getY());
IceTeam 57:86f491f5b25d 212 //the = (float) atan2((double) (p[i].gety() - odo.getY()), (double) (p[i].getx() - odo.getX()));
IceTeam 57:86f491f5b25d 213 Codo->GotoXY((double)path[i].getX(), (double)path[i].getY());
IceTeam 65:7bf11abfefc3 214 Codo->Stop();
IceTeam 57:86f491f5b25d 215 // logger.printf("Goto Fini\n\r");
IceTeam 57:86f491f5b25d 216 }
IceTeam 63:176d04975f06 217 Codo->GotoThet(o.getThet());
IceTeam 60:8d2320a54a32 218 o.Action();
IceTeam 57:86f491f5b25d 219 //logger.printf("Chemin fini !\n\r");
IceTeam 57:86f491f5b25d 220 }
IceTeam 57:86f491f5b25d 221 else {
IceTeam 57:86f491f5b25d 222 logger.printf("Chemin pas trouve ...\n\r");
IceTeam 57:86f491f5b25d 223 }
IceTeam 57:86f491f5b25d 224 endedParc = false;
IceTeam 60:8d2320a54a32 225 }
IceTeam 60:8d2320a54a32 226
IceTeam 64:24e1057a97f7 227 void map::Execute() {
IceTeam 64:24e1057a97f7 228 for (int i = 0; i < objectifs.size();++i) {
IceTeam 69:1b257fb65281 229 logger.printf("map::Execute() Realisation de l'objectif %d\n\r", i);
IceTeam 64:24e1057a97f7 230 Execute(i);
IceTeam 64:24e1057a97f7 231 }
IceTeam 64:24e1057a97f7 232 }
IceTeam 64:24e1057a97f7 233
IceTeam 66:47353c8122de 234 void map::Build () {
IceTeam 68:d19988565dfd 235 logger.printf("map::Build Creation des obstacles ...\n\r");
IceTeam 60:8d2320a54a32 236 if (couleur == VERT) {
IceTeam 60:8d2320a54a32 237 max_x_table = 1400;
IceTeam 64:24e1057a97f7 238 max_y_table = 1900;
IceTeam 64:24e1057a97f7 239 min_x_table = 100;
IceTeam 64:24e1057a97f7 240 min_y_table = 100;
IceTeam 60:8d2320a54a32 241 }
IceTeam 60:8d2320a54a32 242 else {
IceTeam 60:8d2320a54a32 243 max_x_table = 2900;
IceTeam 64:24e1057a97f7 244 max_y_table = 1900;
IceTeam 60:8d2320a54a32 245 min_x_table = 1600;
IceTeam 64:24e1057a97f7 246 min_y_table = 100;
IceTeam 60:8d2320a54a32 247 }
IceTeam 60:8d2320a54a32 248
IceTeam 63:176d04975f06 249 if (couleur == VERT) {
IceTeam 64:24e1057a97f7 250 // Attention les commentaires sont inversées par rapport aux valeur en x et y des obstacles.
IceTeam 64:24e1057a97f7 251 // Il faut lire les commentaires de la façon dont la carte est présentée dans le règlement
IceTeam 64:24e1057a97f7 252 // Un / signifie un point de départ. Milieu/Haut/Haut signifie que l'on part du milieu, que l'on va en haut puis encore en haut
IceTeam 64:24e1057a97f7 253
IceTeam 60:8d2320a54a32 254 addObs(obsCarr (0, 2000, 250, 150)); // Coté haut droite
IceTeam 60:8d2320a54a32 255 addObs(obsCarr (200, 2000, 200, 50));
IceTeam 64:24e1057a97f7 256
IceTeam 64:24e1057a97f7 257 addObs(obsCarr (800, 100, 100, 15)); // Petit obstacle en haut à gauche
IceTeam 60:8d2320a54a32 258 }
IceTeam 60:8d2320a54a32 259 else {
IceTeam 60:8d2320a54a32 260 addObs(obsCarr (3000, 2000, 250, 150)); // Coté bas droite
IceTeam 60:8d2320a54a32 261 addObs(obsCarr (2800, 2000, 200, 50));
IceTeam 64:24e1057a97f7 262
IceTeam 64:24e1057a97f7 263 addObs(obsCarr (2200, 100, 100, 15)); // Petit Obstacle en haut à gauche
IceTeam 60:8d2320a54a32 264 }
IceTeam 60:8d2320a54a32 265
IceTeam 64:24e1057a97f7 266 addObs(obsCarr (1500, 750, 1100, 15)); // Obstacle du milieu à la verticale
IceTeam 64:24e1057a97f7 267 addObs(obsCarr (1500, 1050, 20, 300)); // Vitre du milieu (horizontale)
IceTeam 60:8d2320a54a32 268
IceTeam 60:8d2320a54a32 269 if (formation == 1) {
IceTeam 60:8d2320a54a32 270 Build_formation_1 (couleur);
IceTeam 60:8d2320a54a32 271 }
IceTeam 64:24e1057a97f7 272 if (formation == 2) {
IceTeam 64:24e1057a97f7 273 Build_formation_2 (couleur);
IceTeam 64:24e1057a97f7 274 }
IceTeam 72:b628daa54f3c 275 if (formation == 3) {
IceTeam 72:b628daa54f3c 276 Build_formation_3 (couleur);
IceTeam 72:b628daa54f3c 277 }
IceTeam 60:8d2320a54a32 278 else {
IceTeam 64:24e1057a97f7 279 addObs(obsCarr (1250, 1000, 220, 220)); // Obstacles du test standard hors-coupe. A ignorer
IceTeam 60:8d2320a54a32 280 addObs(obsCarr (1500, 750, 220, 220));
IceTeam 60:8d2320a54a32 281 addObs(obsCarr (1500, 1250, 220, 220));
IceTeam 60:8d2320a54a32 282 }
IceTeam 60:8d2320a54a32 283 }
IceTeam 60:8d2320a54a32 284
IceTeam 60:8d2320a54a32 285 void map::Build_formation_1 (int couleur) {
IceTeam 68:d19988565dfd 286 logger.printf("map::Build_formation1 Ajout des coquillages de la formation 1 ...\n\r");
IceTeam 60:8d2320a54a32 287 if (couleur == VERT) {
IceTeam 64:24e1057a97f7 288 addObs(obsCarr (200, 2000-450, 40, 40)); // Coquillage du haut - droite
IceTeam 64:24e1057a97f7 289 addObs(obsCarr (200, 2000-750, 40, 40)); // Coquillage sur le même axe horizontal
IceTeam 60:8d2320a54a32 290
IceTeam 64:24e1057a97f7 291 addObs(obsCarr (900, 2000-550, 40, 40)); // Coqullage du milieu/haut/haut
IceTeam 64:24e1057a97f7 292 addObs(obsCarr (1200, 2000-350, 40, 40)); // Coquillage du milieu/haut
IceTeam 60:8d2320a54a32 293
IceTeam 64:24e1057a97f7 294 addObs(obsCarr (1500, 2000-550, 40, 40)); // Coquillage du milieu gauche
IceTeam 64:24e1057a97f7 295 addObs(obsCarr (1500, 2000-350, 40, 40)); // Coquillage du milieu droit
IceTeam 60:8d2320a54a32 296
IceTeam 60:8d2320a54a32 297 //addObs(obsCarr (3000-900, 2000-550, 40, 40));
IceTeam 64:24e1057a97f7 298 addObs(obsCarr (3000-1200, 2000-350, 40, 40)); // Coquillage du milieu bas
IceTeam 60:8d2320a54a32 299
IceTeam 60:8d2320a54a32 300 //addObs(obsCarr (3000-200, 2000-450, 40, 40)); // Coquillages du bas droite
IceTeam 60:8d2320a54a32 301 //addObs(obsCarr (3000-200, 2000-750, 40, 40));
IceTeam 60:8d2320a54a32 302 }
IceTeam 60:8d2320a54a32 303 else {
IceTeam 60:8d2320a54a32 304 //addObs(obsCarr (200, 2000-450, 40, 40)); // Coquillages du haut droit
IceTeam 60:8d2320a54a32 305 //addObs(obsCarr (200, 2000-750, 40, 40));
IceTeam 60:8d2320a54a32 306
IceTeam 60:8d2320a54a32 307 //addObs(obsCarr (900, 2000-550, 40, 40));
IceTeam 60:8d2320a54a32 308 addObs(obsCarr (1200, 2000-350, 40, 40)); // Coquillages du milieu/haut
IceTeam 60:8d2320a54a32 309
IceTeam 64:24e1057a97f7 310 addObs(obsCarr (1500, 2000-550, 40, 40)); // Coquillage du milieu gauche
IceTeam 64:24e1057a97f7 311 addObs(obsCarr (1500, 2000-350, 40, 40)); // Coquillage du milieu droite
IceTeam 60:8d2320a54a32 312
IceTeam 64:24e1057a97f7 313 addObs(obsCarr (3000-900, 2000-550, 40, 40)); // Coquillage du milieu/bas
IceTeam 64:24e1057a97f7 314 addObs(obsCarr (3000-1200, 2000-350, 40, 40)); // Coquillage du milieu/bas/bas
IceTeam 60:8d2320a54a32 315
IceTeam 60:8d2320a54a32 316 addObs(obsCarr (3000-200, 2000-450, 40, 40)); // Coquillages du bas droite
IceTeam 64:24e1057a97f7 317 addObs(obsCarr (3000-200, 2000-750, 40, 40)); // Coquillage sur le même axe horizontal
IceTeam 60:8d2320a54a32 318 }
IceTeam 60:8d2320a54a32 319 }
IceTeam 60:8d2320a54a32 320
IceTeam 60:8d2320a54a32 321 void map::Build_formation_2 (int couleur) {
IceTeam 60:8d2320a54a32 322 if (couleur == VERT) {
IceTeam 64:24e1057a97f7 323 addObs(obsCarr (200, 2000-450, 40, 40)); // Coquillage du haut gauche
IceTeam 64:24e1057a97f7 324 addObs(obsCarr (200, 2000-750, 40, 40)); // Coquillage du haut droite
IceTeam 60:8d2320a54a32 325
IceTeam 64:24e1057a97f7 326 addObs(obsCarr (600, 2000-450, 40, 40)); // Coquillage du milieu/haut/haut droite
IceTeam 64:24e1057a97f7 327 addObs(obsCarr (600, 2000-750, 40, 40)); // Coquillage du milieu/haut/haut sur le même axe horizontal
IceTeam 64:24e1057a97f7 328
IceTeam 64:24e1057a97f7 329 addObs(obsCarr (1200, 2000-350, 40, 40)); // Coquillage du milieu/haut droite
IceTeam 60:8d2320a54a32 330 }
IceTeam 60:8d2320a54a32 331 else {
IceTeam 60:8d2320a54a32 332 //addObs(obsCarr (200, 2000-450, 40, 40)); // Coquillages du haut droit
IceTeam 60:8d2320a54a32 333 //addObs(obsCarr (200, 2000-750, 40, 40));
IceTeam 60:8d2320a54a32 334
IceTeam 60:8d2320a54a32 335 //addObs(obsCarr (900, 2000-550, 40, 40));
IceTeam 64:24e1057a97f7 336 addObs(obsCarr (3000-200, 2000-450, 40, 40)); // Coquillage du bas gauche
IceTeam 64:24e1057a97f7 337 addObs(obsCarr (3000-200, 2000-750, 40, 40)); // Coquillage du bas droite
IceTeam 64:24e1057a97f7 338
IceTeam 64:24e1057a97f7 339 addObs(obsCarr (3000-600, 2000-450, 40, 40)); // Coquillage du milieu bas/bas droite
IceTeam 64:24e1057a97f7 340 addObs(obsCarr (3000-600, 2000-750, 40, 40)); // Coquillage du milieu bas/bas sur le même axe horizontal
IceTeam 64:24e1057a97f7 341
IceTeam 64:24e1057a97f7 342 addObs(obsCarr (1800, 2000-350, 40, 40)); // Coquillage du milieu/bas droite
IceTeam 64:24e1057a97f7 343 }
IceTeam 72:b628daa54f3c 344 }
IceTeam 72:b628daa54f3c 345
IceTeam 72:b628daa54f3c 346 void map::Build_formation_3 (int couleur) {
IceTeam 72:b628daa54f3c 347 if (couleur == VERT) {
IceTeam 72:b628daa54f3c 348 addObs(obsCarr (200, 2000-450, 40, 40)); // Coquillage du haut gauche
IceTeam 72:b628daa54f3c 349 addObs(obsCarr (200, 2000-750, 40, 40)); // Coquillage du haut droite
IceTeam 72:b628daa54f3c 350
IceTeam 72:b628daa54f3c 351 addObs(obsCarr (600, 2000-450, 40, 40)); // Coquillage du milieu/haut/haut droite
IceTeam 72:b628daa54f3c 352 addObs(obsCarr (600, 2000-750, 40, 40)); // Coquillage du milieu/haut/haut sur le même axe horizontal
IceTeam 72:b628daa54f3c 353
IceTeam 72:b628daa54f3c 354 addObs(obsCarr (600, 2000-150, 40, 40)); // Coquillage du milieu/haut droite
IceTeam 72:b628daa54f3c 355 }
IceTeam 72:b628daa54f3c 356 else {
IceTeam 72:b628daa54f3c 357 //addObs(obsCarr (200, 2000-450, 40, 40)); // Coquillages du haut droit
IceTeam 72:b628daa54f3c 358 //addObs(obsCarr (200, 2000-750, 40, 40));
IceTeam 72:b628daa54f3c 359
IceTeam 72:b628daa54f3c 360 //addObs(obsCarr (900, 2000-550, 40, 40));
IceTeam 72:b628daa54f3c 361 // Inverser bas et haut
IceTeam 72:b628daa54f3c 362 addObs(obsCarr (3000-200, 2000-450, 40, 40)); // Coquillage du bas gauche
IceTeam 72:b628daa54f3c 363 addObs(obsCarr (3000-200, 2000-750, 40, 40)); // Coquillage du bas droite
IceTeam 72:b628daa54f3c 364
IceTeam 72:b628daa54f3c 365 addObs(obsCarr (3000-600, 2000-450, 40, 40)); // Coquillage du milieu bas/bas droite
IceTeam 72:b628daa54f3c 366 addObs(obsCarr (3000-600, 2000-750, 40, 40)); // Coquillage du milieu bas/bas sur le même axe horizontal
IceTeam 72:b628daa54f3c 367
IceTeam 72:b628daa54f3c 368 addObs(obsCarr (3000-600, 2000-150, 40, 40)); // Coquillage du milieu/bas droite
IceTeam 72:b628daa54f3c 369 }
IceTeam 46:be4eebf40568 370 }