Snake Game

Dependencies:   N5110 mbed

Fork of ProjectSnake by William Smith

Committer:
el14ws
Date:
Thu May 05 13:37:52 2016 +0000
Revision:
2:3389133a2223
Parent:
1:44cc07feab7e
FINAL VERSION

Who changed what in which revision?

UserRevisionLine numberNew contents of line
el14ws 0:4b8288518876 1
el14ws 2:3389133a2223 2 /**@file main.cpp
el14ws 2:3389133a2223 3 @brief C plus plus file containing functions prototypes,defines and global variables.
el14ws 2:3389133a2223 4 @author William J Smith
el14ws 2:3389133a2223 5 @date May 2016
el14ws 2:3389133a2223 6 */
el14ws 0:4b8288518876 7
el14ws 2:3389133a2223 8 #include "main.h"
el14ws 0:4b8288518876 9
el14ws 0:4b8288518876 10 int main()
el14ws 0:4b8288518876 11 {
el14ws 2:3389133a2223 12 buttonA.mode(PullDown);//set to pull down mode to enable use of button on PCB
el14ws 0:4b8288518876 13 calibrateJoystick(); // get centred values of joystick
el14ws 0:4b8288518876 14 pollJoystick.attach(&updateJoystick,1.0/10.0); // read joystick 10 times per second
el14ws 2:3389133a2223 15 calibrateJoystick();//calibrate joystick prior to game beginning
el14ws 2:3389133a2223 16 updateJoystick();//update joystick to reduce bugs
el14ws 2:3389133a2223 17 lcd.init();//enables screen
el14ws 2:3389133a2223 18 Welcomescreen();//shows welcoming message when starting up
el14ws 2:3389133a2223 19 lcd.clear();//clears screen
el14ws 2:3389133a2223 20
el14ws 2:3389133a2223 21 GenerateFood();//Randomly generates food at the beginning of the game
el14ws 2:3389133a2223 22 DrawArray();//draws food array
el14ws 2:3389133a2223 23 Menu();//enables user to press start
el14ws 0:4b8288518876 24 while(1) {
el14ws 0:4b8288518876 25
el14ws 2:3389133a2223 26 MakeSnake();//creates inital SNAKE
el14ws 2:3389133a2223 27 ClearArray();//clears all pixels accept food and snake
el14ws 2:3389133a2223 28 DrawArray();//draws pixels for food and snake
el14ws 2:3389133a2223 29
el14ws 0:4b8288518876 30 }
el14ws 0:4b8288518876 31 }
el14ws 2:3389133a2223 32 //menu screen show a mesdsage telling the user to press the button on the PCB in order to start the game
el14ws 0:4b8288518876 33 void Menu()
el14ws 0:4b8288518876 34 {
el14ws 0:4b8288518876 35 // first need to initialise display
el14ws 0:4b8288518876 36
el14ws 0:4b8288518876 37 lcd.clear();
el14ws 0:4b8288518876 38 lcd.printString("Press Button",6,1);
el14ws 0:4b8288518876 39 lcd.printString("To",35,3);
el14ws 0:4b8288518876 40 lcd.printString("START",27,5);
el14ws 0:4b8288518876 41 wait(0.3);
el14ws 0:4b8288518876 42
el14ws 0:4b8288518876 43 while(1) {
el14ws 2:3389133a2223 44 if (buttonA==1) { // whenm the button is pressed a checkerboard effect is created and the game will start
el14ws 0:4b8288518876 45 lcd.clear();
el14ws 0:4b8288518876 46 checkerBoard();
el14ws 0:4b8288518876 47 wait(0.5);
el14ws 0:4b8288518876 48 lcd.clear();
el14ws 0:4b8288518876 49
el14ws 0:4b8288518876 50
el14ws 0:4b8288518876 51 while(1) {
el14ws 0:4b8288518876 52
el14ws 0:4b8288518876 53 wait(0.005);
el14ws 2:3389133a2223 54 SnakeGame(); //Snake rules implemented
el14ws 2:3389133a2223 55
el14ws 0:4b8288518876 56 if (buttonA==1) {
el14ws 0:4b8288518876 57 pause=0;
el14ws 0:4b8288518876 58 Menu();
el14ws 0:4b8288518876 59 }
el14ws 0:4b8288518876 60
el14ws 2:3389133a2223 61 if (button==1) { //if at any time in the game the joystick button is pressed then the game will pause and show the score in the centre
el14ws 0:4b8288518876 62 pause=0;
el14ws 0:4b8288518876 63 lcd.clear();
el14ws 2:3389133a2223 64 sprintf(str,"%d",Score); //enables string number to be printed on the screen
el14ws 0:4b8288518876 65 lcd.printString(str,37,2);
el14ws 0:4b8288518876 66 wait(1);
el14ws 0:4b8288518876 67 }
el14ws 0:4b8288518876 68 }
el14ws 0:4b8288518876 69 }
el14ws 0:4b8288518876 70 }
el14ws 0:4b8288518876 71 }
el14ws 2:3389133a2223 72 //void displays a welcome message "Welcome to Snake" when the device is turned on
el14ws 0:4b8288518876 73 void Welcomescreen() // Display welcome screen
el14ws 0:4b8288518876 74 {
el14ws 0:4b8288518876 75 lcd.printString("Welcome",20,1); // display Welcome
el14ws 0:4b8288518876 76 wait(0.1);
el14ws 0:4b8288518876 77 lcd.printString("To",35,3); // display To
el14ws 0:4b8288518876 78 wait(0.1);
el14ws 0:4b8288518876 79 lcd.printString("SNAKE",27,5); // display Snake
el14ws 0:4b8288518876 80 wait(1);
el14ws 0:4b8288518876 81 }
el14ws 2:3389133a2223 82 //Void produces checkerboard effect to make the game look like it is loading
el14ws 0:4b8288518876 83 void checkerBoard()
el14ws 0:4b8288518876 84 {
el14ws 0:4b8288518876 85 //
el14ws 2:3389133a2223 86 for (int i = 0; i < ni ; i+=2) {//checks array values and sets every other pixel as 1
el14ws 0:4b8288518876 87 for (int j = 0; j < nj ; j+=2) {
el14ws 0:4b8288518876 88 lcd.setPixel(i,j);
el14ws 0:4b8288518876 89 }
el14ws 0:4b8288518876 90 }
el14ws 0:4b8288518876 91 lcd.refresh();
el14ws 0:4b8288518876 92 }
el14ws 2:3389133a2223 93 //void enables the pixels that are set within the make snake void and the generate food void to be set as 1
el14ws 0:4b8288518876 94 void DrawArray()
el14ws 0:4b8288518876 95 {
el14ws 2:3389133a2223 96 for(int x=0; x<84; x++) { //checks all of the array[x][y], if any of them are named as the snake or food it will set pixel
el14ws 0:4b8288518876 97 for (int y=0; y<48; y++) {
el14ws 0:4b8288518876 98 if(array[y][x]>=1) {
el14ws 0:4b8288518876 99 lcd.setPixel(x,y);
el14ws 0:4b8288518876 100 } else {
el14ws 2:3389133a2223 101 lcd.clearPixel(x,y); //Clears any pixels that may of previously been set to 1
el14ws 0:4b8288518876 102 }
el14ws 0:4b8288518876 103 }
el14ws 0:4b8288518876 104 }
el14ws 0:4b8288518876 105 lcd.refresh();
el14ws 0:4b8288518876 106 }
el14ws 2:3389133a2223 107 //void to make sure there are no left over pixels when void DrawArray is initalised
el14ws 0:4b8288518876 108 void ClearArray()
el14ws 0:4b8288518876 109 {
el14ws 2:3389133a2223 110 for(int x=0; x<84; x++) {//checks all of the array[x][y], if any of them are NOT named as the snake or food it will set pixel
el14ws 0:4b8288518876 111 for(int y=0; y<48; y++) {
el14ws 0:4b8288518876 112 if (array[y][x]==0) {
el14ws 0:4b8288518876 113 lcd.clearPixel(x,y);
el14ws 0:4b8288518876 114 } else {
el14ws 0:4b8288518876 115 lcd.setPixel(x,y);
el14ws 0:4b8288518876 116 }
el14ws 0:4b8288518876 117 }
el14ws 0:4b8288518876 118 }
el14ws 0:4b8288518876 119 lcd.refresh();
el14ws 0:4b8288518876 120 }
el14ws 2:3389133a2223 121 //void to calibrate joystick so that the readings taken by the mbed are correct
el14ws 0:4b8288518876 122 void calibrateJoystick()// read default positions of the joystick to calibrate later readings
el14ws 0:4b8288518876 123 {
el14ws 0:4b8288518876 124 button.mode(PullDown); // must not move during calibration
el14ws 0:4b8288518876 125 joystick.x0 = xPot; // initial positions in the range 0.0 to 1.0 (0.5 if centred exactly)
el14ws 0:4b8288518876 126 joystick.y0 = yPot;
el14ws 0:4b8288518876 127 }
el14ws 2:3389133a2223 128 //void so that when calibration is completed updates any changes to its position
el14ws 0:4b8288518876 129 void updateJoystick()
el14ws 0:4b8288518876 130 {
el14ws 0:4b8288518876 131 joystick.x = xPot - joystick.x0;// read current joystick values relative to calibrated values (in range -0.5 to 0.5, 0.0 is centred)
el14ws 0:4b8288518876 132 joystick.y = yPot - joystick.y0;// read button state
el14ws 0:4b8288518876 133 joystick.button = button; // calculate direction depending on x,y values
el14ws 0:4b8288518876 134 if ( fabs(joystick.y) < DIRECTION_TOLERANCE && fabs(joystick.x) < DIRECTION_TOLERANCE) { // tolerance allows a little lee-way in case joystick not exactly in the stated direction
el14ws 0:4b8288518876 135 joystick.direction = CENTRE;
el14ws 0:4b8288518876 136 } else if ( joystick.y > DIRECTION_TOLERANCE && fabs(joystick.x) < DIRECTION_TOLERANCE) {
el14ws 0:4b8288518876 137 joystick.direction = LEFT;
el14ws 0:4b8288518876 138 } else if ( joystick.y < DIRECTION_TOLERANCE && fabs(joystick.x) < DIRECTION_TOLERANCE) {
el14ws 0:4b8288518876 139 joystick.direction = RIGHT;
el14ws 0:4b8288518876 140 } else if ( joystick.x > DIRECTION_TOLERANCE && fabs(joystick.y) < DIRECTION_TOLERANCE) {
el14ws 0:4b8288518876 141 joystick.direction = DOWN;
el14ws 0:4b8288518876 142 } else if ( joystick.x < DIRECTION_TOLERANCE && fabs(joystick.y) < DIRECTION_TOLERANCE) {
el14ws 0:4b8288518876 143 joystick.direction = UP;
el14ws 0:4b8288518876 144 } else {
el14ws 0:4b8288518876 145 joystick.direction = UNKNOWN;
el14ws 0:4b8288518876 146 }
el14ws 0:4b8288518876 147 printFlag = 1;// set flag for printing
el14ws 0:4b8288518876 148 }
el14ws 2:3389133a2223 149 //void to generate food from a random array that is created. this array is smaller so that the food is not direcvtly next to the wall on the screen
el14ws 0:4b8288518876 150 void GenerateFood()
el14ws 0:4b8288518876 151 {
el14ws 2:3389133a2223 152 randX = (rand() %80)+2; //make random number between 2-82
el14ws 2:3389133a2223 153 randY = (rand() %43)+2; //make random number between 2 - 45
el14ws 0:4b8288518876 154 while(array[randY][randX]) {
el14ws 2:3389133a2223 155 randX= (rand() %80)+2;
el14ws 2:3389133a2223 156 randY= (rand() %44)+2;
el14ws 0:4b8288518876 157 }
el14ws 0:4b8288518876 158 array[randY][randX]= 5;
el14ws 0:4b8288518876 159 }
el14ws 2:3389133a2223 160 //Void to set the individual starting pixels of the snake and also shows the correct location of the pixels as the snake grows
el14ws 0:4b8288518876 161 void MakeSnake()
el14ws 0:4b8288518876 162 {
el14ws 0:4b8288518876 163 array[y+36][x+5]= 1;
el14ws 0:4b8288518876 164 array[y1+36][x1+5]= 1;
el14ws 0:4b8288518876 165 array[y2+36][x2+5]= 1;
el14ws 0:4b8288518876 166 array[y3+36][x3+5]= 1;
el14ws 0:4b8288518876 167 array[y4+36][x4+5]= 1;
el14ws 0:4b8288518876 168 array[y5+36][x5+5]= 0;
el14ws 0:4b8288518876 169 array[y6+36][x6+5]= 0;
el14ws 0:4b8288518876 170 array[y7+36][x7+5]= 0;
el14ws 0:4b8288518876 171 array[y8+36][x7+5]= 0;
el14ws 0:4b8288518876 172 array[y9+36][x9+5]= 0;
el14ws 0:4b8288518876 173 array[y10+36][x10+5]= 0;
el14ws 0:4b8288518876 174 array[y11+36][x11+5]= 0;
el14ws 0:4b8288518876 175 array[y12+36][x12+5]= 0;
el14ws 2:3389133a2223 176 array[y13+36][x13+5]= 0; //SETS POSITION OF SNAKE ORGINALLY
el14ws 0:4b8288518876 177 array[y14+36][x14+5]= 0;
el14ws 0:4b8288518876 178 array[y15+36][x15+5]= 0;
el14ws 0:4b8288518876 179 array[y16+36][x16+5]= 0;
el14ws 0:4b8288518876 180 array[y17+36][x17+5]= 0;
el14ws 0:4b8288518876 181 array[y18+36][x18+5]= 0;
el14ws 0:4b8288518876 182 array[y19+36][x19+5]= 0;
el14ws 0:4b8288518876 183 array[y20+36][x20+5]= 0;
el14ws 0:4b8288518876 184 array[y21+36][x21+5]= 0;
el14ws 0:4b8288518876 185 array[y22+36][x22+5]= 0;
el14ws 0:4b8288518876 186 array[y23+36][x23+5]= 0;
el14ws 0:4b8288518876 187 array[y24+36][x24+5]= 0;
el14ws 0:4b8288518876 188 }
el14ws 2:3389133a2223 189 //Void that actually runs throuhg the ruls of snake
el14ws 0:4b8288518876 190 void SnakeGame()
el14ws 0:4b8288518876 191 {
el14ws 2:3389133a2223 192 MakeSnake(); // SNAKES CREATED
el14ws 2:3389133a2223 193 ClearArray(); //CLEARS EVERYTHING BAR SNAKE AND FOOD
el14ws 0:4b8288518876 194 DrawArray();
el14ws 2:3389133a2223 195 SnakeGrowing(); //SNAKE GROWS AS EATS FOOD
el14ws 2:3389133a2223 196 lcd.drawRect(0,0,83,46,0); //Draws a rectangle around the outside of the snake game in order to creat a WALL
el14ws 2:3389133a2223 197 lcd.refresh();
el14ws 0:4b8288518876 198 if(pause==0) {
el14ws 2:3389133a2223 199 MoveSnake(); //SNAKES MOVES AROUND
el14ws 2:3389133a2223 200 EndGame(); //When snake hits itself or wall it ENDS GAME
el14ws 2:3389133a2223 201 Winner(); //When maximum points are scored shows message saying YOU WINNN
el14ws 0:4b8288518876 202 }
el14ws 0:4b8288518876 203 if(y+36==randY && x+5==randX) {
el14ws 2:3389133a2223 204 GenerateFood(); // When food is eaten create new food
el14ws 2:3389133a2223 205
el14ws 0:4b8288518876 206
el14ws 2:3389133a2223 207 Score= Score+10; //When food is eaten add 10 onto the score
el14ws 2:3389133a2223 208
el14ws 2:3389133a2223 209 }
el14ws 2:3389133a2223 210 if(y+36==randY && x+5==randX) {
el14ws 2:3389133a2223 211 LED=!LED; //switch on when food is eaten
el14ws 0:4b8288518876 212 }
el14ws 0:4b8288518876 213
el14ws 2:3389133a2223 214
el14ws 0:4b8288518876 215 }
el14ws 2:3389133a2223 216 //void that enables snake to move from pixel to pixel whilst following the head
el14ws 0:4b8288518876 217 void MoveSnake()
el14ws 0:4b8288518876 218 {
el14ws 0:4b8288518876 219 array[y+36][x+5]= 0;
el14ws 0:4b8288518876 220
el14ws 0:4b8288518876 221 array[y1+36][x1+5]= 0;
el14ws 0:4b8288518876 222
el14ws 0:4b8288518876 223 array[y2+36][x2+5]= 0;
el14ws 0:4b8288518876 224
el14ws 0:4b8288518876 225 array[y3+36][x3+5]= 0;
el14ws 0:4b8288518876 226
el14ws 0:4b8288518876 227 array[y4+36][x4+5]= 0;
el14ws 0:4b8288518876 228
el14ws 0:4b8288518876 229 array[y5+36][x5+5]= 0;
el14ws 0:4b8288518876 230
el14ws 0:4b8288518876 231 array[y6+36][x6+5]= 0;
el14ws 0:4b8288518876 232
el14ws 0:4b8288518876 233 array[y7+36][x7+5]= 0;
el14ws 0:4b8288518876 234
el14ws 0:4b8288518876 235 array[y8+36][x8+5]= 0;
el14ws 0:4b8288518876 236
el14ws 0:4b8288518876 237 array[y9+36][x9+5]= 0;
el14ws 0:4b8288518876 238
el14ws 0:4b8288518876 239 array[y10+36][x10+5]= 0;
el14ws 0:4b8288518876 240
el14ws 2:3389133a2223 241 array[y11+36][x11+5]= 0; //DIFFERENT VALUES OF SNAKE BODY FOLLOWING THE SNAKE HEAD
el14ws 0:4b8288518876 242
el14ws 0:4b8288518876 243 array[y12+36][x12+5]= 0;
el14ws 0:4b8288518876 244
el14ws 0:4b8288518876 245 array[y13+36][x13+5]= 0;
el14ws 0:4b8288518876 246
el14ws 0:4b8288518876 247 array[y14+36][x14+5]= 0;
el14ws 0:4b8288518876 248
el14ws 0:4b8288518876 249 array[y15+36][x15+5]= 0;
el14ws 0:4b8288518876 250
el14ws 0:4b8288518876 251 array[y16+36][x16+5]= 0;
el14ws 0:4b8288518876 252
el14ws 0:4b8288518876 253 array[y17+36][x17+5]= 0;
el14ws 0:4b8288518876 254
el14ws 0:4b8288518876 255 array[y18+36][x18+5]= 0;
el14ws 0:4b8288518876 256
el14ws 0:4b8288518876 257 array[y19+36][x19+5]= 0;
el14ws 0:4b8288518876 258
el14ws 0:4b8288518876 259 array[y20+36][x20+5]= 0;
el14ws 0:4b8288518876 260
el14ws 0:4b8288518876 261 array[y21+36][x21+5]= 0;
el14ws 0:4b8288518876 262
el14ws 0:4b8288518876 263 array[y22+36][x22+5]= 0;
el14ws 0:4b8288518876 264
el14ws 0:4b8288518876 265 array[y23+36][x23+5]= 0;
el14ws 0:4b8288518876 266
el14ws 0:4b8288518876 267 array[y24+36][x24+5]= 0;
el14ws 0:4b8288518876 268
el14ws 0:4b8288518876 269 x24=x23;
el14ws 0:4b8288518876 270 y24=y23;
el14ws 0:4b8288518876 271 x23=x22;
el14ws 0:4b8288518876 272 y23=y22;
el14ws 0:4b8288518876 273 x22=x21;
el14ws 0:4b8288518876 274 y22=y21;
el14ws 0:4b8288518876 275 x21=x20;
el14ws 0:4b8288518876 276 y21=y20;
el14ws 0:4b8288518876 277 x20=x19;
el14ws 0:4b8288518876 278 y20=y19;
el14ws 0:4b8288518876 279 x19=x18;
el14ws 2:3389133a2223 280 y19=y18; //MAKES THE PIXELS FOLLOWING
el14ws 0:4b8288518876 281 x18=x17;
el14ws 0:4b8288518876 282 y18=y17;
el14ws 0:4b8288518876 283 x17=x16;
el14ws 0:4b8288518876 284 y17=y16;
el14ws 0:4b8288518876 285 x16=x15;
el14ws 0:4b8288518876 286 y16=y15;
el14ws 0:4b8288518876 287 x15=x14;
el14ws 0:4b8288518876 288 y15=y14;
el14ws 0:4b8288518876 289 x14=x13;
el14ws 0:4b8288518876 290 y14=y13;
el14ws 0:4b8288518876 291 x13=x12;
el14ws 0:4b8288518876 292 y13=y12;
el14ws 0:4b8288518876 293 x12=x11;
el14ws 0:4b8288518876 294 y12=y11;
el14ws 2:3389133a2223 295 x11=x10;
el14ws 0:4b8288518876 296 y11=y10;
el14ws 0:4b8288518876 297 x10=x9;
el14ws 0:4b8288518876 298 y10=y9;
el14ws 0:4b8288518876 299 x9=x8;
el14ws 0:4b8288518876 300 y9=y8;
el14ws 0:4b8288518876 301 x8=x7;
el14ws 0:4b8288518876 302 y8=y7;
el14ws 0:4b8288518876 303 x7=x6;
el14ws 0:4b8288518876 304 y7=y6;
el14ws 0:4b8288518876 305 x6=x5;
el14ws 0:4b8288518876 306 y6=y5;
el14ws 0:4b8288518876 307 x5=x4;
el14ws 0:4b8288518876 308 y5=y4;
el14ws 0:4b8288518876 309 x4=x3;
el14ws 0:4b8288518876 310 y4=y3;
el14ws 0:4b8288518876 311 x3=x2;
el14ws 0:4b8288518876 312 y3=y2;
el14ws 0:4b8288518876 313 x2=x1;
el14ws 0:4b8288518876 314 y2=y1;
el14ws 0:4b8288518876 315 x1 = x;
el14ws 0:4b8288518876 316 y1 = y;
el14ws 2:3389133a2223 317 if (joystick.direction == CENTRE) { //when joystick is at the centre the snake stays the same
el14ws 2:3389133a2223 318
el14ws 0:4b8288518876 319 wait(0.05);
el14ws 2:3389133a2223 320 } else if (joystick.direction == UP) { //when joystick is in the up position it minus the y value from the array
el14ws 2:3389133a2223 321
el14ws 2:3389133a2223 322 wait(0.05);
el14ws 2:3389133a2223 323 //y--;
el14ws 0:4b8288518876 324 change = 1;
el14ws 2:3389133a2223 325
el14ws 2:3389133a2223 326 } else if (joystick.direction == DOWN) {//when joystick is in the up position it adds the y value from the array
el14ws 0:4b8288518876 327 wait(0.05);
el14ws 0:4b8288518876 328 change = 2;
el14ws 1:44cc07feab7e 329 //y++;
el14ws 2:3389133a2223 330 } else if (joystick.direction == LEFT) {//when joystick is in the up position it minus the x value from the array
el14ws 2:3389133a2223 331
el14ws 0:4b8288518876 332 wait(0.05);
el14ws 1:44cc07feab7e 333 //x--;
el14ws 0:4b8288518876 334 change = 3;
el14ws 2:3389133a2223 335 } else if (joystick.direction == RIGHT) {//when joystick is in the up position it adds the x value from the array
el14ws 0:4b8288518876 336 wait(0.05);
el14ws 1:44cc07feab7e 337 //x++;
el14ws 0:4b8288518876 338 change = 4;
el14ws 0:4b8288518876 339 }
el14ws 2:3389133a2223 340 if (change == 1) { //change one makes snake go up
el14ws 2:3389133a2223 341 y--;
el14ws 2:3389133a2223 342
el14ws 2:3389133a2223 343 } else if (change == 2) { //change 2 makes snake go down
el14ws 2:3389133a2223 344 y++;
el14ws 1:44cc07feab7e 345
el14ws 2:3389133a2223 346 } else if (change == 3) { //change 3 makes snake go left
el14ws 2:3389133a2223 347 x--;
el14ws 2:3389133a2223 348 } else if (change == 4) { //change 4 makes snake go right
el14ws 2:3389133a2223 349 x++;
el14ws 0:4b8288518876 350 }
el14ws 2:3389133a2223 351
el14ws 2:3389133a2223 352 }//void makes snake grow depending on what the score is
el14ws 2:3389133a2223 353 void SnakeGrowing()
el14ws 2:3389133a2223 354 {
el14ws 0:4b8288518876 355
el14ws 0:4b8288518876 356
el14ws 2:3389133a2223 357 if(Score>=10) {
el14ws 2:3389133a2223 358 array[y+36][x+5]= 1;
el14ws 0:4b8288518876 359
el14ws 2:3389133a2223 360 array[y1+36][x1+5]= 1;
el14ws 0:4b8288518876 361
el14ws 2:3389133a2223 362 array[y2+36][x2+5]= 1; //Snake grows to this length when scores 10
el14ws 0:4b8288518876 363
el14ws 2:3389133a2223 364 array[y3+36][x3+5]= 1;
el14ws 0:4b8288518876 365
el14ws 2:3389133a2223 366 array[y4+36][x4+5]= 1;
el14ws 0:4b8288518876 367
el14ws 2:3389133a2223 368 array[y5+36][x5+5]= 1;
el14ws 0:4b8288518876 369
el14ws 2:3389133a2223 370 array[y6+36][x6+5]= 1;
el14ws 0:4b8288518876 371
el14ws 2:3389133a2223 372 }
el14ws 0:4b8288518876 373
el14ws 0:4b8288518876 374
el14ws 2:3389133a2223 375 if(Score>=20) {
el14ws 2:3389133a2223 376 array[y+36][x+5]= 1;
el14ws 0:4b8288518876 377
el14ws 2:3389133a2223 378 array[y1+36][x1+5]= 1;
el14ws 0:4b8288518876 379
el14ws 2:3389133a2223 380 array[y2+36][x2+5]= 1;
el14ws 0:4b8288518876 381
el14ws 2:3389133a2223 382 array[y3+36][x3+5]= 1;
el14ws 0:4b8288518876 383
el14ws 2:3389133a2223 384 array[y4+36][x4+5]= 1; //Snake grows to this length when scores 20
el14ws 0:4b8288518876 385
el14ws 2:3389133a2223 386 array[y5+36][x5+5]= 1;
el14ws 0:4b8288518876 387
el14ws 2:3389133a2223 388 array[y6+36][x6+5]= 1;
el14ws 0:4b8288518876 389
el14ws 2:3389133a2223 390 array[y7+36][x7+5]= 2;
el14ws 0:4b8288518876 391
el14ws 2:3389133a2223 392 array[y8+36][x8+5]= 2;
el14ws 2:3389133a2223 393 }
el14ws 2:3389133a2223 394 if(Score>=30) {
el14ws 2:3389133a2223 395 array[y+36][x+5]= 1;
el14ws 0:4b8288518876 396
el14ws 2:3389133a2223 397 array[y1+36][x1+5]= 1;
el14ws 0:4b8288518876 398
el14ws 2:3389133a2223 399 array[y2+36][x2+5]= 1;
el14ws 0:4b8288518876 400
el14ws 2:3389133a2223 401 array[y3+36][x3+5]= 1;
el14ws 0:4b8288518876 402
el14ws 2:3389133a2223 403 array[y4+36][x4+5]= 1;
el14ws 0:4b8288518876 404
el14ws 2:3389133a2223 405 array[y5+36][x5+5]= 1;//Snake grows to this length when scores 30
el14ws 0:4b8288518876 406
el14ws 2:3389133a2223 407 array[y6+36][x6+5]= 1;
el14ws 0:4b8288518876 408
el14ws 2:3389133a2223 409 array[y7+36][x7+5]= 2;
el14ws 0:4b8288518876 410
el14ws 2:3389133a2223 411 array[y8+36][x8+5]= 2;
el14ws 0:4b8288518876 412
el14ws 2:3389133a2223 413 array[y9+36][x9+5]= 2;
el14ws 0:4b8288518876 414
el14ws 2:3389133a2223 415 array[y10+36][x10+5]= 2;
el14ws 0:4b8288518876 416
el14ws 2:3389133a2223 417 }
el14ws 2:3389133a2223 418 if(Score>=40) {
el14ws 0:4b8288518876 419 array[y+36][x+5]= 1;
el14ws 0:4b8288518876 420
el14ws 0:4b8288518876 421 array[y1+36][x1+5]= 1;
el14ws 0:4b8288518876 422
el14ws 0:4b8288518876 423 array[y2+36][x2+5]= 1;
el14ws 0:4b8288518876 424
el14ws 0:4b8288518876 425 array[y3+36][x3+5]= 1;
el14ws 0:4b8288518876 426
el14ws 0:4b8288518876 427 array[y4+36][x4+5]= 1;
el14ws 0:4b8288518876 428
el14ws 0:4b8288518876 429 array[y5+36][x5+5]= 1;
el14ws 0:4b8288518876 430
el14ws 2:3389133a2223 431 array[y6+36][x6+5]= 1;//Snake grows to this length when scores 40
el14ws 2:3389133a2223 432
el14ws 2:3389133a2223 433 array[y7+36][x7+5]= 2;
el14ws 2:3389133a2223 434
el14ws 2:3389133a2223 435 array[y8+36][x8+5]= 2;
el14ws 2:3389133a2223 436
el14ws 2:3389133a2223 437 array[y9+36][x9+5]= 2;
el14ws 2:3389133a2223 438
el14ws 2:3389133a2223 439 array[y10+36][x10+5]= 2;
el14ws 2:3389133a2223 440
el14ws 2:3389133a2223 441 array[y11+36][x11+5]= 2;
el14ws 2:3389133a2223 442
el14ws 2:3389133a2223 443 array[y12+36][x12+5]= 2;
el14ws 2:3389133a2223 444
el14ws 2:3389133a2223 445 }
el14ws 2:3389133a2223 446
el14ws 2:3389133a2223 447 if(Score>=50) {
el14ws 2:3389133a2223 448 array[y+36][x+5]= 1;
el14ws 2:3389133a2223 449
el14ws 2:3389133a2223 450 array[y1+36][x1+5]= 1;
el14ws 2:3389133a2223 451
el14ws 2:3389133a2223 452 array[y2+36][x2+5]= 1;
el14ws 2:3389133a2223 453
el14ws 2:3389133a2223 454 array[y3+36][x3+5]= 1;
el14ws 2:3389133a2223 455
el14ws 2:3389133a2223 456 array[y4+36][x4+5]= 1;
el14ws 2:3389133a2223 457
el14ws 2:3389133a2223 458 array[y5+36][x5+5]= 1; //Snake grows to this length when scores 50
el14ws 2:3389133a2223 459
el14ws 0:4b8288518876 460 array[y6+36][x6+5]= 1;
el14ws 0:4b8288518876 461
el14ws 2:3389133a2223 462 array[y7+36][x7+5]= 2;
el14ws 0:4b8288518876 463
el14ws 2:3389133a2223 464 array[y8+36][x8+5]= 2;
el14ws 0:4b8288518876 465
el14ws 2:3389133a2223 466 array[y9+36][x9+5]= 2;
el14ws 0:4b8288518876 467
el14ws 2:3389133a2223 468 array[y10+36][x10+5]= 2;
el14ws 0:4b8288518876 469
el14ws 2:3389133a2223 470 array[y11+36][x11+5]= 2;
el14ws 0:4b8288518876 471
el14ws 2:3389133a2223 472 array[y12+36][x12+5]= 2;
el14ws 0:4b8288518876 473
el14ws 2:3389133a2223 474 array[y13+36][x13+5]= 2;
el14ws 0:4b8288518876 475
el14ws 2:3389133a2223 476 array[y14+36][x14+5]= 2;
el14ws 0:4b8288518876 477
el14ws 0:4b8288518876 478 }
el14ws 0:4b8288518876 479 if(Score>=60) {
el14ws 0:4b8288518876 480 array[y+36][x+5]= 1;
el14ws 0:4b8288518876 481
el14ws 0:4b8288518876 482 array[y1+36][x1+5]= 1;
el14ws 0:4b8288518876 483
el14ws 0:4b8288518876 484 array[y2+36][x2+5]= 1;
el14ws 0:4b8288518876 485
el14ws 0:4b8288518876 486 array[y3+36][x3+5]= 1;
el14ws 0:4b8288518876 487
el14ws 0:4b8288518876 488 array[y4+36][x4+5]= 1;
el14ws 0:4b8288518876 489
el14ws 0:4b8288518876 490 array[y5+36][x5+5]= 1;
el14ws 0:4b8288518876 491
el14ws 0:4b8288518876 492 array[y6+36][x6+5]= 1;
el14ws 0:4b8288518876 493
el14ws 2:3389133a2223 494 array[y7+36][x7+5]= 2; //Snake grows to this length when scores 60
el14ws 0:4b8288518876 495
el14ws 2:3389133a2223 496 array[y8+36][x8+5]= 2;
el14ws 0:4b8288518876 497
el14ws 2:3389133a2223 498 array[y9+36][x9+5]= 2;
el14ws 0:4b8288518876 499
el14ws 2:3389133a2223 500 array[y10+36][x10+5]= 2;
el14ws 0:4b8288518876 501
el14ws 2:3389133a2223 502 array[y11+36][x11+5]= 2;
el14ws 0:4b8288518876 503
el14ws 2:3389133a2223 504 array[y12+36][x12+5]= 2;
el14ws 0:4b8288518876 505
el14ws 2:3389133a2223 506 array[y13+36][x13+5]= 2;
el14ws 0:4b8288518876 507
el14ws 2:3389133a2223 508 array[y14+36][x14+5]= 2;
el14ws 0:4b8288518876 509
el14ws 2:3389133a2223 510 array[y15+36][x15+5]= 2;
el14ws 0:4b8288518876 511
el14ws 2:3389133a2223 512 array[y16+36][x16+5]= 2;
el14ws 0:4b8288518876 513
el14ws 0:4b8288518876 514 }
el14ws 0:4b8288518876 515 if(Score>=70) {
el14ws 0:4b8288518876 516 array[y+36][x+5]= 1;
el14ws 0:4b8288518876 517
el14ws 0:4b8288518876 518 array[y1+36][x1+5]= 1;
el14ws 0:4b8288518876 519
el14ws 0:4b8288518876 520 array[y2+36][x2+5]= 1;
el14ws 0:4b8288518876 521
el14ws 0:4b8288518876 522 array[y3+36][x3+5]= 1;
el14ws 0:4b8288518876 523
el14ws 0:4b8288518876 524 array[y4+36][x4+5]= 1;
el14ws 0:4b8288518876 525
el14ws 0:4b8288518876 526 array[y5+36][x5+5]= 1;
el14ws 0:4b8288518876 527
el14ws 2:3389133a2223 528 array[y6+36][x6+5]= 1; //Snake grows to this length when scores 70
el14ws 0:4b8288518876 529
el14ws 2:3389133a2223 530 array[y7+36][x7+5]= 2;
el14ws 0:4b8288518876 531
el14ws 2:3389133a2223 532 array[y8+36][x8+5]= 2;
el14ws 0:4b8288518876 533
el14ws 2:3389133a2223 534 array[y9+36][x9+5]= 2;
el14ws 0:4b8288518876 535
el14ws 2:3389133a2223 536 array[y10+36][x10+5]= 2;
el14ws 0:4b8288518876 537
el14ws 2:3389133a2223 538 array[y11+36][x11+5]= 2;
el14ws 0:4b8288518876 539
el14ws 2:3389133a2223 540 array[y12+36][x12+5]= 2;
el14ws 0:4b8288518876 541
el14ws 2:3389133a2223 542 array[y13+36][x13+5]= 2;
el14ws 0:4b8288518876 543
el14ws 2:3389133a2223 544 array[y14+36][x14+5]= 2;
el14ws 0:4b8288518876 545
el14ws 2:3389133a2223 546 array[y15+36][x15+5]= 2;
el14ws 0:4b8288518876 547
el14ws 2:3389133a2223 548 array[y16+36][x16+5]= 2;
el14ws 0:4b8288518876 549
el14ws 2:3389133a2223 550 array[y17+36][x17+5]= 2;
el14ws 0:4b8288518876 551
el14ws 2:3389133a2223 552 array[y18+36][x18+5]= 2;
el14ws 0:4b8288518876 553
el14ws 0:4b8288518876 554 }
el14ws 0:4b8288518876 555 if(Score>=80) {
el14ws 0:4b8288518876 556 array[y+36][x+5]= 1;
el14ws 0:4b8288518876 557
el14ws 0:4b8288518876 558 array[y1+36][x1+5]= 1;
el14ws 0:4b8288518876 559
el14ws 0:4b8288518876 560 array[y2+36][x2+5]= 1;
el14ws 0:4b8288518876 561
el14ws 0:4b8288518876 562 array[y3+36][x3+5]= 1;
el14ws 0:4b8288518876 563
el14ws 0:4b8288518876 564 array[y4+36][x4+5]= 1;
el14ws 0:4b8288518876 565
el14ws 0:4b8288518876 566 array[y5+36][x5+5]= 1;
el14ws 0:4b8288518876 567
el14ws 0:4b8288518876 568 array[y6+36][x6+5]= 1;
el14ws 0:4b8288518876 569
el14ws 2:3389133a2223 570 array[y7+36][x7+5]= 2;
el14ws 0:4b8288518876 571
el14ws 2:3389133a2223 572 array[y8+36][x8+5]= 2;
el14ws 0:4b8288518876 573
el14ws 2:3389133a2223 574 array[y9+36][x9+5]= 2;
el14ws 0:4b8288518876 575
el14ws 2:3389133a2223 576 array[y10+36][x10+5]= 2; //Snake grows to this length when scores 80
el14ws 0:4b8288518876 577
el14ws 2:3389133a2223 578 array[y11+36][x11+5]= 2;
el14ws 0:4b8288518876 579
el14ws 2:3389133a2223 580 array[y12+36][x12+5]= 2;
el14ws 0:4b8288518876 581
el14ws 2:3389133a2223 582 array[y13+36][x13+5]= 2;
el14ws 0:4b8288518876 583
el14ws 2:3389133a2223 584 array[y14+36][x14+5]= 2;
el14ws 0:4b8288518876 585
el14ws 2:3389133a2223 586 array[y15+36][x15+5]= 2;
el14ws 0:4b8288518876 587
el14ws 2:3389133a2223 588 array[y16+36][x16+5]= 2;
el14ws 0:4b8288518876 589
el14ws 2:3389133a2223 590 array[y17+36][x17+5]= 2;
el14ws 0:4b8288518876 591
el14ws 2:3389133a2223 592 array[y18+36][x18+5]= 2;
el14ws 0:4b8288518876 593
el14ws 2:3389133a2223 594 array[y19+36][x19+5]= 2;
el14ws 0:4b8288518876 595
el14ws 2:3389133a2223 596 array[y20+36][x20+5]= 2;
el14ws 0:4b8288518876 597
el14ws 0:4b8288518876 598 }
el14ws 0:4b8288518876 599 if(Score>=90) {
el14ws 0:4b8288518876 600 array[y+36][x+5]= 1;
el14ws 0:4b8288518876 601
el14ws 0:4b8288518876 602 array[y1+36][x1+5]= 1;
el14ws 0:4b8288518876 603
el14ws 0:4b8288518876 604 array[y2+36][x2+5]= 1;
el14ws 0:4b8288518876 605
el14ws 0:4b8288518876 606 array[y3+36][x3+5]= 1;
el14ws 0:4b8288518876 607
el14ws 0:4b8288518876 608 array[y4+36][x4+5]= 1;
el14ws 0:4b8288518876 609
el14ws 0:4b8288518876 610 array[y5+36][x5+5]= 1;
el14ws 0:4b8288518876 611
el14ws 0:4b8288518876 612 array[y6+36][x6+5]= 1;
el14ws 0:4b8288518876 613
el14ws 2:3389133a2223 614 array[y7+36][x7+5]= 2;
el14ws 0:4b8288518876 615
el14ws 2:3389133a2223 616 array[y8+36][x8+5]= 2; //Snake grows to this length when scores 90
el14ws 0:4b8288518876 617
el14ws 2:3389133a2223 618 array[y9+36][x9+5]= 2;
el14ws 0:4b8288518876 619
el14ws 2:3389133a2223 620 array[y10+36][x10+5]= 2;
el14ws 0:4b8288518876 621
el14ws 2:3389133a2223 622 array[y11+36][x11+5]= 2;
el14ws 0:4b8288518876 623
el14ws 2:3389133a2223 624 array[y12+36][x12+5]= 2;
el14ws 0:4b8288518876 625
el14ws 2:3389133a2223 626 array[y13+36][x13+5]= 2;
el14ws 0:4b8288518876 627
el14ws 2:3389133a2223 628 array[y14+36][x14+5]= 2;
el14ws 0:4b8288518876 629
el14ws 2:3389133a2223 630 array[y15+36][x15+5]= 2;
el14ws 0:4b8288518876 631
el14ws 2:3389133a2223 632 array[y16+36][x16+5]= 2;
el14ws 0:4b8288518876 633
el14ws 2:3389133a2223 634 array[y17+36][x17+5]= 2;
el14ws 0:4b8288518876 635
el14ws 2:3389133a2223 636 array[y18+36][x18+5]= 2;
el14ws 0:4b8288518876 637
el14ws 2:3389133a2223 638 array[y19+36][x19+5]= 2;
el14ws 0:4b8288518876 639
el14ws 2:3389133a2223 640 array[y20+36][x20+5]= 2;
el14ws 0:4b8288518876 641
el14ws 2:3389133a2223 642 array[y21+36][x21+5]= 2;
el14ws 2:3389133a2223 643 array[y22+36][x22+5]= 2;
el14ws 0:4b8288518876 644
el14ws 0:4b8288518876 645 }
el14ws 0:4b8288518876 646 if(Score>=100) {
el14ws 0:4b8288518876 647 array[y+36][x+5]= 1;
el14ws 0:4b8288518876 648
el14ws 0:4b8288518876 649 array[y1+36][x1+5]= 1;
el14ws 0:4b8288518876 650
el14ws 0:4b8288518876 651 array[y2+36][x2+5]= 1;
el14ws 0:4b8288518876 652
el14ws 0:4b8288518876 653 array[y3+36][x3+5]= 1;
el14ws 0:4b8288518876 654
el14ws 0:4b8288518876 655 array[y4+36][x4+5]= 1;
el14ws 0:4b8288518876 656
el14ws 0:4b8288518876 657 array[y5+36][x5+5]= 1;
el14ws 0:4b8288518876 658
el14ws 0:4b8288518876 659 array[y6+36][x6+5]= 1;
el14ws 0:4b8288518876 660
el14ws 2:3389133a2223 661 array[y7+36][x7+5]= 2;
el14ws 0:4b8288518876 662
el14ws 2:3389133a2223 663 array[y8+36][x8+5]= 2;
el14ws 0:4b8288518876 664
el14ws 2:3389133a2223 665 array[y9+36][x9+5]= 2;
el14ws 0:4b8288518876 666
el14ws 2:3389133a2223 667 array[y10+36][x10+5]= 2;
el14ws 0:4b8288518876 668
el14ws 2:3389133a2223 669 array[y11+36][x11+5]= 2;
el14ws 0:4b8288518876 670
el14ws 2:3389133a2223 671 array[y12+36][x12+5]= 2; //Snake grows to this length when scores 100
el14ws 0:4b8288518876 672
el14ws 2:3389133a2223 673 array[y13+36][x13+5]= 2;
el14ws 0:4b8288518876 674
el14ws 2:3389133a2223 675 array[y14+36][x14+5]= 2;
el14ws 0:4b8288518876 676
el14ws 2:3389133a2223 677 array[y15+36][x15+5]= 2;
el14ws 0:4b8288518876 678
el14ws 2:3389133a2223 679 array[y16+36][x16+5]= 2;
el14ws 0:4b8288518876 680
el14ws 2:3389133a2223 681 array[y17+36][x17+5]= 2;
el14ws 0:4b8288518876 682
el14ws 2:3389133a2223 683 array[y18+36][x18+5]= 2;
el14ws 0:4b8288518876 684
el14ws 2:3389133a2223 685 array[y19+36][x19+5]= 2;
el14ws 0:4b8288518876 686
el14ws 2:3389133a2223 687 array[y20+36][x20+5]= 2;
el14ws 0:4b8288518876 688
el14ws 2:3389133a2223 689 array[y21+36][x21+5]= 2;
el14ws 0:4b8288518876 690
el14ws 2:3389133a2223 691 array[y22+36][x22+5]= 2;
el14ws 0:4b8288518876 692
el14ws 2:3389133a2223 693 array[y23+36][x23+5]= 2;
el14ws 0:4b8288518876 694
el14ws 2:3389133a2223 695 array[y24+36][x24+5]= 2;
el14ws 0:4b8288518876 696
el14ws 0:4b8288518876 697 }
el14ws 2:3389133a2223 698 DrawArray(); // draws snake
el14ws 0:4b8288518876 699
el14ws 0:4b8288518876 700
el14ws 0:4b8288518876 701
el14ws 0:4b8288518876 702 }
el14ws 0:4b8288518876 703
el14ws 2:3389133a2223 704 //void that ends game when snake hits the wall or snake eats itself
el14ws 2:3389133a2223 705 void EndGame()
el14ws 0:4b8288518876 706 {
el14ws 2:3389133a2223 707
el14ws 2:3389133a2223 708 if(y+36==46||y+36==0||x+5==83||x+5==0) { //checks if the snake head is equal to any pixels that are out of bounds
el14ws 2:3389133a2223 709 GameOver();
el14ws 2:3389133a2223 710 wait(3);
el14ws 0:4b8288518876 711
el14ws 0:4b8288518876 712 }
el14ws 0:4b8288518876 713 }
el14ws 2:3389133a2223 714 //void to show when game is ended. shows GAMEOVER and the score that the user has
el14ws 2:3389133a2223 715 void GameOver()
el14ws 2:3389133a2223 716 {
el14ws 2:3389133a2223 717
el14ws 2:3389133a2223 718 // first need to initialise display
el14ws 2:3389133a2223 719
el14ws 2:3389133a2223 720 lcd.clear();
el14ws 2:3389133a2223 721 lcd.printString("GAME OVER",15,1); // print GAME OVER
el14ws 2:3389133a2223 722 sprintf(str,"%d",Score);
el14ws 2:3389133a2223 723 lcd.printString(str,37,3); // shows score in centre of screen
el14ws 2:3389133a2223 724 lcd.printString("Press Button",6,5); // shows press button to return to menu
el14ws 2:3389133a2223 725 while(1) {
el14ws 2:3389133a2223 726 if (buttonA==1) {
el14ws 2:3389133a2223 727 lcd.clear();
el14ws 2:3389133a2223 728 checkerBoard();
el14ws 2:3389133a2223 729 wait(0.5);
el14ws 2:3389133a2223 730 lcd.clear();
el14ws 2:3389133a2223 731 x = 0;
el14ws 2:3389133a2223 732 x1 = 0;
el14ws 2:3389133a2223 733 x2 = 0;
el14ws 2:3389133a2223 734 x3 = 0;
el14ws 2:3389133a2223 735 x4 = 0;
el14ws 2:3389133a2223 736 x5 = 0;
el14ws 2:3389133a2223 737 x6 = 0;
el14ws 2:3389133a2223 738 x7 = 0;
el14ws 2:3389133a2223 739 x8 = 0;
el14ws 2:3389133a2223 740 x9 = 0;
el14ws 2:3389133a2223 741 x10 = 0;
el14ws 2:3389133a2223 742 x11 = 0;
el14ws 2:3389133a2223 743 x12 = 0;
el14ws 2:3389133a2223 744 x13 = 0;
el14ws 2:3389133a2223 745 x14 = 0;
el14ws 2:3389133a2223 746 x15 = 0; // SETS ALL VALUES BACK TO ORGINAL SO GAME CAN START AGAIN
el14ws 2:3389133a2223 747 x16 = 0;
el14ws 2:3389133a2223 748 x17 = 0;
el14ws 2:3389133a2223 749 x18 = 0;
el14ws 2:3389133a2223 750 x19 = 0;
el14ws 2:3389133a2223 751 x20 = 0;
el14ws 2:3389133a2223 752 x21 = 0;
el14ws 2:3389133a2223 753 x22 = 0;
el14ws 2:3389133a2223 754 x23 = 0;
el14ws 2:3389133a2223 755 x24 = 0;
el14ws 2:3389133a2223 756 y = 0;
el14ws 2:3389133a2223 757 y1 = 1;
el14ws 2:3389133a2223 758 y2 = 2;
el14ws 2:3389133a2223 759 y3 = 3;
el14ws 2:3389133a2223 760 y4 = 4;
el14ws 2:3389133a2223 761 y5 = 5;
el14ws 2:3389133a2223 762 y6 = 6;
el14ws 2:3389133a2223 763 y7 = 7;
el14ws 2:3389133a2223 764 y8 = 8;
el14ws 2:3389133a2223 765 y9 = 9;
el14ws 2:3389133a2223 766 y10 = 10;
el14ws 2:3389133a2223 767 y11 = 11;
el14ws 2:3389133a2223 768 y12 = 12;
el14ws 2:3389133a2223 769 y13 = 13;
el14ws 2:3389133a2223 770 y14 = 14;
el14ws 2:3389133a2223 771 y15 = 15;
el14ws 2:3389133a2223 772 y16 = 16;
el14ws 2:3389133a2223 773 y17 = 17;
el14ws 2:3389133a2223 774 y18 = 18;
el14ws 2:3389133a2223 775 y19 = 19;
el14ws 2:3389133a2223 776 y20 = 20;
el14ws 2:3389133a2223 777 y21 = 21;
el14ws 2:3389133a2223 778 y22 = 22;
el14ws 2:3389133a2223 779 y23 = 23;
el14ws 2:3389133a2223 780 y24 = 24;
el14ws 2:3389133a2223 781 change = 1;
el14ws 2:3389133a2223 782 pause=0;
el14ws 2:3389133a2223 783 Score=0;
el14ws 2:3389133a2223 784
el14ws 2:3389133a2223 785 Menu(); // returns to menu so game can start again
el14ws 2:3389133a2223 786
el14ws 2:3389133a2223 787 }
el14ws 2:3389133a2223 788 }
el14ws 2:3389133a2223 789 }
el14ws 2:3389133a2223 790 //void that comes up when the maximum score is achieved shows "YOU WIN" and shows the user the score
el14ws 2:3389133a2223 791 void Winner()
el14ws 2:3389133a2223 792 {
el14ws 2:3389133a2223 793 if(Score==110) { // when the score is equal to 110
el14ws 2:3389133a2223 794
el14ws 2:3389133a2223 795 lcd.clear();
el14ws 2:3389133a2223 796 lcd.printString("YOU WIN!!!",10,1); // Clear screen and show YOU WIN
el14ws 2:3389133a2223 797 sprintf(str,"%d",Score); // shows score in the centre of the page
el14ws 2:3389133a2223 798 lcd.printString(str,34,3);
el14ws 2:3389133a2223 799 lcd.printString("Press Button",6,5);
el14ws 2:3389133a2223 800 while(1) {
el14ws 2:3389133a2223 801 if (buttonA==1) { // when the button on the PCB the screen checkers and the Menu displayed
el14ws 2:3389133a2223 802 lcd.clear();
el14ws 2:3389133a2223 803 checkerBoard();
el14ws 2:3389133a2223 804 wait(0.5);
el14ws 2:3389133a2223 805 lcd.clear();
el14ws 2:3389133a2223 806 x = 0;
el14ws 2:3389133a2223 807 x1 = 0;
el14ws 2:3389133a2223 808 x2 = 0;
el14ws 2:3389133a2223 809 x3 = 0;
el14ws 2:3389133a2223 810 x4 = 0;
el14ws 2:3389133a2223 811 x5 = 0;
el14ws 2:3389133a2223 812 x6 = 0;
el14ws 2:3389133a2223 813 x7 = 0;
el14ws 2:3389133a2223 814 x8 = 0;
el14ws 2:3389133a2223 815 x9 = 0;
el14ws 2:3389133a2223 816 x10 = 0;
el14ws 2:3389133a2223 817 x11 = 0;
el14ws 2:3389133a2223 818 x12 = 0;
el14ws 2:3389133a2223 819 x13 = 0;
el14ws 2:3389133a2223 820 x14 = 0;
el14ws 2:3389133a2223 821 x15 = 0;
el14ws 2:3389133a2223 822 x16 = 0;
el14ws 2:3389133a2223 823 x17 = 0;
el14ws 2:3389133a2223 824 x18 = 0;
el14ws 2:3389133a2223 825 x19 = 0;
el14ws 2:3389133a2223 826 x20 = 0;
el14ws 2:3389133a2223 827 x21 = 0;
el14ws 2:3389133a2223 828 x22 = 0;
el14ws 2:3389133a2223 829 x23 = 0; // SET ALL VALUES BACK TO ORIGINAL VALUE
el14ws 2:3389133a2223 830 x24 = 0;
el14ws 2:3389133a2223 831 y = 0;
el14ws 2:3389133a2223 832 y1 = 1;
el14ws 2:3389133a2223 833 y2 = 2;
el14ws 2:3389133a2223 834 y3 = 3;
el14ws 2:3389133a2223 835 y4 = 4;
el14ws 2:3389133a2223 836 y5 = 5;
el14ws 2:3389133a2223 837 y6 = 6;
el14ws 2:3389133a2223 838 y7 = 7;
el14ws 2:3389133a2223 839 y8 = 8;
el14ws 2:3389133a2223 840 y9 = 9;
el14ws 2:3389133a2223 841 y10 = 10;
el14ws 2:3389133a2223 842 y11 = 11;
el14ws 2:3389133a2223 843 y12 = 12;
el14ws 2:3389133a2223 844 y13 = 13;
el14ws 2:3389133a2223 845 y14 = 14;
el14ws 2:3389133a2223 846 y15 = 15;
el14ws 2:3389133a2223 847 y16 = 16;
el14ws 2:3389133a2223 848 y17 = 17;
el14ws 2:3389133a2223 849 y18 = 18;
el14ws 2:3389133a2223 850 y19 = 19;
el14ws 2:3389133a2223 851 y20 = 20;
el14ws 2:3389133a2223 852 y21 = 21;
el14ws 2:3389133a2223 853 y22 = 22;
el14ws 2:3389133a2223 854 y23 = 23;
el14ws 2:3389133a2223 855 y24 = 24;
el14ws 2:3389133a2223 856 change = 1;
el14ws 2:3389133a2223 857 pause=0;
el14ws 2:3389133a2223 858 Score=0;
el14ws 2:3389133a2223 859
el14ws 2:3389133a2223 860 Menu(); //SHOW MENU
el14ws 2:3389133a2223 861
el14ws 2:3389133a2223 862 }
el14ws 2:3389133a2223 863 }
el14ws 2:3389133a2223 864 }
el14ws 2:3389133a2223 865 }