![](/media/cache/profiles/4b0986230d9d7aded7f0c24033d221d4.jpg.50x50_q85.jpg)
Programme de contrôle de l'octopode 4DOF, Theraphosa-Salconi.
CtrlBridge
- fonction quelquonque pour communiquer avec les module
- fonction quelquonque pour faire des recherche dans les module dispo
- autre fonction pour jouer avec MemRegistre
Version 1.2.0
- Ajout d'un mode de simulation pour tester le code avec seulement un contrôleur stm32
Diff: labyrinthe.cpp
- Revision:
- 39:34d7802e8d15
- Parent:
- 38:57d5f36a0333
--- a/labyrinthe.cpp Mon Oct 05 23:46:11 2015 +0000 +++ b/labyrinthe.cpp Thu Oct 15 00:49:37 2015 +0000 @@ -335,13 +335,15 @@ signed char newPosY = y; coordonerr maCoordoner; maCoordoner=getCoordoner(newPosX,newPosY); + #if defined(DEGUG_LABIRINTH_GET_CASE) debug("\n\rcoordonerr: %i",maCoordoner); + #endif return getC(x, y, maCoordoner); } case_t Labyrinthe::getC(signed char x, signed char y, coordonerr cX) { - case_t myCoordoner = error; + case_t myCoordoner = pasExplorer; string result = showMap(x,y); if(result.size() != 0) { myCoordoner = case_t(result[cX-1]); @@ -357,13 +359,14 @@ debug(" X:%i Y:%i \n\r",x,y); #endif - if(value != error){ + //if(value != error){ string result = showMap(x,y); - if(result.size() == 0) {//no map found so we create new tuile - #ifdef DEGUG_LABIRINTH_SET_COORDONER - debug(" no tuile found\n\r"); - #endif + if(result.size() == 0) + {//no map found so we create new tuile + #ifdef DEGUG_LABIRINTH_SET_COORDONER + debug(" no tuile found\n\r"); + #endif signed char newPosX = x; signed char newPosY = y; @@ -373,16 +376,17 @@ #ifdef DEGUG_LABIRINTH_SET_COORDONER debug(" result: %i\n\r",result.size()); #endif - } + } - if(result.size() != 0){ - #ifdef DEGUG_LABIRINTH_SET_COORDONER - debug(" tuile found\n\r"); - #endif - result[cX-1]=value; - updateMap(result,x,y);//on remet les case modifier dans le string==map + if(result.size() != 0) + { + #ifdef DEGUG_LABIRINTH_SET_COORDONER + debug(" tuile found\n\r"); + #endif + result[cX-1]=value; + updateMap(result,x,y);//on remet les case modifier dans le string==map } - } + //} #ifdef DEGUG_LABIRINTH_SET_COORDONER debug("---------------------\n\r"); @@ -398,7 +402,9 @@ signed char newPosY = y; coordonerr maCoordoner; maCoordoner=getCoordoner(newPosX,newPosY); - debug("-setcase tempo newPosX: %i, x: %i\n\r",newPosX,x); + #if defined(DEGUG_LABIRINTH_GET_CASE) + debug("\n\r-setcase tempo newPosX: %i, x: %i\n\r",newPosX,x); + #endif setC(value,x,y,maCoordoner); } void Labyrinthe::setC_Up(case_t value) @@ -427,9 +433,9 @@ switch(value) { - case error: - result = 'X'; - break; + //case error: + // result = 'X'; + // break; case pasExplorer: result = '*'; break; @@ -535,14 +541,18 @@ } case_t Labyrinthe::getC_Foward(char dir) { - case_t result = error; + case_t result = pasExplorer;//error; switch(dir) { case UP: + #if defined(DEGUG_LABIRINTH_GET_CASE) debug("m_posX:%i m_posY+1:%i\n\r",m_posX,m_posY+1); + #endif result = getC(m_posX,m_posY+1); + #if defined(DEGUG_LABIRINTH_GET_CASE) debug("result:%i",result); + #endif break; case DOWN: result = getC(m_posX,m_posY-1); @@ -558,7 +568,7 @@ } case_t Labyrinthe::getC_Backward(char dir) { - case_t result = error; + case_t result = mur;// error; switch(dir) { @@ -579,7 +589,7 @@ } case_t Labyrinthe::getC_ToLeft(char dir) { - case_t result = error; + case_t result = mur;//error; switch(dir) { @@ -600,7 +610,7 @@ } case_t Labyrinthe::getC_ToRight(char dir) { - case_t result = error; + case_t result = pasExplorer;//error; switch(dir) { @@ -675,4 +685,97 @@ direction = DOWN; break; } -} \ No newline at end of file +} + + +void Labyrinthe::getXY_Foward(signed char &x, signed char &y,char dir) +{ + switch(direction) + { + case UP: + x = m_posX; + y = m_posY+1; + break; + case DOWN: + x = m_posX; + y = m_posY-1; + break; + case LEFT: + x = m_posX-1; + y = m_posY; + break; + case RIGHT: + x = m_posX+1; + y = m_posY; + break; + } +} + +void Labyrinthe::getXY_Backward(signed char &x, signed char &y,char dir) +{ + switch(direction) + { + case UP: + x = m_posX; + y = m_posY-1; + break; + case DOWN: + x = m_posX; + y = m_posY+1; + break; + case LEFT: + x = m_posX+1; + y = m_posY; + break; + case RIGHT: + x = m_posX-1; + y = m_posY; + break; + } +} + +void Labyrinthe::getXY_Left(signed char &x, signed char &y, char dir) +{ + switch(direction) + { + case UP: + x = m_posX-1; + y = m_posY; + break; + case DOWN: + x = m_posX+1; + y = m_posY; + break; + case LEFT: + x = m_posX; + y = m_posY-1; + break; + case RIGHT: + x = m_posX; + y = m_posY+1; + break; + } +} + +void Labyrinthe::getXY_Right(signed char &x, signed char &y, char dir) +{ + switch(direction) + { + case UP: + x = m_posX+1; + y = m_posY; + break; + case DOWN: + x = m_posX-1; + y = m_posY; + break; + case LEFT: + x = m_posX; + y = m_posY+1; + break; + case RIGHT: + x = m_posX; + y = m_posY-1; + break; + } +}