ELEC2645 (2015/16)
/
el14ws_Project
Snake Game
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 | } |