Dependencies:   N5110 mbed

Committer:
jordaahh
Date:
Wed Apr 22 21:11:47 2015 +0000
Revision:
10:ffac6dc620ff
Parent:
9:7c687ed420de
Child:
11:e5481bda1d6a
Basics for game complete. Need to do additional features.

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 0:a28ad0db4228 18 DigitalIn button(p15);
jordaahh 0:a28ad0db4228 19 AnalogIn xPot(p16);
jordaahh 0:a28ad0db4228 20 AnalogIn yPot(p17);
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 8:db2994eef1ab 76
jordaahh 8:db2994eef1ab 77
jordaahh 8:db2994eef1ab 78 int FLAG = 0; // initial value for flag that is used for wall movement
jordaahh 10:ffac6dc620ff 79
jordaahh 10:ffac6dc620ff 80 // timer function for menu scroll
jordaahh 10:ffac6dc620ff 81 Ticker menuMovement;
jordaahh 9:7c687ed420de 82
jordaahh 9:7c687ed420de 83 int menuFlag = 0; //initial value for flag that is used for menu scrolling
jordaahh 9:7c687ed420de 84
jordaahh 10:ffac6dc620ff 85 int c = 0; // initial value for position of option in menu
jordaahh 9:7c687ed420de 86
jordaahh 0:a28ad0db4228 87 // function prototypes
jordaahh 0:a28ad0db4228 88 void calibrateJoystick();
jordaahh 0:a28ad0db4228 89 void updateJoystick();
jordaahh 3:11cbc2945fd7 90 void clearCells();
jordaahh 10:ffac6dc620ff 91 void fallingWall();
jordaahh 8:db2994eef1ab 92 void flagForWall();
jordaahh 10:ffac6dc620ff 93 void menu();
jordaahh 10:ffac6dc620ff 94 void playGame();
jordaahh 10:ffac6dc620ff 95
jordaahh 10:ffac6dc620ff 96 int main()
jordaahh 0:a28ad0db4228 97 {
jordaahh 1:3b741adc82ea 98 lcd.init();
jordaahh 0:a28ad0db4228 99 calibrateJoystick(); // get centred values of joystick
jordaahh 0:a28ad0db4228 100 pollJoystick.attach(&updateJoystick,1.0/10.0); // read joystick 10 times per second
jordaahh 8:db2994eef1ab 101 wallMovement.attach(&flagForWall,0.2); // call function flagForWall to make flag=1, every 0.2 seconds
jordaahh 10:ffac6dc620ff 102 menu();
jordaahh 7:b27a91c673dc 103
jordaahh 0:a28ad0db4228 104 }
jordaahh 5:200fa178cb3a 105
jordaahh 0:a28ad0db4228 106 // read default positions of the joystick to calibrate later readings
jordaahh 0:a28ad0db4228 107 void calibrateJoystick()
jordaahh 0:a28ad0db4228 108 {
jordaahh 0:a28ad0db4228 109 button.mode(PullDown);
jordaahh 0:a28ad0db4228 110 // must not move during calibration
jordaahh 0:a28ad0db4228 111 joystick.x0 = xPot; // initial positions in the range 0.0 to 1.0 (0.5 if centred exactly)
jordaahh 0:a28ad0db4228 112 joystick.y0 = yPot;
jordaahh 0:a28ad0db4228 113 }
jordaahh 0:a28ad0db4228 114 void updateJoystick()
jordaahh 0:a28ad0db4228 115 {
jordaahh 0:a28ad0db4228 116 // read current joystick values relative to calibrated values (in range -0.5 to 0.5, 0.0 is centred)
jordaahh 0:a28ad0db4228 117 joystick.x = xPot - joystick.x0;
jordaahh 0:a28ad0db4228 118 joystick.y = yPot - joystick.y0;
jordaahh 0:a28ad0db4228 119 // read button state
jordaahh 0:a28ad0db4228 120 joystick.button = button;
jordaahh 10:ffac6dc620ff 121
jordaahh 0:a28ad0db4228 122 // calculate direction depending on x,y values
jordaahh 0:a28ad0db4228 123 // tolerance allows a little lee-way in case joystick not exactly in the stated direction
jordaahh 0:a28ad0db4228 124 if ( fabs(joystick.y) < DIRECTION_TOLERANCE && fabs(joystick.x) < DIRECTION_TOLERANCE) {
jordaahh 0:a28ad0db4228 125 joystick.direction = CENTRE;
jordaahh 0:a28ad0db4228 126 } else if ( joystick.y > DIRECTION_TOLERANCE && fabs(joystick.x) < DIRECTION_TOLERANCE) {
jordaahh 0:a28ad0db4228 127 joystick.direction = UP;
jordaahh 0:a28ad0db4228 128 } else if ( joystick.y < DIRECTION_TOLERANCE && fabs(joystick.x) < DIRECTION_TOLERANCE) {
jordaahh 0:a28ad0db4228 129 joystick.direction = DOWN;
jordaahh 0:a28ad0db4228 130 } else if ( joystick.x > DIRECTION_TOLERANCE && fabs(joystick.y) < DIRECTION_TOLERANCE) {
jordaahh 0:a28ad0db4228 131 joystick.direction = RIGHT;
jordaahh 0:a28ad0db4228 132 } else if ( joystick.x < DIRECTION_TOLERANCE && fabs(joystick.y) < DIRECTION_TOLERANCE) {
jordaahh 0:a28ad0db4228 133 joystick.direction = LEFT;
jordaahh 10:ffac6dc620ff 134 } else if ( joystick.y > DIRECTION_TOLERANCE && joystick.x > DIRECTION_TOLERANCE) {
jordaahh 6:c257b2060803 135 joystick.direction = upRight;
jordaahh 10:ffac6dc620ff 136 } else if ( joystick.y < DIRECTION_TOLERANCE && joystick.x > DIRECTION_TOLERANCE) {
jordaahh 6:c257b2060803 137 joystick.direction = downRight;
jordaahh 10:ffac6dc620ff 138 } else if ( joystick.y > DIRECTION_TOLERANCE && joystick.x < DIRECTION_TOLERANCE) {
jordaahh 6:c257b2060803 139 joystick.direction = upLeft;
jordaahh 10:ffac6dc620ff 140 } else if ( joystick.y < DIRECTION_TOLERANCE && joystick.x < DIRECTION_TOLERANCE) {
jordaahh 6:c257b2060803 141 joystick.direction = downLeft;
jordaahh 10:ffac6dc620ff 142 }
jordaahh 0:a28ad0db4228 143 // set flag for printing
jordaahh 0:a28ad0db4228 144 printFlag = 1;
jordaahh 3:11cbc2945fd7 145 }
jordaahh 3:11cbc2945fd7 146
jordaahh 5:200fa178cb3a 147
jordaahh 3:11cbc2945fd7 148 void clearCells() // turns all cells on the display off
jordaahh 3:11cbc2945fd7 149 {
jordaahh 3:11cbc2945fd7 150 // loop through cells, and clear
jordaahh 3:11cbc2945fd7 151 for (int i = 0; i < nx ; i++) {
jordaahh 3:11cbc2945fd7 152 for (int j = 0; j < ny ; j++) {
jordaahh 3:11cbc2945fd7 153 lcd.clearPixel(i,j);
jordaahh 3:11cbc2945fd7 154 }
jordaahh 3:11cbc2945fd7 155 }
jordaahh 3:11cbc2945fd7 156 lcd.refresh(); // must refresh to write buffer display
jordaahh 3:11cbc2945fd7 157 }
jordaahh 3:11cbc2945fd7 158
jordaahh 10:ffac6dc620ff 159 void flagForWall() // flag function for wmoving wall to call later
jordaahh 8:db2994eef1ab 160 {
jordaahh 8:db2994eef1ab 161 FLAG=1;
jordaahh 8:db2994eef1ab 162 }
jordaahh 8:db2994eef1ab 163
jordaahh 9:7c687ed420de 164
jordaahh 10:ffac6dc620ff 165 void menu ()
jordaahh 9:7c687ed420de 166 {
jordaahh 10:ffac6dc620ff 167 int m = 0;
jordaahh 10:ffac6dc620ff 168
jordaahh 10:ffac6dc620ff 169 while(1) {
jordaahh 10:ffac6dc620ff 170 clearCells();
jordaahh 10:ffac6dc620ff 171 if ((joystick.direction == RIGHT)||(joystick.direction == upRight)||(joystick.direction == downRight)) {
jordaahh 10:ffac6dc620ff 172 m++;
jordaahh 9:7c687ed420de 173 }
jordaahh 10:ffac6dc620ff 174 if ((joystick.direction == LEFT)||(joystick.direction == upLeft)||(joystick.direction == downLeft)) {
jordaahh 10:ffac6dc620ff 175 m--;
jordaahh 9:7c687ed420de 176 }
jordaahh 10:ffac6dc620ff 177 if(m > 2) {
jordaahh 10:ffac6dc620ff 178 m = 0;
jordaahh 10:ffac6dc620ff 179 }
jordaahh 10:ffac6dc620ff 180 if(m < 0) {
jordaahh 10:ffac6dc620ff 181 m = 2;
jordaahh 9:7c687ed420de 182 }
jordaahh 10:ffac6dc620ff 183 switch (m) {
jordaahh 10:ffac6dc620ff 184 case 0 :
jordaahh 10:ffac6dc620ff 185 lcd.printString("< Play Game >",0,2);
jordaahh 10:ffac6dc620ff 186 wait(0.3);
jordaahh 10:ffac6dc620ff 187 while(1) {
jordaahh 10:ffac6dc620ff 188 if(button == 1) {
jordaahh 10:ffac6dc620ff 189 clearCells();
jordaahh 10:ffac6dc620ff 190 playGame();
jordaahh 10:ffac6dc620ff 191 break;
jordaahh 10:ffac6dc620ff 192 } else {
jordaahh 10:ffac6dc620ff 193 break;
jordaahh 10:ffac6dc620ff 194 }
jordaahh 10:ffac6dc620ff 195 }
jordaahh 10:ffac6dc620ff 196 break;
jordaahh 10:ffac6dc620ff 197 case 1 :
jordaahh 10:ffac6dc620ff 198 lcd.printString("< Settings >",0,2);
jordaahh 10:ffac6dc620ff 199 wait(0.3);
jordaahh 10:ffac6dc620ff 200 while(1) {
jordaahh 10:ffac6dc620ff 201 if(button == 1) {
jordaahh 10:ffac6dc620ff 202 clearCells();
jordaahh 10:ffac6dc620ff 203 lcd.printString("setting",0,2);//enter function to commence here
jordaahh 10:ffac6dc620ff 204 wait(3.0);
jordaahh 10:ffac6dc620ff 205 break;
jordaahh 10:ffac6dc620ff 206 } else {
jordaahh 10:ffac6dc620ff 207 break;
jordaahh 10:ffac6dc620ff 208 }
jordaahh 10:ffac6dc620ff 209 }
jordaahh 10:ffac6dc620ff 210 break;
jordaahh 10:ffac6dc620ff 211 case 2 :
jordaahh 10:ffac6dc620ff 212 lcd.printString("< HighScores >",0,2);
jordaahh 10:ffac6dc620ff 213 wait(0.3);
jordaahh 10:ffac6dc620ff 214 while(1) {
jordaahh 10:ffac6dc620ff 215 if(button == 1) {
jordaahh 10:ffac6dc620ff 216 clearCells();
jordaahh 10:ffac6dc620ff 217 lcd.printString("scoring",0,2); //enter function to commence here
jordaahh 10:ffac6dc620ff 218 wait(3.0);
jordaahh 10:ffac6dc620ff 219 break;
jordaahh 10:ffac6dc620ff 220 } else {
jordaahh 10:ffac6dc620ff 221 break;
jordaahh 10:ffac6dc620ff 222 }
jordaahh 10:ffac6dc620ff 223 }
jordaahh 10:ffac6dc620ff 224 break;
jordaahh 10:ffac6dc620ff 225
jordaahh 9:7c687ed420de 226 }
jordaahh 10:ffac6dc620ff 227 }
jordaahh 9:7c687ed420de 228 }
jordaahh 9:7c687ed420de 229
jordaahh 10:ffac6dc620ff 230 void playGame()
jordaahh 9:7c687ed420de 231 {
jordaahh 10:ffac6dc620ff 232 int i=24; // initial coordinates for player object
jordaahh 10:ffac6dc620ff 233 int j=42;
jordaahh 10:ffac6dc620ff 234 int x = 0; // wall starts from the coordinates (0,0)
jordaahh 10:ffac6dc620ff 235 int y = 0;
jordaahh 10:ffac6dc620ff 236 int z = 30;
jordaahh 10:ffac6dc620ff 237 lcd.printString("GO!",35,2);
jordaahh 10:ffac6dc620ff 238 wait(1);
jordaahh 10:ffac6dc620ff 239 while(1) {
jordaahh 10:ffac6dc620ff 240 lcd.drawRect(i,j,2,2,0);
jordaahh 9:7c687ed420de 241 clearCells();
jordaahh 10:ffac6dc620ff 242 lcd.drawLine(x,y,z,y,1); // draws a line at the top of the screen to symbolise a wall
jordaahh 10:ffac6dc620ff 243 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 244 if(FLAG==1) {
jordaahh 10:ffac6dc620ff 245 FLAG=0;
jordaahh 10:ffac6dc620ff 246 y++; // everytime the flag changes to one it is reset and the wall moves down by one pixel
jordaahh 10:ffac6dc620ff 247 }
jordaahh 10:ffac6dc620ff 248 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 249 y = 0;
jordaahh 10:ffac6dc620ff 250 z = rand()%74;
jordaahh 10:ffac6dc620ff 251 }
jordaahh 10:ffac6dc620ff 252
jordaahh 10:ffac6dc620ff 253 if( j > 45) { // rules to prevent player object going off the screen
jordaahh 10:ffac6dc620ff 254 j = 45;
jordaahh 10:ffac6dc620ff 255 }
jordaahh 10:ffac6dc620ff 256 if( i > 81) {
jordaahh 10:ffac6dc620ff 257 i = 81;
jordaahh 10:ffac6dc620ff 258 }
jordaahh 10:ffac6dc620ff 259 if( j < 0) {
jordaahh 10:ffac6dc620ff 260 j = 0;
jordaahh 10:ffac6dc620ff 261 }
jordaahh 10:ffac6dc620ff 262 if( i < 0) {
jordaahh 10:ffac6dc620ff 263 i = 0;
jordaahh 10:ffac6dc620ff 264 }
jordaahh 10:ffac6dc620ff 265
jordaahh 10:ffac6dc620ff 266 if (printFlag) { // if flag set, clear flag and implicate joystick functions
jordaahh 10:ffac6dc620ff 267 printFlag = 0;
jordaahh 10:ffac6dc620ff 268
jordaahh 10:ffac6dc620ff 269
jordaahh 10:ffac6dc620ff 270 // check joystick direction
jordaahh 10:ffac6dc620ff 271 if (joystick.direction == UP) {
jordaahh 10:ffac6dc620ff 272 j--;
jordaahh 10:ffac6dc620ff 273 }
jordaahh 10:ffac6dc620ff 274 if (joystick.direction == DOWN) {
jordaahh 10:ffac6dc620ff 275 j++;
jordaahh 10:ffac6dc620ff 276 }
jordaahh 10:ffac6dc620ff 277 if (joystick.direction == LEFT) {
jordaahh 10:ffac6dc620ff 278 i--;
jordaahh 10:ffac6dc620ff 279 }
jordaahh 10:ffac6dc620ff 280 if (joystick.direction == RIGHT) {
jordaahh 10:ffac6dc620ff 281 i++;
jordaahh 10:ffac6dc620ff 282 }
jordaahh 10:ffac6dc620ff 283 if (joystick.direction == upRight) {
jordaahh 10:ffac6dc620ff 284 j--;
jordaahh 10:ffac6dc620ff 285 i++;
jordaahh 10:ffac6dc620ff 286 }
jordaahh 10:ffac6dc620ff 287 if (joystick.direction == downRight) {
jordaahh 10:ffac6dc620ff 288 j++;
jordaahh 10:ffac6dc620ff 289 i++;
jordaahh 10:ffac6dc620ff 290 }
jordaahh 10:ffac6dc620ff 291 if (joystick.direction == upLeft) {
jordaahh 10:ffac6dc620ff 292 j--;
jordaahh 10:ffac6dc620ff 293 i--;
jordaahh 9:7c687ed420de 294 }
jordaahh 10:ffac6dc620ff 295 if (joystick.direction == downLeft) {
jordaahh 10:ffac6dc620ff 296 j++;
jordaahh 10:ffac6dc620ff 297 i--;
jordaahh 10:ffac6dc620ff 298 }
jordaahh 10:ffac6dc620ff 299 if (joystick.direction == CENTRE) {
jordaahh 10:ffac6dc620ff 300 i=i;
jordaahh 10:ffac6dc620ff 301 j=j;
jordaahh 10:ffac6dc620ff 302 }
jordaahh 10:ffac6dc620ff 303 if (lcd.getPixel(i,j-1)) {
jordaahh 10:ffac6dc620ff 304 clearCells();
jordaahh 10:ffac6dc620ff 305 int m = 1;
jordaahh 10:ffac6dc620ff 306 lcd.printString("game over",1,2);
jordaahh 10:ffac6dc620ff 307 wait(0.5);
jordaahh 9:7c687ed420de 308 clearCells();
jordaahh 10:ffac6dc620ff 309 lcd.printString("Play again?",0,0);
jordaahh 10:ffac6dc620ff 310 lcd.printString("Yes No",0,3);
jordaahh 10:ffac6dc620ff 311 wait(2);
jordaahh 10:ffac6dc620ff 312
jordaahh 10:ffac6dc620ff 313 while(1) {
jordaahh 10:ffac6dc620ff 314 clearCells();
jordaahh 10:ffac6dc620ff 315 if ((joystick.direction == RIGHT)||(joystick.direction == upRight)||(joystick.direction == downRight)) {
jordaahh 10:ffac6dc620ff 316 m++;
jordaahh 10:ffac6dc620ff 317 }
jordaahh 10:ffac6dc620ff 318 if ((joystick.direction == LEFT)||(joystick.direction == upLeft)||(joystick.direction == downLeft)) {
jordaahh 10:ffac6dc620ff 319 m--;
jordaahh 10:ffac6dc620ff 320 }
jordaahh 10:ffac6dc620ff 321 if(m > 2) {
jordaahh 10:ffac6dc620ff 322 m = 2;
jordaahh 10:ffac6dc620ff 323 }
jordaahh 10:ffac6dc620ff 324 if(m < 0) {
jordaahh 10:ffac6dc620ff 325 m = 0;
jordaahh 10:ffac6dc620ff 326 }
jordaahh 10:ffac6dc620ff 327 switch (m) {
jordaahh 10:ffac6dc620ff 328 case 0 :
jordaahh 10:ffac6dc620ff 329 lcd.printString("YES",0,3);
jordaahh 10:ffac6dc620ff 330 wait(0.3);
jordaahh 10:ffac6dc620ff 331 while(1) {
jordaahh 10:ffac6dc620ff 332 if(button == 1) {
jordaahh 10:ffac6dc620ff 333 clearCells();
jordaahh 10:ffac6dc620ff 334 playGame();
jordaahh 10:ffac6dc620ff 335 break;
jordaahh 10:ffac6dc620ff 336 } else {
jordaahh 10:ffac6dc620ff 337 break;
jordaahh 10:ffac6dc620ff 338 }
jordaahh 10:ffac6dc620ff 339 }
jordaahh 10:ffac6dc620ff 340 break;
jordaahh 10:ffac6dc620ff 341 case 1 :
jordaahh 10:ffac6dc620ff 342 lcd.printString("Play again?",0,0);
jordaahh 10:ffac6dc620ff 343 lcd.printString("Yes No",0,3);
jordaahh 10:ffac6dc620ff 344 wait(0.3);
jordaahh 10:ffac6dc620ff 345 break;
jordaahh 10:ffac6dc620ff 346 case 2 :
jordaahh 10:ffac6dc620ff 347 lcd.printString("NO",70,3);
jordaahh 10:ffac6dc620ff 348 wait(0.3);
jordaahh 10:ffac6dc620ff 349 while(1) {
jordaahh 10:ffac6dc620ff 350 if(button == 1) {
jordaahh 10:ffac6dc620ff 351 clearCells();
jordaahh 10:ffac6dc620ff 352 lcd.printString("Leaving Game",0,2); //enter function to commence here
jordaahh 10:ffac6dc620ff 353 wait(3.0);
jordaahh 10:ffac6dc620ff 354 menu();
jordaahh 10:ffac6dc620ff 355 break;
jordaahh 10:ffac6dc620ff 356 } else {
jordaahh 10:ffac6dc620ff 357 break;
jordaahh 10:ffac6dc620ff 358 }
jordaahh 10:ffac6dc620ff 359 }
jordaahh 10:ffac6dc620ff 360 break;
jordaahh 10:ffac6dc620ff 361
jordaahh 10:ffac6dc620ff 362 }
jordaahh 9:7c687ed420de 363 }
jordaahh 10:ffac6dc620ff 364 }
jordaahh 10:ffac6dc620ff 365 if (lcd.getPixel(i+1,j-1)) {
jordaahh 10:ffac6dc620ff 366 clearCells();
jordaahh 10:ffac6dc620ff 367 int m = 1;
jordaahh 10:ffac6dc620ff 368 lcd.printString("game over",1,2);
jordaahh 10:ffac6dc620ff 369 wait(0.5);
jordaahh 9:7c687ed420de 370 clearCells();
jordaahh 10:ffac6dc620ff 371 lcd.printString("Play again?",0,0);
jordaahh 10:ffac6dc620ff 372 lcd.printString("Yes No",0,3);
jordaahh 10:ffac6dc620ff 373 wait(2);
jordaahh 10:ffac6dc620ff 374
jordaahh 10:ffac6dc620ff 375 while(1) {
jordaahh 10:ffac6dc620ff 376 clearCells();
jordaahh 10:ffac6dc620ff 377 if ((joystick.direction == RIGHT)||(joystick.direction == upRight)||(joystick.direction == downRight)) {
jordaahh 10:ffac6dc620ff 378 m++;
jordaahh 10:ffac6dc620ff 379 }
jordaahh 10:ffac6dc620ff 380 if ((joystick.direction == LEFT)||(joystick.direction == upLeft)||(joystick.direction == downLeft)) {
jordaahh 10:ffac6dc620ff 381 m--;
jordaahh 10:ffac6dc620ff 382 }
jordaahh 10:ffac6dc620ff 383 if(m > 2) {
jordaahh 10:ffac6dc620ff 384 m = 2;
jordaahh 10:ffac6dc620ff 385 }
jordaahh 10:ffac6dc620ff 386 if(m < 0) {
jordaahh 10:ffac6dc620ff 387 m = 0;
jordaahh 10:ffac6dc620ff 388 }
jordaahh 10:ffac6dc620ff 389 switch (m) {
jordaahh 10:ffac6dc620ff 390 case 0 :
jordaahh 10:ffac6dc620ff 391 lcd.printString("YES",0,3);
jordaahh 10:ffac6dc620ff 392 wait(0.3);
jordaahh 10:ffac6dc620ff 393 while(1) {
jordaahh 10:ffac6dc620ff 394 if(button == 1) {
jordaahh 10:ffac6dc620ff 395 clearCells();
jordaahh 10:ffac6dc620ff 396 playGame();
jordaahh 10:ffac6dc620ff 397 break;
jordaahh 10:ffac6dc620ff 398 } else {
jordaahh 10:ffac6dc620ff 399 break;
jordaahh 10:ffac6dc620ff 400 }
jordaahh 10:ffac6dc620ff 401 }
jordaahh 10:ffac6dc620ff 402 break;
jordaahh 10:ffac6dc620ff 403 case 1 :
jordaahh 10:ffac6dc620ff 404 lcd.printString("Play again?",0,0);
jordaahh 10:ffac6dc620ff 405 lcd.printString("Yes No",0,3);
jordaahh 10:ffac6dc620ff 406 wait(0.3);
jordaahh 10:ffac6dc620ff 407 break;
jordaahh 10:ffac6dc620ff 408 case 2 :
jordaahh 10:ffac6dc620ff 409 lcd.printString("NO",70,3);
jordaahh 10:ffac6dc620ff 410 wait(0.3);
jordaahh 10:ffac6dc620ff 411 while(1) {
jordaahh 10:ffac6dc620ff 412 if(button == 1) {
jordaahh 10:ffac6dc620ff 413 clearCells();
jordaahh 10:ffac6dc620ff 414 lcd.printString("Leaving Game",0,2); //enter function to commence here
jordaahh 10:ffac6dc620ff 415 wait(3.0);
jordaahh 10:ffac6dc620ff 416 menu();
jordaahh 10:ffac6dc620ff 417 break;
jordaahh 10:ffac6dc620ff 418 } else {
jordaahh 10:ffac6dc620ff 419 break;
jordaahh 10:ffac6dc620ff 420 }
jordaahh 10:ffac6dc620ff 421 }
jordaahh 10:ffac6dc620ff 422 break;
jordaahh 10:ffac6dc620ff 423 }
jordaahh 9:7c687ed420de 424 }
jordaahh 10:ffac6dc620ff 425 }
jordaahh 10:ffac6dc620ff 426 if (lcd.getPixel(i+2,j-1)) {
jordaahh 10:ffac6dc620ff 427 clearCells();
jordaahh 10:ffac6dc620ff 428 int m = 1;
jordaahh 10:ffac6dc620ff 429 lcd.printString("game over",1,2);
jordaahh 10:ffac6dc620ff 430 wait(0.5);
jordaahh 10:ffac6dc620ff 431 clearCells();
jordaahh 10:ffac6dc620ff 432 lcd.printString("Play again?",0,0);
jordaahh 10:ffac6dc620ff 433 lcd.printString("Yes No",0,3);
jordaahh 10:ffac6dc620ff 434 wait(2);
jordaahh 10:ffac6dc620ff 435
jordaahh 10:ffac6dc620ff 436 while(1) {
jordaahh 10:ffac6dc620ff 437 clearCells();
jordaahh 10:ffac6dc620ff 438 if ((joystick.direction == RIGHT)||(joystick.direction == upRight)||(joystick.direction == downRight)) {
jordaahh 10:ffac6dc620ff 439 m++;
jordaahh 10:ffac6dc620ff 440 }
jordaahh 10:ffac6dc620ff 441 if ((joystick.direction == LEFT)||(joystick.direction == upLeft)||(joystick.direction == downLeft)) {
jordaahh 10:ffac6dc620ff 442 m--;
jordaahh 10:ffac6dc620ff 443 }
jordaahh 10:ffac6dc620ff 444 if(m > 2) {
jordaahh 10:ffac6dc620ff 445 m = 2;
jordaahh 10:ffac6dc620ff 446 }
jordaahh 10:ffac6dc620ff 447 if(m < 0) {
jordaahh 10:ffac6dc620ff 448 m = 0;
jordaahh 10:ffac6dc620ff 449 }
jordaahh 10:ffac6dc620ff 450 switch (m) {
jordaahh 10:ffac6dc620ff 451 case 0 :
jordaahh 10:ffac6dc620ff 452 lcd.printString("YES",0,3);
jordaahh 10:ffac6dc620ff 453 wait(0.3);
jordaahh 10:ffac6dc620ff 454 while(1) {
jordaahh 10:ffac6dc620ff 455 if(button == 1) {
jordaahh 10:ffac6dc620ff 456 clearCells();
jordaahh 10:ffac6dc620ff 457 playGame();
jordaahh 10:ffac6dc620ff 458 break;
jordaahh 10:ffac6dc620ff 459 } else {
jordaahh 10:ffac6dc620ff 460 break;
jordaahh 10:ffac6dc620ff 461 }
jordaahh 10:ffac6dc620ff 462 }
jordaahh 10:ffac6dc620ff 463 break;
jordaahh 10:ffac6dc620ff 464 case 1 :
jordaahh 10:ffac6dc620ff 465 lcd.printString("Play again?",0,0);
jordaahh 10:ffac6dc620ff 466 lcd.printString("Yes No",0,3);
jordaahh 10:ffac6dc620ff 467 wait(0.3);
jordaahh 10:ffac6dc620ff 468 break;
jordaahh 10:ffac6dc620ff 469 case 2 :
jordaahh 10:ffac6dc620ff 470 lcd.printString("NO",70,3);
jordaahh 10:ffac6dc620ff 471 wait(0.3);
jordaahh 10:ffac6dc620ff 472 while(1) {
jordaahh 10:ffac6dc620ff 473 if(button == 1) {
jordaahh 10:ffac6dc620ff 474 clearCells();
jordaahh 10:ffac6dc620ff 475 lcd.printString("Leaving Game",0,2); //enter function to commence here
jordaahh 10:ffac6dc620ff 476 wait(3.0);
jordaahh 10:ffac6dc620ff 477 menu();
jordaahh 10:ffac6dc620ff 478 break;
jordaahh 10:ffac6dc620ff 479 } else {
jordaahh 10:ffac6dc620ff 480 break;
jordaahh 10:ffac6dc620ff 481 }
jordaahh 10:ffac6dc620ff 482 }
jordaahh 10:ffac6dc620ff 483 break;
jordaahh 10:ffac6dc620ff 484
jordaahh 10:ffac6dc620ff 485 }
jordaahh 9:7c687ed420de 486 }
jordaahh 9:7c687ed420de 487 }
jordaahh 9:7c687ed420de 488
jordaahh 10:ffac6dc620ff 489 }
jordaahh 10:ffac6dc620ff 490 }
jordaahh 9:7c687ed420de 491 }
jordaahh 10:ffac6dc620ff 492