Arcade style game on Nokia 5110 LCD with additional features. Includes game play song, high scores page and various settings.
main.cpp@29:f70d927c3e11, 2015-05-06 (annotated)
- Committer:
- jordaahh
- Date:
- Wed May 06 14:24:49 2015 +0000
- Revision:
- 29:f70d927c3e11
- Parent:
- 26:53ab8f8615dd
- Child:
- 30:e6f59801ea2a
Fully complete. ready for publishing.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
jordaahh | 23:986a6ad0d321 | 1 | /** |
jordaahh | 23:986a6ad0d321 | 2 | @file main.cpp |
jordaahh | 23:986a6ad0d321 | 3 | |
jordaahh | 29:f70d927c3e11 | 4 | @brief Game Algorithm implementation |
jordaahh | 23:986a6ad0d321 | 5 | */ |
jordaahh | 10:ffac6dc620ff | 6 | |
jordaahh | 23:986a6ad0d321 | 7 | #include "main.h" |
jordaahh | 10:ffac6dc620ff | 8 | |
jordaahh | 10:ffac6dc620ff | 9 | int main() |
jordaahh | 0:a28ad0db4228 | 10 | { |
jordaahh | 26:53ab8f8615dd | 11 | //set_time(0); // enter unix time then delete from main function to set time |
jordaahh | 13:677d398423f7 | 12 | power = 1; |
jordaahh | 26:53ab8f8615dd | 13 | lcd.init(); |
jordaahh | 0:a28ad0db4228 | 14 | calibrateJoystick(); // get centred values of joystick |
jordaahh | 26:53ab8f8615dd | 15 | pollJoystick.attach(&updateJoystick,1.0/15.0); // read joystick 15 times per second |
jordaahh | 21:a239f5a92464 | 16 | wallMovement.attach(&flagForWall,0.2); // call function flagForWall to make flag=1, every 0.2 seconds |
jordaahh | 21:a239f5a92464 | 17 | wallMovement2.attach(&flagForWall2,0.2); // call function flagForWall2 to make flag=1, every 0.2 seconds |
jordaahh | 21:a239f5a92464 | 18 | wallMovement3.attach(&flagForWall3,0.2); // call function flagForWall3 to make flag=1, every 0.2 seconds |
jordaahh | 21:a239f5a92464 | 19 | flash.attach(&flagForFlash,1); // call function flagForWall3 to make flag=1, every 1 seconds |
jordaahh | 10:ffac6dc620ff | 20 | menu(); |
jordaahh | 13:677d398423f7 | 21 | } |
jordaahh | 13:677d398423f7 | 22 | |
jordaahh | 29:f70d927c3e11 | 23 | void calibrateJoystick() |
jordaahh | 29:f70d927c3e11 | 24 | { |
jordaahh | 29:f70d927c3e11 | 25 | button.mode(PullDown); // must not move while calibrating |
jordaahh | 29:f70d927c3e11 | 26 | joystick.x0 = xPot; // initial positions in the range 0.0 to 1.0 (0.5 if centred exactly) |
jordaahh | 29:f70d927c3e11 | 27 | joystick.y0 = yPot; |
jordaahh | 29:f70d927c3e11 | 28 | } |
jordaahh | 29:f70d927c3e11 | 29 | |
jordaahh | 29:f70d927c3e11 | 30 | void updateJoystick() |
jordaahh | 29:f70d927c3e11 | 31 | { |
jordaahh | 29:f70d927c3e11 | 32 | |
jordaahh | 29:f70d927c3e11 | 33 | joystick.x = xPot - joystick.x0; // reads current joystick values relative to calibrated values (in range -0.5 to 0.5, 0.0 is centred) |
jordaahh | 29:f70d927c3e11 | 34 | joystick.y = yPot - joystick.y0; |
jordaahh | 29:f70d927c3e11 | 35 | joystick.button = button; |
jordaahh | 29:f70d927c3e11 | 36 | |
jordaahh | 29:f70d927c3e11 | 37 | /* calculate direction depending on x,y values */ |
jordaahh | 29:f70d927c3e11 | 38 | /* tolerance allows a little lee-way in case joystick not exactly in the stated direction */ |
jordaahh | 29:f70d927c3e11 | 39 | if ( fabs(joystick.y) < DIRECTION_TOLERANCE && fabs(joystick.x) < DIRECTION_TOLERANCE) { |
jordaahh | 29:f70d927c3e11 | 40 | joystick.direction = CENTRE; |
jordaahh | 29:f70d927c3e11 | 41 | } else if ( joystick.y > DIRECTION_TOLERANCE && fabs(joystick.x) < DIRECTION_TOLERANCE) { |
jordaahh | 29:f70d927c3e11 | 42 | joystick.direction = UP; |
jordaahh | 29:f70d927c3e11 | 43 | } else if ( joystick.y < DIRECTION_TOLERANCE && fabs(joystick.x) < DIRECTION_TOLERANCE) { |
jordaahh | 29:f70d927c3e11 | 44 | joystick.direction = DOWN; |
jordaahh | 29:f70d927c3e11 | 45 | } else if ( joystick.x > DIRECTION_TOLERANCE && fabs(joystick.y) < DIRECTION_TOLERANCE) { |
jordaahh | 29:f70d927c3e11 | 46 | joystick.direction = RIGHT; |
jordaahh | 29:f70d927c3e11 | 47 | } else if ( joystick.x < DIRECTION_TOLERANCE && fabs(joystick.y) < DIRECTION_TOLERANCE) { |
jordaahh | 29:f70d927c3e11 | 48 | joystick.direction = LEFT; |
jordaahh | 29:f70d927c3e11 | 49 | } else if ( joystick.y > DIRECTION_TOLERANCE && joystick.x > DIRECTION_TOLERANCE) { |
jordaahh | 29:f70d927c3e11 | 50 | joystick.direction = upRight; |
jordaahh | 29:f70d927c3e11 | 51 | } else if ( joystick.y < DIRECTION_TOLERANCE && joystick.x > DIRECTION_TOLERANCE) { |
jordaahh | 29:f70d927c3e11 | 52 | joystick.direction = downRight; |
jordaahh | 29:f70d927c3e11 | 53 | } else if ( joystick.y > DIRECTION_TOLERANCE && joystick.x < DIRECTION_TOLERANCE) { |
jordaahh | 29:f70d927c3e11 | 54 | joystick.direction = upLeft; |
jordaahh | 29:f70d927c3e11 | 55 | } else if ( joystick.y < DIRECTION_TOLERANCE && joystick.x < DIRECTION_TOLERANCE) { |
jordaahh | 29:f70d927c3e11 | 56 | joystick.direction = downLeft; |
jordaahh | 29:f70d927c3e11 | 57 | } |
jordaahh | 29:f70d927c3e11 | 58 | |
jordaahh | 29:f70d927c3e11 | 59 | printFlag = 1; // set flag for printing |
jordaahh | 29:f70d927c3e11 | 60 | } |
jordaahh | 29:f70d927c3e11 | 61 | |
jordaahh | 29:f70d927c3e11 | 62 | |
jordaahh | 29:f70d927c3e11 | 63 | |
jordaahh | 29:f70d927c3e11 | 64 | void clearCells() |
jordaahh | 29:f70d927c3e11 | 65 | { |
jordaahh | 29:f70d927c3e11 | 66 | for (int i = 0; i < nx ; i++) { // loops through cells in x direction first |
jordaahh | 29:f70d927c3e11 | 67 | for (int j = 0; j < ny ; j++) { // then moves in y direction |
jordaahh | 29:f70d927c3e11 | 68 | lcd.clearPixel(i,j); // clears each pixel that is checked |
jordaahh | 29:f70d927c3e11 | 69 | } |
jordaahh | 29:f70d927c3e11 | 70 | } |
jordaahh | 29:f70d927c3e11 | 71 | lcd.refresh(); // must refresh to write buffer display |
jordaahh | 29:f70d927c3e11 | 72 | } |
jordaahh | 29:f70d927c3e11 | 73 | |
jordaahh | 29:f70d927c3e11 | 74 | |
jordaahh | 29:f70d927c3e11 | 75 | void flagForWall() |
jordaahh | 29:f70d927c3e11 | 76 | { |
jordaahh | 29:f70d927c3e11 | 77 | FLAG=1; |
jordaahh | 29:f70d927c3e11 | 78 | } |
jordaahh | 29:f70d927c3e11 | 79 | |
jordaahh | 29:f70d927c3e11 | 80 | |
jordaahh | 29:f70d927c3e11 | 81 | void flagForWall2() |
jordaahh | 29:f70d927c3e11 | 82 | { |
jordaahh | 29:f70d927c3e11 | 83 | FLAG2=1; |
jordaahh | 29:f70d927c3e11 | 84 | } |
jordaahh | 29:f70d927c3e11 | 85 | |
jordaahh | 29:f70d927c3e11 | 86 | |
jordaahh | 29:f70d927c3e11 | 87 | void flagForWall3() |
jordaahh | 29:f70d927c3e11 | 88 | { |
jordaahh | 29:f70d927c3e11 | 89 | FLAG3=1; |
jordaahh | 29:f70d927c3e11 | 90 | } |
jordaahh | 29:f70d927c3e11 | 91 | |
jordaahh | 29:f70d927c3e11 | 92 | |
jordaahh | 29:f70d927c3e11 | 93 | void menu() |
jordaahh | 29:f70d927c3e11 | 94 | { |
jordaahh | 29:f70d927c3e11 | 95 | int m = 0; |
jordaahh | 29:f70d927c3e11 | 96 | |
jordaahh | 29:f70d927c3e11 | 97 | char buffer[14]; // buffer used to store time string |
jordaahh | 29:f70d927c3e11 | 98 | |
jordaahh | 29:f70d927c3e11 | 99 | while(1) { |
jordaahh | 29:f70d927c3e11 | 100 | powerSave(); // call sleep function |
jordaahh | 29:f70d927c3e11 | 101 | clearCells(); |
jordaahh | 29:f70d927c3e11 | 102 | time_t seconds = time(NULL); // gets current time |
jordaahh | 29:f70d927c3e11 | 103 | strftime(buffer, 14 , "%H:%M", localtime(&seconds)); // send time string to buffer |
jordaahh | 29:f70d927c3e11 | 104 | |
jordaahh | 29:f70d927c3e11 | 105 | lcd.printString(buffer,26,4); // show time on lcd screen |
jordaahh | 29:f70d927c3e11 | 106 | |
jordaahh | 29:f70d927c3e11 | 107 | |
jordaahh | 29:f70d927c3e11 | 108 | if ((joystick.direction == RIGHT)||(joystick.direction == upRight)||(joystick.direction == downRight)) { |
jordaahh | 29:f70d927c3e11 | 109 | m++; |
jordaahh | 29:f70d927c3e11 | 110 | } |
jordaahh | 29:f70d927c3e11 | 111 | if ((joystick.direction == LEFT)||(joystick.direction == upLeft)||(joystick.direction == downLeft)) { |
jordaahh | 29:f70d927c3e11 | 112 | m--; |
jordaahh | 29:f70d927c3e11 | 113 | } |
jordaahh | 29:f70d927c3e11 | 114 | if(m > 2) { |
jordaahh | 29:f70d927c3e11 | 115 | m = 0; |
jordaahh | 29:f70d927c3e11 | 116 | } |
jordaahh | 29:f70d927c3e11 | 117 | if(m < 0) { |
jordaahh | 29:f70d927c3e11 | 118 | m = 2; |
jordaahh | 29:f70d927c3e11 | 119 | } |
jordaahh | 29:f70d927c3e11 | 120 | switch (m) { |
jordaahh | 29:f70d927c3e11 | 121 | case 0 : |
jordaahh | 29:f70d927c3e11 | 122 | lcd.printString("< Play Game >",0,2); |
jordaahh | 29:f70d927c3e11 | 123 | wait(0.3); |
jordaahh | 29:f70d927c3e11 | 124 | while(1) { |
jordaahh | 29:f70d927c3e11 | 125 | if(button == 1) { |
jordaahh | 29:f70d927c3e11 | 126 | clearCells(); |
jordaahh | 29:f70d927c3e11 | 127 | playGame(); |
jordaahh | 29:f70d927c3e11 | 128 | break; |
jordaahh | 29:f70d927c3e11 | 129 | } else { |
jordaahh | 29:f70d927c3e11 | 130 | break; |
jordaahh | 29:f70d927c3e11 | 131 | } |
jordaahh | 29:f70d927c3e11 | 132 | } |
jordaahh | 29:f70d927c3e11 | 133 | break; |
jordaahh | 29:f70d927c3e11 | 134 | case 1 : |
jordaahh | 29:f70d927c3e11 | 135 | lcd.printString("< Settings >",0,2); |
jordaahh | 29:f70d927c3e11 | 136 | wait(0.3); |
jordaahh | 29:f70d927c3e11 | 137 | while(1) { |
jordaahh | 29:f70d927c3e11 | 138 | if(button == 1) { |
jordaahh | 29:f70d927c3e11 | 139 | clearCells(); |
jordaahh | 29:f70d927c3e11 | 140 | BandVMenu(); |
jordaahh | 29:f70d927c3e11 | 141 | break; |
jordaahh | 29:f70d927c3e11 | 142 | } else { |
jordaahh | 29:f70d927c3e11 | 143 | break; |
jordaahh | 29:f70d927c3e11 | 144 | } |
jordaahh | 29:f70d927c3e11 | 145 | } |
jordaahh | 29:f70d927c3e11 | 146 | break; |
jordaahh | 29:f70d927c3e11 | 147 | case 2 : |
jordaahh | 29:f70d927c3e11 | 148 | lcd.printString("< HighScore >",0,2); |
jordaahh | 29:f70d927c3e11 | 149 | wait(0.3); |
jordaahh | 29:f70d927c3e11 | 150 | while(1) { |
jordaahh | 29:f70d927c3e11 | 151 | if(button == 1) { |
jordaahh | 29:f70d927c3e11 | 152 | clearCells(); |
jordaahh | 29:f70d927c3e11 | 153 | while(1) { |
jordaahh | 29:f70d927c3e11 | 154 | readDataFromFile(); |
jordaahh | 29:f70d927c3e11 | 155 | lcd.printString("HighScore",16,0); |
jordaahh | 29:f70d927c3e11 | 156 | if(joystick.direction == DOWN) { |
jordaahh | 29:f70d927c3e11 | 157 | menu(); |
jordaahh | 29:f70d927c3e11 | 158 | } |
jordaahh | 29:f70d927c3e11 | 159 | } |
jordaahh | 29:f70d927c3e11 | 160 | } else { |
jordaahh | 29:f70d927c3e11 | 161 | break; |
jordaahh | 29:f70d927c3e11 | 162 | } |
jordaahh | 29:f70d927c3e11 | 163 | } |
jordaahh | 29:f70d927c3e11 | 164 | break; |
jordaahh | 29:f70d927c3e11 | 165 | |
jordaahh | 29:f70d927c3e11 | 166 | } |
jordaahh | 29:f70d927c3e11 | 167 | } |
jordaahh | 29:f70d927c3e11 | 168 | } |
jordaahh | 29:f70d927c3e11 | 169 | |
jordaahh | 29:f70d927c3e11 | 170 | |
jordaahh | 29:f70d927c3e11 | 171 | void playGame() |
jordaahh | 29:f70d927c3e11 | 172 | { |
jordaahh | 29:f70d927c3e11 | 173 | /* reset variables */ |
jordaahh | 29:f70d927c3e11 | 174 | i=24; |
jordaahh | 29:f70d927c3e11 | 175 | j=42; |
jordaahh | 29:f70d927c3e11 | 176 | x = 0; |
jordaahh | 29:f70d927c3e11 | 177 | y = 0; |
jordaahh | 29:f70d927c3e11 | 178 | z = 30; |
jordaahh | 29:f70d927c3e11 | 179 | a = 0; |
jordaahh | 29:f70d927c3e11 | 180 | b = 47; |
jordaahh | 29:f70d927c3e11 | 181 | d = 30; |
jordaahh | 29:f70d927c3e11 | 182 | f = 0; |
jordaahh | 29:f70d927c3e11 | 183 | g = 0; |
jordaahh | 29:f70d927c3e11 | 184 | h = 24; |
jordaahh | 29:f70d927c3e11 | 185 | q = 83; |
jordaahh | 29:f70d927c3e11 | 186 | w = 0; |
jordaahh | 29:f70d927c3e11 | 187 | e = 24; |
jordaahh | 29:f70d927c3e11 | 188 | score = 0; |
jordaahh | 29:f70d927c3e11 | 189 | u = 0; |
jordaahh | 29:f70d927c3e11 | 190 | |
jordaahh | 29:f70d927c3e11 | 191 | lcd.printString("GO!",35,2); |
jordaahh | 29:f70d927c3e11 | 192 | wait(1); |
jordaahh | 29:f70d927c3e11 | 193 | while(1) { |
jordaahh | 29:f70d927c3e11 | 194 | if(soundFlag==1) { // if mute hasn't been toggled in settings then the song will play |
jordaahh | 29:f70d927c3e11 | 195 | tone(); |
jordaahh | 29:f70d927c3e11 | 196 | } |
jordaahh | 29:f70d927c3e11 | 197 | lcd.drawRect(i,j,2,2,0); // draws player object |
jordaahh | 29:f70d927c3e11 | 198 | clearCells(); |
jordaahh | 29:f70d927c3e11 | 199 | fallingWalls(); |
jordaahh | 29:f70d927c3e11 | 200 | boundries(); |
jordaahh | 29:f70d927c3e11 | 201 | playerMovement(); |
jordaahh | 29:f70d927c3e11 | 202 | |
jordaahh | 29:f70d927c3e11 | 203 | if (lcd.getPixel(i,j)) { // if wall meets player object then there is a collision |
jordaahh | 29:f70d927c3e11 | 204 | scoreCheck(); |
jordaahh | 29:f70d927c3e11 | 205 | int m = 1; |
jordaahh | 29:f70d927c3e11 | 206 | GameOverFlash(); // this means that it is game over |
jordaahh | 29:f70d927c3e11 | 207 | if (soundFlag == 1) { |
jordaahh | 29:f70d927c3e11 | 208 | deadTone(); |
jordaahh | 29:f70d927c3e11 | 209 | } |
jordaahh | 29:f70d927c3e11 | 210 | |
jordaahh | 29:f70d927c3e11 | 211 | while(1) { |
jordaahh | 29:f70d927c3e11 | 212 | clearCells(); |
jordaahh | 29:f70d927c3e11 | 213 | if ((joystick.direction == RIGHT)||(joystick.direction == upRight)||(joystick.direction == downRight)) { // reads joystick direction and counts down |
jordaahh | 29:f70d927c3e11 | 214 | m--; |
jordaahh | 29:f70d927c3e11 | 215 | } |
jordaahh | 29:f70d927c3e11 | 216 | if ((joystick.direction == LEFT)||(joystick.direction == upLeft)||(joystick.direction == downLeft)) { // reads joystick direction and counts up |
jordaahh | 29:f70d927c3e11 | 217 | m++; |
jordaahh | 29:f70d927c3e11 | 218 | } |
jordaahh | 29:f70d927c3e11 | 219 | if(m > 2) { // stops counter from going above total number of cases |
jordaahh | 29:f70d927c3e11 | 220 | m = 2; |
jordaahh | 29:f70d927c3e11 | 221 | } |
jordaahh | 29:f70d927c3e11 | 222 | if(m < 0) { // stops counter from going below zero |
jordaahh | 29:f70d927c3e11 | 223 | m = 0; |
jordaahh | 29:f70d927c3e11 | 224 | } |
jordaahh | 29:f70d927c3e11 | 225 | switch (m) { //switches to the case that the counter is on |
jordaahh | 29:f70d927c3e11 | 226 | case 0 : |
jordaahh | 29:f70d927c3e11 | 227 | lcd.printString("YES",0,3); |
jordaahh | 29:f70d927c3e11 | 228 | |
jordaahh | 29:f70d927c3e11 | 229 | while(1) { |
jordaahh | 29:f70d927c3e11 | 230 | if(button == 1) { |
jordaahh | 29:f70d927c3e11 | 231 | clearCells(); |
jordaahh | 29:f70d927c3e11 | 232 | playGame(); |
jordaahh | 29:f70d927c3e11 | 233 | break; |
jordaahh | 29:f70d927c3e11 | 234 | } else { |
jordaahh | 29:f70d927c3e11 | 235 | break; |
jordaahh | 29:f70d927c3e11 | 236 | } |
jordaahh | 29:f70d927c3e11 | 237 | } |
jordaahh | 29:f70d927c3e11 | 238 | break; |
jordaahh | 29:f70d927c3e11 | 239 | case 1 : |
jordaahh | 29:f70d927c3e11 | 240 | lcd.printString("Play Again?",9,1); |
jordaahh | 29:f70d927c3e11 | 241 | lcd.printString("Yes No",0,3); |
jordaahh | 29:f70d927c3e11 | 242 | wait(0.3); |
jordaahh | 29:f70d927c3e11 | 243 | |
jordaahh | 29:f70d927c3e11 | 244 | break; |
jordaahh | 29:f70d927c3e11 | 245 | case 2 : |
jordaahh | 29:f70d927c3e11 | 246 | lcd.printString("NO",70,3); |
jordaahh | 29:f70d927c3e11 | 247 | |
jordaahh | 29:f70d927c3e11 | 248 | while(1) { |
jordaahh | 29:f70d927c3e11 | 249 | if(button == 1) { |
jordaahh | 29:f70d927c3e11 | 250 | clearCells(); |
jordaahh | 29:f70d927c3e11 | 251 | lcd.printString("Leaving Game",0,2); |
jordaahh | 29:f70d927c3e11 | 252 | wait(1.0); |
jordaahh | 29:f70d927c3e11 | 253 | menu(); |
jordaahh | 29:f70d927c3e11 | 254 | break; |
jordaahh | 29:f70d927c3e11 | 255 | } else { |
jordaahh | 29:f70d927c3e11 | 256 | break; |
jordaahh | 29:f70d927c3e11 | 257 | } |
jordaahh | 29:f70d927c3e11 | 258 | } |
jordaahh | 29:f70d927c3e11 | 259 | break; |
jordaahh | 29:f70d927c3e11 | 260 | } |
jordaahh | 29:f70d927c3e11 | 261 | } |
jordaahh | 29:f70d927c3e11 | 262 | } |
jordaahh | 29:f70d927c3e11 | 263 | if (lcd.getPixel(i+2,j)) { // same as above but for different side of player object |
jordaahh | 29:f70d927c3e11 | 264 | |
jordaahh | 29:f70d927c3e11 | 265 | scoreCheck(); |
jordaahh | 29:f70d927c3e11 | 266 | clearCells(); |
jordaahh | 29:f70d927c3e11 | 267 | int m = 1; |
jordaahh | 29:f70d927c3e11 | 268 | GameOverFlash(); |
jordaahh | 29:f70d927c3e11 | 269 | if (soundFlag == 1) { |
jordaahh | 29:f70d927c3e11 | 270 | deadTone(); |
jordaahh | 29:f70d927c3e11 | 271 | } |
jordaahh | 29:f70d927c3e11 | 272 | |
jordaahh | 29:f70d927c3e11 | 273 | while(1) { |
jordaahh | 29:f70d927c3e11 | 274 | clearCells(); |
jordaahh | 29:f70d927c3e11 | 275 | if ((joystick.direction == RIGHT)||(joystick.direction == upRight)||(joystick.direction == downRight)) { |
jordaahh | 29:f70d927c3e11 | 276 | m--; |
jordaahh | 29:f70d927c3e11 | 277 | } |
jordaahh | 29:f70d927c3e11 | 278 | if ((joystick.direction == LEFT)||(joystick.direction == upLeft)||(joystick.direction == downLeft)) { |
jordaahh | 29:f70d927c3e11 | 279 | m++; |
jordaahh | 29:f70d927c3e11 | 280 | } |
jordaahh | 29:f70d927c3e11 | 281 | if(m > 2) { |
jordaahh | 29:f70d927c3e11 | 282 | m = 2; |
jordaahh | 29:f70d927c3e11 | 283 | } |
jordaahh | 29:f70d927c3e11 | 284 | if(m < 0) { |
jordaahh | 29:f70d927c3e11 | 285 | m = 0; |
jordaahh | 29:f70d927c3e11 | 286 | } |
jordaahh | 29:f70d927c3e11 | 287 | switch (m) { |
jordaahh | 29:f70d927c3e11 | 288 | case 0 : |
jordaahh | 29:f70d927c3e11 | 289 | lcd.printString("YES",0,3); |
jordaahh | 29:f70d927c3e11 | 290 | |
jordaahh | 29:f70d927c3e11 | 291 | while(1) { |
jordaahh | 29:f70d927c3e11 | 292 | if(button == 1) { |
jordaahh | 29:f70d927c3e11 | 293 | clearCells(); |
jordaahh | 29:f70d927c3e11 | 294 | playGame(); |
jordaahh | 29:f70d927c3e11 | 295 | break; |
jordaahh | 29:f70d927c3e11 | 296 | } else { |
jordaahh | 29:f70d927c3e11 | 297 | break; |
jordaahh | 29:f70d927c3e11 | 298 | } |
jordaahh | 29:f70d927c3e11 | 299 | } |
jordaahh | 29:f70d927c3e11 | 300 | break; |
jordaahh | 29:f70d927c3e11 | 301 | case 1 : |
jordaahh | 29:f70d927c3e11 | 302 | lcd.printString("Play Again?",9,1); |
jordaahh | 29:f70d927c3e11 | 303 | lcd.printString("Yes No",0,3); |
jordaahh | 29:f70d927c3e11 | 304 | wait(0.3); |
jordaahh | 29:f70d927c3e11 | 305 | |
jordaahh | 29:f70d927c3e11 | 306 | break; |
jordaahh | 29:f70d927c3e11 | 307 | case 2 : |
jordaahh | 29:f70d927c3e11 | 308 | lcd.printString("NO",70,3); |
jordaahh | 29:f70d927c3e11 | 309 | |
jordaahh | 29:f70d927c3e11 | 310 | while(1) { |
jordaahh | 29:f70d927c3e11 | 311 | if(button == 1) { |
jordaahh | 29:f70d927c3e11 | 312 | clearCells(); |
jordaahh | 29:f70d927c3e11 | 313 | lcd.printString("Leaving Game",0,2); |
jordaahh | 29:f70d927c3e11 | 314 | wait(1.0); |
jordaahh | 29:f70d927c3e11 | 315 | menu(); |
jordaahh | 29:f70d927c3e11 | 316 | break; |
jordaahh | 29:f70d927c3e11 | 317 | } else { |
jordaahh | 29:f70d927c3e11 | 318 | break; |
jordaahh | 29:f70d927c3e11 | 319 | } |
jordaahh | 29:f70d927c3e11 | 320 | } |
jordaahh | 29:f70d927c3e11 | 321 | break; |
jordaahh | 29:f70d927c3e11 | 322 | } |
jordaahh | 29:f70d927c3e11 | 323 | } |
jordaahh | 29:f70d927c3e11 | 324 | } |
jordaahh | 29:f70d927c3e11 | 325 | if (lcd.getPixel(i+2,j+2)) { |
jordaahh | 29:f70d927c3e11 | 326 | scoreCheck(); |
jordaahh | 29:f70d927c3e11 | 327 | clearCells(); |
jordaahh | 29:f70d927c3e11 | 328 | int m = 1; |
jordaahh | 29:f70d927c3e11 | 329 | GameOverFlash(); |
jordaahh | 29:f70d927c3e11 | 330 | if (soundFlag == 1) { |
jordaahh | 29:f70d927c3e11 | 331 | deadTone(); |
jordaahh | 29:f70d927c3e11 | 332 | } |
jordaahh | 29:f70d927c3e11 | 333 | |
jordaahh | 29:f70d927c3e11 | 334 | while(1) { |
jordaahh | 29:f70d927c3e11 | 335 | clearCells(); |
jordaahh | 29:f70d927c3e11 | 336 | if ((joystick.direction == RIGHT)||(joystick.direction == upRight)||(joystick.direction == downRight)) { |
jordaahh | 29:f70d927c3e11 | 337 | m--; |
jordaahh | 29:f70d927c3e11 | 338 | } |
jordaahh | 29:f70d927c3e11 | 339 | if ((joystick.direction == LEFT)||(joystick.direction == upLeft)||(joystick.direction == downLeft)) { |
jordaahh | 29:f70d927c3e11 | 340 | m++; |
jordaahh | 29:f70d927c3e11 | 341 | } |
jordaahh | 29:f70d927c3e11 | 342 | if(m > 2) { |
jordaahh | 29:f70d927c3e11 | 343 | m = 2; |
jordaahh | 29:f70d927c3e11 | 344 | } |
jordaahh | 29:f70d927c3e11 | 345 | if(m < 0) { |
jordaahh | 29:f70d927c3e11 | 346 | m = 0; |
jordaahh | 29:f70d927c3e11 | 347 | } |
jordaahh | 29:f70d927c3e11 | 348 | switch (m) { |
jordaahh | 29:f70d927c3e11 | 349 | case 0 : |
jordaahh | 29:f70d927c3e11 | 350 | lcd.printString("YES",0,3); |
jordaahh | 29:f70d927c3e11 | 351 | |
jordaahh | 29:f70d927c3e11 | 352 | while(1) { |
jordaahh | 29:f70d927c3e11 | 353 | if(button == 1) { |
jordaahh | 29:f70d927c3e11 | 354 | clearCells(); |
jordaahh | 29:f70d927c3e11 | 355 | playGame(); |
jordaahh | 29:f70d927c3e11 | 356 | break; |
jordaahh | 29:f70d927c3e11 | 357 | } else { |
jordaahh | 29:f70d927c3e11 | 358 | break; |
jordaahh | 29:f70d927c3e11 | 359 | } |
jordaahh | 29:f70d927c3e11 | 360 | } |
jordaahh | 29:f70d927c3e11 | 361 | break; |
jordaahh | 29:f70d927c3e11 | 362 | case 1 : |
jordaahh | 29:f70d927c3e11 | 363 | lcd.printString("Play Again?",9,1); |
jordaahh | 29:f70d927c3e11 | 364 | lcd.printString("Yes No",0,3); |
jordaahh | 29:f70d927c3e11 | 365 | wait(0.3); |
jordaahh | 29:f70d927c3e11 | 366 | |
jordaahh | 29:f70d927c3e11 | 367 | break; |
jordaahh | 29:f70d927c3e11 | 368 | case 2 : |
jordaahh | 29:f70d927c3e11 | 369 | lcd.printString("NO",70,3); |
jordaahh | 29:f70d927c3e11 | 370 | |
jordaahh | 29:f70d927c3e11 | 371 | while(1) { |
jordaahh | 29:f70d927c3e11 | 372 | if(button == 1) { |
jordaahh | 29:f70d927c3e11 | 373 | clearCells(); |
jordaahh | 29:f70d927c3e11 | 374 | lcd.printString("Leaving Game",0,2); |
jordaahh | 29:f70d927c3e11 | 375 | wait(1.0); |
jordaahh | 29:f70d927c3e11 | 376 | menu(); |
jordaahh | 29:f70d927c3e11 | 377 | break; |
jordaahh | 29:f70d927c3e11 | 378 | } else { |
jordaahh | 29:f70d927c3e11 | 379 | break; |
jordaahh | 29:f70d927c3e11 | 380 | } |
jordaahh | 29:f70d927c3e11 | 381 | } |
jordaahh | 29:f70d927c3e11 | 382 | break; |
jordaahh | 29:f70d927c3e11 | 383 | |
jordaahh | 29:f70d927c3e11 | 384 | } |
jordaahh | 29:f70d927c3e11 | 385 | } |
jordaahh | 29:f70d927c3e11 | 386 | } |
jordaahh | 29:f70d927c3e11 | 387 | if (lcd.getPixel(i,j+2)) { |
jordaahh | 29:f70d927c3e11 | 388 | scoreCheck(); |
jordaahh | 29:f70d927c3e11 | 389 | clearCells(); |
jordaahh | 29:f70d927c3e11 | 390 | int m = 1; |
jordaahh | 29:f70d927c3e11 | 391 | GameOverFlash(); |
jordaahh | 29:f70d927c3e11 | 392 | if (soundFlag == 1) { |
jordaahh | 29:f70d927c3e11 | 393 | deadTone(); |
jordaahh | 29:f70d927c3e11 | 394 | } |
jordaahh | 29:f70d927c3e11 | 395 | |
jordaahh | 29:f70d927c3e11 | 396 | while(1) { |
jordaahh | 29:f70d927c3e11 | 397 | clearCells(); |
jordaahh | 29:f70d927c3e11 | 398 | if ((joystick.direction == RIGHT)||(joystick.direction == upRight)||(joystick.direction == downRight)) { |
jordaahh | 29:f70d927c3e11 | 399 | m--; |
jordaahh | 29:f70d927c3e11 | 400 | } |
jordaahh | 29:f70d927c3e11 | 401 | if ((joystick.direction == LEFT)||(joystick.direction == upLeft)||(joystick.direction == downLeft)) { |
jordaahh | 29:f70d927c3e11 | 402 | m++; |
jordaahh | 29:f70d927c3e11 | 403 | } |
jordaahh | 29:f70d927c3e11 | 404 | if(m > 2) { |
jordaahh | 29:f70d927c3e11 | 405 | m = 2; |
jordaahh | 29:f70d927c3e11 | 406 | } |
jordaahh | 29:f70d927c3e11 | 407 | if(m < 0) { |
jordaahh | 29:f70d927c3e11 | 408 | m = 0; |
jordaahh | 29:f70d927c3e11 | 409 | } |
jordaahh | 29:f70d927c3e11 | 410 | switch (m) { |
jordaahh | 29:f70d927c3e11 | 411 | case 0 : |
jordaahh | 29:f70d927c3e11 | 412 | lcd.printString("YES",0,3); |
jordaahh | 29:f70d927c3e11 | 413 | |
jordaahh | 29:f70d927c3e11 | 414 | while(1) { |
jordaahh | 29:f70d927c3e11 | 415 | if(button == 1) { |
jordaahh | 29:f70d927c3e11 | 416 | clearCells(); |
jordaahh | 29:f70d927c3e11 | 417 | playGame(); |
jordaahh | 29:f70d927c3e11 | 418 | break; |
jordaahh | 29:f70d927c3e11 | 419 | } else { |
jordaahh | 29:f70d927c3e11 | 420 | break; |
jordaahh | 29:f70d927c3e11 | 421 | } |
jordaahh | 29:f70d927c3e11 | 422 | } |
jordaahh | 29:f70d927c3e11 | 423 | break; |
jordaahh | 29:f70d927c3e11 | 424 | case 1 : |
jordaahh | 29:f70d927c3e11 | 425 | lcd.printString("Play Again?",9,1); |
jordaahh | 29:f70d927c3e11 | 426 | lcd.printString("Yes No",0,3); |
jordaahh | 29:f70d927c3e11 | 427 | wait(0.3); |
jordaahh | 29:f70d927c3e11 | 428 | |
jordaahh | 29:f70d927c3e11 | 429 | break; |
jordaahh | 29:f70d927c3e11 | 430 | case 2 : |
jordaahh | 29:f70d927c3e11 | 431 | lcd.printString("NO",70,3); |
jordaahh | 29:f70d927c3e11 | 432 | |
jordaahh | 29:f70d927c3e11 | 433 | while(1) { |
jordaahh | 29:f70d927c3e11 | 434 | if(button == 1) { |
jordaahh | 29:f70d927c3e11 | 435 | clearCells(); |
jordaahh | 29:f70d927c3e11 | 436 | lcd.printString("Leaving Game",0,2); |
jordaahh | 29:f70d927c3e11 | 437 | wait(1.0); |
jordaahh | 29:f70d927c3e11 | 438 | menu(); |
jordaahh | 29:f70d927c3e11 | 439 | break; |
jordaahh | 29:f70d927c3e11 | 440 | } else { |
jordaahh | 29:f70d927c3e11 | 441 | break; |
jordaahh | 29:f70d927c3e11 | 442 | } |
jordaahh | 29:f70d927c3e11 | 443 | } |
jordaahh | 29:f70d927c3e11 | 444 | break; |
jordaahh | 29:f70d927c3e11 | 445 | |
jordaahh | 29:f70d927c3e11 | 446 | } |
jordaahh | 29:f70d927c3e11 | 447 | } |
jordaahh | 29:f70d927c3e11 | 448 | } |
jordaahh | 29:f70d927c3e11 | 449 | } |
jordaahh | 29:f70d927c3e11 | 450 | } |
jordaahh | 29:f70d927c3e11 | 451 | |
jordaahh | 29:f70d927c3e11 | 452 | |
jordaahh | 29:f70d927c3e11 | 453 | void BandVMenu() |
jordaahh | 29:f70d927c3e11 | 454 | { |
jordaahh | 29:f70d927c3e11 | 455 | int t = 0; |
jordaahh | 29:f70d927c3e11 | 456 | while(1) { |
jordaahh | 29:f70d927c3e11 | 457 | wait(0.2); |
jordaahh | 29:f70d927c3e11 | 458 | clearCells(); |
jordaahh | 29:f70d927c3e11 | 459 | if ((joystick.direction == RIGHT)||(joystick.direction == upRight)||(joystick.direction == downRight)) { |
jordaahh | 29:f70d927c3e11 | 460 | t++; |
jordaahh | 29:f70d927c3e11 | 461 | } |
jordaahh | 29:f70d927c3e11 | 462 | if ((joystick.direction == LEFT)||(joystick.direction == upLeft)||(joystick.direction == downLeft)) { |
jordaahh | 29:f70d927c3e11 | 463 | t--; |
jordaahh | 29:f70d927c3e11 | 464 | } |
jordaahh | 29:f70d927c3e11 | 465 | if(t > 2) { |
jordaahh | 29:f70d927c3e11 | 466 | t = 0; |
jordaahh | 29:f70d927c3e11 | 467 | } |
jordaahh | 29:f70d927c3e11 | 468 | if(t < 0) { |
jordaahh | 29:f70d927c3e11 | 469 | t = 2; |
jordaahh | 29:f70d927c3e11 | 470 | } |
jordaahh | 29:f70d927c3e11 | 471 | if(joystick.direction == DOWN) { |
jordaahh | 29:f70d927c3e11 | 472 | clearCells(); |
jordaahh | 29:f70d927c3e11 | 473 | lcd.printString("Returning",18,2); |
jordaahh | 29:f70d927c3e11 | 474 | lcd.printString("to Menu",24,3); |
jordaahh | 29:f70d927c3e11 | 475 | wait(0.5); |
jordaahh | 29:f70d927c3e11 | 476 | menu(); |
jordaahh | 29:f70d927c3e11 | 477 | } |
jordaahh | 29:f70d927c3e11 | 478 | switch (t) { |
jordaahh | 29:f70d927c3e11 | 479 | case 0 : |
jordaahh | 29:f70d927c3e11 | 480 | lcd.printString("< Brightness >",0,2); |
jordaahh | 29:f70d927c3e11 | 481 | while(1) { |
jordaahh | 29:f70d927c3e11 | 482 | if(button == 1) { |
jordaahh | 29:f70d927c3e11 | 483 | brightness(); |
jordaahh | 29:f70d927c3e11 | 484 | break; |
jordaahh | 29:f70d927c3e11 | 485 | } else { |
jordaahh | 29:f70d927c3e11 | 486 | break; |
jordaahh | 29:f70d927c3e11 | 487 | } |
jordaahh | 29:f70d927c3e11 | 488 | } |
jordaahh | 29:f70d927c3e11 | 489 | break; |
jordaahh | 29:f70d927c3e11 | 490 | case 1 : |
jordaahh | 29:f70d927c3e11 | 491 | lcd.printString("< Volume >",0,2); |
jordaahh | 29:f70d927c3e11 | 492 | while(1) { |
jordaahh | 29:f70d927c3e11 | 493 | if(button == 1) { |
jordaahh | 29:f70d927c3e11 | 494 | volume(); |
jordaahh | 29:f70d927c3e11 | 495 | break; |
jordaahh | 29:f70d927c3e11 | 496 | } else { |
jordaahh | 29:f70d927c3e11 | 497 | break; |
jordaahh | 29:f70d927c3e11 | 498 | } |
jordaahh | 29:f70d927c3e11 | 499 | } |
jordaahh | 29:f70d927c3e11 | 500 | break; |
jordaahh | 29:f70d927c3e11 | 501 | case 2 : |
jordaahh | 29:f70d927c3e11 | 502 | lcd.printString("<Instructions>",0,2); |
jordaahh | 29:f70d927c3e11 | 503 | while(1) { |
jordaahh | 29:f70d927c3e11 | 504 | if(button == 1) { |
jordaahh | 29:f70d927c3e11 | 505 | instructions(); |
jordaahh | 29:f70d927c3e11 | 506 | break; |
jordaahh | 29:f70d927c3e11 | 507 | } else { |
jordaahh | 29:f70d927c3e11 | 508 | break; |
jordaahh | 29:f70d927c3e11 | 509 | } |
jordaahh | 29:f70d927c3e11 | 510 | } |
jordaahh | 29:f70d927c3e11 | 511 | break; |
jordaahh | 29:f70d927c3e11 | 512 | } |
jordaahh | 29:f70d927c3e11 | 513 | } |
jordaahh | 29:f70d927c3e11 | 514 | } |
jordaahh | 29:f70d927c3e11 | 515 | |
jordaahh | 29:f70d927c3e11 | 516 | |
jordaahh | 29:f70d927c3e11 | 517 | void brightness() |
jordaahh | 29:f70d927c3e11 | 518 | { |
jordaahh | 29:f70d927c3e11 | 519 | while(1) { |
jordaahh | 29:f70d927c3e11 | 520 | wait(0.2); |
jordaahh | 29:f70d927c3e11 | 521 | clearCells(); |
jordaahh | 29:f70d927c3e11 | 522 | if ((joystick.direction == RIGHT)||(joystick.direction == upRight)||(joystick.direction == downRight)) { |
jordaahh | 29:f70d927c3e11 | 523 | bright--; |
jordaahh | 29:f70d927c3e11 | 524 | } |
jordaahh | 29:f70d927c3e11 | 525 | if ((joystick.direction == LEFT)||(joystick.direction == upLeft)||(joystick.direction == downLeft)) { |
jordaahh | 29:f70d927c3e11 | 526 | bright++; |
jordaahh | 29:f70d927c3e11 | 527 | } |
jordaahh | 29:f70d927c3e11 | 528 | if(bright > 3) { |
jordaahh | 29:f70d927c3e11 | 529 | bright = 3; |
jordaahh | 29:f70d927c3e11 | 530 | } |
jordaahh | 29:f70d927c3e11 | 531 | if(bright < -3) { |
jordaahh | 29:f70d927c3e11 | 532 | bright = -3; |
jordaahh | 29:f70d927c3e11 | 533 | } |
jordaahh | 29:f70d927c3e11 | 534 | switch (bright) { |
jordaahh | 29:f70d927c3e11 | 535 | case 0 : |
jordaahh | 29:f70d927c3e11 | 536 | lcd.printString(" Brightness ",0,2); |
jordaahh | 29:f70d927c3e11 | 537 | lcd.printString(" ||||||",0,4); |
jordaahh | 29:f70d927c3e11 | 538 | lcd.setBrightness(0.6); |
jordaahh | 29:f70d927c3e11 | 539 | while(1) { |
jordaahh | 29:f70d927c3e11 | 540 | if(button == 1) { |
jordaahh | 29:f70d927c3e11 | 541 | BandVMenu(); |
jordaahh | 29:f70d927c3e11 | 542 | break; |
jordaahh | 29:f70d927c3e11 | 543 | } else { |
jordaahh | 29:f70d927c3e11 | 544 | break; |
jordaahh | 29:f70d927c3e11 | 545 | } |
jordaahh | 29:f70d927c3e11 | 546 | } |
jordaahh | 29:f70d927c3e11 | 547 | break; |
jordaahh | 29:f70d927c3e11 | 548 | case 1 : |
jordaahh | 29:f70d927c3e11 | 549 | lcd.printString(" Brightness ",0,2); |
jordaahh | 29:f70d927c3e11 | 550 | lcd.printString(" ||||||||",0,4); |
jordaahh | 29:f70d927c3e11 | 551 | lcd.setBrightness(0.8); |
jordaahh | 29:f70d927c3e11 | 552 | while(1) { |
jordaahh | 29:f70d927c3e11 | 553 | if(button == 1) { |
jordaahh | 29:f70d927c3e11 | 554 | BandVMenu(); |
jordaahh | 29:f70d927c3e11 | 555 | break; |
jordaahh | 29:f70d927c3e11 | 556 | } else { |
jordaahh | 29:f70d927c3e11 | 557 | break; |
jordaahh | 29:f70d927c3e11 | 558 | } |
jordaahh | 29:f70d927c3e11 | 559 | } |
jordaahh | 29:f70d927c3e11 | 560 | break; |
jordaahh | 29:f70d927c3e11 | 561 | case 2 : |
jordaahh | 29:f70d927c3e11 | 562 | lcd.printString(" Brightness ",0,2); |
jordaahh | 29:f70d927c3e11 | 563 | lcd.printString(" ||||||||||",0,4); |
jordaahh | 29:f70d927c3e11 | 564 | lcd.setBrightness(0.9); |
jordaahh | 29:f70d927c3e11 | 565 | while(1) { |
jordaahh | 29:f70d927c3e11 | 566 | if(button == 1) { |
jordaahh | 29:f70d927c3e11 | 567 | BandVMenu(); |
jordaahh | 29:f70d927c3e11 | 568 | break; |
jordaahh | 29:f70d927c3e11 | 569 | } else { |
jordaahh | 29:f70d927c3e11 | 570 | break; |
jordaahh | 29:f70d927c3e11 | 571 | } |
jordaahh | 29:f70d927c3e11 | 572 | } |
jordaahh | 29:f70d927c3e11 | 573 | break; |
jordaahh | 29:f70d927c3e11 | 574 | case 3 : |
jordaahh | 29:f70d927c3e11 | 575 | lcd.printString(" Brightness ",0,2); |
jordaahh | 29:f70d927c3e11 | 576 | lcd.printString(" ||||||||||||",0,4); |
jordaahh | 29:f70d927c3e11 | 577 | lcd.setBrightness(1); |
jordaahh | 29:f70d927c3e11 | 578 | while(1) { |
jordaahh | 29:f70d927c3e11 | 579 | if(button == 1) { |
jordaahh | 29:f70d927c3e11 | 580 | BandVMenu(); |
jordaahh | 29:f70d927c3e11 | 581 | break; |
jordaahh | 29:f70d927c3e11 | 582 | } else { |
jordaahh | 29:f70d927c3e11 | 583 | break; |
jordaahh | 29:f70d927c3e11 | 584 | } |
jordaahh | 29:f70d927c3e11 | 585 | } |
jordaahh | 29:f70d927c3e11 | 586 | break; |
jordaahh | 29:f70d927c3e11 | 587 | case -1 : |
jordaahh | 29:f70d927c3e11 | 588 | lcd.printString(" Brightness ",0,2); |
jordaahh | 29:f70d927c3e11 | 589 | lcd.printString(" ||||",0,4); |
jordaahh | 29:f70d927c3e11 | 590 | lcd.setBrightness(0.4); |
jordaahh | 29:f70d927c3e11 | 591 | while(1) { |
jordaahh | 29:f70d927c3e11 | 592 | if(button == 1) { |
jordaahh | 29:f70d927c3e11 | 593 | BandVMenu(); |
jordaahh | 29:f70d927c3e11 | 594 | break; |
jordaahh | 29:f70d927c3e11 | 595 | } else { |
jordaahh | 29:f70d927c3e11 | 596 | break; |
jordaahh | 29:f70d927c3e11 | 597 | } |
jordaahh | 29:f70d927c3e11 | 598 | } |
jordaahh | 29:f70d927c3e11 | 599 | break; |
jordaahh | 29:f70d927c3e11 | 600 | case -2 : |
jordaahh | 29:f70d927c3e11 | 601 | lcd.printString(" Brightness ",0,2); |
jordaahh | 29:f70d927c3e11 | 602 | lcd.printString(" ||",0,4); |
jordaahh | 29:f70d927c3e11 | 603 | lcd.setBrightness(0.2); |
jordaahh | 29:f70d927c3e11 | 604 | while(1) { |
jordaahh | 29:f70d927c3e11 | 605 | if(button == 1) { |
jordaahh | 29:f70d927c3e11 | 606 | BandVMenu(); |
jordaahh | 29:f70d927c3e11 | 607 | break; |
jordaahh | 29:f70d927c3e11 | 608 | } else { |
jordaahh | 29:f70d927c3e11 | 609 | break; |
jordaahh | 29:f70d927c3e11 | 610 | } |
jordaahh | 29:f70d927c3e11 | 611 | } |
jordaahh | 29:f70d927c3e11 | 612 | break; |
jordaahh | 29:f70d927c3e11 | 613 | case -3 : |
jordaahh | 29:f70d927c3e11 | 614 | lcd.printString(" Brightness ",0,2); |
jordaahh | 29:f70d927c3e11 | 615 | lcd.setBrightness(0); |
jordaahh | 29:f70d927c3e11 | 616 | while(1) { |
jordaahh | 29:f70d927c3e11 | 617 | if(button == 1) { |
jordaahh | 29:f70d927c3e11 | 618 | BandVMenu(); |
jordaahh | 29:f70d927c3e11 | 619 | break; |
jordaahh | 29:f70d927c3e11 | 620 | } else { |
jordaahh | 29:f70d927c3e11 | 621 | break; |
jordaahh | 29:f70d927c3e11 | 622 | } |
jordaahh | 29:f70d927c3e11 | 623 | } |
jordaahh | 29:f70d927c3e11 | 624 | break; |
jordaahh | 29:f70d927c3e11 | 625 | } |
jordaahh | 29:f70d927c3e11 | 626 | } |
jordaahh | 29:f70d927c3e11 | 627 | } |
jordaahh | 29:f70d927c3e11 | 628 | |
jordaahh | 29:f70d927c3e11 | 629 | |
jordaahh | 29:f70d927c3e11 | 630 | void volume() |
jordaahh | 29:f70d927c3e11 | 631 | { |
jordaahh | 29:f70d927c3e11 | 632 | while(1) { |
jordaahh | 29:f70d927c3e11 | 633 | wait(0.2); |
jordaahh | 29:f70d927c3e11 | 634 | clearCells(); |
jordaahh | 29:f70d927c3e11 | 635 | if ((joystick.direction == RIGHT)||(joystick.direction == upRight)||(joystick.direction == downRight)) { |
jordaahh | 29:f70d927c3e11 | 636 | vol--; |
jordaahh | 29:f70d927c3e11 | 637 | } |
jordaahh | 29:f70d927c3e11 | 638 | if ((joystick.direction == LEFT)||(joystick.direction == upLeft)||(joystick.direction == downLeft)) { |
jordaahh | 29:f70d927c3e11 | 639 | vol++; |
jordaahh | 29:f70d927c3e11 | 640 | } |
jordaahh | 29:f70d927c3e11 | 641 | if(vol > 3) { |
jordaahh | 29:f70d927c3e11 | 642 | vol = 3; |
jordaahh | 29:f70d927c3e11 | 643 | } |
jordaahh | 29:f70d927c3e11 | 644 | if(vol < -3) { |
jordaahh | 29:f70d927c3e11 | 645 | vol = -3; |
jordaahh | 29:f70d927c3e11 | 646 | } |
jordaahh | 29:f70d927c3e11 | 647 | switch (vol) { |
jordaahh | 29:f70d927c3e11 | 648 | case 0 : |
jordaahh | 29:f70d927c3e11 | 649 | lcd.printString(" Volume ",0,2); |
jordaahh | 29:f70d927c3e11 | 650 | lcd.printString(" ||||||",0,4); |
jordaahh | 29:f70d927c3e11 | 651 | while(1) { |
jordaahh | 29:f70d927c3e11 | 652 | if(button == 1) { |
jordaahh | 29:f70d927c3e11 | 653 | BandVMenu(); |
jordaahh | 29:f70d927c3e11 | 654 | break; |
jordaahh | 29:f70d927c3e11 | 655 | } else { |
jordaahh | 29:f70d927c3e11 | 656 | break; |
jordaahh | 29:f70d927c3e11 | 657 | } |
jordaahh | 29:f70d927c3e11 | 658 | } |
jordaahh | 29:f70d927c3e11 | 659 | break; |
jordaahh | 29:f70d927c3e11 | 660 | case 1 : |
jordaahh | 29:f70d927c3e11 | 661 | lcd.printString(" Volume ",0,2); |
jordaahh | 29:f70d927c3e11 | 662 | lcd.printString(" ||||||||",0,4); |
jordaahh | 29:f70d927c3e11 | 663 | while(1) { |
jordaahh | 29:f70d927c3e11 | 664 | if(button == 1) { |
jordaahh | 29:f70d927c3e11 | 665 | BandVMenu(); |
jordaahh | 29:f70d927c3e11 | 666 | break; |
jordaahh | 29:f70d927c3e11 | 667 | } else { |
jordaahh | 29:f70d927c3e11 | 668 | break; |
jordaahh | 29:f70d927c3e11 | 669 | } |
jordaahh | 29:f70d927c3e11 | 670 | } |
jordaahh | 29:f70d927c3e11 | 671 | break; |
jordaahh | 29:f70d927c3e11 | 672 | case 2 : |
jordaahh | 29:f70d927c3e11 | 673 | lcd.printString(" Volume ",0,2); |
jordaahh | 29:f70d927c3e11 | 674 | lcd.printString(" ||||||||||",0,4); |
jordaahh | 29:f70d927c3e11 | 675 | while(1) { |
jordaahh | 29:f70d927c3e11 | 676 | if(button == 1) { |
jordaahh | 29:f70d927c3e11 | 677 | BandVMenu(); |
jordaahh | 29:f70d927c3e11 | 678 | break; |
jordaahh | 29:f70d927c3e11 | 679 | } else { |
jordaahh | 29:f70d927c3e11 | 680 | break; |
jordaahh | 29:f70d927c3e11 | 681 | } |
jordaahh | 29:f70d927c3e11 | 682 | } |
jordaahh | 29:f70d927c3e11 | 683 | break; |
jordaahh | 29:f70d927c3e11 | 684 | case 3 : |
jordaahh | 29:f70d927c3e11 | 685 | lcd.printString(" Volume ",0,2); |
jordaahh | 29:f70d927c3e11 | 686 | lcd.printString(" ||||||||||||",0,4); |
jordaahh | 29:f70d927c3e11 | 687 | while(1) { |
jordaahh | 29:f70d927c3e11 | 688 | if(button == 1) { |
jordaahh | 29:f70d927c3e11 | 689 | BandVMenu(); |
jordaahh | 29:f70d927c3e11 | 690 | break; |
jordaahh | 29:f70d927c3e11 | 691 | } else { |
jordaahh | 29:f70d927c3e11 | 692 | break; |
jordaahh | 29:f70d927c3e11 | 693 | } |
jordaahh | 29:f70d927c3e11 | 694 | } |
jordaahh | 29:f70d927c3e11 | 695 | break; |
jordaahh | 29:f70d927c3e11 | 696 | case -1 : |
jordaahh | 29:f70d927c3e11 | 697 | lcd.printString(" Volume ",0,2); |
jordaahh | 29:f70d927c3e11 | 698 | lcd.printString(" ||||",0,4); |
jordaahh | 29:f70d927c3e11 | 699 | while(1) { |
jordaahh | 29:f70d927c3e11 | 700 | if(button == 1) { |
jordaahh | 29:f70d927c3e11 | 701 | BandVMenu(); |
jordaahh | 29:f70d927c3e11 | 702 | break; |
jordaahh | 29:f70d927c3e11 | 703 | } else { |
jordaahh | 29:f70d927c3e11 | 704 | break; |
jordaahh | 29:f70d927c3e11 | 705 | } |
jordaahh | 29:f70d927c3e11 | 706 | } |
jordaahh | 29:f70d927c3e11 | 707 | break; |
jordaahh | 29:f70d927c3e11 | 708 | case -2 : |
jordaahh | 29:f70d927c3e11 | 709 | lcd.printString(" Volume ",0,2); |
jordaahh | 29:f70d927c3e11 | 710 | lcd.printString(" ||",0,4); |
jordaahh | 29:f70d927c3e11 | 711 | while(1) { |
jordaahh | 29:f70d927c3e11 | 712 | if(button == 1) { |
jordaahh | 29:f70d927c3e11 | 713 | BandVMenu(); |
jordaahh | 29:f70d927c3e11 | 714 | break; |
jordaahh | 29:f70d927c3e11 | 715 | } else { |
jordaahh | 29:f70d927c3e11 | 716 | break; |
jordaahh | 29:f70d927c3e11 | 717 | } |
jordaahh | 29:f70d927c3e11 | 718 | } |
jordaahh | 29:f70d927c3e11 | 719 | break; |
jordaahh | 29:f70d927c3e11 | 720 | case -3 : |
jordaahh | 29:f70d927c3e11 | 721 | lcd.printString(" Volume ",0,2); |
jordaahh | 29:f70d927c3e11 | 722 | lcd.printString(" MUTE",0,4); |
jordaahh | 29:f70d927c3e11 | 723 | soundFlag = 0; |
jordaahh | 29:f70d927c3e11 | 724 | while(1) { |
jordaahh | 29:f70d927c3e11 | 725 | if(button == 1) { |
jordaahh | 29:f70d927c3e11 | 726 | BandVMenu(); |
jordaahh | 29:f70d927c3e11 | 727 | break; |
jordaahh | 29:f70d927c3e11 | 728 | } else { |
jordaahh | 29:f70d927c3e11 | 729 | break; |
jordaahh | 29:f70d927c3e11 | 730 | } |
jordaahh | 29:f70d927c3e11 | 731 | } |
jordaahh | 29:f70d927c3e11 | 732 | break; |
jordaahh | 29:f70d927c3e11 | 733 | } |
jordaahh | 29:f70d927c3e11 | 734 | } |
jordaahh | 29:f70d927c3e11 | 735 | } |
jordaahh | 29:f70d927c3e11 | 736 | |
jordaahh | 29:f70d927c3e11 | 737 | |
jordaahh | 29:f70d927c3e11 | 738 | void writeDataToFile() |
jordaahh | 29:f70d927c3e11 | 739 | { |
jordaahh | 29:f70d927c3e11 | 740 | time_t seconds = time(NULL); // get current time |
jordaahh | 29:f70d927c3e11 | 741 | char buffer2[14]; // buffer used to store time string |
jordaahh | 29:f70d927c3e11 | 742 | strftime(buffer2, 14, " %d/%m/%y", localtime(&seconds)); // displays unix time in day/ month/ year format and sends it to buffer |
jordaahh | 29:f70d927c3e11 | 743 | |
jordaahh | 29:f70d927c3e11 | 744 | FILE *fp = fopen("/local/score.txt", "w"); // open file called 'score.txt' |
jordaahh | 29:f70d927c3e11 | 745 | /* if the file doesn't exist it is created, if it exists, data is updated */ |
jordaahh | 29:f70d927c3e11 | 746 | fprintf(fp,"%i%s",score,buffer2); // print integer for score and date to file |
jordaahh | 29:f70d927c3e11 | 747 | fclose(fp); // close file |
jordaahh | 29:f70d927c3e11 | 748 | } |
jordaahh | 29:f70d927c3e11 | 749 | |
jordaahh | 29:f70d927c3e11 | 750 | |
jordaahh | 29:f70d927c3e11 | 751 | void readDataFromFile() |
jordaahh | 29:f70d927c3e11 | 752 | { |
jordaahh | 29:f70d927c3e11 | 753 | int score1; // states the score to be read from the file is an integer value |
jordaahh | 29:f70d927c3e11 | 754 | char buffer2recieved[14]; // buffer to recieve the string of data read from the text file |
jordaahh | 29:f70d927c3e11 | 755 | |
jordaahh | 29:f70d927c3e11 | 756 | FILE *fp2 = fopen("/local/score.txt", "r"); // open 'score.txt' |
jordaahh | 29:f70d927c3e11 | 757 | fscanf (fp2,"%i%s",&score1,buffer2recieved); // scans text file for an integer followed by a string |
jordaahh | 29:f70d927c3e11 | 758 | fclose(fp2); // close file |
jordaahh | 29:f70d927c3e11 | 759 | |
jordaahh | 29:f70d927c3e11 | 760 | char Points[14]; // buffer to store score value |
jordaahh | 29:f70d927c3e11 | 761 | sprintf(Points,"%i",score1); // send score to buffer (Points) |
jordaahh | 29:f70d927c3e11 | 762 | lcd.printString(Points,39,2); // print score on LCD |
jordaahh | 29:f70d927c3e11 | 763 | lcd.printString(buffer2recieved,18,4); // print date on LCD |
jordaahh | 29:f70d927c3e11 | 764 | |
jordaahh | 29:f70d927c3e11 | 765 | } |
jordaahh | 29:f70d927c3e11 | 766 | |
jordaahh | 29:f70d927c3e11 | 767 | |
jordaahh | 29:f70d927c3e11 | 768 | |
jordaahh | 29:f70d927c3e11 | 769 | void tone() |
jordaahh | 29:f70d927c3e11 | 770 | { |
jordaahh | 29:f70d927c3e11 | 771 | |
jordaahh | 29:f70d927c3e11 | 772 | if(FLAG3==1) { |
jordaahh | 29:f70d927c3e11 | 773 | FLAG3 = 0; |
jordaahh | 29:f70d927c3e11 | 774 | buz.period(1/(frequency[u])); // set PWM period |
jordaahh | 29:f70d927c3e11 | 775 | buz=0.2; |
jordaahh | 29:f70d927c3e11 | 776 | u++; |
jordaahh | 29:f70d927c3e11 | 777 | } |
jordaahh | 29:f70d927c3e11 | 778 | if( u > 30) { |
jordaahh | 29:f70d927c3e11 | 779 | u = 0; |
jordaahh | 29:f70d927c3e11 | 780 | } |
jordaahh | 29:f70d927c3e11 | 781 | |
jordaahh | 29:f70d927c3e11 | 782 | } |
jordaahh | 29:f70d927c3e11 | 783 | |
jordaahh | 29:f70d927c3e11 | 784 | |
jordaahh | 29:f70d927c3e11 | 785 | void deadTone() |
jordaahh | 29:f70d927c3e11 | 786 | { |
jordaahh | 29:f70d927c3e11 | 787 | int l = 0; |
jordaahh | 29:f70d927c3e11 | 788 | while(1) { |
jordaahh | 29:f70d927c3e11 | 789 | if(FLAG3==1) { |
jordaahh | 29:f70d927c3e11 | 790 | FLAG3 = 0; |
jordaahh | 29:f70d927c3e11 | 791 | buz.period(1/(frequency2[l])); // set PWM period |
jordaahh | 29:f70d927c3e11 | 792 | buz=0.2; |
jordaahh | 29:f70d927c3e11 | 793 | l++; |
jordaahh | 29:f70d927c3e11 | 794 | } |
jordaahh | 29:f70d927c3e11 | 795 | if( l > 6) { |
jordaahh | 29:f70d927c3e11 | 796 | break; |
jordaahh | 29:f70d927c3e11 | 797 | } |
jordaahh | 29:f70d927c3e11 | 798 | } |
jordaahh | 29:f70d927c3e11 | 799 | } |
jordaahh | 29:f70d927c3e11 | 800 | |
jordaahh | 29:f70d927c3e11 | 801 | |
jordaahh | 29:f70d927c3e11 | 802 | void scoreCheck() |
jordaahh | 29:f70d927c3e11 | 803 | { |
jordaahh | 29:f70d927c3e11 | 804 | int score1; |
jordaahh | 29:f70d927c3e11 | 805 | |
jordaahh | 29:f70d927c3e11 | 806 | FILE *fp2 = fopen("/local/score.txt", "r"); |
jordaahh | 29:f70d927c3e11 | 807 | fscanf (fp2,"%i",&score1); |
jordaahh | 29:f70d927c3e11 | 808 | fclose(fp2); |
jordaahh | 29:f70d927c3e11 | 809 | |
jordaahh | 29:f70d927c3e11 | 810 | if(score1 < score) { |
jordaahh | 29:f70d927c3e11 | 811 | writeDataToFile(); // if the score is bigger then the data is written to the file and overwrites the previous data |
jordaahh | 29:f70d927c3e11 | 812 | } |
jordaahh | 29:f70d927c3e11 | 813 | } |
jordaahh | 29:f70d927c3e11 | 814 | |
jordaahh | 29:f70d927c3e11 | 815 | |
jordaahh | 29:f70d927c3e11 | 816 | void flagForFlash() |
jordaahh | 29:f70d927c3e11 | 817 | { |
jordaahh | 29:f70d927c3e11 | 818 | flashFlag = 1; |
jordaahh | 29:f70d927c3e11 | 819 | } |
jordaahh | 29:f70d927c3e11 | 820 | |
jordaahh | 29:f70d927c3e11 | 821 | |
jordaahh | 29:f70d927c3e11 | 822 | void GameOverFlash() |
jordaahh | 29:f70d927c3e11 | 823 | { |
jordaahh | 29:f70d927c3e11 | 824 | int flash = 0; |
jordaahh | 29:f70d927c3e11 | 825 | while(1) { |
jordaahh | 29:f70d927c3e11 | 826 | if (flashFlag==1) { // flag equals one every second |
jordaahh | 29:f70d927c3e11 | 827 | flashFlag = 0; // flag is reset |
jordaahh | 29:f70d927c3e11 | 828 | lcd.printString("Game Over!",12,2); // print phrase |
jordaahh | 29:f70d927c3e11 | 829 | flash++; // adds one to counter |
jordaahh | 29:f70d927c3e11 | 830 | } |
jordaahh | 29:f70d927c3e11 | 831 | if (flash > 3) { // moves onto next function when counter gets to 3 |
jordaahh | 29:f70d927c3e11 | 832 | break; |
jordaahh | 29:f70d927c3e11 | 833 | } |
jordaahh | 29:f70d927c3e11 | 834 | } |
jordaahh | 29:f70d927c3e11 | 835 | } |
jordaahh | 29:f70d927c3e11 | 836 | |
jordaahh | 29:f70d927c3e11 | 837 | |
jordaahh | 29:f70d927c3e11 | 838 | void powerSave() |
jordaahh | 29:f70d927c3e11 | 839 | { |
jordaahh | 29:f70d927c3e11 | 840 | if(joystick.direction == CENTRE) { |
jordaahh | 29:f70d927c3e11 | 841 | if (flashFlag==1) { |
jordaahh | 29:f70d927c3e11 | 842 | flashFlag = 0; |
jordaahh | 29:f70d927c3e11 | 843 | sleepCounter++; |
jordaahh | 29:f70d927c3e11 | 844 | } |
jordaahh | 29:f70d927c3e11 | 845 | if(sleepCounter > 20) { |
jordaahh | 29:f70d927c3e11 | 846 | Sleep(); // put mbed into sleep mode |
jordaahh | 29:f70d927c3e11 | 847 | lcd.turnOff(); // turn LCD off |
jordaahh | 29:f70d927c3e11 | 848 | while(1) { |
jordaahh | 29:f70d927c3e11 | 849 | if (button ==1) { |
jordaahh | 29:f70d927c3e11 | 850 | lcd.init(); // turn LCD back on |
jordaahh | 29:f70d927c3e11 | 851 | sleepCounter = 0; |
jordaahh | 29:f70d927c3e11 | 852 | menu(); |
jordaahh | 29:f70d927c3e11 | 853 | break; |
jordaahh | 29:f70d927c3e11 | 854 | } |
jordaahh | 29:f70d927c3e11 | 855 | } |
jordaahh | 29:f70d927c3e11 | 856 | } |
jordaahh | 29:f70d927c3e11 | 857 | |
jordaahh | 29:f70d927c3e11 | 858 | } else { |
jordaahh | 29:f70d927c3e11 | 859 | sleepCounter = 0; |
jordaahh | 29:f70d927c3e11 | 860 | } |
jordaahh | 29:f70d927c3e11 | 861 | } |
jordaahh | 29:f70d927c3e11 | 862 | |
jordaahh | 29:f70d927c3e11 | 863 | |
jordaahh | 29:f70d927c3e11 | 864 | void boundries() |
jordaahh | 29:f70d927c3e11 | 865 | { |
jordaahh | 29:f70d927c3e11 | 866 | if( j > 45) { |
jordaahh | 29:f70d927c3e11 | 867 | j = 45; |
jordaahh | 29:f70d927c3e11 | 868 | } |
jordaahh | 29:f70d927c3e11 | 869 | if( i > 81) { |
jordaahh | 29:f70d927c3e11 | 870 | i = 81; |
jordaahh | 29:f70d927c3e11 | 871 | } |
jordaahh | 29:f70d927c3e11 | 872 | if( j < 0) { |
jordaahh | 29:f70d927c3e11 | 873 | j = 0; |
jordaahh | 29:f70d927c3e11 | 874 | } |
jordaahh | 29:f70d927c3e11 | 875 | if( i < 0) { |
jordaahh | 29:f70d927c3e11 | 876 | i = 0; |
jordaahh | 29:f70d927c3e11 | 877 | } |
jordaahh | 29:f70d927c3e11 | 878 | } |
jordaahh | 29:f70d927c3e11 | 879 | |
jordaahh | 29:f70d927c3e11 | 880 | |
jordaahh | 29:f70d927c3e11 | 881 | void playerMovement() |
jordaahh | 29:f70d927c3e11 | 882 | { |
jordaahh | 29:f70d927c3e11 | 883 | |
jordaahh | 29:f70d927c3e11 | 884 | if (printFlag) { // if flag set, clear flag and implicate joystick functions |
jordaahh | 29:f70d927c3e11 | 885 | printFlag = 0; |
jordaahh | 29:f70d927c3e11 | 886 | /* check joystick direction */ |
jordaahh | 29:f70d927c3e11 | 887 | if (joystick.direction == UP) { |
jordaahh | 29:f70d927c3e11 | 888 | j--; |
jordaahh | 29:f70d927c3e11 | 889 | } |
jordaahh | 29:f70d927c3e11 | 890 | if (joystick.direction == DOWN) { |
jordaahh | 29:f70d927c3e11 | 891 | j++; |
jordaahh | 29:f70d927c3e11 | 892 | } |
jordaahh | 29:f70d927c3e11 | 893 | if (joystick.direction == LEFT) { |
jordaahh | 29:f70d927c3e11 | 894 | i++; |
jordaahh | 29:f70d927c3e11 | 895 | } |
jordaahh | 29:f70d927c3e11 | 896 | if (joystick.direction == RIGHT) { |
jordaahh | 29:f70d927c3e11 | 897 | i--; |
jordaahh | 29:f70d927c3e11 | 898 | } |
jordaahh | 29:f70d927c3e11 | 899 | if (joystick.direction == upRight) { |
jordaahh | 29:f70d927c3e11 | 900 | j--; |
jordaahh | 29:f70d927c3e11 | 901 | i--; |
jordaahh | 29:f70d927c3e11 | 902 | } |
jordaahh | 29:f70d927c3e11 | 903 | if (joystick.direction == downRight) { |
jordaahh | 29:f70d927c3e11 | 904 | j++; |
jordaahh | 29:f70d927c3e11 | 905 | i--; |
jordaahh | 29:f70d927c3e11 | 906 | } |
jordaahh | 29:f70d927c3e11 | 907 | if (joystick.direction == upLeft) { |
jordaahh | 29:f70d927c3e11 | 908 | j--; |
jordaahh | 29:f70d927c3e11 | 909 | i++; |
jordaahh | 29:f70d927c3e11 | 910 | } |
jordaahh | 29:f70d927c3e11 | 911 | if (joystick.direction == downLeft) { |
jordaahh | 29:f70d927c3e11 | 912 | j++; |
jordaahh | 29:f70d927c3e11 | 913 | i++; |
jordaahh | 29:f70d927c3e11 | 914 | } |
jordaahh | 29:f70d927c3e11 | 915 | if (joystick.direction == CENTRE) { |
jordaahh | 29:f70d927c3e11 | 916 | i=i; |
jordaahh | 29:f70d927c3e11 | 917 | j=j; |
jordaahh | 29:f70d927c3e11 | 918 | } |
jordaahh | 29:f70d927c3e11 | 919 | } |
jordaahh | 29:f70d927c3e11 | 920 | } |
jordaahh | 29:f70d927c3e11 | 921 | |
jordaahh | 29:f70d927c3e11 | 922 | |
jordaahh | 29:f70d927c3e11 | 923 | void fallingWalls() |
jordaahh | 29:f70d927c3e11 | 924 | { |
jordaahh | 29:f70d927c3e11 | 925 | lcd.drawLine(x,y,z,y,1); // draws a line at the top of the screen to symbolise a wall |
jordaahh | 29:f70d927c3e11 | 926 | lcd.drawLine(z+10,y,83,y,1); // there is a gap in the wall which is 10 pixels wide and the objective of the game is to pass through it |
jordaahh | 29:f70d927c3e11 | 927 | if(FLAG==1) { // the flag changes every 0.2 seconds |
jordaahh | 29:f70d927c3e11 | 928 | FLAG=0; |
jordaahh | 29:f70d927c3e11 | 929 | y++; // everytime the flag changes to one it is reset and the wall moves down by one pixel |
jordaahh | 29:f70d927c3e11 | 930 | } |
jordaahh | 29:f70d927c3e11 | 931 | if(y > 47) { // when the wall reaches the bottom a new wall is generated at the top |
jordaahh | 29:f70d927c3e11 | 932 | y = 0; |
jordaahh | 29:f70d927c3e11 | 933 | z = rand()%74; // the gap in the is moved to a random postion in the new wall |
jordaahh | 29:f70d927c3e11 | 934 | score++; // score increases by one everytime a wall falling from the top reaches the bottom of the screen |
jordaahh | 29:f70d927c3e11 | 935 | } |
jordaahh | 29:f70d927c3e11 | 936 | /* there are 6 levels of difficulty */ |
jordaahh | 29:f70d927c3e11 | 937 | if(( score > 1)&&(score < 5)) { |
jordaahh | 29:f70d927c3e11 | 938 | lcd.drawLine(a,b,d,b,1); |
jordaahh | 29:f70d927c3e11 | 939 | lcd.drawLine(d+10,b,83,b,1); |
jordaahh | 29:f70d927c3e11 | 940 | if(FLAG3==1) { |
jordaahh | 29:f70d927c3e11 | 941 | FLAG3=0; |
jordaahh | 29:f70d927c3e11 | 942 | b--; |
jordaahh | 29:f70d927c3e11 | 943 | } |
jordaahh | 29:f70d927c3e11 | 944 | } |
jordaahh | 29:f70d927c3e11 | 945 | if(b < 0) { |
jordaahh | 29:f70d927c3e11 | 946 | b = 47; |
jordaahh | 29:f70d927c3e11 | 947 | d = rand()%74; |
jordaahh | 29:f70d927c3e11 | 948 | } |
jordaahh | 29:f70d927c3e11 | 949 | if(( score > 5)&&(score < 9)) { |
jordaahh | 29:f70d927c3e11 | 950 | lcd.drawLine(f,g,f,h,1); |
jordaahh | 29:f70d927c3e11 | 951 | lcd.drawLine(f,h+10,f,47,1); |
jordaahh | 29:f70d927c3e11 | 952 | if(FLAG2==1) { |
jordaahh | 29:f70d927c3e11 | 953 | FLAG2=0; |
jordaahh | 29:f70d927c3e11 | 954 | f++; |
jordaahh | 29:f70d927c3e11 | 955 | } |
jordaahh | 29:f70d927c3e11 | 956 | } |
jordaahh | 29:f70d927c3e11 | 957 | if( f > 83) { |
jordaahh | 29:f70d927c3e11 | 958 | f = 0; |
jordaahh | 29:f70d927c3e11 | 959 | h = rand()%38; |
jordaahh | 29:f70d927c3e11 | 960 | } |
jordaahh | 29:f70d927c3e11 | 961 | if(( score > 10)&&(score < 15)) { |
jordaahh | 29:f70d927c3e11 | 962 | lcd.drawLine(q,w,q,e,1); |
jordaahh | 29:f70d927c3e11 | 963 | lcd.drawLine(q,e+10,q,47,1); |
jordaahh | 29:f70d927c3e11 | 964 | if(FLAG3==1) { |
jordaahh | 29:f70d927c3e11 | 965 | FLAG3=0; |
jordaahh | 29:f70d927c3e11 | 966 | q--; |
jordaahh | 29:f70d927c3e11 | 967 | } |
jordaahh | 29:f70d927c3e11 | 968 | } |
jordaahh | 29:f70d927c3e11 | 969 | if(q < 0) { |
jordaahh | 29:f70d927c3e11 | 970 | q = 83; |
jordaahh | 29:f70d927c3e11 | 971 | e = rand()%38; |
jordaahh | 29:f70d927c3e11 | 972 | } |
jordaahh | 29:f70d927c3e11 | 973 | if( score > 15) { |
jordaahh | 29:f70d927c3e11 | 974 | lcd.drawLine(q,w,q,e,1); |
jordaahh | 29:f70d927c3e11 | 975 | lcd.drawLine(q,e+10,q,47,1); |
jordaahh | 29:f70d927c3e11 | 976 | if(FLAG3==1) { |
jordaahh | 29:f70d927c3e11 | 977 | FLAG3=0; |
jordaahh | 29:f70d927c3e11 | 978 | q--; |
jordaahh | 29:f70d927c3e11 | 979 | } |
jordaahh | 29:f70d927c3e11 | 980 | } |
jordaahh | 29:f70d927c3e11 | 981 | if( score > 20) { |
jordaahh | 29:f70d927c3e11 | 982 | lcd.drawLine(a,b,d,b,1); |
jordaahh | 29:f70d927c3e11 | 983 | lcd.drawLine(d+10,b,83,b,1); |
jordaahh | 29:f70d927c3e11 | 984 | if(FLAG2==1) { |
jordaahh | 29:f70d927c3e11 | 985 | FLAG2=0; |
jordaahh | 29:f70d927c3e11 | 986 | b--; |
jordaahh | 29:f70d927c3e11 | 987 | } |
jordaahh | 29:f70d927c3e11 | 988 | } |
jordaahh | 29:f70d927c3e11 | 989 | } |
jordaahh | 29:f70d927c3e11 | 990 | |
jordaahh | 29:f70d927c3e11 | 991 | void instructions() |
jordaahh | 29:f70d927c3e11 | 992 | { |
jordaahh | 29:f70d927c3e11 | 993 | while(1) |
jordaahh | 29:f70d927c3e11 | 994 | { |
jordaahh | 29:f70d927c3e11 | 995 | lcd.printString("Welcome :-)",9,0); |
jordaahh | 29:f70d927c3e11 | 996 | lcd.printString("Select using",6,1); |
jordaahh | 29:f70d927c3e11 | 997 | lcd.printString("joystickButton",0,2); |
jordaahh | 29:f70d927c3e11 | 998 | lcd.printString("Press >",27,4); |
jordaahh | 29:f70d927c3e11 | 999 | wait(0.5); |
jordaahh | 29:f70d927c3e11 | 1000 | if(button) { // press joystick button to continue |
jordaahh | 29:f70d927c3e11 | 1001 | clearCells(); |
jordaahh | 29:f70d927c3e11 | 1002 | while(1) |
jordaahh | 29:f70d927c3e11 | 1003 | { |
jordaahh | 29:f70d927c3e11 | 1004 | lcd.printString("Return to menu",0,0); |
jordaahh | 29:f70d927c3e11 | 1005 | lcd.printString("by moving the",3,1); |
jordaahh | 29:f70d927c3e11 | 1006 | lcd.printString("JS downward",9,2); |
jordaahh | 29:f70d927c3e11 | 1007 | if(joystick.direction == DOWN) { // direct joystick down to continue |
jordaahh | 29:f70d927c3e11 | 1008 | menu(); |
jordaahh | 29:f70d927c3e11 | 1009 | break; |
jordaahh | 29:f70d927c3e11 | 1010 | } |
jordaahh | 29:f70d927c3e11 | 1011 | } |
jordaahh | 29:f70d927c3e11 | 1012 | } |
jordaahh | 29:f70d927c3e11 | 1013 | } |
jordaahh | 29:f70d927c3e11 | 1014 | } |