Dependencies:   N5110 mbed

Committer:
jordaahh
Date:
Mon Apr 27 14:51:41 2015 +0000
Revision:
11:e5481bda1d6a
Parent:
10:ffac6dc620ff
Child:
12:5ab932192a97
All levels created. Need to save highscores, play background music, change brightness and volume.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jordaahh 0:a28ad0db4228 1 /* Joystick
jordaahh 10:ffac6dc620ff 2
jordaahh 0:a28ad0db4228 3 Example code of how to read a joystick
jordaahh 10:ffac6dc620ff 4
jordaahh 0:a28ad0db4228 5 https://www.sparkfun.com/products/9032
jordaahh 10:ffac6dc620ff 6
jordaahh 0:a28ad0db4228 7 Craig A. Evans
jordaahh 0:a28ad0db4228 8 7 March 2015
jordaahh 0:a28ad0db4228 9 */
jordaahh 10:ffac6dc620ff 10
jordaahh 0:a28ad0db4228 11 #include "mbed.h"
jordaahh 1:3b741adc82ea 12 #include "N5110.h"
jordaahh 1:3b741adc82ea 13
jordaahh 0:a28ad0db4228 14 // change this to alter tolerance of joystick direction
jordaahh 5:200fa178cb3a 15 #define DIRECTION_TOLERANCE 0.1
jordaahh 10:ffac6dc620ff 16
jordaahh 0:a28ad0db4228 17 // connections for joystick
jordaahh 11:e5481bda1d6a 18 DigitalIn button(p17);
jordaahh 11:e5481bda1d6a 19 AnalogIn xPot(p15);
jordaahh 11:e5481bda1d6a 20 AnalogIn yPot(p16);
jordaahh 1:3b741adc82ea 21
jordaahh 1:3b741adc82ea 22 // LCD connections
jordaahh 1:3b741adc82ea 23 //vcc, sce, rst, dc, mosi, clk, led
jordaahh 10:ffac6dc620ff 24 N5110 lcd(p7,p8,p9,p10,p11,p13,p26);
jordaahh 1:3b741adc82ea 25
jordaahh 2:98a51d3c2e44 26 // LCD dimentions
jordaahh 2:98a51d3c2e44 27 int nx= 84; //screen is 84 pixels across
jordaahh 2:98a51d3c2e44 28 int ny= 48; // by 48 pixels downwards
jordaahh 10:ffac6dc620ff 29
jordaahh 10:ffac6dc620ff 30 int x = 0; // wall starts from the coordinates (0,0)
jordaahh 10:ffac6dc620ff 31 int y = 0;
jordaahh 10:ffac6dc620ff 32 int z = 30;
jordaahh 10:ffac6dc620ff 33 int i=24; // initial coordinates for player object
jordaahh 5:200fa178cb3a 34 int j=42;
jordaahh 2:98a51d3c2e44 35
jordaahh 1:3b741adc82ea 36 // Output to screen LED's (backlights)
jordaahh 10:ffac6dc620ff 37 PwmOut PWM(p26);
jordaahh 1:3b741adc82ea 38
jordaahh 0:a28ad0db4228 39 // timer to regularly read the joystick
jordaahh 0:a28ad0db4228 40 Ticker pollJoystick;
jordaahh 0:a28ad0db4228 41 // Serial for debug
jordaahh 0:a28ad0db4228 42 Serial serial(USBTX,USBRX);
jordaahh 10:ffac6dc620ff 43
jordaahh 0:a28ad0db4228 44 // create enumerated type (0,1,2,3 etc. for direction)
jordaahh 0:a28ad0db4228 45 // could be extended for diagonals etc.
jordaahh 0:a28ad0db4228 46 enum DirectionName {
jordaahh 0:a28ad0db4228 47 UP,
jordaahh 0:a28ad0db4228 48 DOWN,
jordaahh 0:a28ad0db4228 49 LEFT,
jordaahh 6:c257b2060803 50 upLeft,
jordaahh 6:c257b2060803 51 downLeft,
jordaahh 0:a28ad0db4228 52 RIGHT,
jordaahh 5:200fa178cb3a 53 upRight,
jordaahh 5:200fa178cb3a 54 downRight,
jordaahh 0:a28ad0db4228 55 CENTRE,
jordaahh 0:a28ad0db4228 56 UNKNOWN
jordaahh 0:a28ad0db4228 57 };
jordaahh 10:ffac6dc620ff 58
jordaahh 0:a28ad0db4228 59 // struct for Joystick
jordaahh 0:a28ad0db4228 60 typedef struct JoyStick Joystick;
jordaahh 0:a28ad0db4228 61 struct JoyStick {
jordaahh 0:a28ad0db4228 62 float x; // current x value
jordaahh 0:a28ad0db4228 63 float x0; // 'centred' x value
jordaahh 0:a28ad0db4228 64 float y; // current y value
jordaahh 0:a28ad0db4228 65 float y0; // 'centred' y value
jordaahh 0:a28ad0db4228 66 int button; // button state (assume pull-down used, so 1 = pressed, 0 = unpressed)
jordaahh 0:a28ad0db4228 67 DirectionName direction; // current direction
jordaahh 0:a28ad0db4228 68 };
jordaahh 0:a28ad0db4228 69 // create struct variable
jordaahh 0:a28ad0db4228 70 Joystick joystick;
jordaahh 10:ffac6dc620ff 71
jordaahh 0:a28ad0db4228 72 int printFlag = 0;
jordaahh 8:db2994eef1ab 73
jordaahh 8:db2994eef1ab 74 // timer function for moving walls
jordaahh 8:db2994eef1ab 75 Ticker wallMovement;
jordaahh 11:e5481bda1d6a 76 Ticker wallMovement2;
jordaahh 11:e5481bda1d6a 77 Ticker wallMovement3;
jordaahh 8:db2994eef1ab 78
jordaahh 8:db2994eef1ab 79
jordaahh 8:db2994eef1ab 80 int FLAG = 0; // initial value for flag that is used for wall movement
jordaahh 11:e5481bda1d6a 81 int FLAG2 = 0; // initial value for flag that is used for wall movement
jordaahh 11:e5481bda1d6a 82 int FLAG3 = 0; // initial value for flag that is used for wall movement
jordaahh 10:ffac6dc620ff 83
jordaahh 10:ffac6dc620ff 84 // timer function for menu scroll
jordaahh 10:ffac6dc620ff 85 Ticker menuMovement;
jordaahh 9:7c687ed420de 86
jordaahh 9:7c687ed420de 87 int menuFlag = 0; //initial value for flag that is used for menu scrolling
jordaahh 9:7c687ed420de 88
jordaahh 10:ffac6dc620ff 89 int c = 0; // initial value for position of option in menu
jordaahh 9:7c687ed420de 90
jordaahh 11:e5481bda1d6a 91 // functions for TimeAndDate
jordaahh 11:e5481bda1d6a 92 void serialISR(); // ISR that is called when serial data is received
jordaahh 11:e5481bda1d6a 93 void setTime(); // function to set the UNIX time
jordaahh 11:e5481bda1d6a 94 int setTimeFlag = 0; // flag for ISR
jordaahh 11:e5481bda1d6a 95 char rxString[16]; // buffer to store received string
jordaahh 11:e5481bda1d6a 96
jordaahh 0:a28ad0db4228 97 // function prototypes
jordaahh 0:a28ad0db4228 98 void calibrateJoystick();
jordaahh 0:a28ad0db4228 99 void updateJoystick();
jordaahh 3:11cbc2945fd7 100 void clearCells();
jordaahh 10:ffac6dc620ff 101 void fallingWall();
jordaahh 8:db2994eef1ab 102 void flagForWall();
jordaahh 11:e5481bda1d6a 103 void flagForWall2();
jordaahh 11:e5481bda1d6a 104 void flagForWall3();
jordaahh 10:ffac6dc620ff 105 void menu();
jordaahh 10:ffac6dc620ff 106 void playGame();
jordaahh 11:e5481bda1d6a 107 void TimeAndDate();
jordaahh 10:ffac6dc620ff 108
jordaahh 10:ffac6dc620ff 109 int main()
jordaahh 0:a28ad0db4228 110 {
jordaahh 1:3b741adc82ea 111 lcd.init();
jordaahh 0:a28ad0db4228 112 calibrateJoystick(); // get centred values of joystick
jordaahh 11:e5481bda1d6a 113 pollJoystick.attach(&updateJoystick,1.0/15.0); // read joystick 10 times per second
jordaahh 11:e5481bda1d6a 114 wallMovement.attach(&flagForWall,0.2); // call function flagForWall to make flag=1, every 0.1 seconds
jordaahh 11:e5481bda1d6a 115 wallMovement2.attach(&flagForWall2,0.2); // call function flagForWall2 to make flag=1, every 0.1 seconds
jordaahh 11:e5481bda1d6a 116 wallMovement3.attach(&flagForWall3,0.2); // call function flagForWall3 to make flag=1, every 0.1 seconds
jordaahh 10:ffac6dc620ff 117 menu();
jordaahh 7:b27a91c673dc 118
jordaahh 0:a28ad0db4228 119 }
jordaahh 5:200fa178cb3a 120
jordaahh 0:a28ad0db4228 121 // read default positions of the joystick to calibrate later readings
jordaahh 0:a28ad0db4228 122 void calibrateJoystick()
jordaahh 0:a28ad0db4228 123 {
jordaahh 0:a28ad0db4228 124 button.mode(PullDown);
jordaahh 0:a28ad0db4228 125 // must not move during calibration
jordaahh 0:a28ad0db4228 126 joystick.x0 = xPot; // initial positions in the range 0.0 to 1.0 (0.5 if centred exactly)
jordaahh 0:a28ad0db4228 127 joystick.y0 = yPot;
jordaahh 0:a28ad0db4228 128 }
jordaahh 0:a28ad0db4228 129 void updateJoystick()
jordaahh 0:a28ad0db4228 130 {
jordaahh 0:a28ad0db4228 131 // read current joystick values relative to calibrated values (in range -0.5 to 0.5, 0.0 is centred)
jordaahh 0:a28ad0db4228 132 joystick.x = xPot - joystick.x0;
jordaahh 0:a28ad0db4228 133 joystick.y = yPot - joystick.y0;
jordaahh 0:a28ad0db4228 134 // read button state
jordaahh 0:a28ad0db4228 135 joystick.button = button;
jordaahh 10:ffac6dc620ff 136
jordaahh 0:a28ad0db4228 137 // calculate direction depending on x,y values
jordaahh 0:a28ad0db4228 138 // tolerance allows a little lee-way in case joystick not exactly in the stated direction
jordaahh 0:a28ad0db4228 139 if ( fabs(joystick.y) < DIRECTION_TOLERANCE && fabs(joystick.x) < DIRECTION_TOLERANCE) {
jordaahh 0:a28ad0db4228 140 joystick.direction = CENTRE;
jordaahh 0:a28ad0db4228 141 } else if ( joystick.y > DIRECTION_TOLERANCE && fabs(joystick.x) < DIRECTION_TOLERANCE) {
jordaahh 0:a28ad0db4228 142 joystick.direction = UP;
jordaahh 0:a28ad0db4228 143 } else if ( joystick.y < DIRECTION_TOLERANCE && fabs(joystick.x) < DIRECTION_TOLERANCE) {
jordaahh 0:a28ad0db4228 144 joystick.direction = DOWN;
jordaahh 0:a28ad0db4228 145 } else if ( joystick.x > DIRECTION_TOLERANCE && fabs(joystick.y) < DIRECTION_TOLERANCE) {
jordaahh 0:a28ad0db4228 146 joystick.direction = RIGHT;
jordaahh 0:a28ad0db4228 147 } else if ( joystick.x < DIRECTION_TOLERANCE && fabs(joystick.y) < DIRECTION_TOLERANCE) {
jordaahh 0:a28ad0db4228 148 joystick.direction = LEFT;
jordaahh 10:ffac6dc620ff 149 } else if ( joystick.y > DIRECTION_TOLERANCE && joystick.x > DIRECTION_TOLERANCE) {
jordaahh 6:c257b2060803 150 joystick.direction = upRight;
jordaahh 10:ffac6dc620ff 151 } else if ( joystick.y < DIRECTION_TOLERANCE && joystick.x > DIRECTION_TOLERANCE) {
jordaahh 6:c257b2060803 152 joystick.direction = downRight;
jordaahh 10:ffac6dc620ff 153 } else if ( joystick.y > DIRECTION_TOLERANCE && joystick.x < DIRECTION_TOLERANCE) {
jordaahh 6:c257b2060803 154 joystick.direction = upLeft;
jordaahh 10:ffac6dc620ff 155 } else if ( joystick.y < DIRECTION_TOLERANCE && joystick.x < DIRECTION_TOLERANCE) {
jordaahh 6:c257b2060803 156 joystick.direction = downLeft;
jordaahh 10:ffac6dc620ff 157 }
jordaahh 0:a28ad0db4228 158 // set flag for printing
jordaahh 0:a28ad0db4228 159 printFlag = 1;
jordaahh 3:11cbc2945fd7 160 }
jordaahh 3:11cbc2945fd7 161
jordaahh 5:200fa178cb3a 162
jordaahh 3:11cbc2945fd7 163 void clearCells() // turns all cells on the display off
jordaahh 3:11cbc2945fd7 164 {
jordaahh 3:11cbc2945fd7 165 // loop through cells, and clear
jordaahh 3:11cbc2945fd7 166 for (int i = 0; i < nx ; i++) {
jordaahh 3:11cbc2945fd7 167 for (int j = 0; j < ny ; j++) {
jordaahh 3:11cbc2945fd7 168 lcd.clearPixel(i,j);
jordaahh 3:11cbc2945fd7 169 }
jordaahh 3:11cbc2945fd7 170 }
jordaahh 3:11cbc2945fd7 171 lcd.refresh(); // must refresh to write buffer display
jordaahh 3:11cbc2945fd7 172 }
jordaahh 3:11cbc2945fd7 173
jordaahh 10:ffac6dc620ff 174 void flagForWall() // flag function for wmoving wall to call later
jordaahh 8:db2994eef1ab 175 {
jordaahh 8:db2994eef1ab 176 FLAG=1;
jordaahh 8:db2994eef1ab 177 }
jordaahh 8:db2994eef1ab 178
jordaahh 11:e5481bda1d6a 179 void flagForWall2() // flag function for wmoving wall to call later
jordaahh 11:e5481bda1d6a 180 {
jordaahh 11:e5481bda1d6a 181 FLAG2=1;
jordaahh 11:e5481bda1d6a 182 }
jordaahh 11:e5481bda1d6a 183
jordaahh 11:e5481bda1d6a 184 void flagForWall3() // flag function for wmoving wall to call later
jordaahh 11:e5481bda1d6a 185 {
jordaahh 11:e5481bda1d6a 186 FLAG3=1;
jordaahh 11:e5481bda1d6a 187 }
jordaahh 9:7c687ed420de 188
jordaahh 10:ffac6dc620ff 189 void menu ()
jordaahh 9:7c687ed420de 190 {
jordaahh 10:ffac6dc620ff 191 int m = 0;
jordaahh 11:e5481bda1d6a 192 //serial.attach(&serialISR); // attach serial ISR
jordaahh 11:e5481bda1d6a 193 char buffer[14]; // buffer used to store time string
jordaahh 11:e5481bda1d6a 194 char buffer2[14]; // buffer used to store time string
jordaahh 11:e5481bda1d6a 195
jordaahh 10:ffac6dc620ff 196
jordaahh 10:ffac6dc620ff 197 while(1) {
jordaahh 10:ffac6dc620ff 198 clearCells();
jordaahh 11:e5481bda1d6a 199 time_t seconds = time(NULL); // get current time
jordaahh 11:e5481bda1d6a 200 // format time into a string (time and date)
jordaahh 11:e5481bda1d6a 201 strftime(buffer, 14 , "%H:%M", localtime(&seconds));
jordaahh 11:e5481bda1d6a 202 strftime(buffer2, 14, "%d/%m", localtime(&seconds));
jordaahh 11:e5481bda1d6a 203
jordaahh 11:e5481bda1d6a 204 lcd.printString(buffer,26,4); // show time on lcd screen
jordaahh 11:e5481bda1d6a 205
jordaahh 11:e5481bda1d6a 206
jordaahh 10:ffac6dc620ff 207 if ((joystick.direction == RIGHT)||(joystick.direction == upRight)||(joystick.direction == downRight)) {
jordaahh 10:ffac6dc620ff 208 m++;
jordaahh 9:7c687ed420de 209 }
jordaahh 10:ffac6dc620ff 210 if ((joystick.direction == LEFT)||(joystick.direction == upLeft)||(joystick.direction == downLeft)) {
jordaahh 10:ffac6dc620ff 211 m--;
jordaahh 9:7c687ed420de 212 }
jordaahh 10:ffac6dc620ff 213 if(m > 2) {
jordaahh 10:ffac6dc620ff 214 m = 0;
jordaahh 10:ffac6dc620ff 215 }
jordaahh 10:ffac6dc620ff 216 if(m < 0) {
jordaahh 10:ffac6dc620ff 217 m = 2;
jordaahh 9:7c687ed420de 218 }
jordaahh 10:ffac6dc620ff 219 switch (m) {
jordaahh 10:ffac6dc620ff 220 case 0 :
jordaahh 10:ffac6dc620ff 221 lcd.printString("< Play Game >",0,2);
jordaahh 10:ffac6dc620ff 222 wait(0.3);
jordaahh 10:ffac6dc620ff 223 while(1) {
jordaahh 10:ffac6dc620ff 224 if(button == 1) {
jordaahh 10:ffac6dc620ff 225 clearCells();
jordaahh 10:ffac6dc620ff 226 playGame();
jordaahh 10:ffac6dc620ff 227 break;
jordaahh 10:ffac6dc620ff 228 } else {
jordaahh 10:ffac6dc620ff 229 break;
jordaahh 10:ffac6dc620ff 230 }
jordaahh 10:ffac6dc620ff 231 }
jordaahh 10:ffac6dc620ff 232 break;
jordaahh 10:ffac6dc620ff 233 case 1 :
jordaahh 10:ffac6dc620ff 234 lcd.printString("< Settings >",0,2);
jordaahh 10:ffac6dc620ff 235 wait(0.3);
jordaahh 10:ffac6dc620ff 236 while(1) {
jordaahh 10:ffac6dc620ff 237 if(button == 1) {
jordaahh 10:ffac6dc620ff 238 clearCells();
jordaahh 10:ffac6dc620ff 239 lcd.printString("setting",0,2);//enter function to commence here
jordaahh 10:ffac6dc620ff 240 wait(3.0);
jordaahh 10:ffac6dc620ff 241 break;
jordaahh 10:ffac6dc620ff 242 } else {
jordaahh 10:ffac6dc620ff 243 break;
jordaahh 10:ffac6dc620ff 244 }
jordaahh 10:ffac6dc620ff 245 }
jordaahh 10:ffac6dc620ff 246 break;
jordaahh 10:ffac6dc620ff 247 case 2 :
jordaahh 10:ffac6dc620ff 248 lcd.printString("< HighScores >",0,2);
jordaahh 10:ffac6dc620ff 249 wait(0.3);
jordaahh 10:ffac6dc620ff 250 while(1) {
jordaahh 10:ffac6dc620ff 251 if(button == 1) {
jordaahh 10:ffac6dc620ff 252 clearCells();
jordaahh 10:ffac6dc620ff 253 lcd.printString("scoring",0,2); //enter function to commence here
jordaahh 10:ffac6dc620ff 254 wait(3.0);
jordaahh 10:ffac6dc620ff 255 break;
jordaahh 10:ffac6dc620ff 256 } else {
jordaahh 10:ffac6dc620ff 257 break;
jordaahh 10:ffac6dc620ff 258 }
jordaahh 10:ffac6dc620ff 259 }
jordaahh 10:ffac6dc620ff 260 break;
jordaahh 10:ffac6dc620ff 261
jordaahh 9:7c687ed420de 262 }
jordaahh 10:ffac6dc620ff 263 }
jordaahh 9:7c687ed420de 264 }
jordaahh 9:7c687ed420de 265
jordaahh 11:e5481bda1d6a 266
jordaahh 10:ffac6dc620ff 267 void playGame()
jordaahh 9:7c687ed420de 268 {
jordaahh 10:ffac6dc620ff 269 int i=24; // initial coordinates for player object
jordaahh 10:ffac6dc620ff 270 int j=42;
jordaahh 10:ffac6dc620ff 271 int x = 0; // wall starts from the coordinates (0,0)
jordaahh 10:ffac6dc620ff 272 int y = 0;
jordaahh 10:ffac6dc620ff 273 int z = 30;
jordaahh 11:e5481bda1d6a 274 int score = 0;
jordaahh 11:e5481bda1d6a 275 int a = 0;
jordaahh 11:e5481bda1d6a 276 int b = 47;
jordaahh 11:e5481bda1d6a 277 int d = 30;
jordaahh 11:e5481bda1d6a 278 int f = 0;
jordaahh 11:e5481bda1d6a 279 int g = 0;
jordaahh 11:e5481bda1d6a 280 int h = 24;
jordaahh 11:e5481bda1d6a 281 int q = 83;
jordaahh 11:e5481bda1d6a 282 int w = 0;
jordaahh 11:e5481bda1d6a 283 int e = 24;
jordaahh 11:e5481bda1d6a 284
jordaahh 10:ffac6dc620ff 285 lcd.printString("GO!",35,2);
jordaahh 10:ffac6dc620ff 286 wait(1);
jordaahh 10:ffac6dc620ff 287 while(1) {
jordaahh 10:ffac6dc620ff 288 lcd.drawRect(i,j,2,2,0);
jordaahh 9:7c687ed420de 289 clearCells();
jordaahh 10:ffac6dc620ff 290 lcd.drawLine(x,y,z,y,1); // draws a line at the top of the screen to symbolise a wall
jordaahh 10:ffac6dc620ff 291 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 10:ffac6dc620ff 292 if(FLAG==1) {
jordaahh 10:ffac6dc620ff 293 FLAG=0;
jordaahh 10:ffac6dc620ff 294 y++; // everytime the flag changes to one it is reset and the wall moves down by one pixel
jordaahh 10:ffac6dc620ff 295 }
jordaahh 10:ffac6dc620ff 296 if(y > 47) { // when the wall reaches the bottom a new wall is generated at the top and with another 10 pixel gap in a different place
jordaahh 10:ffac6dc620ff 297 y = 0;
jordaahh 10:ffac6dc620ff 298 z = rand()%74;
jordaahh 11:e5481bda1d6a 299 score++;
jordaahh 11:e5481bda1d6a 300 }
jordaahh 11:e5481bda1d6a 301 if(( score > 1)&&(score < 5)) {
jordaahh 11:e5481bda1d6a 302 lcd.drawLine(a,b,d,b,1); // draws a line at the top of the screen to symbolise a wall
jordaahh 11:e5481bda1d6a 303 lcd.drawLine(d+10,b,83,b,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 11:e5481bda1d6a 304 if(FLAG3==1) {
jordaahh 11:e5481bda1d6a 305 FLAG3=0;
jordaahh 11:e5481bda1d6a 306 b--; // everytime the flag changes to one it is reset and the wall moves down by one pixel
jordaahh 11:e5481bda1d6a 307 }
jordaahh 11:e5481bda1d6a 308 }
jordaahh 11:e5481bda1d6a 309 if(b < 0) { // when the wall reaches the bottom a new wall is generated at the top and with another 10 pixel gap in a different place
jordaahh 11:e5481bda1d6a 310 b = 47;
jordaahh 11:e5481bda1d6a 311 d = rand()%74;
jordaahh 11:e5481bda1d6a 312 }
jordaahh 11:e5481bda1d6a 313 if(( score > 5)&&(score < 9)) {
jordaahh 11:e5481bda1d6a 314 lcd.drawLine(f,g,f,h,1);
jordaahh 11:e5481bda1d6a 315 lcd.drawLine(f,h+10,f,47,1);
jordaahh 11:e5481bda1d6a 316 if(FLAG2==1) {
jordaahh 11:e5481bda1d6a 317 FLAG2=0;
jordaahh 11:e5481bda1d6a 318 f++; // everytime the flag changes to one it is reset and the wall moves down by one pixel
jordaahh 11:e5481bda1d6a 319 }
jordaahh 11:e5481bda1d6a 320 }
jordaahh 11:e5481bda1d6a 321 if( f > 83) { // when the wall reaches the bottom a new wall is generated at the top and with another 10 pixel gap in a different place
jordaahh 11:e5481bda1d6a 322 f = 0;
jordaahh 11:e5481bda1d6a 323 h = rand()%38;
jordaahh 11:e5481bda1d6a 324 }
jordaahh 11:e5481bda1d6a 325 if(( score > 10)&&(score < 15)) {
jordaahh 11:e5481bda1d6a 326 lcd.drawLine(q,w,q,e,1); // draws a line at the top of the screen to symbolise a wall
jordaahh 11:e5481bda1d6a 327 lcd.drawLine(q,e+10,q,47,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 11:e5481bda1d6a 328 if(FLAG3==1) {
jordaahh 11:e5481bda1d6a 329 FLAG3=0;
jordaahh 11:e5481bda1d6a 330 q--; // everytime the flag changes to one it is reset and the wall moves down by one pixel
jordaahh 11:e5481bda1d6a 331 }
jordaahh 11:e5481bda1d6a 332 }
jordaahh 11:e5481bda1d6a 333 if(q < 0) { // when the wall reaches the bottom a new wall is generated at the top and with another 10 pixel gap in a different place
jordaahh 11:e5481bda1d6a 334 q = 83;
jordaahh 11:e5481bda1d6a 335 e = rand()%38;
jordaahh 11:e5481bda1d6a 336 }
jordaahh 11:e5481bda1d6a 337 if( score > 15) {
jordaahh 11:e5481bda1d6a 338 lcd.drawLine(q,w,q,e,1); // draws a line at the top of the screen to symbolise a wall
jordaahh 11:e5481bda1d6a 339 lcd.drawLine(q,e+10,q,47,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 11:e5481bda1d6a 340 if(FLAG3==1) {
jordaahh 11:e5481bda1d6a 341 FLAG3=0;
jordaahh 11:e5481bda1d6a 342 q--; // everytime the flag changes to one it is reset and the wall moves down by one pixel
jordaahh 11:e5481bda1d6a 343 }
jordaahh 11:e5481bda1d6a 344 }
jordaahh 11:e5481bda1d6a 345 if( score > 20) {
jordaahh 11:e5481bda1d6a 346 lcd.drawLine(a,b,d,b,1); // draws a line at the top of the screen to symbolise a wall
jordaahh 11:e5481bda1d6a 347 lcd.drawLine(d+10,b,83,b,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 11:e5481bda1d6a 348 if(FLAG2==1) {
jordaahh 11:e5481bda1d6a 349 FLAG2=0;
jordaahh 11:e5481bda1d6a 350 b--; // everytime the flag changes to one it is reset and the wall moves down by one pixel
jordaahh 11:e5481bda1d6a 351 }
jordaahh 10:ffac6dc620ff 352 }
jordaahh 10:ffac6dc620ff 353
jordaahh 10:ffac6dc620ff 354 if( j > 45) { // rules to prevent player object going off the screen
jordaahh 10:ffac6dc620ff 355 j = 45;
jordaahh 10:ffac6dc620ff 356 }
jordaahh 10:ffac6dc620ff 357 if( i > 81) {
jordaahh 10:ffac6dc620ff 358 i = 81;
jordaahh 10:ffac6dc620ff 359 }
jordaahh 10:ffac6dc620ff 360 if( j < 0) {
jordaahh 10:ffac6dc620ff 361 j = 0;
jordaahh 10:ffac6dc620ff 362 }
jordaahh 10:ffac6dc620ff 363 if( i < 0) {
jordaahh 10:ffac6dc620ff 364 i = 0;
jordaahh 10:ffac6dc620ff 365 }
jordaahh 10:ffac6dc620ff 366
jordaahh 10:ffac6dc620ff 367 if (printFlag) { // if flag set, clear flag and implicate joystick functions
jordaahh 10:ffac6dc620ff 368 printFlag = 0;
jordaahh 10:ffac6dc620ff 369
jordaahh 10:ffac6dc620ff 370
jordaahh 10:ffac6dc620ff 371 // check joystick direction
jordaahh 10:ffac6dc620ff 372 if (joystick.direction == UP) {
jordaahh 10:ffac6dc620ff 373 j--;
jordaahh 10:ffac6dc620ff 374 }
jordaahh 10:ffac6dc620ff 375 if (joystick.direction == DOWN) {
jordaahh 10:ffac6dc620ff 376 j++;
jordaahh 10:ffac6dc620ff 377 }
jordaahh 10:ffac6dc620ff 378 if (joystick.direction == LEFT) {
jordaahh 11:e5481bda1d6a 379 i++;
jordaahh 10:ffac6dc620ff 380 }
jordaahh 10:ffac6dc620ff 381 if (joystick.direction == RIGHT) {
jordaahh 11:e5481bda1d6a 382 i--;
jordaahh 10:ffac6dc620ff 383 }
jordaahh 10:ffac6dc620ff 384 if (joystick.direction == upRight) {
jordaahh 10:ffac6dc620ff 385 j--;
jordaahh 11:e5481bda1d6a 386 i--;
jordaahh 11:e5481bda1d6a 387 }
jordaahh 11:e5481bda1d6a 388 if (joystick.direction == downRight) {
jordaahh 11:e5481bda1d6a 389 j++;
jordaahh 11:e5481bda1d6a 390 i--;
jordaahh 11:e5481bda1d6a 391 }
jordaahh 11:e5481bda1d6a 392 if (joystick.direction == upLeft) {
jordaahh 11:e5481bda1d6a 393 j--;
jordaahh 10:ffac6dc620ff 394 i++;
jordaahh 10:ffac6dc620ff 395 }
jordaahh 11:e5481bda1d6a 396 if (joystick.direction == downLeft) {
jordaahh 10:ffac6dc620ff 397 j++;
jordaahh 10:ffac6dc620ff 398 i++;
jordaahh 10:ffac6dc620ff 399 }
jordaahh 10:ffac6dc620ff 400 if (joystick.direction == CENTRE) {
jordaahh 10:ffac6dc620ff 401 i=i;
jordaahh 10:ffac6dc620ff 402 j=j;
jordaahh 10:ffac6dc620ff 403 }
jordaahh 10:ffac6dc620ff 404 if (lcd.getPixel(i,j-1)) {
jordaahh 10:ffac6dc620ff 405 clearCells();
jordaahh 10:ffac6dc620ff 406 int m = 1;
jordaahh 10:ffac6dc620ff 407 lcd.printString("game over",1,2);
jordaahh 10:ffac6dc620ff 408 wait(0.5);
jordaahh 9:7c687ed420de 409 clearCells();
jordaahh 10:ffac6dc620ff 410 lcd.printString("Play again?",0,0);
jordaahh 10:ffac6dc620ff 411 lcd.printString("Yes No",0,3);
jordaahh 10:ffac6dc620ff 412 wait(2);
jordaahh 10:ffac6dc620ff 413
jordaahh 10:ffac6dc620ff 414 while(1) {
jordaahh 10:ffac6dc620ff 415 clearCells();
jordaahh 10:ffac6dc620ff 416 if ((joystick.direction == RIGHT)||(joystick.direction == upRight)||(joystick.direction == downRight)) {
jordaahh 11:e5481bda1d6a 417 m--;
jordaahh 10:ffac6dc620ff 418 }
jordaahh 10:ffac6dc620ff 419 if ((joystick.direction == LEFT)||(joystick.direction == upLeft)||(joystick.direction == downLeft)) {
jordaahh 11:e5481bda1d6a 420 m++;
jordaahh 10:ffac6dc620ff 421 }
jordaahh 10:ffac6dc620ff 422 if(m > 2) {
jordaahh 10:ffac6dc620ff 423 m = 2;
jordaahh 10:ffac6dc620ff 424 }
jordaahh 10:ffac6dc620ff 425 if(m < 0) {
jordaahh 10:ffac6dc620ff 426 m = 0;
jordaahh 10:ffac6dc620ff 427 }
jordaahh 10:ffac6dc620ff 428 switch (m) {
jordaahh 10:ffac6dc620ff 429 case 0 :
jordaahh 10:ffac6dc620ff 430 lcd.printString("YES",0,3);
jordaahh 10:ffac6dc620ff 431 wait(0.3);
jordaahh 10:ffac6dc620ff 432 while(1) {
jordaahh 10:ffac6dc620ff 433 if(button == 1) {
jordaahh 10:ffac6dc620ff 434 clearCells();
jordaahh 10:ffac6dc620ff 435 playGame();
jordaahh 10:ffac6dc620ff 436 break;
jordaahh 10:ffac6dc620ff 437 } else {
jordaahh 10:ffac6dc620ff 438 break;
jordaahh 10:ffac6dc620ff 439 }
jordaahh 10:ffac6dc620ff 440 }
jordaahh 10:ffac6dc620ff 441 break;
jordaahh 10:ffac6dc620ff 442 case 1 :
jordaahh 10:ffac6dc620ff 443 lcd.printString("Play again?",0,0);
jordaahh 10:ffac6dc620ff 444 lcd.printString("Yes No",0,3);
jordaahh 10:ffac6dc620ff 445 wait(0.3);
jordaahh 10:ffac6dc620ff 446 break;
jordaahh 10:ffac6dc620ff 447 case 2 :
jordaahh 10:ffac6dc620ff 448 lcd.printString("NO",70,3);
jordaahh 10:ffac6dc620ff 449 wait(0.3);
jordaahh 10:ffac6dc620ff 450 while(1) {
jordaahh 10:ffac6dc620ff 451 if(button == 1) {
jordaahh 10:ffac6dc620ff 452 clearCells();
jordaahh 10:ffac6dc620ff 453 lcd.printString("Leaving Game",0,2); //enter function to commence here
jordaahh 10:ffac6dc620ff 454 wait(3.0);
jordaahh 10:ffac6dc620ff 455 menu();
jordaahh 10:ffac6dc620ff 456 break;
jordaahh 10:ffac6dc620ff 457 } else {
jordaahh 10:ffac6dc620ff 458 break;
jordaahh 10:ffac6dc620ff 459 }
jordaahh 10:ffac6dc620ff 460 }
jordaahh 10:ffac6dc620ff 461 break;
jordaahh 10:ffac6dc620ff 462
jordaahh 10:ffac6dc620ff 463 }
jordaahh 9:7c687ed420de 464 }
jordaahh 10:ffac6dc620ff 465 }
jordaahh 10:ffac6dc620ff 466 if (lcd.getPixel(i+1,j-1)) {
jordaahh 10:ffac6dc620ff 467 clearCells();
jordaahh 10:ffac6dc620ff 468 int m = 1;
jordaahh 10:ffac6dc620ff 469 lcd.printString("game over",1,2);
jordaahh 10:ffac6dc620ff 470 wait(0.5);
jordaahh 9:7c687ed420de 471 clearCells();
jordaahh 10:ffac6dc620ff 472 lcd.printString("Play again?",0,0);
jordaahh 10:ffac6dc620ff 473 lcd.printString("Yes No",0,3);
jordaahh 10:ffac6dc620ff 474 wait(2);
jordaahh 10:ffac6dc620ff 475
jordaahh 10:ffac6dc620ff 476 while(1) {
jordaahh 10:ffac6dc620ff 477 clearCells();
jordaahh 10:ffac6dc620ff 478 if ((joystick.direction == RIGHT)||(joystick.direction == upRight)||(joystick.direction == downRight)) {
jordaahh 11:e5481bda1d6a 479 m--;
jordaahh 10:ffac6dc620ff 480 }
jordaahh 10:ffac6dc620ff 481 if ((joystick.direction == LEFT)||(joystick.direction == upLeft)||(joystick.direction == downLeft)) {
jordaahh 11:e5481bda1d6a 482 m++;
jordaahh 10:ffac6dc620ff 483 }
jordaahh 10:ffac6dc620ff 484 if(m > 2) {
jordaahh 10:ffac6dc620ff 485 m = 2;
jordaahh 10:ffac6dc620ff 486 }
jordaahh 10:ffac6dc620ff 487 if(m < 0) {
jordaahh 10:ffac6dc620ff 488 m = 0;
jordaahh 10:ffac6dc620ff 489 }
jordaahh 10:ffac6dc620ff 490 switch (m) {
jordaahh 10:ffac6dc620ff 491 case 0 :
jordaahh 10:ffac6dc620ff 492 lcd.printString("YES",0,3);
jordaahh 10:ffac6dc620ff 493 wait(0.3);
jordaahh 10:ffac6dc620ff 494 while(1) {
jordaahh 10:ffac6dc620ff 495 if(button == 1) {
jordaahh 10:ffac6dc620ff 496 clearCells();
jordaahh 10:ffac6dc620ff 497 playGame();
jordaahh 10:ffac6dc620ff 498 break;
jordaahh 10:ffac6dc620ff 499 } else {
jordaahh 10:ffac6dc620ff 500 break;
jordaahh 10:ffac6dc620ff 501 }
jordaahh 10:ffac6dc620ff 502 }
jordaahh 10:ffac6dc620ff 503 break;
jordaahh 10:ffac6dc620ff 504 case 1 :
jordaahh 10:ffac6dc620ff 505 lcd.printString("Play again?",0,0);
jordaahh 10:ffac6dc620ff 506 lcd.printString("Yes No",0,3);
jordaahh 10:ffac6dc620ff 507 wait(0.3);
jordaahh 10:ffac6dc620ff 508 break;
jordaahh 10:ffac6dc620ff 509 case 2 :
jordaahh 10:ffac6dc620ff 510 lcd.printString("NO",70,3);
jordaahh 10:ffac6dc620ff 511 wait(0.3);
jordaahh 10:ffac6dc620ff 512 while(1) {
jordaahh 10:ffac6dc620ff 513 if(button == 1) {
jordaahh 10:ffac6dc620ff 514 clearCells();
jordaahh 10:ffac6dc620ff 515 lcd.printString("Leaving Game",0,2); //enter function to commence here
jordaahh 10:ffac6dc620ff 516 wait(3.0);
jordaahh 10:ffac6dc620ff 517 menu();
jordaahh 10:ffac6dc620ff 518 break;
jordaahh 10:ffac6dc620ff 519 } else {
jordaahh 10:ffac6dc620ff 520 break;
jordaahh 10:ffac6dc620ff 521 }
jordaahh 10:ffac6dc620ff 522 }
jordaahh 10:ffac6dc620ff 523 break;
jordaahh 10:ffac6dc620ff 524 }
jordaahh 9:7c687ed420de 525 }
jordaahh 10:ffac6dc620ff 526 }
jordaahh 10:ffac6dc620ff 527 if (lcd.getPixel(i+2,j-1)) {
jordaahh 10:ffac6dc620ff 528 clearCells();
jordaahh 10:ffac6dc620ff 529 int m = 1;
jordaahh 10:ffac6dc620ff 530 lcd.printString("game over",1,2);
jordaahh 10:ffac6dc620ff 531 wait(0.5);
jordaahh 10:ffac6dc620ff 532 clearCells();
jordaahh 10:ffac6dc620ff 533 lcd.printString("Play again?",0,0);
jordaahh 10:ffac6dc620ff 534 lcd.printString("Yes No",0,3);
jordaahh 10:ffac6dc620ff 535 wait(2);
jordaahh 10:ffac6dc620ff 536
jordaahh 10:ffac6dc620ff 537 while(1) {
jordaahh 10:ffac6dc620ff 538 clearCells();
jordaahh 10:ffac6dc620ff 539 if ((joystick.direction == RIGHT)||(joystick.direction == upRight)||(joystick.direction == downRight)) {
jordaahh 11:e5481bda1d6a 540 m--;
jordaahh 10:ffac6dc620ff 541 }
jordaahh 10:ffac6dc620ff 542 if ((joystick.direction == LEFT)||(joystick.direction == upLeft)||(joystick.direction == downLeft)) {
jordaahh 11:e5481bda1d6a 543 m++;
jordaahh 10:ffac6dc620ff 544 }
jordaahh 10:ffac6dc620ff 545 if(m > 2) {
jordaahh 10:ffac6dc620ff 546 m = 2;
jordaahh 10:ffac6dc620ff 547 }
jordaahh 10:ffac6dc620ff 548 if(m < 0) {
jordaahh 10:ffac6dc620ff 549 m = 0;
jordaahh 10:ffac6dc620ff 550 }
jordaahh 10:ffac6dc620ff 551 switch (m) {
jordaahh 10:ffac6dc620ff 552 case 0 :
jordaahh 10:ffac6dc620ff 553 lcd.printString("YES",0,3);
jordaahh 10:ffac6dc620ff 554 wait(0.3);
jordaahh 10:ffac6dc620ff 555 while(1) {
jordaahh 10:ffac6dc620ff 556 if(button == 1) {
jordaahh 10:ffac6dc620ff 557 clearCells();
jordaahh 10:ffac6dc620ff 558 playGame();
jordaahh 10:ffac6dc620ff 559 break;
jordaahh 10:ffac6dc620ff 560 } else {
jordaahh 10:ffac6dc620ff 561 break;
jordaahh 10:ffac6dc620ff 562 }
jordaahh 10:ffac6dc620ff 563 }
jordaahh 10:ffac6dc620ff 564 break;
jordaahh 10:ffac6dc620ff 565 case 1 :
jordaahh 10:ffac6dc620ff 566 lcd.printString("Play again?",0,0);
jordaahh 10:ffac6dc620ff 567 lcd.printString("Yes No",0,3);
jordaahh 10:ffac6dc620ff 568 wait(0.3);
jordaahh 10:ffac6dc620ff 569 break;
jordaahh 10:ffac6dc620ff 570 case 2 :
jordaahh 10:ffac6dc620ff 571 lcd.printString("NO",70,3);
jordaahh 10:ffac6dc620ff 572 wait(0.3);
jordaahh 10:ffac6dc620ff 573 while(1) {
jordaahh 10:ffac6dc620ff 574 if(button == 1) {
jordaahh 10:ffac6dc620ff 575 clearCells();
jordaahh 10:ffac6dc620ff 576 lcd.printString("Leaving Game",0,2); //enter function to commence here
jordaahh 10:ffac6dc620ff 577 wait(3.0);
jordaahh 10:ffac6dc620ff 578 menu();
jordaahh 10:ffac6dc620ff 579 break;
jordaahh 10:ffac6dc620ff 580 } else {
jordaahh 10:ffac6dc620ff 581 break;
jordaahh 10:ffac6dc620ff 582 }
jordaahh 10:ffac6dc620ff 583 }
jordaahh 10:ffac6dc620ff 584 break;
jordaahh 10:ffac6dc620ff 585
jordaahh 10:ffac6dc620ff 586 }
jordaahh 9:7c687ed420de 587 }
jordaahh 9:7c687ed420de 588 }
jordaahh 11:e5481bda1d6a 589 if (lcd.getPixel(i,j)) {
jordaahh 11:e5481bda1d6a 590 clearCells();
jordaahh 11:e5481bda1d6a 591 int m = 1;
jordaahh 11:e5481bda1d6a 592 lcd.printString("game over",1,2);
jordaahh 11:e5481bda1d6a 593 wait(0.5);
jordaahh 11:e5481bda1d6a 594 clearCells();
jordaahh 11:e5481bda1d6a 595 lcd.printString("Play again?",0,0);
jordaahh 11:e5481bda1d6a 596 lcd.printString("Yes No",0,3);
jordaahh 11:e5481bda1d6a 597 wait(2);
jordaahh 9:7c687ed420de 598
jordaahh 11:e5481bda1d6a 599 while(1) {
jordaahh 11:e5481bda1d6a 600 clearCells();
jordaahh 11:e5481bda1d6a 601 if ((joystick.direction == RIGHT)||(joystick.direction == upRight)||(joystick.direction == downRight)) {
jordaahh 11:e5481bda1d6a 602 m--;
jordaahh 11:e5481bda1d6a 603 }
jordaahh 11:e5481bda1d6a 604 if ((joystick.direction == LEFT)||(joystick.direction == upLeft)||(joystick.direction == downLeft)) {
jordaahh 11:e5481bda1d6a 605 m++;
jordaahh 11:e5481bda1d6a 606 }
jordaahh 11:e5481bda1d6a 607 if(m > 2) {
jordaahh 11:e5481bda1d6a 608 m = 2;
jordaahh 11:e5481bda1d6a 609 }
jordaahh 11:e5481bda1d6a 610 if(m < 0) {
jordaahh 11:e5481bda1d6a 611 m = 0;
jordaahh 11:e5481bda1d6a 612 }
jordaahh 11:e5481bda1d6a 613 switch (m) {
jordaahh 11:e5481bda1d6a 614 case 0 :
jordaahh 11:e5481bda1d6a 615 lcd.printString("YES",0,3);
jordaahh 11:e5481bda1d6a 616 wait(0.3);
jordaahh 11:e5481bda1d6a 617 while(1) {
jordaahh 11:e5481bda1d6a 618 if(button == 1) {
jordaahh 11:e5481bda1d6a 619 clearCells();
jordaahh 11:e5481bda1d6a 620 playGame();
jordaahh 11:e5481bda1d6a 621 break;
jordaahh 11:e5481bda1d6a 622 } else {
jordaahh 11:e5481bda1d6a 623 break;
jordaahh 11:e5481bda1d6a 624 }
jordaahh 11:e5481bda1d6a 625 }
jordaahh 11:e5481bda1d6a 626 break;
jordaahh 11:e5481bda1d6a 627 case 1 :
jordaahh 11:e5481bda1d6a 628 lcd.printString("Play again?",0,0);
jordaahh 11:e5481bda1d6a 629 lcd.printString("Yes No",0,3);
jordaahh 11:e5481bda1d6a 630 wait(0.3);
jordaahh 11:e5481bda1d6a 631 break;
jordaahh 11:e5481bda1d6a 632 case 2 :
jordaahh 11:e5481bda1d6a 633 lcd.printString("NO",70,3);
jordaahh 11:e5481bda1d6a 634 wait(0.3);
jordaahh 11:e5481bda1d6a 635 while(1) {
jordaahh 11:e5481bda1d6a 636 if(button == 1) {
jordaahh 11:e5481bda1d6a 637 clearCells();
jordaahh 11:e5481bda1d6a 638 lcd.printString("Leaving Game",0,2); //enter function to commence here
jordaahh 11:e5481bda1d6a 639 wait(3.0);
jordaahh 11:e5481bda1d6a 640 menu();
jordaahh 11:e5481bda1d6a 641 break;
jordaahh 11:e5481bda1d6a 642 } else {
jordaahh 11:e5481bda1d6a 643 break;
jordaahh 11:e5481bda1d6a 644 }
jordaahh 11:e5481bda1d6a 645 }
jordaahh 11:e5481bda1d6a 646 break;
jordaahh 11:e5481bda1d6a 647 }
jordaahh 11:e5481bda1d6a 648 }
jordaahh 11:e5481bda1d6a 649 }
jordaahh 11:e5481bda1d6a 650 if (lcd.getPixel(i+1,j)) {
jordaahh 11:e5481bda1d6a 651 clearCells();
jordaahh 11:e5481bda1d6a 652 int m = 1;
jordaahh 11:e5481bda1d6a 653 lcd.printString("game over",1,2);
jordaahh 11:e5481bda1d6a 654 wait(0.5);
jordaahh 11:e5481bda1d6a 655 clearCells();
jordaahh 11:e5481bda1d6a 656 lcd.printString("Play again?",0,0);
jordaahh 11:e5481bda1d6a 657 lcd.printString("Yes No",0,3);
jordaahh 11:e5481bda1d6a 658 wait(2);
jordaahh 11:e5481bda1d6a 659
jordaahh 11:e5481bda1d6a 660 while(1) {
jordaahh 11:e5481bda1d6a 661 clearCells();
jordaahh 11:e5481bda1d6a 662 if ((joystick.direction == RIGHT)||(joystick.direction == upRight)||(joystick.direction == downRight)) {
jordaahh 11:e5481bda1d6a 663 m--;
jordaahh 11:e5481bda1d6a 664 }
jordaahh 11:e5481bda1d6a 665 if ((joystick.direction == LEFT)||(joystick.direction == upLeft)||(joystick.direction == downLeft)) {
jordaahh 11:e5481bda1d6a 666 m++;
jordaahh 11:e5481bda1d6a 667 }
jordaahh 11:e5481bda1d6a 668 if(m > 2) {
jordaahh 11:e5481bda1d6a 669 m = 2;
jordaahh 11:e5481bda1d6a 670 }
jordaahh 11:e5481bda1d6a 671 if(m < 0) {
jordaahh 11:e5481bda1d6a 672 m = 0;
jordaahh 11:e5481bda1d6a 673 }
jordaahh 11:e5481bda1d6a 674 switch (m) {
jordaahh 11:e5481bda1d6a 675 case 0 :
jordaahh 11:e5481bda1d6a 676 lcd.printString("YES",0,3);
jordaahh 11:e5481bda1d6a 677 wait(0.3);
jordaahh 11:e5481bda1d6a 678 while(1) {
jordaahh 11:e5481bda1d6a 679 if(button == 1) {
jordaahh 11:e5481bda1d6a 680 clearCells();
jordaahh 11:e5481bda1d6a 681 playGame();
jordaahh 11:e5481bda1d6a 682 break;
jordaahh 11:e5481bda1d6a 683 } else {
jordaahh 11:e5481bda1d6a 684 break;
jordaahh 11:e5481bda1d6a 685 }
jordaahh 11:e5481bda1d6a 686 }
jordaahh 11:e5481bda1d6a 687 break;
jordaahh 11:e5481bda1d6a 688 case 1 :
jordaahh 11:e5481bda1d6a 689 lcd.printString("Play again?",0,0);
jordaahh 11:e5481bda1d6a 690 lcd.printString("Yes No",0,3);
jordaahh 11:e5481bda1d6a 691 wait(0.3);
jordaahh 11:e5481bda1d6a 692 break;
jordaahh 11:e5481bda1d6a 693 case 2 :
jordaahh 11:e5481bda1d6a 694 lcd.printString("NO",70,3);
jordaahh 11:e5481bda1d6a 695 wait(0.3);
jordaahh 11:e5481bda1d6a 696 while(1) {
jordaahh 11:e5481bda1d6a 697 if(button == 1) {
jordaahh 11:e5481bda1d6a 698 clearCells();
jordaahh 11:e5481bda1d6a 699 lcd.printString("Leaving Game",0,2); //enter function to commence here
jordaahh 11:e5481bda1d6a 700 wait(3.0);
jordaahh 11:e5481bda1d6a 701 menu();
jordaahh 11:e5481bda1d6a 702 break;
jordaahh 11:e5481bda1d6a 703 } else {
jordaahh 11:e5481bda1d6a 704 break;
jordaahh 11:e5481bda1d6a 705 }
jordaahh 11:e5481bda1d6a 706 }
jordaahh 11:e5481bda1d6a 707 break;
jordaahh 11:e5481bda1d6a 708 }
jordaahh 11:e5481bda1d6a 709 }
jordaahh 11:e5481bda1d6a 710 }
jordaahh 11:e5481bda1d6a 711 if (lcd.getPixel(i+2,j)) {
jordaahh 11:e5481bda1d6a 712 clearCells();
jordaahh 11:e5481bda1d6a 713 int m = 1;
jordaahh 11:e5481bda1d6a 714 lcd.printString("game over",1,2);
jordaahh 11:e5481bda1d6a 715 wait(0.5);
jordaahh 11:e5481bda1d6a 716 clearCells();
jordaahh 11:e5481bda1d6a 717 lcd.printString("Play again?",0,0);
jordaahh 11:e5481bda1d6a 718 lcd.printString("Yes No",0,3);
jordaahh 11:e5481bda1d6a 719 wait(2);
jordaahh 11:e5481bda1d6a 720
jordaahh 11:e5481bda1d6a 721 while(1) {
jordaahh 11:e5481bda1d6a 722 clearCells();
jordaahh 11:e5481bda1d6a 723 if ((joystick.direction == RIGHT)||(joystick.direction == upRight)||(joystick.direction == downRight)) {
jordaahh 11:e5481bda1d6a 724 m--;
jordaahh 11:e5481bda1d6a 725 }
jordaahh 11:e5481bda1d6a 726 if ((joystick.direction == LEFT)||(joystick.direction == upLeft)||(joystick.direction == downLeft)) {
jordaahh 11:e5481bda1d6a 727 m++;
jordaahh 11:e5481bda1d6a 728 }
jordaahh 11:e5481bda1d6a 729 if(m > 2) {
jordaahh 11:e5481bda1d6a 730 m = 2;
jordaahh 11:e5481bda1d6a 731 }
jordaahh 11:e5481bda1d6a 732 if(m < 0) {
jordaahh 11:e5481bda1d6a 733 m = 0;
jordaahh 11:e5481bda1d6a 734 }
jordaahh 11:e5481bda1d6a 735 switch (m) {
jordaahh 11:e5481bda1d6a 736 case 0 :
jordaahh 11:e5481bda1d6a 737 lcd.printString("YES",0,3);
jordaahh 11:e5481bda1d6a 738 wait(0.3);
jordaahh 11:e5481bda1d6a 739 while(1) {
jordaahh 11:e5481bda1d6a 740 if(button == 1) {
jordaahh 11:e5481bda1d6a 741 clearCells();
jordaahh 11:e5481bda1d6a 742 playGame();
jordaahh 11:e5481bda1d6a 743 break;
jordaahh 11:e5481bda1d6a 744 } else {
jordaahh 11:e5481bda1d6a 745 break;
jordaahh 11:e5481bda1d6a 746 }
jordaahh 11:e5481bda1d6a 747 }
jordaahh 11:e5481bda1d6a 748 break;
jordaahh 11:e5481bda1d6a 749 case 1 :
jordaahh 11:e5481bda1d6a 750 lcd.printString("Play again?",0,0);
jordaahh 11:e5481bda1d6a 751 lcd.printString("Yes No",0,3);
jordaahh 11:e5481bda1d6a 752 wait(0.3);
jordaahh 11:e5481bda1d6a 753 break;
jordaahh 11:e5481bda1d6a 754 case 2 :
jordaahh 11:e5481bda1d6a 755 lcd.printString("NO",70,3);
jordaahh 11:e5481bda1d6a 756 wait(0.3);
jordaahh 11:e5481bda1d6a 757 while(1) {
jordaahh 11:e5481bda1d6a 758 if(button == 1) {
jordaahh 11:e5481bda1d6a 759 clearCells();
jordaahh 11:e5481bda1d6a 760 lcd.printString("Leaving Game",0,2); //enter function to commence here
jordaahh 11:e5481bda1d6a 761 wait(3.0);
jordaahh 11:e5481bda1d6a 762 menu();
jordaahh 11:e5481bda1d6a 763 break;
jordaahh 11:e5481bda1d6a 764 } else {
jordaahh 11:e5481bda1d6a 765 break;
jordaahh 11:e5481bda1d6a 766 }
jordaahh 11:e5481bda1d6a 767 }
jordaahh 11:e5481bda1d6a 768 break;
jordaahh 11:e5481bda1d6a 769 }
jordaahh 11:e5481bda1d6a 770 }
jordaahh 11:e5481bda1d6a 771 }
jordaahh 10:ffac6dc620ff 772 }
jordaahh 10:ffac6dc620ff 773 }
jordaahh 9:7c687ed420de 774 }
jordaahh 10:ffac6dc620ff 775
jordaahh 11:e5481bda1d6a 776 // currently working on brightness and volume function
jordaahh 11:e5481bda1d6a 777
jordaahh 11:e5481bda1d6a 778 /*void BandV()
jordaahh 11:e5481bda1d6a 779 {
jordaahh 11:e5481bda1d6a 780 int t = 0;
jordaahh 11:e5481bda1d6a 781 while(1) {
jordaahh 11:e5481bda1d6a 782 clearCells();
jordaahh 11:e5481bda1d6a 783 if ((joystick.direction == RIGHT)||(joystick.direction == upRight)||(joystick.direction == downRight)) {
jordaahh 11:e5481bda1d6a 784 t++;
jordaahh 11:e5481bda1d6a 785 }
jordaahh 11:e5481bda1d6a 786 if ((joystick.direction == LEFT)||(joystick.direction == upLeft)||(joystick.direction == downLeft)) {
jordaahh 11:e5481bda1d6a 787 t--;
jordaahh 11:e5481bda1d6a 788 }
jordaahh 11:e5481bda1d6a 789 if(t > 1) {
jordaahh 11:e5481bda1d6a 790 t = 0;
jordaahh 11:e5481bda1d6a 791 }
jordaahh 11:e5481bda1d6a 792 if(t < 0) {
jordaahh 11:e5481bda1d6a 793 t = 1;
jordaahh 11:e5481bda1d6a 794 }
jordaahh 11:e5481bda1d6a 795 switch (t) {
jordaahh 11:e5481bda1d6a 796 case 0 :
jordaahh 11:e5481bda1d6a 797 lcd.printString("Brightness",12,1);
jordaahh 11:e5481bda1d6a 798 wait(0.3);
jordaahh 11:e5481bda1d6a 799 while(1) {
jordaahh 11:e5481bda1d6a 800 if(button == 1) {
jordaahh 11:e5481bda1d6a 801 clearCells();
jordaahh 11:e5481bda1d6a 802 playGame();
jordaahh 11:e5481bda1d6a 803 break;
jordaahh 11:e5481bda1d6a 804 } else {
jordaahh 11:e5481bda1d6a 805 break;
jordaahh 11:e5481bda1d6a 806 }
jordaahh 11:e5481bda1d6a 807 }
jordaahh 11:e5481bda1d6a 808 break;
jordaahh 11:e5481bda1d6a 809 */
jordaahh 11:e5481bda1d6a 810 /*LocalFileSystem local("local"); // create local filesystem
jordaahh 11:e5481bda1d6a 811 void writeDataToFile(int data);
jordaahh 11:e5481bda1d6a 812 int main()
jordaahh 11:e5481bda1d6a 813 {
jordaahh 11:e5481bda1d6a 814 lcd.init();
jordaahh 11:e5481bda1d6a 815 int counter = 0; // variable to increment
jordaahh 11:e5481bda1d6a 816 while (1) {
jordaahh 11:e5481bda1d6a 817 writeDataToFile(counter); // write current value to disk
jordaahh 11:e5481bda1d6a 818 counter++; // increment counter
jordaahh 11:e5481bda1d6a 819 wait(1.0); // small delay
jordaahh 11:e5481bda1d6a 820 }
jordaahh 11:e5481bda1d6a 821 }
jordaahh 11:e5481bda1d6a 822 void writeDataToFile(int data)
jordaahh 11:e5481bda1d6a 823 {
jordaahh 11:e5481bda1d6a 824 FILE *fp = fopen("/local/log.txt", "a"); // open 'log.txt' for appending
jordaahh 11:e5481bda1d6a 825 // if the file doesn't exist it is created, if it exists, data is appended to the end
jordaahh 11:e5481bda1d6a 826 fprintf(fp,"Counter = %i\n",data); // print string to file
jordaahh 11:e5481bda1d6a 827 fclose(fp); // close file
jordaahh 11:e5481bda1d6a 828
jordaahh 11:e5481bda1d6a 829 }
jordaahh 11:e5481bda1d6a 830 */