![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Guitar Hero Project on LPC1768 using push buttons, analog joystick. speaker and LCD Display
Dependencies: mbed wave_player mbed-rtos 4DGL-uLCD-SE SparkfunAnalogJoystick SDFileSystem_OldbutworkswithRTOS PinDetect
main.cpp@8:32a0bb14dbd2, 2020-11-29 (annotated)
- Committer:
- mkim613
- Date:
- Sun Nov 29 19:05:37 2020 +0000
- Revision:
- 8:32a0bb14dbd2
- Parent:
- 7:5ac5056cde2c
- Child:
- 9:fbf87719b8b3
removed threads 3 and 4;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
rpatel397 | 3:6f639d41aef3 | 1 | |
4180_1 | 1:5b8e223e983d | 2 | |
4180_1 | 1:5b8e223e983d | 3 | #include "mbed.h" |
4180_1 | 2:c2afd0c426af | 4 | #include "rtos.h" |
4180_1 | 1:5b8e223e983d | 5 | #include "SDFileSystem.h" |
rpatel397 | 3:6f639d41aef3 | 6 | #include "uLCD_4DGL.h" |
rpatel397 | 3:6f639d41aef3 | 7 | #include "PinDetect.h" |
rpatel397 | 5:2f09b457f690 | 8 | #include "song1.h" |
mkim613 | 7:5ac5056cde2c | 9 | #include "SparkfunAnalogJoystick.h" |
rpatel397 | 5:2f09b457f690 | 10 | #define sample_freq 8000.0 |
rpatel397 | 4:577404e4d53f | 11 | //code change |
rpatel397 | 3:6f639d41aef3 | 12 | Mutex lcd_mut; |
rpatel397 | 3:6f639d41aef3 | 13 | //SDFileSystem sd(p5, p6, p7, p8, "sd"); //SD card |
rpatel397 | 3:6f639d41aef3 | 14 | uLCD_4DGL uLCD(p28,p27,p30); // serial tx, serial rx, reset pin; |
mkim613 | 7:5ac5056cde2c | 15 | //AnalogOut DACout(p18); |
mkim613 | 7:5ac5056cde2c | 16 | //wave_player waver(&DACout); |
rpatel397 | 5:2f09b457f690 | 17 | AnalogOut speaker(p18); |
mkim613 | 7:5ac5056cde2c | 18 | SparkfunAnalogJoystick joy(p16, p17, p15); |
rpatel397 | 3:6f639d41aef3 | 19 | PinDetect pb_1(p9, PullUp); |
rpatel397 | 3:6f639d41aef3 | 20 | PinDetect pb_2(p10, PullUp); |
rpatel397 | 3:6f639d41aef3 | 21 | PinDetect pb_3(p11, PullUp); |
rpatel397 | 3:6f639d41aef3 | 22 | PinDetect pb_4(p12, PullUp); |
rpatel397 | 3:6f639d41aef3 | 23 | |
rpatel397 | 3:6f639d41aef3 | 24 | #define Main_Menu 0 // the first screen being shown |
rpatel397 | 3:6f639d41aef3 | 25 | #define Choose_Difficulty 1 // after hitting start, player chooses difficult |
rpatel397 | 3:6f639d41aef3 | 26 | #define Choose_Song 2 // after choosing difficullyt, choose song |
rpatel397 | 3:6f639d41aef3 | 27 | #define Start_Game 3 // the game has started |
rpatel397 | 3:6f639d41aef3 | 28 | #define Game_Over 4 // the game is done |
rpatel397 | 3:6f639d41aef3 | 29 | |
rpatel397 | 3:6f639d41aef3 | 30 | |
rpatel397 | 3:6f639d41aef3 | 31 | //colors |
rpatel397 | 3:6f639d41aef3 | 32 | #define YELLOW 16709376 |
rpatel397 | 3:6f639d41aef3 | 33 | |
rpatel397 | 3:6f639d41aef3 | 34 | //speed based on difficulty |
mkim613 | 7:5ac5056cde2c | 35 | #define Easy 10 |
mkim613 | 7:5ac5056cde2c | 36 | #define Medium 15 |
mkim613 | 7:5ac5056cde2c | 37 | #define Hard 20 |
4180_1 | 1:5b8e223e983d | 38 | |
4180_1 | 1:5b8e223e983d | 39 | |
rpatel397 | 3:6f639d41aef3 | 40 | DigitalOut myled1(LED1); |
rpatel397 | 3:6f639d41aef3 | 41 | DigitalOut myled2(LED2); |
rpatel397 | 3:6f639d41aef3 | 42 | DigitalOut myled3(LED3); |
rpatel397 | 3:6f639d41aef3 | 43 | DigitalOut myled4(LED4); |
rpatel397 | 3:6f639d41aef3 | 44 | |
rpatel397 | 5:2f09b457f690 | 45 | Ticker sampletick; |
rpatel397 | 5:2f09b457f690 | 46 | |
mkim613 | 7:5ac5056cde2c | 47 | volatile int Game_State = Main_Menu; |
rpatel397 | 3:6f639d41aef3 | 48 | volatile bool draw_enable = true; |
rpatel397 | 3:6f639d41aef3 | 49 | volatile int Speed = Easy; |
rpatel397 | 3:6f639d41aef3 | 50 | |
mkim613 | 7:5ac5056cde2c | 51 | volatile int y1; |
mkim613 | 7:5ac5056cde2c | 52 | volatile int y2; |
mkim613 | 7:5ac5056cde2c | 53 | volatile int y3; |
mkim613 | 7:5ac5056cde2c | 54 | volatile int y4; |
rpatel397 | 6:4bc137ec1022 | 55 | volatile int score = 0; |
mkim613 | 7:5ac5056cde2c | 56 | volatile int highScore = 0; |
mkim613 | 7:5ac5056cde2c | 57 | volatile int easyHigh = 0; |
mkim613 | 7:5ac5056cde2c | 58 | volatile int medHigh = 0; |
mkim613 | 7:5ac5056cde2c | 59 | volatile int hardHigh = 0; |
mkim613 | 7:5ac5056cde2c | 60 | volatile int hit = 0; |
mkim613 | 7:5ac5056cde2c | 61 | volatile int miss = 0; |
mkim613 | 7:5ac5056cde2c | 62 | volatile int totalBubbles = 0; |
mkim613 | 7:5ac5056cde2c | 63 | |
mkim613 | 7:5ac5056cde2c | 64 | volatile bool greenRelease = false; |
mkim613 | 7:5ac5056cde2c | 65 | volatile bool redRelease = false; |
mkim613 | 7:5ac5056cde2c | 66 | volatile bool yellowRelease = false; |
mkim613 | 7:5ac5056cde2c | 67 | volatile bool blueRelease = false; |
mkim613 | 7:5ac5056cde2c | 68 | |
mkim613 | 7:5ac5056cde2c | 69 | volatile bool greenPress = false; |
mkim613 | 7:5ac5056cde2c | 70 | volatile bool redPress = false; |
mkim613 | 7:5ac5056cde2c | 71 | volatile bool yellowPress = false; |
mkim613 | 7:5ac5056cde2c | 72 | volatile bool bluePress = false; |
mkim613 | 7:5ac5056cde2c | 73 | |
rpatel397 | 5:2f09b457f690 | 74 | int i=0; |
mkim613 | 7:5ac5056cde2c | 75 | |
mkim613 | 7:5ac5056cde2c | 76 | void otherMode(int speed) { |
mkim613 | 7:5ac5056cde2c | 77 | int scoreUp; |
mkim613 | 7:5ac5056cde2c | 78 | if (speed == Medium) { |
mkim613 | 7:5ac5056cde2c | 79 | y1 = 5; |
mkim613 | 7:5ac5056cde2c | 80 | y2 = 5; |
mkim613 | 7:5ac5056cde2c | 81 | y3 = 5; |
mkim613 | 7:5ac5056cde2c | 82 | y4 = 5; |
mkim613 | 7:5ac5056cde2c | 83 | scoreUp = 1000; |
mkim613 | 7:5ac5056cde2c | 84 | } else { |
mkim613 | 7:5ac5056cde2c | 85 | y1 = 10; |
mkim613 | 7:5ac5056cde2c | 86 | y2 = 10; |
mkim613 | 7:5ac5056cde2c | 87 | y3 = 10; |
mkim613 | 7:5ac5056cde2c | 88 | y4 = 10; |
mkim613 | 7:5ac5056cde2c | 89 | scoreUp = 1500; |
mkim613 | 7:5ac5056cde2c | 90 | } |
mkim613 | 7:5ac5056cde2c | 91 | int pattern = 1; |
mkim613 | 7:5ac5056cde2c | 92 | score = 0; |
mkim613 | 7:5ac5056cde2c | 93 | hit = 0; |
mkim613 | 7:5ac5056cde2c | 94 | totalBubbles = 0; |
mkim613 | 7:5ac5056cde2c | 95 | Speed = speed; |
mkim613 | 7:5ac5056cde2c | 96 | //uLCD.cls(); |
mkim613 | 7:5ac5056cde2c | 97 | //uLCD.printf("GameStart"); |
mkim613 | 7:5ac5056cde2c | 98 | uLCD.baudrate(BAUD_3000000); //jack up baud rate to max for fast display |
mkim613 | 7:5ac5056cde2c | 99 | uLCD.background_color(BLACK); |
mkim613 | 7:5ac5056cde2c | 100 | Thread::wait(1000); |
mkim613 | 7:5ac5056cde2c | 101 | uLCD.circle(10,110, 8, GREEN); |
mkim613 | 7:5ac5056cde2c | 102 | uLCD.circle(45,110, 8, RED); |
mkim613 | 7:5ac5056cde2c | 103 | uLCD.circle(80,110, 8, YELLOW); |
mkim613 | 7:5ac5056cde2c | 104 | uLCD.circle(115,110, 8, BLUE); |
mkim613 | 7:5ac5056cde2c | 105 | Thread::wait(750); |
mkim613 | 7:5ac5056cde2c | 106 | switch (pattern) { |
mkim613 | 7:5ac5056cde2c | 107 | case 1: |
mkim613 | 7:5ac5056cde2c | 108 | totalBubbles += 4; |
mkim613 | 7:5ac5056cde2c | 109 | greenPress = false; |
mkim613 | 7:5ac5056cde2c | 110 | redPress = false; |
mkim613 | 7:5ac5056cde2c | 111 | yellowPress = false; |
mkim613 | 7:5ac5056cde2c | 112 | bluePress = false; |
mkim613 | 7:5ac5056cde2c | 113 | redRelease = false; |
mkim613 | 7:5ac5056cde2c | 114 | yellowRelease = false; |
mkim613 | 7:5ac5056cde2c | 115 | greenRelease = false; |
mkim613 | 7:5ac5056cde2c | 116 | blueRelease = false; |
mkim613 | 7:5ac5056cde2c | 117 | if (speed == Medium) { |
mkim613 | 7:5ac5056cde2c | 118 | y1 = 5; |
mkim613 | 7:5ac5056cde2c | 119 | y2 = 5; |
mkim613 | 7:5ac5056cde2c | 120 | y3 = 5; |
mkim613 | 7:5ac5056cde2c | 121 | y4 = 5; |
mkim613 | 7:5ac5056cde2c | 122 | } else { |
mkim613 | 7:5ac5056cde2c | 123 | y1 = 30; |
mkim613 | 7:5ac5056cde2c | 124 | y2 = 30; |
mkim613 | 7:5ac5056cde2c | 125 | y3 = 30; |
mkim613 | 7:5ac5056cde2c | 126 | y4 = 30; |
mkim613 | 7:5ac5056cde2c | 127 | } |
mkim613 | 7:5ac5056cde2c | 128 | while (y4 <= 130) { |
mkim613 | 7:5ac5056cde2c | 129 | if(y1 <= 130) { |
mkim613 | 7:5ac5056cde2c | 130 | y1 += Speed; |
mkim613 | 7:5ac5056cde2c | 131 | } |
mkim613 | 7:5ac5056cde2c | 132 | if (redRelease) { |
mkim613 | 7:5ac5056cde2c | 133 | y2+= Speed; |
mkim613 | 7:5ac5056cde2c | 134 | } |
mkim613 | 7:5ac5056cde2c | 135 | if (yellowRelease) { |
mkim613 | 7:5ac5056cde2c | 136 | y3+= Speed; |
mkim613 | 7:5ac5056cde2c | 137 | } |
mkim613 | 7:5ac5056cde2c | 138 | if (blueRelease) { |
mkim613 | 7:5ac5056cde2c | 139 | y4 += Speed; |
mkim613 | 7:5ac5056cde2c | 140 | } |
mkim613 | 7:5ac5056cde2c | 141 | |
mkim613 | 7:5ac5056cde2c | 142 | if(y1 <= 130 && !greenPress) { |
mkim613 | 7:5ac5056cde2c | 143 | uLCD.filled_circle(10,y1, 8 , GREEN); |
mkim613 | 7:5ac5056cde2c | 144 | } |
mkim613 | 7:5ac5056cde2c | 145 | if ((y1 >= 31 && y2 <= 130) && !redPress ) { |
mkim613 | 7:5ac5056cde2c | 146 | uLCD.filled_circle(45,y2, 8 , RED); |
mkim613 | 7:5ac5056cde2c | 147 | redRelease = true; |
mkim613 | 7:5ac5056cde2c | 148 | } |
mkim613 | 7:5ac5056cde2c | 149 | if ((y2 >= 31 && y3 <= 130) && !yellowPress) { |
mkim613 | 7:5ac5056cde2c | 150 | uLCD.filled_circle(80,y3, 8 , YELLOW); |
mkim613 | 7:5ac5056cde2c | 151 | yellowRelease = true; |
mkim613 | 7:5ac5056cde2c | 152 | } |
mkim613 | 7:5ac5056cde2c | 153 | if((y3 >= 31 && y4 <= 130) && !bluePress) { |
mkim613 | 7:5ac5056cde2c | 154 | uLCD.filled_circle(115,y4, 8 , BLUE); |
mkim613 | 7:5ac5056cde2c | 155 | blueRelease = true; |
mkim613 | 7:5ac5056cde2c | 156 | } |
mkim613 | 7:5ac5056cde2c | 157 | Thread::wait(250); |
mkim613 | 7:5ac5056cde2c | 158 | uLCD.filled_circle(10, y1, 8 , BLACK); |
mkim613 | 7:5ac5056cde2c | 159 | uLCD.filled_circle(45, y2, 8 , BLACK); |
mkim613 | 7:5ac5056cde2c | 160 | uLCD.filled_circle(80, y3, 8 , BLACK); |
mkim613 | 7:5ac5056cde2c | 161 | uLCD.filled_circle(115, y4, 8 , BLACK); |
mkim613 | 7:5ac5056cde2c | 162 | |
mkim613 | 7:5ac5056cde2c | 163 | if (y1 == 110 && greenPress) { |
mkim613 | 7:5ac5056cde2c | 164 | //uLCD.filled_circle(10, y1, 8 , WHITE); |
mkim613 | 7:5ac5056cde2c | 165 | uLCD.circle(10,110, 8, GREEN); |
mkim613 | 7:5ac5056cde2c | 166 | score += scoreUp; |
mkim613 | 7:5ac5056cde2c | 167 | hit++; |
mkim613 | 7:5ac5056cde2c | 168 | } else { |
mkim613 | 7:5ac5056cde2c | 169 | uLCD.filled_circle(10, y1, 8 , BLACK); |
mkim613 | 7:5ac5056cde2c | 170 | uLCD.circle(10,110, 8, GREEN); |
mkim613 | 7:5ac5056cde2c | 171 | } |
mkim613 | 7:5ac5056cde2c | 172 | if (y2 == 110 && redPress) { |
mkim613 | 7:5ac5056cde2c | 173 | //uLCD.filled_circle(45, y2, 8 , WHITE); |
mkim613 | 7:5ac5056cde2c | 174 | uLCD.circle(45,110, 8, RED); |
mkim613 | 7:5ac5056cde2c | 175 | score += scoreUp; |
mkim613 | 7:5ac5056cde2c | 176 | hit++; |
mkim613 | 7:5ac5056cde2c | 177 | } else { |
mkim613 | 7:5ac5056cde2c | 178 | uLCD.filled_circle(45, y2, 8 , BLACK); |
mkim613 | 7:5ac5056cde2c | 179 | uLCD.circle(45,110, 8, RED); |
mkim613 | 7:5ac5056cde2c | 180 | } |
mkim613 | 7:5ac5056cde2c | 181 | if(y3 == 110 && yellowPress) { |
mkim613 | 7:5ac5056cde2c | 182 | //uLCD.filled_circle(80, y3, 8 , WHITE); |
mkim613 | 7:5ac5056cde2c | 183 | uLCD.circle(80,110, 8, YELLOW); |
mkim613 | 7:5ac5056cde2c | 184 | score += scoreUp; |
mkim613 | 7:5ac5056cde2c | 185 | hit++; |
mkim613 | 7:5ac5056cde2c | 186 | } else { |
mkim613 | 7:5ac5056cde2c | 187 | uLCD.filled_circle(80, y3, 8 , BLACK); |
mkim613 | 7:5ac5056cde2c | 188 | uLCD.circle(80,110, 8, YELLOW); |
mkim613 | 7:5ac5056cde2c | 189 | } |
mkim613 | 7:5ac5056cde2c | 190 | if(y4 == 110 && bluePress) { |
mkim613 | 7:5ac5056cde2c | 191 | uLCD.circle(115,110, 8, BLUE); |
mkim613 | 7:5ac5056cde2c | 192 | score += scoreUp; |
mkim613 | 7:5ac5056cde2c | 193 | hit++; |
mkim613 | 7:5ac5056cde2c | 194 | } else { |
mkim613 | 7:5ac5056cde2c | 195 | uLCD.filled_circle(115, y4, 8 , BLACK); |
mkim613 | 7:5ac5056cde2c | 196 | uLCD.circle(115,110, 8, BLUE); |
mkim613 | 7:5ac5056cde2c | 197 | } |
mkim613 | 7:5ac5056cde2c | 198 | } |
mkim613 | 7:5ac5056cde2c | 199 | |
mkim613 | 7:5ac5056cde2c | 200 | case 2: //green and red then yellow and blue |
mkim613 | 7:5ac5056cde2c | 201 | totalBubbles += 4; |
mkim613 | 7:5ac5056cde2c | 202 | greenPress = false; |
mkim613 | 7:5ac5056cde2c | 203 | redPress = false; |
mkim613 | 7:5ac5056cde2c | 204 | yellowPress = false; |
mkim613 | 7:5ac5056cde2c | 205 | bluePress = false; |
mkim613 | 7:5ac5056cde2c | 206 | redRelease = false; |
mkim613 | 7:5ac5056cde2c | 207 | yellowRelease = false; |
mkim613 | 7:5ac5056cde2c | 208 | greenRelease = false; |
mkim613 | 7:5ac5056cde2c | 209 | blueRelease = false; |
mkim613 | 7:5ac5056cde2c | 210 | if (speed == Medium) { |
mkim613 | 7:5ac5056cde2c | 211 | y1 = 5; |
mkim613 | 7:5ac5056cde2c | 212 | y2 = 5; |
mkim613 | 7:5ac5056cde2c | 213 | y3 = 5; |
mkim613 | 7:5ac5056cde2c | 214 | y4 = 5; |
mkim613 | 7:5ac5056cde2c | 215 | } else { |
mkim613 | 7:5ac5056cde2c | 216 | y1 = 10; |
mkim613 | 7:5ac5056cde2c | 217 | y2 = 10; |
mkim613 | 7:5ac5056cde2c | 218 | y3 = 10; |
mkim613 | 7:5ac5056cde2c | 219 | y4 = 10; |
mkim613 | 7:5ac5056cde2c | 220 | } |
mkim613 | 7:5ac5056cde2c | 221 | while (y4 <= 130) { |
mkim613 | 7:5ac5056cde2c | 222 | if(y1 <= 130) { |
mkim613 | 7:5ac5056cde2c | 223 | y1 += Speed; |
mkim613 | 7:5ac5056cde2c | 224 | } |
mkim613 | 7:5ac5056cde2c | 225 | if (y2 <= 130) { |
mkim613 | 7:5ac5056cde2c | 226 | y2+= Speed; |
mkim613 | 7:5ac5056cde2c | 227 | } |
mkim613 | 7:5ac5056cde2c | 228 | if (yellowRelease) { |
mkim613 | 7:5ac5056cde2c | 229 | y3+= Speed; |
mkim613 | 7:5ac5056cde2c | 230 | } |
mkim613 | 7:5ac5056cde2c | 231 | if (blueRelease) { |
mkim613 | 7:5ac5056cde2c | 232 | y4 += Speed; |
mkim613 | 7:5ac5056cde2c | 233 | } |
mkim613 | 7:5ac5056cde2c | 234 | |
mkim613 | 7:5ac5056cde2c | 235 | if(y1 <= 130 && !greenPress) { |
mkim613 | 7:5ac5056cde2c | 236 | uLCD.filled_circle(10,y1, 8 , GREEN); |
mkim613 | 7:5ac5056cde2c | 237 | } |
mkim613 | 7:5ac5056cde2c | 238 | if (y2 <= 130 && !redPress ) { |
mkim613 | 7:5ac5056cde2c | 239 | uLCD.filled_circle(45,y2, 8 , RED); |
mkim613 | 7:5ac5056cde2c | 240 | redRelease = true; |
mkim613 | 7:5ac5056cde2c | 241 | } |
mkim613 | 7:5ac5056cde2c | 242 | if ((y2 >= 60 && y3 <= 130) && !yellowPress) { |
mkim613 | 7:5ac5056cde2c | 243 | uLCD.filled_circle(80,y3, 8 , YELLOW); |
mkim613 | 7:5ac5056cde2c | 244 | yellowRelease = true; |
mkim613 | 7:5ac5056cde2c | 245 | } |
mkim613 | 7:5ac5056cde2c | 246 | if((y2 >= 60 && y4 <= 130) && !bluePress) { |
mkim613 | 7:5ac5056cde2c | 247 | uLCD.filled_circle(115,y4, 8 , BLUE); |
mkim613 | 7:5ac5056cde2c | 248 | blueRelease = true; |
mkim613 | 7:5ac5056cde2c | 249 | } |
mkim613 | 7:5ac5056cde2c | 250 | Thread::wait(250); |
mkim613 | 7:5ac5056cde2c | 251 | uLCD.filled_circle(10, y1, 8 , BLACK); |
mkim613 | 7:5ac5056cde2c | 252 | uLCD.filled_circle(45, y2, 8 , BLACK); |
mkim613 | 7:5ac5056cde2c | 253 | uLCD.filled_circle(80, y3, 8 , BLACK); |
mkim613 | 7:5ac5056cde2c | 254 | uLCD.filled_circle(115, y4, 8 , BLACK); |
mkim613 | 7:5ac5056cde2c | 255 | |
mkim613 | 7:5ac5056cde2c | 256 | if (y1 == 110 && greenPress) { |
mkim613 | 7:5ac5056cde2c | 257 | //uLCD.filled_circle(10, y1, 8 , WHITE); |
mkim613 | 7:5ac5056cde2c | 258 | uLCD.circle(10,110, 8, GREEN); |
mkim613 | 7:5ac5056cde2c | 259 | score += scoreUp; |
mkim613 | 7:5ac5056cde2c | 260 | hit++; |
mkim613 | 7:5ac5056cde2c | 261 | } else { |
mkim613 | 7:5ac5056cde2c | 262 | uLCD.filled_circle(10, y1, 8 , BLACK); |
mkim613 | 7:5ac5056cde2c | 263 | uLCD.circle(10,110, 8, GREEN); |
mkim613 | 7:5ac5056cde2c | 264 | } |
mkim613 | 7:5ac5056cde2c | 265 | if (y2 == 110 && redPress) { |
mkim613 | 7:5ac5056cde2c | 266 | //uLCD.filled_circle(45, y2, 8 , WHITE); |
mkim613 | 7:5ac5056cde2c | 267 | uLCD.circle(45,110, 8, RED); |
mkim613 | 7:5ac5056cde2c | 268 | score += scoreUp; |
mkim613 | 7:5ac5056cde2c | 269 | hit++; |
mkim613 | 7:5ac5056cde2c | 270 | } else { |
mkim613 | 7:5ac5056cde2c | 271 | uLCD.filled_circle(45, y2, 8 , BLACK); |
mkim613 | 7:5ac5056cde2c | 272 | uLCD.circle(45,110, 8, RED); |
mkim613 | 7:5ac5056cde2c | 273 | } |
mkim613 | 7:5ac5056cde2c | 274 | if(y3 == 110 && yellowPress) { |
mkim613 | 7:5ac5056cde2c | 275 | uLCD.circle(80,110, 8, YELLOW); |
mkim613 | 7:5ac5056cde2c | 276 | score += scoreUp; |
mkim613 | 7:5ac5056cde2c | 277 | hit++; |
mkim613 | 7:5ac5056cde2c | 278 | } else { |
mkim613 | 7:5ac5056cde2c | 279 | uLCD.filled_circle(80, y3, 8 , BLACK); |
mkim613 | 7:5ac5056cde2c | 280 | uLCD.circle(80,110, 8, YELLOW); |
mkim613 | 7:5ac5056cde2c | 281 | } |
mkim613 | 7:5ac5056cde2c | 282 | if(y4 == 110 && bluePress) { |
mkim613 | 7:5ac5056cde2c | 283 | uLCD.circle(115,110, 8, BLUE); |
mkim613 | 7:5ac5056cde2c | 284 | score += scoreUp; |
mkim613 | 7:5ac5056cde2c | 285 | hit++; |
mkim613 | 7:5ac5056cde2c | 286 | } else { |
mkim613 | 7:5ac5056cde2c | 287 | uLCD.filled_circle(115, y4, 8 , BLACK); |
mkim613 | 7:5ac5056cde2c | 288 | uLCD.circle(115,110, 8, BLUE); |
mkim613 | 7:5ac5056cde2c | 289 | } |
mkim613 | 7:5ac5056cde2c | 290 | } |
mkim613 | 7:5ac5056cde2c | 291 | |
mkim613 | 7:5ac5056cde2c | 292 | case 3: //green and yellow then red and blue |
mkim613 | 7:5ac5056cde2c | 293 | totalBubbles += 4; |
mkim613 | 7:5ac5056cde2c | 294 | greenPress = false; |
mkim613 | 7:5ac5056cde2c | 295 | redPress = false; |
mkim613 | 7:5ac5056cde2c | 296 | yellowPress = false; |
mkim613 | 7:5ac5056cde2c | 297 | bluePress = false; |
mkim613 | 7:5ac5056cde2c | 298 | redRelease = false; |
mkim613 | 7:5ac5056cde2c | 299 | yellowRelease = false; |
mkim613 | 7:5ac5056cde2c | 300 | greenRelease = false; |
mkim613 | 7:5ac5056cde2c | 301 | blueRelease = false; |
mkim613 | 7:5ac5056cde2c | 302 | if (speed == Medium) { |
mkim613 | 7:5ac5056cde2c | 303 | y1 = 5; |
mkim613 | 7:5ac5056cde2c | 304 | y2 = 5; |
mkim613 | 7:5ac5056cde2c | 305 | y3 = 5; |
mkim613 | 7:5ac5056cde2c | 306 | y4 = 5; |
mkim613 | 7:5ac5056cde2c | 307 | } else { |
mkim613 | 7:5ac5056cde2c | 308 | y1 = 10; |
mkim613 | 7:5ac5056cde2c | 309 | y2 = 10; |
mkim613 | 7:5ac5056cde2c | 310 | y3 = 10; |
mkim613 | 7:5ac5056cde2c | 311 | y4 = 10; |
mkim613 | 7:5ac5056cde2c | 312 | } |
mkim613 | 7:5ac5056cde2c | 313 | while (y4 <= 130) { |
mkim613 | 7:5ac5056cde2c | 314 | if(y1 <= 130) { |
mkim613 | 7:5ac5056cde2c | 315 | y1 += Speed; |
mkim613 | 7:5ac5056cde2c | 316 | } |
mkim613 | 7:5ac5056cde2c | 317 | if (redRelease) { |
mkim613 | 7:5ac5056cde2c | 318 | y2+= Speed; |
mkim613 | 7:5ac5056cde2c | 319 | } |
mkim613 | 7:5ac5056cde2c | 320 | if (y3 <= 130) { |
mkim613 | 7:5ac5056cde2c | 321 | y3+= Speed; |
mkim613 | 7:5ac5056cde2c | 322 | } |
mkim613 | 7:5ac5056cde2c | 323 | if (blueRelease) { |
mkim613 | 7:5ac5056cde2c | 324 | y4 += Speed; |
mkim613 | 7:5ac5056cde2c | 325 | } |
mkim613 | 7:5ac5056cde2c | 326 | |
mkim613 | 7:5ac5056cde2c | 327 | if(y1 <= 130 && !greenPress) { |
mkim613 | 7:5ac5056cde2c | 328 | uLCD.filled_circle(10,y1, 8 , GREEN); |
mkim613 | 7:5ac5056cde2c | 329 | } |
mkim613 | 7:5ac5056cde2c | 330 | if ((y1 >= 60 && y2 <= 130) && !redPress ) { |
mkim613 | 7:5ac5056cde2c | 331 | uLCD.filled_circle(45,y2, 8 , RED); |
mkim613 | 7:5ac5056cde2c | 332 | redRelease = true; |
mkim613 | 7:5ac5056cde2c | 333 | } |
mkim613 | 7:5ac5056cde2c | 334 | if (y3 <= 130 && !yellowPress) { |
mkim613 | 7:5ac5056cde2c | 335 | uLCD.filled_circle(80,y3, 8 , YELLOW); |
mkim613 | 7:5ac5056cde2c | 336 | yellowRelease = true; |
mkim613 | 7:5ac5056cde2c | 337 | } |
mkim613 | 7:5ac5056cde2c | 338 | if((y1 >= 60 && y4 <= 130) && !bluePress) { |
mkim613 | 7:5ac5056cde2c | 339 | uLCD.filled_circle(115,y4, 8 , BLUE); |
mkim613 | 7:5ac5056cde2c | 340 | blueRelease = true; |
mkim613 | 7:5ac5056cde2c | 341 | } |
mkim613 | 7:5ac5056cde2c | 342 | Thread::wait(250); |
mkim613 | 7:5ac5056cde2c | 343 | uLCD.filled_circle(10, y1, 8 , BLACK); |
mkim613 | 7:5ac5056cde2c | 344 | uLCD.filled_circle(45, y2, 8 , BLACK); |
mkim613 | 7:5ac5056cde2c | 345 | uLCD.filled_circle(80, y3, 8 , BLACK); |
mkim613 | 7:5ac5056cde2c | 346 | uLCD.filled_circle(115, y4, 8 , BLACK); |
mkim613 | 7:5ac5056cde2c | 347 | |
mkim613 | 7:5ac5056cde2c | 348 | if (y1 == 110 && greenPress) { |
mkim613 | 7:5ac5056cde2c | 349 | //uLCD.filled_circle(10, y1, 8 , WHITE); |
mkim613 | 7:5ac5056cde2c | 350 | uLCD.circle(10,110, 8, GREEN); |
mkim613 | 7:5ac5056cde2c | 351 | score += scoreUp; |
mkim613 | 7:5ac5056cde2c | 352 | hit++; |
mkim613 | 7:5ac5056cde2c | 353 | } else { |
mkim613 | 7:5ac5056cde2c | 354 | uLCD.filled_circle(10, y1, 8 , BLACK); |
mkim613 | 7:5ac5056cde2c | 355 | uLCD.circle(10,110, 8, GREEN); |
mkim613 | 7:5ac5056cde2c | 356 | } |
mkim613 | 7:5ac5056cde2c | 357 | if (y2 == 110 && redPress) { |
mkim613 | 7:5ac5056cde2c | 358 | //uLCD.filled_circle(45, y2, 8 , WHITE); |
mkim613 | 7:5ac5056cde2c | 359 | uLCD.circle(45,110, 8, RED); |
mkim613 | 7:5ac5056cde2c | 360 | score += scoreUp; |
mkim613 | 7:5ac5056cde2c | 361 | hit++; |
mkim613 | 7:5ac5056cde2c | 362 | } else { |
mkim613 | 7:5ac5056cde2c | 363 | uLCD.filled_circle(45, y2, 8 , BLACK); |
mkim613 | 7:5ac5056cde2c | 364 | uLCD.circle(45,110, 8, RED); |
mkim613 | 7:5ac5056cde2c | 365 | } |
mkim613 | 7:5ac5056cde2c | 366 | if(y3 == 110 && yellowPress) { |
mkim613 | 7:5ac5056cde2c | 367 | //uLCD.filled_circle(80, y3, 8 , WHITE); |
mkim613 | 7:5ac5056cde2c | 368 | uLCD.circle(80,110, 8, YELLOW); |
mkim613 | 7:5ac5056cde2c | 369 | score += scoreUp; |
mkim613 | 7:5ac5056cde2c | 370 | hit++; |
mkim613 | 7:5ac5056cde2c | 371 | } else { |
mkim613 | 7:5ac5056cde2c | 372 | uLCD.filled_circle(80, y3, 8 , BLACK); |
mkim613 | 7:5ac5056cde2c | 373 | uLCD.circle(80,110, 8, YELLOW); |
mkim613 | 7:5ac5056cde2c | 374 | } |
mkim613 | 7:5ac5056cde2c | 375 | if(y4 == 110 && bluePress) { |
mkim613 | 7:5ac5056cde2c | 376 | uLCD.circle(115,110, 8, BLUE); |
mkim613 | 7:5ac5056cde2c | 377 | score += scoreUp; |
mkim613 | 7:5ac5056cde2c | 378 | hit++; |
mkim613 | 7:5ac5056cde2c | 379 | } else { |
mkim613 | 7:5ac5056cde2c | 380 | uLCD.filled_circle(115, y4, 8 , BLACK); |
mkim613 | 7:5ac5056cde2c | 381 | uLCD.circle(115,110, 8, BLUE); |
mkim613 | 7:5ac5056cde2c | 382 | } |
mkim613 | 7:5ac5056cde2c | 383 | } |
mkim613 | 7:5ac5056cde2c | 384 | |
mkim613 | 7:5ac5056cde2c | 385 | case 4: |
mkim613 | 7:5ac5056cde2c | 386 | totalBubbles += 4; |
mkim613 | 7:5ac5056cde2c | 387 | greenPress = false; |
mkim613 | 7:5ac5056cde2c | 388 | redPress = false; |
mkim613 | 7:5ac5056cde2c | 389 | yellowPress = false; |
mkim613 | 7:5ac5056cde2c | 390 | bluePress = false; |
mkim613 | 7:5ac5056cde2c | 391 | redRelease = false; |
mkim613 | 7:5ac5056cde2c | 392 | yellowRelease = false; |
mkim613 | 7:5ac5056cde2c | 393 | greenRelease = false; |
mkim613 | 7:5ac5056cde2c | 394 | blueRelease = false; |
mkim613 | 7:5ac5056cde2c | 395 | if (speed == Medium) { |
mkim613 | 7:5ac5056cde2c | 396 | y1 = 5; |
mkim613 | 7:5ac5056cde2c | 397 | y2 = 5; |
mkim613 | 7:5ac5056cde2c | 398 | y3 = 5; |
mkim613 | 7:5ac5056cde2c | 399 | y4 = 5; |
mkim613 | 7:5ac5056cde2c | 400 | scoreUp = 1000; |
mkim613 | 7:5ac5056cde2c | 401 | } else { |
mkim613 | 7:5ac5056cde2c | 402 | y1 = 10; |
mkim613 | 7:5ac5056cde2c | 403 | y2 = 10; |
mkim613 | 7:5ac5056cde2c | 404 | y3 = 10; |
mkim613 | 7:5ac5056cde2c | 405 | y4 = 10; |
mkim613 | 7:5ac5056cde2c | 406 | scoreUp = 1500; |
mkim613 | 7:5ac5056cde2c | 407 | } |
mkim613 | 7:5ac5056cde2c | 408 | while (y1 <= 130) { |
mkim613 | 7:5ac5056cde2c | 409 | if(y4 <= 130) { |
mkim613 | 7:5ac5056cde2c | 410 | y4 += Speed; |
mkim613 | 7:5ac5056cde2c | 411 | } |
mkim613 | 7:5ac5056cde2c | 412 | if (yellowRelease) { |
mkim613 | 7:5ac5056cde2c | 413 | y3+= Speed; |
mkim613 | 7:5ac5056cde2c | 414 | } |
mkim613 | 7:5ac5056cde2c | 415 | if (redRelease) { |
mkim613 | 7:5ac5056cde2c | 416 | y2+= Speed; |
mkim613 | 7:5ac5056cde2c | 417 | } |
mkim613 | 7:5ac5056cde2c | 418 | if (greenRelease) { |
mkim613 | 7:5ac5056cde2c | 419 | y1 += Speed; |
mkim613 | 7:5ac5056cde2c | 420 | } |
mkim613 | 7:5ac5056cde2c | 421 | if(y4 <= 130 && !bluePress) { |
mkim613 | 7:5ac5056cde2c | 422 | uLCD.filled_circle(115,y4, 8 , BLUE); |
mkim613 | 7:5ac5056cde2c | 423 | } |
mkim613 | 7:5ac5056cde2c | 424 | if ((y4 >= 30 && y3 <= 130) && !yellowPress ) { |
mkim613 | 7:5ac5056cde2c | 425 | uLCD.filled_circle(80,y3, 8 , YELLOW); |
mkim613 | 7:5ac5056cde2c | 426 | yellowRelease = true; |
mkim613 | 7:5ac5056cde2c | 427 | } |
mkim613 | 7:5ac5056cde2c | 428 | if ((y3 >= 30 && y2 <= 130) && !redPress) { |
mkim613 | 7:5ac5056cde2c | 429 | uLCD.filled_circle(45,y2, 8 , RED); |
mkim613 | 7:5ac5056cde2c | 430 | redRelease = true; |
mkim613 | 7:5ac5056cde2c | 431 | } |
mkim613 | 7:5ac5056cde2c | 432 | if((y2 >= 30 && y1 <= 130) && !greenPress) { |
mkim613 | 7:5ac5056cde2c | 433 | uLCD.filled_circle(10,y1, 8 , GREEN); |
mkim613 | 7:5ac5056cde2c | 434 | greenRelease = true; |
mkim613 | 7:5ac5056cde2c | 435 | } |
mkim613 | 7:5ac5056cde2c | 436 | Thread::wait(250); |
mkim613 | 7:5ac5056cde2c | 437 | uLCD.filled_circle(10, y1, 8 , BLACK); |
mkim613 | 7:5ac5056cde2c | 438 | uLCD.filled_circle(45, y2, 8 , BLACK); |
mkim613 | 7:5ac5056cde2c | 439 | uLCD.filled_circle(80, y3, 8 , BLACK); |
mkim613 | 7:5ac5056cde2c | 440 | uLCD.filled_circle(115, y4, 8 , BLACK); |
mkim613 | 7:5ac5056cde2c | 441 | |
mkim613 | 7:5ac5056cde2c | 442 | if (y1 == 110 && greenPress) { |
mkim613 | 7:5ac5056cde2c | 443 | uLCD.circle(10,110, 8, GREEN); |
mkim613 | 7:5ac5056cde2c | 444 | score += scoreUp; |
mkim613 | 7:5ac5056cde2c | 445 | hit++; |
mkim613 | 7:5ac5056cde2c | 446 | } else { |
mkim613 | 7:5ac5056cde2c | 447 | uLCD.filled_circle(10, y1, 8 , BLACK); |
mkim613 | 7:5ac5056cde2c | 448 | uLCD.circle(10,110, 8, GREEN); |
mkim613 | 7:5ac5056cde2c | 449 | } |
mkim613 | 7:5ac5056cde2c | 450 | if (y2 == 110 && redPress) { |
mkim613 | 7:5ac5056cde2c | 451 | uLCD.circle(45,110, 8, RED); |
mkim613 | 7:5ac5056cde2c | 452 | score += scoreUp; |
mkim613 | 7:5ac5056cde2c | 453 | hit++; |
mkim613 | 7:5ac5056cde2c | 454 | } else { |
mkim613 | 7:5ac5056cde2c | 455 | uLCD.filled_circle(45, y2, 8 , BLACK); |
mkim613 | 7:5ac5056cde2c | 456 | uLCD.circle(45,110, 8, RED); |
mkim613 | 7:5ac5056cde2c | 457 | } |
mkim613 | 7:5ac5056cde2c | 458 | if(y3 == 110 && yellowPress) { |
mkim613 | 7:5ac5056cde2c | 459 | uLCD.circle(80,110, 8, YELLOW); |
mkim613 | 7:5ac5056cde2c | 460 | score += scoreUp; |
mkim613 | 7:5ac5056cde2c | 461 | hit++; |
mkim613 | 7:5ac5056cde2c | 462 | } else { |
mkim613 | 7:5ac5056cde2c | 463 | uLCD.filled_circle(80, y3, 8 , BLACK); |
mkim613 | 7:5ac5056cde2c | 464 | uLCD.circle(80,110, 8, YELLOW); |
mkim613 | 7:5ac5056cde2c | 465 | } |
mkim613 | 7:5ac5056cde2c | 466 | if(y4 == 110 && bluePress) { |
mkim613 | 7:5ac5056cde2c | 467 | uLCD.circle(115,110, 8, BLUE); |
mkim613 | 7:5ac5056cde2c | 468 | score += scoreUp; |
mkim613 | 7:5ac5056cde2c | 469 | hit++; |
mkim613 | 7:5ac5056cde2c | 470 | } else { |
mkim613 | 7:5ac5056cde2c | 471 | uLCD.filled_circle(115, y4, 8 , BLACK); |
mkim613 | 7:5ac5056cde2c | 472 | uLCD.circle(115,110, 8, BLUE); |
mkim613 | 7:5ac5056cde2c | 473 | } |
mkim613 | 7:5ac5056cde2c | 474 | } |
mkim613 | 7:5ac5056cde2c | 475 | sampletick.detach(); |
mkim613 | 7:5ac5056cde2c | 476 | i = 0; |
mkim613 | 7:5ac5056cde2c | 477 | if (score> highScore) { |
mkim613 | 7:5ac5056cde2c | 478 | highScore = score; |
mkim613 | 7:5ac5056cde2c | 479 | } |
mkim613 | 7:5ac5056cde2c | 480 | miss = totalBubbles - hit; |
mkim613 | 7:5ac5056cde2c | 481 | Game_State = Game_Over; |
mkim613 | 7:5ac5056cde2c | 482 | break; |
mkim613 | 7:5ac5056cde2c | 483 | } |
mkim613 | 7:5ac5056cde2c | 484 | } |
mkim613 | 7:5ac5056cde2c | 485 | |
mkim613 | 7:5ac5056cde2c | 486 | |
mkim613 | 7:5ac5056cde2c | 487 | void easyMode() |
mkim613 | 7:5ac5056cde2c | 488 | { |
mkim613 | 7:5ac5056cde2c | 489 | int pattern = 1; |
mkim613 | 7:5ac5056cde2c | 490 | score = 0; |
mkim613 | 7:5ac5056cde2c | 491 | hit = 0; |
mkim613 | 7:5ac5056cde2c | 492 | totalBubbles = 0; |
mkim613 | 7:5ac5056cde2c | 493 | uLCD.baudrate(BAUD_3000000); //jack up baud rate to max for fast display |
mkim613 | 7:5ac5056cde2c | 494 | uLCD.background_color(BLACK); |
mkim613 | 7:5ac5056cde2c | 495 | Thread::wait(1000); |
mkim613 | 7:5ac5056cde2c | 496 | uLCD.circle(10,110, 8, GREEN); |
mkim613 | 7:5ac5056cde2c | 497 | uLCD.circle(45,110, 8, RED); |
mkim613 | 7:5ac5056cde2c | 498 | uLCD.circle(80,110, 8, YELLOW); |
mkim613 | 7:5ac5056cde2c | 499 | uLCD.circle(115,110, 8, BLUE); |
mkim613 | 7:5ac5056cde2c | 500 | switch (pattern) { |
mkim613 | 7:5ac5056cde2c | 501 | case 1: |
mkim613 | 7:5ac5056cde2c | 502 | totalBubbles += 3; |
mkim613 | 7:5ac5056cde2c | 503 | greenPress = false; |
mkim613 | 7:5ac5056cde2c | 504 | redPress = false; |
mkim613 | 7:5ac5056cde2c | 505 | yellowPress = false; |
mkim613 | 7:5ac5056cde2c | 506 | redRelease = false; |
mkim613 | 7:5ac5056cde2c | 507 | yellowRelease = false; |
mkim613 | 7:5ac5056cde2c | 508 | greenRelease = false; |
mkim613 | 7:5ac5056cde2c | 509 | y1 = 10; |
mkim613 | 7:5ac5056cde2c | 510 | y2 = 10; |
mkim613 | 7:5ac5056cde2c | 511 | y3 = 10; |
mkim613 | 7:5ac5056cde2c | 512 | while(y3 <= 130) { |
mkim613 | 7:5ac5056cde2c | 513 | if(y1 <= 130) { |
mkim613 | 7:5ac5056cde2c | 514 | y1 += Speed; |
mkim613 | 7:5ac5056cde2c | 515 | } |
mkim613 | 7:5ac5056cde2c | 516 | if (redRelease) { |
mkim613 | 7:5ac5056cde2c | 517 | y2+= Speed; |
mkim613 | 7:5ac5056cde2c | 518 | } |
mkim613 | 7:5ac5056cde2c | 519 | if (yellowRelease) { |
mkim613 | 7:5ac5056cde2c | 520 | y3+= Speed; |
mkim613 | 7:5ac5056cde2c | 521 | } |
mkim613 | 7:5ac5056cde2c | 522 | |
mkim613 | 7:5ac5056cde2c | 523 | if(y1 <= 130 && !greenPress) { |
mkim613 | 7:5ac5056cde2c | 524 | uLCD.filled_circle(10,y1, 8 , GREEN); |
mkim613 | 7:5ac5056cde2c | 525 | } |
mkim613 | 7:5ac5056cde2c | 526 | if ((y1 >= 40 && y2 <= 130) && !redPress ) { |
mkim613 | 7:5ac5056cde2c | 527 | uLCD.filled_circle(45,y2, 8 , RED); |
mkim613 | 7:5ac5056cde2c | 528 | redRelease = true; |
mkim613 | 7:5ac5056cde2c | 529 | } |
mkim613 | 7:5ac5056cde2c | 530 | if ((y2 >= 40 && y3 <= 130) && !yellowPress) { |
mkim613 | 7:5ac5056cde2c | 531 | uLCD.filled_circle(80,y3, 8 , YELLOW); |
mkim613 | 7:5ac5056cde2c | 532 | yellowRelease = true; |
mkim613 | 7:5ac5056cde2c | 533 | } |
mkim613 | 7:5ac5056cde2c | 534 | Thread::wait(250); |
mkim613 | 7:5ac5056cde2c | 535 | uLCD.filled_circle(10, y1, 8 , BLACK); |
mkim613 | 7:5ac5056cde2c | 536 | uLCD.filled_circle(45, y2, 8 , BLACK); |
mkim613 | 7:5ac5056cde2c | 537 | uLCD.filled_circle(80, y3, 8 , BLACK); |
mkim613 | 7:5ac5056cde2c | 538 | |
mkim613 | 7:5ac5056cde2c | 539 | if (y1 == 110 && greenPress) { |
mkim613 | 7:5ac5056cde2c | 540 | uLCD.circle(10,110, 8, GREEN); |
mkim613 | 7:5ac5056cde2c | 541 | score += 500; |
mkim613 | 7:5ac5056cde2c | 542 | hit++; |
mkim613 | 7:5ac5056cde2c | 543 | } else { |
mkim613 | 7:5ac5056cde2c | 544 | uLCD.filled_circle(10, y1, 8 , BLACK); |
mkim613 | 7:5ac5056cde2c | 545 | uLCD.circle(10,110, 8, GREEN); |
mkim613 | 7:5ac5056cde2c | 546 | } |
mkim613 | 7:5ac5056cde2c | 547 | if (y2 == 110 && redPress) { |
mkim613 | 7:5ac5056cde2c | 548 | uLCD.circle(45,110, 8, RED); |
mkim613 | 7:5ac5056cde2c | 549 | score += 500; |
mkim613 | 7:5ac5056cde2c | 550 | hit++; |
mkim613 | 7:5ac5056cde2c | 551 | } else { |
mkim613 | 7:5ac5056cde2c | 552 | uLCD.filled_circle(45, y2, 8 , BLACK); |
mkim613 | 7:5ac5056cde2c | 553 | uLCD.circle(45,110, 8, RED); |
mkim613 | 7:5ac5056cde2c | 554 | } |
mkim613 | 7:5ac5056cde2c | 555 | if(y3 == 110 && yellowPress) { |
mkim613 | 7:5ac5056cde2c | 556 | uLCD.circle(80,110, 8, YELLOW); |
mkim613 | 7:5ac5056cde2c | 557 | score += 500; |
mkim613 | 7:5ac5056cde2c | 558 | hit++; |
mkim613 | 7:5ac5056cde2c | 559 | } else { |
mkim613 | 7:5ac5056cde2c | 560 | uLCD.filled_circle(80, y3, 8 , BLACK); |
mkim613 | 7:5ac5056cde2c | 561 | uLCD.circle(80,110, 8, YELLOW); |
mkim613 | 7:5ac5056cde2c | 562 | } |
mkim613 | 7:5ac5056cde2c | 563 | |
mkim613 | 7:5ac5056cde2c | 564 | } |
mkim613 | 7:5ac5056cde2c | 565 | pattern = 4; |
mkim613 | 7:5ac5056cde2c | 566 | |
mkim613 | 7:5ac5056cde2c | 567 | case 4: |
mkim613 | 7:5ac5056cde2c | 568 | totalBubbles += 3; |
mkim613 | 7:5ac5056cde2c | 569 | greenPress = false; |
mkim613 | 7:5ac5056cde2c | 570 | redPress = false; |
mkim613 | 7:5ac5056cde2c | 571 | yellowPress = false; |
mkim613 | 7:5ac5056cde2c | 572 | redRelease = false; |
mkim613 | 7:5ac5056cde2c | 573 | yellowRelease = false; |
mkim613 | 7:5ac5056cde2c | 574 | greenRelease = false; |
mkim613 | 7:5ac5056cde2c | 575 | y1 = 10; |
mkim613 | 7:5ac5056cde2c | 576 | y2 = 10; |
mkim613 | 7:5ac5056cde2c | 577 | y3 = 10; |
mkim613 | 7:5ac5056cde2c | 578 | while(y1 <= 130) { |
mkim613 | 7:5ac5056cde2c | 579 | if(y3 <= 130) { |
mkim613 | 7:5ac5056cde2c | 580 | y3 += Speed; |
mkim613 | 7:5ac5056cde2c | 581 | } |
mkim613 | 7:5ac5056cde2c | 582 | if (redRelease) { |
mkim613 | 7:5ac5056cde2c | 583 | y2+= Speed; |
mkim613 | 7:5ac5056cde2c | 584 | } |
mkim613 | 7:5ac5056cde2c | 585 | if (greenRelease) { |
mkim613 | 7:5ac5056cde2c | 586 | y1+= Speed; |
mkim613 | 7:5ac5056cde2c | 587 | } |
mkim613 | 7:5ac5056cde2c | 588 | if (y3 <= 130 && !yellowPress) { |
mkim613 | 7:5ac5056cde2c | 589 | uLCD.filled_circle(80,y3, 8 , YELLOW); |
mkim613 | 7:5ac5056cde2c | 590 | } |
mkim613 | 7:5ac5056cde2c | 591 | if ((y3 >= 40 && y2 <= 130) && !redPress ) { |
mkim613 | 7:5ac5056cde2c | 592 | uLCD.filled_circle(45,y2, 8 , RED); |
mkim613 | 7:5ac5056cde2c | 593 | redRelease = true; |
mkim613 | 7:5ac5056cde2c | 594 | } |
mkim613 | 7:5ac5056cde2c | 595 | if ((y2 >= 40 && y1 <= 130) && !greenPress) { |
mkim613 | 7:5ac5056cde2c | 596 | uLCD.filled_circle(10,y1, 8 , GREEN); |
mkim613 | 7:5ac5056cde2c | 597 | greenRelease = true; |
mkim613 | 7:5ac5056cde2c | 598 | } |
mkim613 | 7:5ac5056cde2c | 599 | Thread::wait(250); |
mkim613 | 7:5ac5056cde2c | 600 | uLCD.filled_circle(10, y1, 8 , BLACK); |
mkim613 | 7:5ac5056cde2c | 601 | uLCD.filled_circle(45, y2, 8 , BLACK); |
mkim613 | 7:5ac5056cde2c | 602 | uLCD.filled_circle(80, y3, 8 , BLACK); |
mkim613 | 7:5ac5056cde2c | 603 | |
mkim613 | 7:5ac5056cde2c | 604 | if (y3 == 110 && yellowPress) { |
mkim613 | 7:5ac5056cde2c | 605 | //uLCD.filled_circle(80, y1, 8 , BLACK); |
mkim613 | 7:5ac5056cde2c | 606 | uLCD.circle(80,110, 8, YELLOW); |
mkim613 | 7:5ac5056cde2c | 607 | score+=500; |
mkim613 | 7:5ac5056cde2c | 608 | hit++; |
mkim613 | 7:5ac5056cde2c | 609 | } else { |
mkim613 | 7:5ac5056cde2c | 610 | uLCD.filled_circle(80, y3, 8 , BLACK); |
mkim613 | 7:5ac5056cde2c | 611 | uLCD.circle(80,110, 8, YELLOW); |
mkim613 | 7:5ac5056cde2c | 612 | } |
mkim613 | 7:5ac5056cde2c | 613 | if (y2 == 110 && redPress) { |
mkim613 | 7:5ac5056cde2c | 614 | uLCD.circle(45,110, 8, RED); |
mkim613 | 7:5ac5056cde2c | 615 | score += 500; |
mkim613 | 7:5ac5056cde2c | 616 | hit++; |
mkim613 | 7:5ac5056cde2c | 617 | } else { |
mkim613 | 7:5ac5056cde2c | 618 | uLCD.filled_circle(45, y2, 8 , BLACK); |
mkim613 | 7:5ac5056cde2c | 619 | uLCD.circle(45,110, 8, RED); |
mkim613 | 7:5ac5056cde2c | 620 | } |
mkim613 | 7:5ac5056cde2c | 621 | if(y1 == 110 && greenPress) { |
mkim613 | 7:5ac5056cde2c | 622 | uLCD.circle(10,110, 8, GREEN); |
mkim613 | 7:5ac5056cde2c | 623 | score += 500; |
mkim613 | 7:5ac5056cde2c | 624 | hit++; |
mkim613 | 7:5ac5056cde2c | 625 | } else { |
mkim613 | 7:5ac5056cde2c | 626 | uLCD.circle(10,110,8, GREEN); |
mkim613 | 7:5ac5056cde2c | 627 | } |
mkim613 | 7:5ac5056cde2c | 628 | |
mkim613 | 7:5ac5056cde2c | 629 | } |
mkim613 | 7:5ac5056cde2c | 630 | if (score > highScore) { |
mkim613 | 7:5ac5056cde2c | 631 | highScore = score; |
mkim613 | 7:5ac5056cde2c | 632 | } |
mkim613 | 7:5ac5056cde2c | 633 | sampletick.detach(); |
mkim613 | 7:5ac5056cde2c | 634 | i = 0; |
mkim613 | 7:5ac5056cde2c | 635 | miss = totalBubbles - hit; |
mkim613 | 7:5ac5056cde2c | 636 | Game_State = Game_Over; |
mkim613 | 7:5ac5056cde2c | 637 | break; |
mkim613 | 7:5ac5056cde2c | 638 | } |
mkim613 | 7:5ac5056cde2c | 639 | } |
mkim613 | 7:5ac5056cde2c | 640 | |
rpatel397 | 5:2f09b457f690 | 641 | void audio_sample () |
rpatel397 | 5:2f09b457f690 | 642 | { |
rpatel397 | 5:2f09b457f690 | 643 | speaker.write_u16(sound_data[i]); |
rpatel397 | 5:2f09b457f690 | 644 | i++; |
rpatel397 | 5:2f09b457f690 | 645 | if (i>= NUM_ELEMENTS) { |
rpatel397 | 5:2f09b457f690 | 646 | i = 0; |
mkim613 | 7:5ac5056cde2c | 647 | //sampletick.detach(); |
mkim613 | 7:5ac5056cde2c | 648 | //Game_State = Game_Over; |
rpatel397 | 5:2f09b457f690 | 649 | } |
rpatel397 | 5:2f09b457f690 | 650 | } |
4180_1 | 1:5b8e223e983d | 651 | |
rpatel397 | 3:6f639d41aef3 | 652 | void LCD(void const *args) { |
rpatel397 | 5:2f09b457f690 | 653 | |
rpatel397 | 3:6f639d41aef3 | 654 | while(1) { |
rpatel397 | 3:6f639d41aef3 | 655 | switch (Game_State) { |
rpatel397 | 3:6f639d41aef3 | 656 | case Start_Game : |
rpatel397 | 3:6f639d41aef3 | 657 | if (draw_enable) { |
rpatel397 | 3:6f639d41aef3 | 658 | lcd_mut.lock(); |
rpatel397 | 3:6f639d41aef3 | 659 | uLCD.cls(); |
mkim613 | 7:5ac5056cde2c | 660 | //uLCD.printf("Start_Game"); |
mkim613 | 7:5ac5056cde2c | 661 | if(Speed == Easy) { |
mkim613 | 7:5ac5056cde2c | 662 | easyMode(); |
mkim613 | 7:5ac5056cde2c | 663 | } else { |
mkim613 | 7:5ac5056cde2c | 664 | otherMode(Speed); |
mkim613 | 7:5ac5056cde2c | 665 | } |
rpatel397 | 3:6f639d41aef3 | 666 | lcd_mut.unlock(); |
rpatel397 | 3:6f639d41aef3 | 667 | } |
rpatel397 | 3:6f639d41aef3 | 668 | break; |
rpatel397 | 3:6f639d41aef3 | 669 | case Game_Over : |
rpatel397 | 3:6f639d41aef3 | 670 | if (draw_enable) { |
rpatel397 | 3:6f639d41aef3 | 671 | draw_enable = false; |
rpatel397 | 3:6f639d41aef3 | 672 | lcd_mut.lock(); |
rpatel397 | 3:6f639d41aef3 | 673 | uLCD.cls(); |
rpatel397 | 3:6f639d41aef3 | 674 | uLCD.line(0, 0, 127, 0, RED); |
rpatel397 | 3:6f639d41aef3 | 675 | uLCD.line(127, 0, 127, 127, BLUE); |
rpatel397 | 3:6f639d41aef3 | 676 | uLCD.line(127, 127, 0, 127, GREEN); |
rpatel397 | 3:6f639d41aef3 | 677 | uLCD.line(0, 127, 0, 0, YELLOW); |
rpatel397 | 3:6f639d41aef3 | 678 | uLCD.text_width(1); |
rpatel397 | 3:6f639d41aef3 | 679 | uLCD.text_height(2); |
rpatel397 | 3:6f639d41aef3 | 680 | uLCD.text_string("Game Over",4,0,FONT_8X8, BLUE); |
rpatel397 | 6:4bc137ec1022 | 681 | |
rpatel397 | 3:6f639d41aef3 | 682 | uLCD.text_width(1); |
rpatel397 | 3:6f639d41aef3 | 683 | uLCD.text_height(1); |
rpatel397 | 6:4bc137ec1022 | 684 | uLCD.color(YELLOW); |
rpatel397 | 6:4bc137ec1022 | 685 | uLCD.locate(2,3); |
rpatel397 | 6:4bc137ec1022 | 686 | uLCD.printf("Score:%d", score); |
rpatel397 | 6:4bc137ec1022 | 687 | |
rpatel397 | 6:4bc137ec1022 | 688 | uLCD.color(GREEN); |
rpatel397 | 6:4bc137ec1022 | 689 | uLCD.locate(2,5); |
mkim613 | 7:5ac5056cde2c | 690 | uLCD.printf("Hits:%d", hit); |
rpatel397 | 6:4bc137ec1022 | 691 | |
rpatel397 | 6:4bc137ec1022 | 692 | uLCD.color(RED); |
rpatel397 | 6:4bc137ec1022 | 693 | uLCD.locate(2,7); |
mkim613 | 7:5ac5056cde2c | 694 | uLCD.printf("Misses:%d", miss); |
rpatel397 | 3:6f639d41aef3 | 695 | uLCD.text_height(2); |
rpatel397 | 6:4bc137ec1022 | 696 | |
rpatel397 | 6:4bc137ec1022 | 697 | uLCD.color(WHITE); |
rpatel397 | 6:4bc137ec1022 | 698 | uLCD.text_underline(ON); |
rpatel397 | 6:4bc137ec1022 | 699 | uLCD.text_string("High Score",4,5,FONT_8X8, WHITE); |
rpatel397 | 6:4bc137ec1022 | 700 | uLCD.text_underline(OFF); |
rpatel397 | 6:4bc137ec1022 | 701 | uLCD.text_height(1); |
rpatel397 | 6:4bc137ec1022 | 702 | uLCD.locate(4,13); |
rpatel397 | 6:4bc137ec1022 | 703 | uLCD.text_height(2); |
mkim613 | 7:5ac5056cde2c | 704 | uLCD.printf("%d", highScore); |
rpatel397 | 3:6f639d41aef3 | 705 | uLCD.text_height(1); |
rpatel397 | 3:6f639d41aef3 | 706 | |
rpatel397 | 3:6f639d41aef3 | 707 | lcd_mut.unlock(); |
rpatel397 | 3:6f639d41aef3 | 708 | } |
rpatel397 | 3:6f639d41aef3 | 709 | break; |
rpatel397 | 3:6f639d41aef3 | 710 | case Choose_Song : |
rpatel397 | 3:6f639d41aef3 | 711 | if (draw_enable) { |
rpatel397 | 3:6f639d41aef3 | 712 | draw_enable = false; |
rpatel397 | 3:6f639d41aef3 | 713 | lcd_mut.lock(); |
rpatel397 | 3:6f639d41aef3 | 714 | uLCD.cls(); |
rpatel397 | 3:6f639d41aef3 | 715 | uLCD.text_width(1); |
rpatel397 | 3:6f639d41aef3 | 716 | uLCD.text_height(1); |
rpatel397 | 3:6f639d41aef3 | 717 | uLCD.locate(1,1); |
rpatel397 | 3:6f639d41aef3 | 718 | uLCD.color(BLUE); |
rpatel397 | 3:6f639d41aef3 | 719 | uLCD.text_underline(ON); |
rpatel397 | 3:6f639d41aef3 | 720 | uLCD.text_string("Choose Song",4,1,FONT_8X8, BLUE); |
rpatel397 | 3:6f639d41aef3 | 721 | uLCD.text_underline(OFF); |
rpatel397 | 3:6f639d41aef3 | 722 | uLCD.set_font(FONT_7X8); |
rpatel397 | 3:6f639d41aef3 | 723 | uLCD.triangle(64, 32,58, 40, 70, 40, WHITE); |
rpatel397 | 3:6f639d41aef3 | 724 | uLCD.triangle(64, 92 ,58, 84, 70, 84, WHITE); |
rpatel397 | 3:6f639d41aef3 | 725 | uLCD.color(GREEN); |
rpatel397 | 3:6f639d41aef3 | 726 | uLCD.rectangle(10,44,118, 80, LGREY); |
rpatel397 | 3:6f639d41aef3 | 727 | uLCD.text_width(2); |
rpatel397 | 3:6f639d41aef3 | 728 | uLCD.text_height(2); |
rpatel397 | 3:6f639d41aef3 | 729 | uLCD.text_string("Schools\nOut",1,3,FONT_8X8, GREEN); |
rpatel397 | 3:6f639d41aef3 | 730 | uLCD.text_width(1); |
rpatel397 | 3:6f639d41aef3 | 731 | uLCD.text_height(1); |
rpatel397 | 3:6f639d41aef3 | 732 | lcd_mut.unlock(); |
rpatel397 | 3:6f639d41aef3 | 733 | } |
rpatel397 | 3:6f639d41aef3 | 734 | break; |
rpatel397 | 3:6f639d41aef3 | 735 | case Choose_Difficulty : |
rpatel397 | 3:6f639d41aef3 | 736 | if (draw_enable) { |
rpatel397 | 3:6f639d41aef3 | 737 | draw_enable = false; |
rpatel397 | 3:6f639d41aef3 | 738 | lcd_mut.lock(); |
rpatel397 | 3:6f639d41aef3 | 739 | uLCD.cls(); |
rpatel397 | 3:6f639d41aef3 | 740 | uLCD.text_width(1.5); |
rpatel397 | 3:6f639d41aef3 | 741 | uLCD.text_height(1.5); |
rpatel397 | 3:6f639d41aef3 | 742 | uLCD.locate(1,1); |
rpatel397 | 3:6f639d41aef3 | 743 | uLCD.color(BLUE); |
rpatel397 | 3:6f639d41aef3 | 744 | uLCD.text_underline(ON); |
rpatel397 | 3:6f639d41aef3 | 745 | uLCD.text_string("Choose Difficulty",1,1,FONT_8X8, BLUE); |
rpatel397 | 3:6f639d41aef3 | 746 | uLCD.text_underline(OFF); |
rpatel397 | 3:6f639d41aef3 | 747 | uLCD.set_font(FONT_7X8); |
rpatel397 | 3:6f639d41aef3 | 748 | uLCD.text_width(2); |
rpatel397 | 3:6f639d41aef3 | 749 | uLCD.text_height(2); |
rpatel397 | 3:6f639d41aef3 | 750 | uLCD.color(GREEN); |
rpatel397 | 3:6f639d41aef3 | 751 | uLCD.locate(1,2); |
rpatel397 | 3:6f639d41aef3 | 752 | uLCD.printf("1|EASY"); |
rpatel397 | 3:6f639d41aef3 | 753 | uLCD.locate(1,4); |
rpatel397 | 3:6f639d41aef3 | 754 | uLCD.color(YELLOW); |
rpatel397 | 3:6f639d41aef3 | 755 | |
rpatel397 | 3:6f639d41aef3 | 756 | uLCD.printf("2|MEDIUM"); |
rpatel397 | 3:6f639d41aef3 | 757 | uLCD.locate(1,6); |
rpatel397 | 3:6f639d41aef3 | 758 | uLCD.color(RED); |
rpatel397 | 3:6f639d41aef3 | 759 | uLCD.printf("3|HARD"); |
rpatel397 | 3:6f639d41aef3 | 760 | uLCD.text_width(1); |
rpatel397 | 3:6f639d41aef3 | 761 | uLCD.text_height(1); |
rpatel397 | 3:6f639d41aef3 | 762 | lcd_mut.unlock(); |
rpatel397 | 3:6f639d41aef3 | 763 | } |
rpatel397 | 3:6f639d41aef3 | 764 | break; |
rpatel397 | 3:6f639d41aef3 | 765 | case Main_Menu : |
rpatel397 | 3:6f639d41aef3 | 766 | if (draw_enable) { |
rpatel397 | 3:6f639d41aef3 | 767 | draw_enable = false; |
rpatel397 | 3:6f639d41aef3 | 768 | lcd_mut.lock(); |
rpatel397 | 3:6f639d41aef3 | 769 | uLCD.cls(); |
rpatel397 | 3:6f639d41aef3 | 770 | uLCD.line(0, 0, 127, 0, RED); |
rpatel397 | 3:6f639d41aef3 | 771 | uLCD.line(127, 0, 127, 127, BLUE); |
rpatel397 | 3:6f639d41aef3 | 772 | uLCD.line(127, 127, 0, 127, GREEN); |
rpatel397 | 3:6f639d41aef3 | 773 | uLCD.line(0, 127, 0, 0, YELLOW); |
rpatel397 | 3:6f639d41aef3 | 774 | uLCD.text_width(2); |
rpatel397 | 3:6f639d41aef3 | 775 | uLCD.text_height(2); |
rpatel397 | 3:6f639d41aef3 | 776 | uLCD.locate(2,2); |
rpatel397 | 3:6f639d41aef3 | 777 | uLCD.color(RED); |
rpatel397 | 3:6f639d41aef3 | 778 | uLCD.printf("Guitar"); |
rpatel397 | 3:6f639d41aef3 | 779 | uLCD.color(BLUE); |
rpatel397 | 3:6f639d41aef3 | 780 | uLCD.locate(3,4); |
rpatel397 | 3:6f639d41aef3 | 781 | uLCD.printf("Hero"); |
rpatel397 | 3:6f639d41aef3 | 782 | |
rpatel397 | 3:6f639d41aef3 | 783 | uLCD.text_width(1); |
rpatel397 | 3:6f639d41aef3 | 784 | uLCD.text_height(1); |
rpatel397 | 3:6f639d41aef3 | 785 | uLCD.locate(3,12); |
rpatel397 | 3:6f639d41aef3 | 786 | uLCD.color(GREEN); |
rpatel397 | 3:6f639d41aef3 | 787 | uLCD.printf("Press to start"); |
rpatel397 | 3:6f639d41aef3 | 788 | |
rpatel397 | 3:6f639d41aef3 | 789 | lcd_mut.unlock(); |
rpatel397 | 3:6f639d41aef3 | 790 | } |
rpatel397 | 3:6f639d41aef3 | 791 | break; |
rpatel397 | 3:6f639d41aef3 | 792 | default: |
rpatel397 | 3:6f639d41aef3 | 793 | break; |
rpatel397 | 3:6f639d41aef3 | 794 | } |
rpatel397 | 3:6f639d41aef3 | 795 | Thread::wait(10); |
rpatel397 | 3:6f639d41aef3 | 796 | } |
rpatel397 | 3:6f639d41aef3 | 797 | } |
rpatel397 | 3:6f639d41aef3 | 798 | void lights(void const *args) { |
rpatel397 | 3:6f639d41aef3 | 799 | while(1) { |
rpatel397 | 3:6f639d41aef3 | 800 | switch (Game_State) { |
rpatel397 | 3:6f639d41aef3 | 801 | case Start_Game : |
rpatel397 | 3:6f639d41aef3 | 802 | myled1 = 0; |
rpatel397 | 3:6f639d41aef3 | 803 | myled2 = 0; |
rpatel397 | 3:6f639d41aef3 | 804 | myled3 = 0; |
rpatel397 | 3:6f639d41aef3 | 805 | myled4 = 1; |
rpatel397 | 3:6f639d41aef3 | 806 | break; |
rpatel397 | 3:6f639d41aef3 | 807 | case Game_Over : |
rpatel397 | 3:6f639d41aef3 | 808 | myled1 = 1; |
rpatel397 | 3:6f639d41aef3 | 809 | myled2 = 1; |
rpatel397 | 3:6f639d41aef3 | 810 | myled3 = 1; |
rpatel397 | 3:6f639d41aef3 | 811 | myled4 = 1; |
rpatel397 | 3:6f639d41aef3 | 812 | break; |
rpatel397 | 3:6f639d41aef3 | 813 | case Choose_Song : |
rpatel397 | 3:6f639d41aef3 | 814 | myled1 = 0; |
rpatel397 | 3:6f639d41aef3 | 815 | myled2 = 0; |
rpatel397 | 3:6f639d41aef3 | 816 | myled3 = 1; |
rpatel397 | 3:6f639d41aef3 | 817 | myled4 = 0; |
rpatel397 | 3:6f639d41aef3 | 818 | break; |
rpatel397 | 3:6f639d41aef3 | 819 | case Choose_Difficulty : |
rpatel397 | 3:6f639d41aef3 | 820 | |
rpatel397 | 3:6f639d41aef3 | 821 | myled1 = 0; |
rpatel397 | 3:6f639d41aef3 | 822 | myled2 = 1; |
rpatel397 | 3:6f639d41aef3 | 823 | myled3 = 0; |
rpatel397 | 3:6f639d41aef3 | 824 | myled4 = 0; |
rpatel397 | 3:6f639d41aef3 | 825 | |
rpatel397 | 3:6f639d41aef3 | 826 | |
rpatel397 | 3:6f639d41aef3 | 827 | break; |
rpatel397 | 3:6f639d41aef3 | 828 | case Main_Menu : |
rpatel397 | 3:6f639d41aef3 | 829 | |
rpatel397 | 3:6f639d41aef3 | 830 | myled1 = 1; |
rpatel397 | 3:6f639d41aef3 | 831 | myled2 = 0; |
rpatel397 | 3:6f639d41aef3 | 832 | myled3 = 0; |
rpatel397 | 3:6f639d41aef3 | 833 | myled4 = 0; |
rpatel397 | 3:6f639d41aef3 | 834 | |
rpatel397 | 3:6f639d41aef3 | 835 | break; |
rpatel397 | 3:6f639d41aef3 | 836 | default: |
rpatel397 | 3:6f639d41aef3 | 837 | break; |
rpatel397 | 3:6f639d41aef3 | 838 | } |
rpatel397 | 3:6f639d41aef3 | 839 | Thread::wait(500); |
rpatel397 | 3:6f639d41aef3 | 840 | } |
rpatel397 | 3:6f639d41aef3 | 841 | } |
4180_1 | 1:5b8e223e983d | 842 | |
rpatel397 | 5:2f09b457f690 | 843 | void startGame() { |
rpatel397 | 5:2f09b457f690 | 844 | Game_State = Start_Game; |
rpatel397 | 5:2f09b457f690 | 845 | sampletick.attach(&audio_sample, 1.0 / sample_freq); |
rpatel397 | 5:2f09b457f690 | 846 | } |
4180_1 | 1:5b8e223e983d | 847 | |
rpatel397 | 3:6f639d41aef3 | 848 | void pb_1_pressed(void) { |
rpatel397 | 3:6f639d41aef3 | 849 | switch (Game_State) { |
rpatel397 | 3:6f639d41aef3 | 850 | case Start_Game : |
rpatel397 | 3:6f639d41aef3 | 851 | draw_enable = true; |
mkim613 | 7:5ac5056cde2c | 852 | if(y1 == 110) { |
mkim613 | 7:5ac5056cde2c | 853 | if (joy.yAxis() > 0.05 || joy.yAxis() < -0.05) { |
mkim613 | 7:5ac5056cde2c | 854 | greenPress = true; //joy > .55 || joy < .45 |
mkim613 | 7:5ac5056cde2c | 855 | } |
mkim613 | 7:5ac5056cde2c | 856 | } |
rpatel397 | 3:6f639d41aef3 | 857 | break; |
rpatel397 | 3:6f639d41aef3 | 858 | case Game_Over : |
rpatel397 | 3:6f639d41aef3 | 859 | draw_enable = true; |
rpatel397 | 3:6f639d41aef3 | 860 | Game_State = Main_Menu; |
rpatel397 | 3:6f639d41aef3 | 861 | break; |
rpatel397 | 3:6f639d41aef3 | 862 | case Choose_Song : |
rpatel397 | 3:6f639d41aef3 | 863 | draw_enable = true; |
rpatel397 | 5:2f09b457f690 | 864 | startGame(); |
rpatel397 | 3:6f639d41aef3 | 865 | break; |
rpatel397 | 3:6f639d41aef3 | 866 | case Choose_Difficulty : |
rpatel397 | 3:6f639d41aef3 | 867 | |
rpatel397 | 3:6f639d41aef3 | 868 | draw_enable = true; |
rpatel397 | 3:6f639d41aef3 | 869 | Game_State = Choose_Song; |
rpatel397 | 3:6f639d41aef3 | 870 | Speed = Easy; |
rpatel397 | 3:6f639d41aef3 | 871 | |
rpatel397 | 3:6f639d41aef3 | 872 | break; |
rpatel397 | 3:6f639d41aef3 | 873 | case Main_Menu : |
rpatel397 | 3:6f639d41aef3 | 874 | |
rpatel397 | 3:6f639d41aef3 | 875 | draw_enable = true; |
rpatel397 | 3:6f639d41aef3 | 876 | Game_State = Choose_Difficulty; |
rpatel397 | 3:6f639d41aef3 | 877 | |
rpatel397 | 3:6f639d41aef3 | 878 | break; |
rpatel397 | 3:6f639d41aef3 | 879 | default: |
rpatel397 | 3:6f639d41aef3 | 880 | break; |
rpatel397 | 3:6f639d41aef3 | 881 | } |
rpatel397 | 3:6f639d41aef3 | 882 | } |
rpatel397 | 3:6f639d41aef3 | 883 | void pb_2_pressed(void) { |
rpatel397 | 3:6f639d41aef3 | 884 | switch (Game_State) { |
rpatel397 | 3:6f639d41aef3 | 885 | case Start_Game : |
rpatel397 | 3:6f639d41aef3 | 886 | draw_enable = true; |
mkim613 | 7:5ac5056cde2c | 887 | if(y2 == 110) { |
mkim613 | 7:5ac5056cde2c | 888 | if (joy.yAxis() > 0.05 || joy.yAxis() < -0.05) { |
mkim613 | 7:5ac5056cde2c | 889 | redPress = true; |
mkim613 | 7:5ac5056cde2c | 890 | } |
mkim613 | 7:5ac5056cde2c | 891 | } |
rpatel397 | 3:6f639d41aef3 | 892 | break; |
rpatel397 | 3:6f639d41aef3 | 893 | case Game_Over : |
rpatel397 | 3:6f639d41aef3 | 894 | draw_enable = true; |
rpatel397 | 3:6f639d41aef3 | 895 | Game_State = Main_Menu; |
rpatel397 | 3:6f639d41aef3 | 896 | break; |
rpatel397 | 3:6f639d41aef3 | 897 | case Choose_Song : |
rpatel397 | 3:6f639d41aef3 | 898 | draw_enable = true; |
rpatel397 | 5:2f09b457f690 | 899 | startGame(); |
rpatel397 | 3:6f639d41aef3 | 900 | break; |
rpatel397 | 3:6f639d41aef3 | 901 | case Choose_Difficulty : |
rpatel397 | 3:6f639d41aef3 | 902 | |
rpatel397 | 3:6f639d41aef3 | 903 | draw_enable = true; |
rpatel397 | 3:6f639d41aef3 | 904 | Game_State = Choose_Song; |
rpatel397 | 3:6f639d41aef3 | 905 | Speed = Medium; |
rpatel397 | 3:6f639d41aef3 | 906 | break; |
rpatel397 | 3:6f639d41aef3 | 907 | case Main_Menu : |
rpatel397 | 3:6f639d41aef3 | 908 | |
rpatel397 | 3:6f639d41aef3 | 909 | draw_enable = true; |
rpatel397 | 3:6f639d41aef3 | 910 | Game_State = Choose_Difficulty; |
rpatel397 | 3:6f639d41aef3 | 911 | |
rpatel397 | 3:6f639d41aef3 | 912 | break; |
rpatel397 | 3:6f639d41aef3 | 913 | default: |
rpatel397 | 3:6f639d41aef3 | 914 | break; |
rpatel397 | 3:6f639d41aef3 | 915 | } |
rpatel397 | 3:6f639d41aef3 | 916 | |
rpatel397 | 3:6f639d41aef3 | 917 | } |
rpatel397 | 3:6f639d41aef3 | 918 | void pb_3_pressed(void) { |
rpatel397 | 3:6f639d41aef3 | 919 | switch (Game_State) { |
rpatel397 | 3:6f639d41aef3 | 920 | case Start_Game : |
rpatel397 | 3:6f639d41aef3 | 921 | draw_enable = true; |
mkim613 | 7:5ac5056cde2c | 922 | if(y3 == 110) { |
mkim613 | 7:5ac5056cde2c | 923 | if (joy.yAxis() > 0.05 || joy.yAxis() < -0.05) { |
mkim613 | 7:5ac5056cde2c | 924 | yellowPress = true; |
mkim613 | 7:5ac5056cde2c | 925 | } |
mkim613 | 7:5ac5056cde2c | 926 | } |
rpatel397 | 3:6f639d41aef3 | 927 | break; |
rpatel397 | 3:6f639d41aef3 | 928 | case Game_Over : |
rpatel397 | 3:6f639d41aef3 | 929 | draw_enable = true; |
rpatel397 | 3:6f639d41aef3 | 930 | Game_State = Main_Menu; |
rpatel397 | 3:6f639d41aef3 | 931 | break; |
rpatel397 | 3:6f639d41aef3 | 932 | case Choose_Song : |
rpatel397 | 3:6f639d41aef3 | 933 | draw_enable = true; |
rpatel397 | 5:2f09b457f690 | 934 | startGame(); |
rpatel397 | 3:6f639d41aef3 | 935 | break; |
rpatel397 | 3:6f639d41aef3 | 936 | case Choose_Difficulty : |
rpatel397 | 3:6f639d41aef3 | 937 | |
rpatel397 | 3:6f639d41aef3 | 938 | draw_enable = true; |
rpatel397 | 3:6f639d41aef3 | 939 | Game_State = Choose_Song; |
rpatel397 | 3:6f639d41aef3 | 940 | Speed = Hard; |
rpatel397 | 3:6f639d41aef3 | 941 | |
rpatel397 | 3:6f639d41aef3 | 942 | break; |
rpatel397 | 3:6f639d41aef3 | 943 | case Main_Menu : |
rpatel397 | 3:6f639d41aef3 | 944 | |
rpatel397 | 3:6f639d41aef3 | 945 | draw_enable = true; |
rpatel397 | 3:6f639d41aef3 | 946 | Game_State = Choose_Difficulty; |
rpatel397 | 3:6f639d41aef3 | 947 | |
rpatel397 | 3:6f639d41aef3 | 948 | break; |
rpatel397 | 3:6f639d41aef3 | 949 | default: |
rpatel397 | 3:6f639d41aef3 | 950 | break; |
rpatel397 | 3:6f639d41aef3 | 951 | } |
rpatel397 | 3:6f639d41aef3 | 952 | } |
rpatel397 | 3:6f639d41aef3 | 953 | void pb_4_pressed(void) { |
rpatel397 | 3:6f639d41aef3 | 954 | switch (Game_State) { |
rpatel397 | 3:6f639d41aef3 | 955 | case Start_Game : |
rpatel397 | 3:6f639d41aef3 | 956 | draw_enable = true; |
mkim613 | 7:5ac5056cde2c | 957 | if(y4 == 110) { |
mkim613 | 7:5ac5056cde2c | 958 | if (joy.yAxis() > 0.05 || joy.yAxis() < -0.05) { |
mkim613 | 7:5ac5056cde2c | 959 | bluePress = true; |
mkim613 | 7:5ac5056cde2c | 960 | } |
mkim613 | 7:5ac5056cde2c | 961 | } |
rpatel397 | 3:6f639d41aef3 | 962 | break; |
rpatel397 | 3:6f639d41aef3 | 963 | case Game_Over : |
rpatel397 | 3:6f639d41aef3 | 964 | draw_enable = true; |
rpatel397 | 3:6f639d41aef3 | 965 | Game_State = Main_Menu; |
rpatel397 | 3:6f639d41aef3 | 966 | break; |
rpatel397 | 3:6f639d41aef3 | 967 | case Choose_Song : |
rpatel397 | 3:6f639d41aef3 | 968 | draw_enable = true; |
rpatel397 | 5:2f09b457f690 | 969 | startGame(); |
rpatel397 | 3:6f639d41aef3 | 970 | break; |
rpatel397 | 3:6f639d41aef3 | 971 | case Choose_Difficulty : |
rpatel397 | 3:6f639d41aef3 | 972 | //not used |
rpatel397 | 3:6f639d41aef3 | 973 | break; |
rpatel397 | 3:6f639d41aef3 | 974 | case Main_Menu : |
rpatel397 | 3:6f639d41aef3 | 975 | |
rpatel397 | 3:6f639d41aef3 | 976 | draw_enable = true; |
rpatel397 | 3:6f639d41aef3 | 977 | Game_State = Choose_Difficulty; |
rpatel397 | 3:6f639d41aef3 | 978 | |
rpatel397 | 3:6f639d41aef3 | 979 | break; |
rpatel397 | 3:6f639d41aef3 | 980 | default: |
rpatel397 | 3:6f639d41aef3 | 981 | break; |
rpatel397 | 3:6f639d41aef3 | 982 | } |
rpatel397 | 3:6f639d41aef3 | 983 | } |
rpatel397 | 3:6f639d41aef3 | 984 | |
4180_1 | 1:5b8e223e983d | 985 | int main() |
4180_1 | 1:5b8e223e983d | 986 | { |
rpatel397 | 5:2f09b457f690 | 987 | speaker.write_u16(0); |
rpatel397 | 3:6f639d41aef3 | 988 | pb_1.attach_deasserted( &pb_1_pressed ); |
rpatel397 | 3:6f639d41aef3 | 989 | pb_2.attach_deasserted( &pb_2_pressed ); |
rpatel397 | 3:6f639d41aef3 | 990 | pb_3.attach_deasserted( &pb_3_pressed ); |
rpatel397 | 3:6f639d41aef3 | 991 | pb_4.attach_deasserted( &pb_4_pressed ); |
rpatel397 | 3:6f639d41aef3 | 992 | pb_1.setSampleFrequency(); |
rpatel397 | 3:6f639d41aef3 | 993 | pb_2.setSampleFrequency(); |
rpatel397 | 3:6f639d41aef3 | 994 | pb_3.setSampleFrequency(); |
rpatel397 | 3:6f639d41aef3 | 995 | pb_4.setSampleFrequency(); |
rpatel397 | 3:6f639d41aef3 | 996 | lcd_mut.lock(); |
rpatel397 | 3:6f639d41aef3 | 997 | uLCD.cls(); |
rpatel397 | 3:6f639d41aef3 | 998 | uLCD.printf("starting..."); |
rpatel397 | 3:6f639d41aef3 | 999 | uLCD.background_color(BLACK); |
rpatel397 | 3:6f639d41aef3 | 1000 | uLCD.baudrate(3000000); |
rpatel397 | 3:6f639d41aef3 | 1001 | lcd_mut.unlock(); |
4180_1 | 2:c2afd0c426af | 1002 | Thread::wait(1000); |
rpatel397 | 3:6f639d41aef3 | 1003 | Thread Thread1(LCD); |
rpatel397 | 3:6f639d41aef3 | 1004 | Thread Thread2(lights); |
rpatel397 | 3:6f639d41aef3 | 1005 | |
rpatel397 | 3:6f639d41aef3 | 1006 | |
rpatel397 | 3:6f639d41aef3 | 1007 | while(1) { |
rpatel397 | 3:6f639d41aef3 | 1008 | Thread::wait(1000); |
rpatel397 | 3:6f639d41aef3 | 1009 | } |
rpatel397 | 3:6f639d41aef3 | 1010 | |
rpatel397 | 3:6f639d41aef3 | 1011 | } |