Frogger for mbed
Dependencies: 4DGL-uLCD-SE Motor PinDetect SDFileSystem mbed-rtos mbed wave_player
Fork of 4180_Lab4_v6 by
main.cpp@2:68c4e1539da5, 2016-10-31 (annotated)
- Committer:
- ecardenas8
- Date:
- Mon Oct 31 20:52:10 2016 +0000
- Revision:
- 2:68c4e1539da5
- Parent:
- 1:abd7e0631db8
- Child:
- 3:427c365950d7
hey its frogger
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
swilliams346 | 0:9f1095365b9a | 1 | #include "mbed.h" |
swilliams346 | 0:9f1095365b9a | 2 | #include "rtos.h" |
swilliams346 | 1:abd7e0631db8 | 3 | #include "PinDetect.h" |
swilliams346 | 0:9f1095365b9a | 4 | #include "uLCD_4DGL.h" |
swilliams346 | 0:9f1095365b9a | 5 | uLCD_4DGL uLCD(p28, p27, p30); |
swilliams346 | 0:9f1095365b9a | 6 | #include "Robot.h" |
swilliams346 | 0:9f1095365b9a | 7 | #include "Nav_Switch.h" |
swilliams346 | 0:9f1095365b9a | 8 | #include "Speaker.h" |
swilliams346 | 0:9f1095365b9a | 9 | #include "wave_player.h" |
swilliams346 | 0:9f1095365b9a | 10 | #include "SDFileSystem.h" |
swilliams346 | 0:9f1095365b9a | 11 | BusOut mbedleds(LED1,LED2,LED3,LED4); |
swilliams346 | 0:9f1095365b9a | 12 | Robot myRobot; |
swilliams346 | 1:abd7e0631db8 | 13 | Nav_Switch myNav( p25, p22, p23, p21, p24); |
swilliams346 | 0:9f1095365b9a | 14 | Mutex stdio_mutex; |
swilliams346 | 0:9f1095365b9a | 15 | AnalogOut DACout(p18); // used to play sound on speaker |
swilliams346 | 0:9f1095365b9a | 16 | wave_player waver(&DACout); |
swilliams346 | 0:9f1095365b9a | 17 | SDFileSystem sd(p5, p6, p7, p8, "sd"); //SD card setup |
swilliams346 | 1:abd7e0631db8 | 18 | //PinDetect pb1(p25); |
swilliams346 | 0:9f1095365b9a | 19 | //Wiring Set-up: |
swilliams346 | 0:9f1095365b9a | 20 | //Speaker: p18 |
swilliams346 | 0:9f1095365b9a | 21 | //SD Card: DO=p6,SCK=p7,DI=p5,CS=p8,VCC=Vout,GND=GND |
swilliams346 | 0:9f1095365b9a | 22 | //Thumb-Stick: U=p25,C=p24,L=p23,D=p22,R=p21,+=pVout,-=GND |
swilliams346 | 0:9f1095365b9a | 23 | bool Alive = 1; |
swilliams346 | 0:9f1095365b9a | 24 | bool Drown = 0; |
swilliams346 | 1:abd7e0631db8 | 25 | bool Splat = 0; |
ecardenas8 | 2:68c4e1539da5 | 26 | bool Victory = 0; |
swilliams346 | 1:abd7e0631db8 | 27 | double CarWidth = 10; |
swilliams346 | 0:9f1095365b9a | 28 | int i = 11; |
swilliams346 | 0:9f1095365b9a | 29 | int j = 11; |
swilliams346 | 0:9f1095365b9a | 30 | int C1 = 11; |
swilliams346 | 0:9f1095365b9a | 31 | int C2 = 32; |
swilliams346 | 0:9f1095365b9a | 32 | int C3 = 53; |
swilliams346 | 0:9f1095365b9a | 33 | int C4 = 74; |
swilliams346 | 0:9f1095365b9a | 34 | int C5 = 95; |
swilliams346 | 0:9f1095365b9a | 35 | int C6 = 116; |
swilliams346 | 1:abd7e0631db8 | 36 | double Position1 = 90; |
swilliams346 | 1:abd7e0631db8 | 37 | double Position2 = 90; |
swilliams346 | 1:abd7e0631db8 | 38 | double Column1; |
swilliams346 | 1:abd7e0631db8 | 39 | double Column2; |
swilliams346 | 0:9f1095365b9a | 40 | int Rate1 = 3; |
swilliams346 | 1:abd7e0631db8 | 41 | int FrogX; |
swilliams346 | 1:abd7e0631db8 | 42 | int FrogY; |
swilliams346 | 0:9f1095365b9a | 43 | |
swilliams346 | 1:abd7e0631db8 | 44 | /*void pb1_hit_callback (void) |
swilliams346 | 1:abd7e0631db8 | 45 | { |
swilliams346 | 1:abd7e0631db8 | 46 | stdio_mutex.lock(); |
swilliams346 | 1:abd7e0631db8 | 47 | myRobot.moveForward(); |
swilliams346 | 1:abd7e0631db8 | 48 | stdio_mutex.unlock(); |
swilliams346 | 1:abd7e0631db8 | 49 | }*/ |
swilliams346 | 1:abd7e0631db8 | 50 | |
swilliams346 | 1:abd7e0631db8 | 51 | void DeathCheck_thread(void const *argument) |
swilliams346 | 0:9f1095365b9a | 52 | { |
swilliams346 | 0:9f1095365b9a | 53 | while(Alive) { |
swilliams346 | 1:abd7e0631db8 | 54 | FrogX = myRobot.getXPosition(); |
swilliams346 | 1:abd7e0631db8 | 55 | FrogY = myRobot.getYPosition(); |
swilliams346 | 0:9f1095365b9a | 56 | |
swilliams346 | 1:abd7e0631db8 | 57 | if(FrogY == 32){ //Check win-condition on landing on Row 2 |
swilliams346 | 1:abd7e0631db8 | 58 | Alive = 0; |
swilliams346 | 1:abd7e0631db8 | 59 | stdio_mutex.lock(); |
swilliams346 | 1:abd7e0631db8 | 60 | uLCD.locate(1,1); |
swilliams346 | 1:abd7e0631db8 | 61 | uLCD.printf("VICTORY!"); |
swilliams346 | 1:abd7e0631db8 | 62 | stdio_mutex.unlock(); |
swilliams346 | 1:abd7e0631db8 | 63 | }//End 53 |
swilliams346 | 1:abd7e0631db8 | 64 | if(FrogY == 74){ //Check dangers on water Row 4 |
swilliams346 | 1:abd7e0631db8 | 65 | if(FrogX == 32 || FrogX == 74 || FrogX == 116){ |
swilliams346 | 0:9f1095365b9a | 66 | Alive = 0; |
swilliams346 | 0:9f1095365b9a | 67 | Drown = 1; |
swilliams346 | 0:9f1095365b9a | 68 | |
swilliams346 | 0:9f1095365b9a | 69 | stdio_mutex.lock(); |
swilliams346 | 0:9f1095365b9a | 70 | myRobot.drawDrown1(); |
swilliams346 | 0:9f1095365b9a | 71 | stdio_mutex.unlock(); |
swilliams346 | 0:9f1095365b9a | 72 | Thread::wait(50); |
swilliams346 | 0:9f1095365b9a | 73 | stdio_mutex.lock(); |
swilliams346 | 0:9f1095365b9a | 74 | myRobot.drawDrown2(); |
swilliams346 | 0:9f1095365b9a | 75 | stdio_mutex.unlock(); |
swilliams346 | 0:9f1095365b9a | 76 | Thread::wait(50); |
swilliams346 | 0:9f1095365b9a | 77 | stdio_mutex.lock(); |
swilliams346 | 0:9f1095365b9a | 78 | myRobot.drawDrown3(); |
swilliams346 | 0:9f1095365b9a | 79 | stdio_mutex.unlock(); |
swilliams346 | 0:9f1095365b9a | 80 | Thread::wait(50); |
swilliams346 | 0:9f1095365b9a | 81 | stdio_mutex.lock(); |
swilliams346 | 0:9f1095365b9a | 82 | myRobot.drawDrown4(); |
swilliams346 | 0:9f1095365b9a | 83 | stdio_mutex.unlock(); |
swilliams346 | 0:9f1095365b9a | 84 | Thread::wait(50); |
swilliams346 | 0:9f1095365b9a | 85 | stdio_mutex.lock(); |
swilliams346 | 0:9f1095365b9a | 86 | myRobot.drawDrown5(); |
swilliams346 | 0:9f1095365b9a | 87 | stdio_mutex.unlock(); |
swilliams346 | 0:9f1095365b9a | 88 | } |
swilliams346 | 1:abd7e0631db8 | 89 | }//End 74 |
swilliams346 | 1:abd7e0631db8 | 90 | Thread::wait(10); |
swilliams346 | 1:abd7e0631db8 | 91 | }//End While |
swilliams346 | 1:abd7e0631db8 | 92 | }//End Thread |
swilliams346 | 1:abd7e0631db8 | 93 | |
swilliams346 | 1:abd7e0631db8 | 94 | void AutoPilot_thread(void const *argument) |
swilliams346 | 1:abd7e0631db8 | 95 | { |
swilliams346 | 1:abd7e0631db8 | 96 | while(Alive) { |
swilliams346 | 1:abd7e0631db8 | 97 | //Auto-pilot Testing |
swilliams346 | 1:abd7e0631db8 | 98 | |
swilliams346 | 1:abd7e0631db8 | 99 | //stdio_mutex.lock(); |
swilliams346 | 1:abd7e0631db8 | 100 | //myRobot.drawEraser(); |
swilliams346 | 1:abd7e0631db8 | 101 | //myRobot.moveForward(); |
swilliams346 | 1:abd7e0631db8 | 102 | //myRobot.drawFrog(); |
swilliams346 | 1:abd7e0631db8 | 103 | //stdio_mutex.unlock(); |
swilliams346 | 1:abd7e0631db8 | 104 | //Thread::wait(50); |
swilliams346 | 1:abd7e0631db8 | 105 | |
swilliams346 | 1:abd7e0631db8 | 106 | break; |
swilliams346 | 0:9f1095365b9a | 107 | } |
swilliams346 | 0:9f1095365b9a | 108 | } |
swilliams346 | 0:9f1095365b9a | 109 | |
swilliams346 | 0:9f1095365b9a | 110 | void Traffic1_thread(void const *argument) //Blue Car |
swilliams346 | 0:9f1095365b9a | 111 | { |
swilliams346 | 1:abd7e0631db8 | 112 | while(Alive) { |
swilliams346 | 0:9f1095365b9a | 113 | Position1 = Position1 + Rate1; |
swilliams346 | 0:9f1095365b9a | 114 | if(Position1 > 140 ){ |
swilliams346 | 0:9f1095365b9a | 115 | Position1 = -10; |
swilliams346 | 0:9f1095365b9a | 116 | } |
swilliams346 | 1:abd7e0631db8 | 117 | |
swilliams346 | 1:abd7e0631db8 | 118 | if(FrogY == 95){ //Check dangers on Traffic 1 Row 5 |
swilliams346 | 1:abd7e0631db8 | 119 | if(((Position1 + CarWidth)>(FrogX - 5)) && ((Position1 - CarWidth)<(FrogX + 5))){ |
swilliams346 | 1:abd7e0631db8 | 120 | Alive = 0; |
swilliams346 | 1:abd7e0631db8 | 121 | stdio_mutex.lock(); |
swilliams346 | 1:abd7e0631db8 | 122 | myRobot.drawDeadFrog(); |
swilliams346 | 1:abd7e0631db8 | 123 | stdio_mutex.unlock(); |
swilliams346 | 1:abd7e0631db8 | 124 | } |
swilliams346 | 1:abd7e0631db8 | 125 | } |
swilliams346 | 1:abd7e0631db8 | 126 | Column1 = (ceil((Position1 - CarWidth)/21))*21; |
swilliams346 | 1:abd7e0631db8 | 127 | |
swilliams346 | 0:9f1095365b9a | 128 | /*stdio_mutex.lock(); |
swilliams346 | 1:abd7e0631db8 | 129 | uLCD.locate(10,1); |
swilliams346 | 1:abd7e0631db8 | 130 | uLCD.printf("%3.0f", Column1); |
swilliams346 | 0:9f1095365b9a | 131 | stdio_mutex.unlock(); |
swilliams346 | 0:9f1095365b9a | 132 | */ |
swilliams346 | 0:9f1095365b9a | 133 | stdio_mutex.lock(); |
swilliams346 | 1:abd7e0631db8 | 134 | myRobot.drawRoad(Column1-10,95); |
swilliams346 | 1:abd7e0631db8 | 135 | myRobot.drawRoad(Column1-31,95); |
swilliams346 | 1:abd7e0631db8 | 136 | myRobot.drawCar1(Position1,CarWidth); |
swilliams346 | 0:9f1095365b9a | 137 | stdio_mutex.unlock(); |
swilliams346 | 1:abd7e0631db8 | 138 | Thread::wait(10); |
swilliams346 | 0:9f1095365b9a | 139 | } |
swilliams346 | 0:9f1095365b9a | 140 | } |
swilliams346 | 0:9f1095365b9a | 141 | |
swilliams346 | 0:9f1095365b9a | 142 | void Traffic2_thread(void const *argument) //Red Car |
swilliams346 | 0:9f1095365b9a | 143 | { |
swilliams346 | 1:abd7e0631db8 | 144 | while(Alive) { |
swilliams346 | 0:9f1095365b9a | 145 | Position2 = Position2 - Rate1; |
swilliams346 | 0:9f1095365b9a | 146 | if(Position2 < 0 ){ |
swilliams346 | 0:9f1095365b9a | 147 | Position2 = 140; |
swilliams346 | 0:9f1095365b9a | 148 | } |
swilliams346 | 1:abd7e0631db8 | 149 | |
swilliams346 | 1:abd7e0631db8 | 150 | if(FrogY == 53){ //Check dangers on Traffic 2 Row 3 |
swilliams346 | 1:abd7e0631db8 | 151 | if(((Position2 + CarWidth)>(FrogX - 5)) && ((Position2 - CarWidth)<(FrogX + 5))){ |
swilliams346 | 1:abd7e0631db8 | 152 | Alive = 0; |
swilliams346 | 1:abd7e0631db8 | 153 | stdio_mutex.lock(); |
swilliams346 | 1:abd7e0631db8 | 154 | myRobot.drawDeadFrog(); |
swilliams346 | 1:abd7e0631db8 | 155 | stdio_mutex.unlock(); |
swilliams346 | 1:abd7e0631db8 | 156 | } |
swilliams346 | 1:abd7e0631db8 | 157 | } |
swilliams346 | 1:abd7e0631db8 | 158 | Column2 = (ceil((Position2 - CarWidth)/21))*21; |
swilliams346 | 0:9f1095365b9a | 159 | stdio_mutex.lock(); |
swilliams346 | 1:abd7e0631db8 | 160 | myRobot.drawRoad(Column2+10,53); |
swilliams346 | 1:abd7e0631db8 | 161 | myRobot.drawRoad(Column2+31,53); |
swilliams346 | 1:abd7e0631db8 | 162 | myRobot.drawCar2(Position2,CarWidth); |
swilliams346 | 0:9f1095365b9a | 163 | stdio_mutex.unlock(); |
swilliams346 | 0:9f1095365b9a | 164 | Thread::wait(35); |
swilliams346 | 0:9f1095365b9a | 165 | } |
swilliams346 | 0:9f1095365b9a | 166 | } |
swilliams346 | 0:9f1095365b9a | 167 | |
swilliams346 | 0:9f1095365b9a | 168 | void SFX_thread(void const *argument) |
swilliams346 | 0:9f1095365b9a | 169 | { |
swilliams346 | 1:abd7e0631db8 | 170 | while(1){ |
swilliams346 | 1:abd7e0631db8 | 171 | if(Alive == 1){ |
swilliams346 | 1:abd7e0631db8 | 172 | //stdio_mutex.lock(); |
swilliams346 | 1:abd7e0631db8 | 173 | //uLCD.locate(1,1); |
swilliams346 | 1:abd7e0631db8 | 174 | //uLCD.printf("DRY"); |
swilliams346 | 1:abd7e0631db8 | 175 | //stdio_mutex.unlock(); |
swilliams346 | 1:abd7e0631db8 | 176 | } |
swilliams346 | 1:abd7e0631db8 | 177 | |
swilliams346 | 1:abd7e0631db8 | 178 | if(Drown == 1){ |
swilliams346 | 1:abd7e0631db8 | 179 | stdio_mutex.lock(); |
swilliams346 | 1:abd7e0631db8 | 180 | uLCD.locate(1,1); |
swilliams346 | 1:abd7e0631db8 | 181 | uLCD.printf("SPLASH!"); |
swilliams346 | 1:abd7e0631db8 | 182 | stdio_mutex.unlock(); |
swilliams346 | 1:abd7e0631db8 | 183 | |
swilliams346 | 1:abd7e0631db8 | 184 | FILE *wave_file; |
swilliams346 | 1:abd7e0631db8 | 185 | wave_file=fopen("/sd/Splash.wav","r"); |
swilliams346 | 1:abd7e0631db8 | 186 | waver.play(wave_file); |
swilliams346 | 1:abd7e0631db8 | 187 | fclose(wave_file); |
swilliams346 | 1:abd7e0631db8 | 188 | } |
swilliams346 | 1:abd7e0631db8 | 189 | if(Splat == 1){ |
swilliams346 | 1:abd7e0631db8 | 190 | stdio_mutex.lock(); |
swilliams346 | 1:abd7e0631db8 | 191 | uLCD.locate(1,1); |
swilliams346 | 1:abd7e0631db8 | 192 | uLCD.printf("SPLAT!"); |
swilliams346 | 1:abd7e0631db8 | 193 | stdio_mutex.unlock(); |
swilliams346 | 1:abd7e0631db8 | 194 | |
ecardenas8 | 2:68c4e1539da5 | 195 | FILE *wave_file; |
ecardenas8 | 2:68c4e1539da5 | 196 | wave_file=fopen("/sd/Splat.wav","r"); |
ecardenas8 | 2:68c4e1539da5 | 197 | waver.play(wave_file); |
ecardenas8 | 2:68c4e1539da5 | 198 | fclose(wave_file); |
ecardenas8 | 2:68c4e1539da5 | 199 | } |
ecardenas8 | 2:68c4e1539da5 | 200 | if(Victory == 1){ |
ecardenas8 | 2:68c4e1539da5 | 201 | stdio_mutex.lock(); |
ecardenas8 | 2:68c4e1539da5 | 202 | uLCD.locate(1,1); |
ecardenas8 | 2:68c4e1539da5 | 203 | uLCD.printf("Victory!"); |
ecardenas8 | 2:68c4e1539da5 | 204 | stdio_mutex.unlock(); |
ecardenas8 | 2:68c4e1539da5 | 205 | |
ecardenas8 | 2:68c4e1539da5 | 206 | FILE *wave_file; |
ecardenas8 | 2:68c4e1539da5 | 207 | wave_file=fopen("/sd/Victory.wav","r"); |
ecardenas8 | 2:68c4e1539da5 | 208 | waver.play(wave_file); |
ecardenas8 | 2:68c4e1539da5 | 209 | fclose(wave_file); |
swilliams346 | 1:abd7e0631db8 | 210 | } |
swilliams346 | 1:abd7e0631db8 | 211 | Thread::wait(10); |
swilliams346 | 0:9f1095365b9a | 212 | } |
swilliams346 | 0:9f1095365b9a | 213 | } |
swilliams346 | 0:9f1095365b9a | 214 | |
swilliams346 | 0:9f1095365b9a | 215 | void Location_thread(void const *argument) |
swilliams346 | 0:9f1095365b9a | 216 | { |
swilliams346 | 0:9f1095365b9a | 217 | while(1){ |
swilliams346 | 0:9f1095365b9a | 218 | //stdio_mutex.lock(); |
swilliams346 | 0:9f1095365b9a | 219 | //uLCD.locate(1,1); |
swilliams346 | 0:9f1095365b9a | 220 | //uLCD.printf("%5.0d", myRobot.getXPosition()); |
swilliams346 | 0:9f1095365b9a | 221 | //uLCD.locate(8,1); |
swilliams346 | 0:9f1095365b9a | 222 | //uLCD.printf("%5.0d", myRobot.getYPosition()); |
swilliams346 | 0:9f1095365b9a | 223 | //stdio_mutex.unlock(); |
swilliams346 | 0:9f1095365b9a | 224 | Thread::wait(10); |
swilliams346 | 0:9f1095365b9a | 225 | } |
swilliams346 | 0:9f1095365b9a | 226 | } |
swilliams346 | 1:abd7e0631db8 | 227 | |
swilliams346 | 0:9f1095365b9a | 228 | void ThumbStick_thread(void const *argument) |
swilliams346 | 0:9f1095365b9a | 229 | { |
swilliams346 | 0:9f1095365b9a | 230 | while(1) { |
swilliams346 | 1:abd7e0631db8 | 231 | // Player Movement checked with navigation switch |
swilliams346 | 1:abd7e0631db8 | 232 | if (myNav.left() ) |
swilliams346 | 1:abd7e0631db8 | 233 | { |
swilliams346 | 1:abd7e0631db8 | 234 | stdio_mutex.lock(); |
swilliams346 | 1:abd7e0631db8 | 235 | myRobot.moveLeft(); |
swilliams346 | 1:abd7e0631db8 | 236 | stdio_mutex.unlock(); |
swilliams346 | 1:abd7e0631db8 | 237 | } |
swilliams346 | 1:abd7e0631db8 | 238 | |
swilliams346 | 1:abd7e0631db8 | 239 | if (myNav.right()) |
swilliams346 | 1:abd7e0631db8 | 240 | { |
swilliams346 | 1:abd7e0631db8 | 241 | stdio_mutex.lock(); |
swilliams346 | 1:abd7e0631db8 | 242 | myRobot.moveRight(); |
swilliams346 | 1:abd7e0631db8 | 243 | stdio_mutex.unlock(); |
swilliams346 | 1:abd7e0631db8 | 244 | } |
swilliams346 | 1:abd7e0631db8 | 245 | |
swilliams346 | 1:abd7e0631db8 | 246 | if (myNav.up()) |
swilliams346 | 1:abd7e0631db8 | 247 | { |
swilliams346 | 1:abd7e0631db8 | 248 | stdio_mutex.lock(); |
swilliams346 | 1:abd7e0631db8 | 249 | myRobot.moveForward(); |
swilliams346 | 1:abd7e0631db8 | 250 | stdio_mutex.unlock(); |
swilliams346 | 1:abd7e0631db8 | 251 | } |
swilliams346 | 1:abd7e0631db8 | 252 | |
swilliams346 | 1:abd7e0631db8 | 253 | if (myNav.down()) |
swilliams346 | 1:abd7e0631db8 | 254 | { |
swilliams346 | 1:abd7e0631db8 | 255 | stdio_mutex.lock(); |
swilliams346 | 1:abd7e0631db8 | 256 | myRobot.moveBackward(); |
swilliams346 | 1:abd7e0631db8 | 257 | stdio_mutex.unlock(); |
swilliams346 | 1:abd7e0631db8 | 258 | } |
swilliams346 | 1:abd7e0631db8 | 259 | Thread::wait(150); |
swilliams346 | 0:9f1095365b9a | 260 | } |
swilliams346 | 0:9f1095365b9a | 261 | } |
swilliams346 | 0:9f1095365b9a | 262 | |
swilliams346 | 0:9f1095365b9a | 263 | int main() |
swilliams346 | 0:9f1095365b9a | 264 | { |
swilliams346 | 1:abd7e0631db8 | 265 | //pb1.mode(PullUp); |
swilliams346 | 1:abd7e0631db8 | 266 | // Delay for initial pullup to take effect |
swilliams346 | 1:abd7e0631db8 | 267 | //Thread::wait(1000*.01); |
swilliams346 | 1:abd7e0631db8 | 268 | // Setup Interrupt callback functions for a pb hit |
swilliams346 | 1:abd7e0631db8 | 269 | //pb1.attach_deasserted(&pb1_hit_callback); |
swilliams346 | 1:abd7e0631db8 | 270 | // Start sampling pb inputs using interrupts |
swilliams346 | 1:abd7e0631db8 | 271 | //pb1.setSampleFrequency(); |
swilliams346 | 0:9f1095365b9a | 272 | //Initialize Background |
swilliams346 | 1:abd7e0631db8 | 273 | uLCD.baudrate(500000); |
swilliams346 | 0:9f1095365b9a | 274 | uLCD.filled_rectangle(0, 0 , 127, 127, RED); |
swilliams346 | 0:9f1095365b9a | 275 | myRobot.drawOutline(); |
swilliams346 | 0:9f1095365b9a | 276 | while(i <= 116){ |
swilliams346 | 0:9f1095365b9a | 277 | while(j <= 116){ |
swilliams346 | 0:9f1095365b9a | 278 | myRobot.drawHelper(i,j); |
swilliams346 | 0:9f1095365b9a | 279 | j = j + 21; |
swilliams346 | 0:9f1095365b9a | 280 | } |
swilliams346 | 0:9f1095365b9a | 281 | j = 11; |
swilliams346 | 0:9f1095365b9a | 282 | i = i + 21; |
swilliams346 | 0:9f1095365b9a | 283 | } |
swilliams346 | 0:9f1095365b9a | 284 | myRobot.drawFrog(); |
swilliams346 | 0:9f1095365b9a | 285 | |
swilliams346 | 0:9f1095365b9a | 286 | Thread thread1(AutoPilot_thread); |
swilliams346 | 0:9f1095365b9a | 287 | Thread thread2(Location_thread); |
swilliams346 | 0:9f1095365b9a | 288 | Thread thread3(ThumbStick_thread); |
swilliams346 | 0:9f1095365b9a | 289 | Thread thread4(SFX_thread); |
swilliams346 | 0:9f1095365b9a | 290 | Thread thread5(Traffic1_thread); |
swilliams346 | 0:9f1095365b9a | 291 | Thread thread6(Traffic2_thread); |
swilliams346 | 1:abd7e0631db8 | 292 | Thread thread7(DeathCheck_thread); |
swilliams346 | 0:9f1095365b9a | 293 | |
swilliams346 | 0:9f1095365b9a | 294 | while (1) { |
swilliams346 | 0:9f1095365b9a | 295 | |
swilliams346 | 0:9f1095365b9a | 296 | Thread::wait(500); |
swilliams346 | 0:9f1095365b9a | 297 | } |
swilliams346 | 0:9f1095365b9a | 298 | } |