![](/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:
- 38:57d5f36a0333
- Parent:
- 37:f53e9f7a14df
- Child:
- 39:34d7802e8d15
--- a/labyrinthe.cpp Tue Sep 29 17:23:25 2015 +0000 +++ b/labyrinthe.cpp Mon Oct 05 23:46:11 2015 +0000 @@ -335,7 +335,7 @@ signed char newPosY = y; coordonerr maCoordoner; maCoordoner=getCoordoner(newPosX,newPosY); - + debug("\n\rcoordonerr: %i",maCoordoner); return getC(x, y, maCoordoner); } @@ -344,7 +344,7 @@ case_t myCoordoner = error; string result = showMap(x,y); if(result.size() != 0) { - myCoordoner = case_t(result[cX]); + myCoordoner = case_t(result[cX-1]); } return myCoordoner; } @@ -420,4 +420,259 @@ void Labyrinthe::setMyPos(case_t value) { setC(value, m_posX, m_posY); +} +char Labyrinthe::caseToChar(case_t value) +{ + char result = 0; + + switch(value) + { + case error: + result = 'X'; + break; + case pasExplorer: + result = '*'; + break; + case explorer: + result = 'E'; + break; + case mur: + result = 'M'; + break; + case vide: + result = 'V'; + break; + } + return result; +} +void Labyrinthe::moveFoward(char dir) +{ + switch(dir) + { + case UP: + //m_posX+=0; + m_posY++; + break; + case DOWN: + //m_posX+=0; + m_posY--; + break; + case LEFT: + m_posX--; + //m_posY+=0; + break; + case RIGHT: + m_posX++; + //m_posY+=0; + break; + } +} +void Labyrinthe::moveBackward(char dir) +{ + switch(dir) + { + case UP: + //m_posX+=0; + m_posY--; + break; + case DOWN: + //m_posX+=0; + m_posY++; + break; + case LEFT: + m_posX++; + //m_posY+=0; + break; + case RIGHT: + m_posX--; + //m_posY+=0; + break; + } +} +void Labyrinthe::moveToLeft(char dir) +{ + switch(dir) + { + case UP: + m_posX--; + //m_posY+=0; + break; + case DOWN: + m_posX++; + //m_posY+=0; + break; + case LEFT: + //m_posX+=0; + m_posY--; + break; + case RIGHT: + //m_posX+=0; + m_posY++; + break; + } +} +void Labyrinthe::moveToRight(char dir) +{ + switch(dir) + { + case UP: + m_posX++; + //m_posY+=0; + break; + case DOWN: + m_posX--; + //m_posY+=0; + break; + case LEFT: + //m_posX+=0; + m_posY++; + break; + case RIGHT: + //m_posX+=0; + m_posY--; + break; + } +} +case_t Labyrinthe::getC_Foward(char dir) +{ + case_t result = error; + + switch(dir) + { + case UP: + debug("m_posX:%i m_posY+1:%i\n\r",m_posX,m_posY+1); + result = getC(m_posX,m_posY+1); + debug("result:%i",result); + break; + case DOWN: + result = getC(m_posX,m_posY-1); + break; + case LEFT: + result = getC(m_posX-1,m_posY); + break; + case RIGHT: + result = getC(m_posX+1,m_posY); + break; + } + return result; +} +case_t Labyrinthe::getC_Backward(char dir) +{ + case_t result = error; + + switch(dir) + { + case UP: + result = getC(m_posX,m_posY-1); + break; + case DOWN: + result = getC(m_posX,m_posY+1); + break; + case LEFT: + result = getC(m_posX+1,m_posY); + break; + case RIGHT: + result = getC(m_posX-1,m_posY); + break; + } + return result; +} +case_t Labyrinthe::getC_ToLeft(char dir) +{ + case_t result = error; + + switch(dir) + { + case UP: + result = getC(m_posX-1,m_posY); + break; + case DOWN: + result = getC(m_posX+1,m_posY); + break; + case LEFT: + result = getC(m_posX,m_posY-1); + break; + case RIGHT: + result = getC(m_posX,m_posY+1); + break; + } + return result; +} +case_t Labyrinthe::getC_ToRight(char dir) +{ + case_t result = error; + + switch(dir) + { + case UP: + result = getC(m_posX+1,m_posY); + break; + case DOWN: + result = getC(m_posX-1,m_posY); + break; + case LEFT: + result = getC(m_posX,m_posY+1); + break; + case RIGHT: + result = getC(m_posX,m_posY-1); + break; + } + return result; +} + + +void Labyrinthe::turnBack(void) +{ + switch(direction) + { + case UP: + direction = DOWN; + break; + case DOWN: + direction = UP; + break; + case LEFT: + direction = RIGHT; + break; + case RIGHT: + direction = LEFT; + break; + } + +} +void Labyrinthe::turnLeft(void) +{ + switch(direction) + { + case UP: + direction = LEFT; + break; + case DOWN: + direction = RIGHT; + break; + case LEFT: + direction = DOWN; + break; + case RIGHT: + direction = UP; + break; + } +} +void Labyrinthe::turnRight(void) +{ + switch(direction) + { + case UP: + direction = RIGHT; + break; + case DOWN: + direction = LEFT; + break; + case LEFT: + direction = UP; + break; + case RIGHT: + direction = DOWN; + break; + } } \ No newline at end of file