You will be able to control a yellow ball through a level like a labyrinth
Dependencies: BSP_DISCO_F746NG LCD_DISCO_F746NG MMA7660FC TS_DISCO_F746NG mbed
main.cpp@1:f41e3d62e7b2, 2018-06-12 (annotated)
- Committer:
- IUT_Nicolas_C
- Date:
- Tue Jun 12 14:46:18 2018 +0000
- Revision:
- 1:f41e3d62e7b2
- Parent:
- 0:9167afeead2e
This is the final version of the "La-bille-rinthe" where you can control a little yellow ball through a level with an accelerometer sensor
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
IUT_Nicolas_C | 0:9167afeead2e | 1 | #include "mbed.h" |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 2 | #include "TS_DISCO_F746NG.h" |
IUT_Nicolas_C | 0:9167afeead2e | 3 | #include "LCD_DISCO_F746NG.h" |
IUT_Nicolas_C | 0:9167afeead2e | 4 | #include <MMA7660FC.h> |
IUT_Nicolas_C | 0:9167afeead2e | 5 | |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 6 | #define SLAVE_ADRESS 0x4c |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 7 | //---USER---// |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 8 | int level = 1; //Actual Level |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 9 | int old_charac[2] = {0,0}; //Old Position |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 10 | int charac[2] = {0,0}; //Actual Position on the grid |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 11 | float origin[3] = {0.0,0.0,0.0}; //Sensor Position |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 12 | bool drawn = 0; //Is Character drawn ? |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 13 | //---BUTTONS---// |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 14 | int btnNext[4] = {415, 35,465, 85};//Position of the buttons |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 15 | int btnPrev[4] = {415,115,465,165};// |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 16 | int btnReset[4] = {415,207,465,257};// |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 17 | //---labyrinth---// |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 18 | //Size : 16 * 10 |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 19 | //Square Size : 25 * 25 |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 20 | bool labyrinth1[160] = { 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 , |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 21 | 1,0,0,0,1,0,1,0,0,0,1,0,0,0,0,1 , |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 22 | 1,0,1,0,1,0,1,0,1,0,1,0,1,1,0,1 , |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 23 | 0,0,1,1,1,0,1,1,1,0,1,0,1,0,0,1 , |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 24 | 1,0,1,0,0,0,0,0,1,0,1,0,0,1,1,1 , |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 25 | 1,0,0,0,1,0,1,0,0,0,1,1,0,0,0,1 , |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 26 | 1,1,1,0,1,0,1,0,1,1,0,0,0,1,0,0 , |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 27 | 1,0,0,0,0,0,0,0,0,0,1,1,0,1,0,1 , |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 28 | 1,0,1,0,0,1,0,0,1,0,0,0,0,1,0,1 , |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 29 | 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 30 | }; |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 31 | bool labyrinth2[160] = { 1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1 , |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 32 | 1,0,0,0,1,0,1,0,0,0,0,0,0,0,1,1 , |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 33 | 1,0,1,0,0,0,1,0,1,0,1,0,1,0,0,1 , |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 34 | 1,0,1,0,1,0,0,0,1,0,1,1,1,1,0,1 , |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 35 | 1,0,0,0,1,1,1,1,1,0,0,0,0,0,0,1 , |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 36 | 1,0,1,1,1,0,0,0,0,0,1,1,0,1,0,1 , |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 37 | 1,0,0,0,1,0,1,1,1,0,1,0,0,0,0,1 , |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 38 | 1,0,1,0,0,0,0,0,1,0,1,0,1,1,0,1 , |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 39 | 1,0,0,0,1,0,1,0,1,0,0,0,0,0,0,1 , |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 40 | 1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1 |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 41 | }; |
IUT_Nicolas_C | 0:9167afeead2e | 42 | |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 43 | |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 44 | bool* labyrinths[2] = {labyrinth1, labyrinth2}; // All labyrinths in one tab |
IUT_Nicolas_C | 0:9167afeead2e | 45 | //---PIN SETUP |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 46 | MMA7660FC sensor(PB_9,PB_8,SLAVE_ADRESS<<1); // Init Sensor |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 47 | LCD_DISCO_F746NG lcd; // Init LCD |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 48 | TS_DISCO_F746NG ts; // Init TouchScreen |
IUT_Nicolas_C | 0:9167afeead2e | 49 | |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 50 | //---DECLARATION_FUNCTIONS |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 51 | void checkPos(int,int); |
IUT_Nicolas_C | 0:9167afeead2e | 52 | void displayAcc(float,float,float); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 53 | void displayCharPos(); |
IUT_Nicolas_C | 0:9167afeead2e | 54 | void displayPos(int,int,int); |
IUT_Nicolas_C | 0:9167afeead2e | 55 | void displayOrientation(const char*); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 56 | void drawChar(); |
IUT_Nicolas_C | 0:9167afeead2e | 57 | void drawRect(int,int,int,int); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 58 | void drawLabyrinth(int); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 59 | void drawLevel(bool[]); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 60 | void drawOptions(); |
IUT_Nicolas_C | 0:9167afeead2e | 61 | void drawUi(); |
IUT_Nicolas_C | 0:9167afeead2e | 62 | void drawUiButtons(); |
IUT_Nicolas_C | 0:9167afeead2e | 63 | void drawUiStructure(); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 64 | void initLCD(); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 65 | void updateChar(float,float,float,bool[]); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 66 | void resetPos(); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 67 | void nextLvl(); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 68 | void prevLvl(); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 69 | void isWinning(int); |
IUT_Nicolas_C | 0:9167afeead2e | 70 | |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 71 | //---INITIALISATION_FUNCTIONS |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 72 | /** Function checkPos |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 73 | * Checking actual position of a finger on the touchscreen |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 74 | */ |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 75 | void checkPos(int x, int y) |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 76 | { |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 77 | if(x > btnReset[0] && y > btnReset[1] && x < btnReset[2] && y < btnReset[3]) { |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 78 | resetPos(); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 79 | } else if(x > btnNext[0] && y > btnNext[1] && x < btnNext[2] && y < btnNext[3]) { |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 80 | nextLvl(); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 81 | } else if(x > btnPrev[0] && y > btnPrev[1] && x < btnPrev[2] && y < btnPrev[3]) { |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 82 | prevLvl(); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 83 | } |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 84 | } |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 85 | /** Function displayAcc |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 86 | * Displays the actual acceleration of the sensor (not used) |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 87 | */ |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 88 | void displayAcc(float x, float y, float z) |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 89 | { |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 90 | uint8_t color = lcd.GetTextColor(); |
IUT_Nicolas_C | 0:9167afeead2e | 91 | lcd.SetTextColor(LCD_COLOR_BLACK); |
IUT_Nicolas_C | 0:9167afeead2e | 92 | char string[50]; |
IUT_Nicolas_C | 0:9167afeead2e | 93 | sprintf(string,"AX = %3.3f",x); |
IUT_Nicolas_C | 0:9167afeead2e | 94 | lcd.DisplayStringAt(0, LINE(5), (uint8_t *)string, CENTER_MODE); |
IUT_Nicolas_C | 0:9167afeead2e | 95 | sprintf(string,"AY = %3.3f",y); |
IUT_Nicolas_C | 0:9167afeead2e | 96 | lcd.DisplayStringAt(0, LINE(6), (uint8_t *)string, CENTER_MODE); |
IUT_Nicolas_C | 0:9167afeead2e | 97 | sprintf(string,"AZ = %3.3f",z); |
IUT_Nicolas_C | 0:9167afeead2e | 98 | lcd.DisplayStringAt(0, LINE(7), (uint8_t *)string, CENTER_MODE); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 99 | lcd.SetTextColor(color); |
IUT_Nicolas_C | 0:9167afeead2e | 100 | } |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 101 | /** Function displayCharPos |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 102 | * Displays the actual position of the character (not used) |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 103 | */ |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 104 | void displayCharPos() |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 105 | { |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 106 | uint8_t color = lcd.GetTextColor(); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 107 | lcd.SetTextColor(LCD_COLOR_BLACK); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 108 | char string[50]; |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 109 | sprintf(string,"X = %3d",charac[0]); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 110 | lcd.DisplayStringAt(0, LINE(8), (uint8_t *)string, CENTER_MODE); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 111 | sprintf(string,"Y = %3d",charac[1]); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 112 | lcd.DisplayStringAt(0, LINE(9), (uint8_t *)string, CENTER_MODE); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 113 | lcd.SetTextColor(color); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 114 | } |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 115 | /** Function displayOri |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 116 | * Displays the origin acceleration of the sensor (not used) |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 117 | */ |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 118 | void displayOri() |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 119 | { |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 120 | uint8_t color = lcd.GetTextColor(); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 121 | lcd.SetTextColor(LCD_COLOR_BLACK); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 122 | char string[50]; |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 123 | sprintf(string,"AX = %3.3f",origin[0]); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 124 | lcd.DisplayStringAt(0, LINE(1), (uint8_t *)string, CENTER_MODE); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 125 | sprintf(string,"AY = %3.3f",origin[1]); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 126 | lcd.DisplayStringAt(0, LINE(2), (uint8_t *)string, CENTER_MODE); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 127 | sprintf(string,"AZ = %3.3f",origin[2]); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 128 | lcd.DisplayStringAt(0, LINE(3), (uint8_t *)string, CENTER_MODE); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 129 | lcd.SetTextColor(color); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 130 | } |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 131 | /** Function displayOrientation |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 132 | * Displays the actual orientation of the sensor (not used) |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 133 | */ |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 134 | void displayOrientation(const char *o) |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 135 | { |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 136 | uint8_t color = lcd.GetTextColor(); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 137 | lcd.SetTextColor(LCD_COLOR_BLACK); |
IUT_Nicolas_C | 0:9167afeead2e | 138 | char string[50]; |
IUT_Nicolas_C | 0:9167afeead2e | 139 | sprintf(string,"O = %s",o); |
IUT_Nicolas_C | 0:9167afeead2e | 140 | lcd.DisplayStringAt(0, LINE(4), (uint8_t *)string, CENTER_MODE); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 141 | lcd.SetTextColor(color); |
IUT_Nicolas_C | 0:9167afeead2e | 142 | } |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 143 | /** Function displayPos |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 144 | * Displays the actual position of the sensor (not used) |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 145 | */ |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 146 | void displayPos(int x, int y, int z) |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 147 | { |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 148 | uint8_t color = lcd.GetTextColor(); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 149 | lcd.SetTextColor(LCD_COLOR_BLACK); |
IUT_Nicolas_C | 0:9167afeead2e | 150 | char string[50]; |
IUT_Nicolas_C | 0:9167afeead2e | 151 | sprintf(string,"X = %03d",x); |
IUT_Nicolas_C | 0:9167afeead2e | 152 | lcd.DisplayStringAt(0, LINE(1), (uint8_t *)string, CENTER_MODE); |
IUT_Nicolas_C | 0:9167afeead2e | 153 | sprintf(string,"Y = %03d",y); |
IUT_Nicolas_C | 0:9167afeead2e | 154 | lcd.DisplayStringAt(0, LINE(2), (uint8_t *)string, CENTER_MODE); |
IUT_Nicolas_C | 0:9167afeead2e | 155 | sprintf(string,"Z = %03d",z); |
IUT_Nicolas_C | 0:9167afeead2e | 156 | lcd.DisplayStringAt(0, LINE(3), (uint8_t *)string, CENTER_MODE); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 157 | lcd.SetTextColor(color); |
IUT_Nicolas_C | 0:9167afeead2e | 158 | } |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 159 | /** Function drawChar |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 160 | * Draws the character on the labyrinth |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 161 | */ |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 162 | void drawChar() |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 163 | { |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 164 | if((old_charac[0] != charac[0] || old_charac[1] != charac[1])||(drawn == 0)) { |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 165 | uint8_t color = lcd.GetTextColor(); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 166 | lcd.SetTextColor(LCD_COLOR_WHITE); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 167 | lcd.FillCircle(old_charac[0]*25+11+12,old_charac[1]*25+10+12,11); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 168 | lcd.SetTextColor(LCD_COLOR_YELLOW); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 169 | lcd.FillCircle(charac[0]*25+11+12,charac[1]*25+10+12,11); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 170 | lcd.SetTextColor(color); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 171 | old_charac[0] = charac[0]; |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 172 | old_charac[1] = charac[1]; |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 173 | drawn = 1; |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 174 | } |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 175 | } |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 176 | /** Function drawLabyrinth |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 177 | * Sets the position of the character and calls drawLevel() |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 178 | */ |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 179 | void drawLabyrinth(int lvl) |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 180 | { |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 181 | switch(lvl) { |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 182 | case 1: |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 183 | drawLevel(labyrinth1); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 184 | charac[0]= 0; |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 185 | charac[1]= 3; |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 186 | old_charac[0]= 0; |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 187 | old_charac[1]= 3; |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 188 | break; |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 189 | case 2: |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 190 | drawLevel(labyrinth2); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 191 | charac[0]= 7; |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 192 | charac[1]= 0; |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 193 | old_charac[0]= 7; |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 194 | old_charac[1]= 0; |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 195 | break; |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 196 | default: |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 197 | break; |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 198 | } |
IUT_Nicolas_C | 0:9167afeead2e | 199 | } |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 200 | /** Function drawLevel |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 201 | * Displays the labyrinth on the screen |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 202 | */ |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 203 | void drawLevel(bool labyrinth[]) |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 204 | { |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 205 | uint8_t color = lcd.GetTextColor(); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 206 | for(int i = 0; i<10; i++) { |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 207 | for(int j = 0; j<16; j++) { |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 208 | if(labyrinth[j+(i*16)] == 1) { |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 209 | lcd.SetTextColor(LCD_COLOR_BLACK); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 210 | lcd.FillRect(11+(j*25),10+(i*25), 25, 25); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 211 | } else if(labyrinth[j+(i*16)] == 0) { |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 212 | lcd.SetTextColor(LCD_COLOR_WHITE); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 213 | lcd.FillRect(11+(j*25),10+(i*25), 25, 25); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 214 | } |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 215 | } |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 216 | } |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 217 | lcd.SetTextColor(color); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 218 | } |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 219 | /** Function drawLevelNbr |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 220 | * Displays the level number on the options menu |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 221 | */ |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 222 | void drawLevelNbr() |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 223 | { |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 224 | uint8_t color = lcd.GetTextColor(); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 225 | sFONT *font = lcd.GetFont(); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 226 | sFONT f = Font20; |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 227 | char str[50]; |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 228 | |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 229 | lcd.SetFont(&f); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 230 | lcd.SetTextColor(LCD_COLOR_BLACK); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 231 | sprintf(str,"%d",level); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 232 | lcd.DisplayStringAt(440-8, 100-7,(uint8_t *) str, LEFT_MODE); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 233 | |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 234 | lcd.SetFont(font); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 235 | lcd.SetTextColor(color); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 236 | } |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 237 | /** Function drawOptions |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 238 | * Displays the option tab |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 239 | */ |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 240 | void drawOptions() |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 241 | { |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 242 | uint8_t color = lcd.GetTextColor(); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 243 | sFONT *font = lcd.GetFont(); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 244 | sFONT f = Font16; |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 245 | lcd.SetFont(&f); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 246 | uint8_t str[6] = "Level"; |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 247 | lcd.SetTextColor(LCD_COLOR_BLACK); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 248 | lcd.DisplayStringAt(414, 15, str, LEFT_MODE); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 249 | lcd.SetFont(font); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 250 | drawUiButtons(); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 251 | drawLevelNbr(); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 252 | lcd.SetTextColor(color); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 253 | } |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 254 | /** Function drawRect |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 255 | * Displays a rectangle on the screen |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 256 | */ |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 257 | void drawRect(int x1, int y1, int x2, int y2) |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 258 | { |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 259 | uint8_t color = lcd.GetTextColor(); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 260 | lcd.SetTextColor(LCD_COLOR_BLACK); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 261 | lcd.DrawRect(x1, y1, x2-x1, y2-y1); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 262 | lcd.SetTextColor(color); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 263 | } |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 264 | /** Function drawUi |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 265 | * Draws the UI |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 266 | */ |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 267 | void drawUi() |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 268 | { |
IUT_Nicolas_C | 0:9167afeead2e | 269 | drawUiStructure(); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 270 | drawOptions(); |
IUT_Nicolas_C | 0:9167afeead2e | 271 | } |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 272 | /** Function drawUiButtons |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 273 | * Draws buttons on the option tab |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 274 | */ |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 275 | void drawUiButtons() |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 276 | { |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 277 | uint8_t color = lcd.GetTextColor(); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 278 | lcd.SetTextColor(LCD_COLOR_BLUE); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 279 | drawRect(415, 35,465, 85); // Next Level |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 280 | lcd.SetTextColor(LCD_COLOR_BLACK); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 281 | lcd.DisplayChar(440-8,50,'N'); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 282 | |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 283 | lcd.SetTextColor(LCD_COLOR_BLUE); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 284 | drawRect(415,115,465,165); // Previous Level |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 285 | lcd.SetTextColor(LCD_COLOR_BLACK); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 286 | lcd.DisplayChar(440-8,130,'P'); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 287 | |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 288 | lcd.SetTextColor(LCD_COLOR_BLUE); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 289 | drawRect(415,207,465,257); // Reset Pos |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 290 | lcd.SetTextColor(LCD_COLOR_BLACK); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 291 | lcd.DisplayChar(440-8,232-10,'R'); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 292 | lcd.SetTextColor(color); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 293 | } |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 294 | /** Function drawUiStructure |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 295 | * Draws rectangle on the UI as delimiters |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 296 | */ |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 297 | void drawUiStructure() |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 298 | { |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 299 | uint8_t color = lcd.GetTextColor(); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 300 | lcd.SetTextColor(LCD_COLOR_BLACK); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 301 | drawRect( 11, 10,411,260); //Partie labyrinth |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 302 | drawRect(411, 10,470,260); //Partie Utilisateur |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 303 | lcd.SetTextColor(color); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 304 | } |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 305 | /** Function initLCD |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 306 | * Initializes the LCD |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 307 | */ |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 308 | void initLCD() |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 309 | { |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 310 | lcd.Clear(LCD_COLOR_WHITE); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 311 | //lcd.SetBackColor(LCD_COLOR_BLUE); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 312 | lcd.SetTextColor(LCD_COLOR_BLACK); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 313 | wait(0.3); |
IUT_Nicolas_C | 0:9167afeead2e | 314 | } |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 315 | /** Function updateChar |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 316 | * Updates the position of the character if |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 317 | * - The sensor is in the range |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 318 | * - The character is nearby a white square |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 319 | * - The direction is oriented to a white square |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 320 | * Checks if the player has won the level |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 321 | */ |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 322 | void updateChar(float ax, float ay, float az, bool lab[]) |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 323 | { |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 324 | float oldX = origin[0], oldY = origin[1], oldZ = origin[2]; |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 325 | |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 326 | //Sensor is bended downwards |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 327 | if ((az >= oldZ+30) || (az <= oldZ-30)) { |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 328 | //Sensor is bended left |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 329 | if (ax <= oldX-30) { |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 330 | if (!(charac[0] <= 0) && (lab[16*charac[1]+charac[0]-1] == 0)) { |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 331 | charac[0]--; |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 332 | } |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 333 | } |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 334 | //Sensor is bended right |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 335 | else if (ax >= oldX+30) { |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 336 | if (!(charac[0] >= 15) && (lab[16*charac[1]+charac[0]+1] == 0)) { |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 337 | charac[0]++; |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 338 | } |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 339 | } |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 340 | //Sensor is bended forward |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 341 | else if (ay <= oldY-30) { |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 342 | if (!(charac[1] <= 0) && (lab[16*charac[1]+charac[0]-16] == 0)) { |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 343 | charac[1]--; |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 344 | } |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 345 | } |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 346 | //Sensor is bended backward |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 347 | else if (ay >= oldX+30) { |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 348 | if (!(charac[1] >= 9) && (lab[16*charac[1]+charac[0]+16] == 0)) { |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 349 | charac[1]++; |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 350 | } |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 351 | } |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 352 | } |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 353 | |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 354 | isWinning(level); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 355 | //charac[0] = {x}; should be used to update character position on x |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 356 | //charac[1] = {y}; should be used to update character position on y |
IUT_Nicolas_C | 0:9167afeead2e | 357 | } |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 358 | /** Function resetPos |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 359 | * Reset the original acceleration of the sensor |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 360 | */ |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 361 | void resetPos() |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 362 | { |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 363 | float ax=0,ay=0,az=0; |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 364 | sensor.read_Tilt(&ax,&ay,&az); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 365 | origin[0] = ax; |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 366 | origin[1] = ay; |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 367 | origin[2] = az; |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 368 | } |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 369 | /** Function nextLvl |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 370 | * Loads the next level |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 371 | */ |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 372 | void nextLvl() |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 373 | { |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 374 | if(level < 2) |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 375 | level++; |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 376 | drawLabyrinth(level); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 377 | drawLevelNbr(); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 378 | drawn = 0; |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 379 | drawChar(); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 380 | } |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 381 | /** Function prevLvl |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 382 | * Loads the previous level |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 383 | */ |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 384 | void prevLvl() |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 385 | { |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 386 | if(level > 1) |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 387 | level--; |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 388 | drawLabyrinth(level); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 389 | drawLevelNbr(); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 390 | drawn = 0; |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 391 | drawChar(); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 392 | } |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 393 | /** Function isWinning |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 394 | * Checks if the player has won the level |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 395 | */ |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 396 | void isWinning(int lvl) |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 397 | { |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 398 | switch(lvl) { |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 399 | case 1: |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 400 | if (charac[0]== 15 && charac[1]== 6) |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 401 | nextLvl(); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 402 | break; |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 403 | case 2: |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 404 | if (charac[0]== 7 && charac[1]== 9) |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 405 | nextLvl(); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 406 | break; |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 407 | default: |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 408 | break; |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 409 | } |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 410 | } |
IUT_Nicolas_C | 0:9167afeead2e | 411 | //---MAIN |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 412 | int main() |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 413 | { |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 414 | //Declaration |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 415 | int x, y, i=0; |
IUT_Nicolas_C | 0:9167afeead2e | 416 | float ax=0,ay=0,az=0; |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 417 | //Initialization |
IUT_Nicolas_C | 0:9167afeead2e | 418 | sensor.init(); |
IUT_Nicolas_C | 0:9167afeead2e | 419 | initLCD(); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 420 | ts.Init(lcd.GetXSize(), lcd.GetYSize()); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 421 | TS_StateTypeDef TS_State; |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 422 | //Setting up the UI |
IUT_Nicolas_C | 0:9167afeead2e | 423 | drawUi(); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 424 | drawLabyrinth(level); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 425 | |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 426 | //Setting up the sensor configuration |
IUT_Nicolas_C | 0:9167afeead2e | 427 | sensor.write_reg(0x07,0); |
IUT_Nicolas_C | 0:9167afeead2e | 428 | sensor.write_reg(0x04,0x000); |
IUT_Nicolas_C | 0:9167afeead2e | 429 | sensor.write_reg(0x07,1); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 430 | |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 431 | //Setting original acceleration |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 432 | resetPos(); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 433 | |
IUT_Nicolas_C | 0:9167afeead2e | 434 | while(1) { |
IUT_Nicolas_C | 0:9167afeead2e | 435 | //Getting Values |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 436 | sensor.read_Tilt(&ax,&ay,&az); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 437 | //Getting touchscreen state |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 438 | ts.GetState(&TS_State); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 439 | //Getting pos on the touchscreen |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 440 | x = TS_State.touchX[0]; |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 441 | y = TS_State.touchY[0]; |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 442 | |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 443 | //Check Pos |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 444 | if(TS_State.touchDetected>0) |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 445 | checkPos(x,y); |
IUT_Nicolas_C | 0:9167afeead2e | 446 | |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 447 | //If timeout updating character position |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 448 | if(i > 6) { |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 449 | updateChar(ax,ay,az,labyrinths[level-1]); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 450 | i = -1; |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 451 | } |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 452 | |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 453 | //---DEBUG |
IUT_Nicolas_C | 0:9167afeead2e | 454 | //Printing Values |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 455 | /*displayAcc(ax,ay,az); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 456 | displayCharPos(); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 457 | displayOri();//*/ |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 458 | |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 459 | drawChar(); |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 460 | i++; |
IUT_Nicolas_C | 1:f41e3d62e7b2 | 461 | wait_ms(100); |
IUT_Nicolas_C | 0:9167afeead2e | 462 | } |
IUT_Nicolas_C | 0:9167afeead2e | 463 | } |