Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of ProjectSnake by
main.cpp@2:3389133a2223, 2016-05-05 (annotated)
- 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?
| User | Revision | Line number | New 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 | } |
