Time is good

Dependencies:   RoboClaw mbed

Fork of Robot2016_2-0 by ARES

Committer:
IceTeam
Date:
Thu May 05 03:22:43 2016 +0000
Revision:
70:d70a6db1f635
Parent:
69:1b257fb65281
Child:
72:b628daa54f3c
Objectifs parcourus;

Who changed what in which revision?

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