Konlatee Sittichaivijit / Mbed 2 deprecated PacManII

Dependencies:   N5110 PowerControl mbed

Committer:
el13ks
Date:
Tue Apr 28 11:33:53 2015 +0000
Revision:
16:237375c3fc62
Parent:
15:6d258c667a00
Child:
17:9a8a6516d63d
Winning and losing condition applied ; Ghost drawn

Who changed what in which revision?

UserRevisionLine numberNew contents of line
el13ks 16:237375c3fc62 1 /**
el13ks 16:237375c3fc62 2 @file main.cpp
el13ks 16:237375c3fc62 3
el13ks 16:237375c3fc62 4 @brief Program implementation
el13ks 16:237375c3fc62 5
el13ks 16:237375c3fc62 6 */
el13ks 16:237375c3fc62 7
el13ks 16:237375c3fc62 8
el13ks 16:237375c3fc62 9
el13ks 16:237375c3fc62 10
el13ks 16:237375c3fc62 11
el13ks 16:237375c3fc62 12
el13ks 16:237375c3fc62 13
el13ks 16:237375c3fc62 14
el13ks 16:237375c3fc62 15
el13ks 16:237375c3fc62 16 #include "main.h"
el13ks 0:1c3f3fe862f2 17 #include "mbed.h"
el13ks 0:1c3f3fe862f2 18 #include "N5110.h"
el13ks 16:237375c3fc62 19 #define DIRECTION_TOLERANCE 0.2// Tolerance of Joystick
el13ks 13:098319060433 20 #include "tone.h"
el13ks 13:098319060433 21 #define PI 3.14159265359
el13ks 13:098319060433 22 #include "PowerControl/PowerControl.h"
el13ks 13:098319060433 23 #include "PowerControl/EthernetPowerControl.h"
el13ks 0:1c3f3fe862f2 24 BusOut myleds(p24,p23,p22); //External LEDS
el13ks 15:6d258c667a00 25 volatile bool win=false ;
el13ks 16:237375c3fc62 26 volatile bool lose= false;
el13ks 0:1c3f3fe862f2 27 N5110 lcd(p7,p8,p9,p10,p11,p13,p26); //PWR, SCE, RST, DC, MOSI, SCLK, LED
el13ks 12:3f4d9cb7dd8a 28 AnalogIn bright(p20);//Pot to adjust brightness
el13ks 16:237375c3fc62 29 Timeout timer; //Create timeout object
el13ks 12:3f4d9cb7dd8a 30 DigitalIn Jbutton(p17);// Joystick Button
el13ks 0:1c3f3fe862f2 31 AnalogIn xPot(p15);// Joystick x-direction
el13ks 0:1c3f3fe862f2 32 AnalogIn yPot(p16);// Joystick y-direction
el13ks 16:237375c3fc62 33 InterruptIn button(p18);//Pause button
el13ks 16:237375c3fc62 34 Ticker pollJoystick; // timer to regularly read the joystick
el13ks 3:83c1d9cd97f1 35 int i=3; // Pacman's starting position
el13ks 5:61c3bbef19f0 36 int j = 3;
el13ks 13:098319060433 37 int buttonflag=0; // flag for pause button
el13ks 16:237375c3fc62 38 int x=67; // Ghost starting position
el13ks 16:237375c3fc62 39 int y = 44;
el13ks 13:098319060433 40 int timerflag=0;
el13ks 2:830feffe8462 41 int coinflag = 1;
el13ks 3:83c1d9cd97f1 42 int coinflag2 = 1;
el13ks 4:75c7277a1b88 43 int coinflag3 = 1;
el13ks 4:75c7277a1b88 44 int coinflag4 = 1;
el13ks 4:75c7277a1b88 45 int coinflag5 = 1;
el13ks 11:2fd81f59d7a7 46 int coinflag6 = 1;
el13ks 11:2fd81f59d7a7 47 int coinflag7 = 1;
el13ks 11:2fd81f59d7a7 48 int coinflag8 = 1;
el13ks 11:2fd81f59d7a7 49 int coinflag9 = 1;
el13ks 11:2fd81f59d7a7 50 int coinflag10 = 1;
el13ks 11:2fd81f59d7a7 51 int coinflag11= 1;
el13ks 11:2fd81f59d7a7 52 int coinflag12 = 1;
el13ks 11:2fd81f59d7a7 53 int coinflag13 = 1;
el13ks 11:2fd81f59d7a7 54 int coinflag14 = 1;
el13ks 11:2fd81f59d7a7 55 int coinflag15 = 1;
el13ks 11:2fd81f59d7a7 56 int coinflag16 = 1;
el13ks 11:2fd81f59d7a7 57 int coinflag17 = 1;
el13ks 11:2fd81f59d7a7 58 int coinflag18 = 1;
el13ks 11:2fd81f59d7a7 59 int coinflag19 = 1;
el13ks 11:2fd81f59d7a7 60 int coinflag20 = 1;
el13ks 11:2fd81f59d7a7 61 int coinflag21 = 1;
el13ks 11:2fd81f59d7a7 62 int coinflag22 = 1;
el13ks 6:af4d3c5a9d43 63
el13ks 1:98cc4f4a20dc 64
el13ks 0:1c3f3fe862f2 65 enum DirectionName { // create enumerated type (0,1,2,3 etc. for direction)
el13ks 0:1c3f3fe862f2 66 UP, // could be extended for diagonals etc.
el13ks 0:1c3f3fe862f2 67 DOWN,
el13ks 0:1c3f3fe862f2 68 LEFT,
el13ks 0:1c3f3fe862f2 69 RIGHT,
el13ks 0:1c3f3fe862f2 70 CENTRE,
el13ks 0:1c3f3fe862f2 71 UNKNOWN
el13ks 0:1c3f3fe862f2 72 };
el13ks 0:1c3f3fe862f2 73
el13ks 0:1c3f3fe862f2 74 typedef struct JoyStick Joystick; // struct for Joystick
el13ks 0:1c3f3fe862f2 75 struct JoyStick {
el13ks 0:1c3f3fe862f2 76 float x; // current x value
el13ks 0:1c3f3fe862f2 77 float x0; // 'centred' x value
el13ks 0:1c3f3fe862f2 78 float y; // current y value
el13ks 0:1c3f3fe862f2 79 float y0; // 'centred' y value
el13ks 0:1c3f3fe862f2 80 int button; // button state (assume pull-down used, so 1 = pressed, 0 = unpressed)
el13ks 0:1c3f3fe862f2 81 DirectionName direction; // current direction
el13ks 0:1c3f3fe862f2 82 };
el13ks 0:1c3f3fe862f2 83
el13ks 0:1c3f3fe862f2 84 Joystick joystick; // create struct variable
el13ks 0:1c3f3fe862f2 85
el13ks 0:1c3f3fe862f2 86
el13ks 0:1c3f3fe862f2 87 void calibrateJoystick() // read default positions of the joystick to calibrate later readings
el13ks 0:1c3f3fe862f2 88 {
el13ks 0:1c3f3fe862f2 89 button.mode(PullDown);
el13ks 0:1c3f3fe862f2 90 // must not move during calibration
el13ks 0:1c3f3fe862f2 91 joystick.x0 = xPot; // initial positions in the range 0.0 to 1.0 (0.5 if centred exactly)
el13ks 0:1c3f3fe862f2 92 joystick.y0 = yPot;
el13ks 0:1c3f3fe862f2 93 }
el13ks 0:1c3f3fe862f2 94
el13ks 0:1c3f3fe862f2 95 void updateJoystick()
el13ks 0:1c3f3fe862f2 96 {
el13ks 0:1c3f3fe862f2 97
el13ks 0:1c3f3fe862f2 98 joystick.x = xPot - joystick.x0; // read current joystick values relative to calibrated values (in range -0.5 to 0.5, 0.0 is centred)
el13ks 0:1c3f3fe862f2 99 joystick.y = yPot - joystick.y0;
el13ks 0:1c3f3fe862f2 100 joystick.button = button; // read button state
el13ks 0:1c3f3fe862f2 101
el13ks 0:1c3f3fe862f2 102 // calculate direction depending on x,y values
el13ks 0:1c3f3fe862f2 103 // tolerance allows a little lee-way in case joystick not exactly in the stated direction
el13ks 0:1c3f3fe862f2 104 if ( fabs(joystick.y) < DIRECTION_TOLERANCE && fabs(joystick.x) < DIRECTION_TOLERANCE) {
el13ks 0:1c3f3fe862f2 105 joystick.direction = CENTRE;
el13ks 0:1c3f3fe862f2 106 } else if ( joystick.y > DIRECTION_TOLERANCE && fabs(joystick.x) < DIRECTION_TOLERANCE) {
el13ks 0:1c3f3fe862f2 107 joystick.direction = UP;
el13ks 0:1c3f3fe862f2 108 } else if ( joystick.y < DIRECTION_TOLERANCE && fabs(joystick.x) < DIRECTION_TOLERANCE) {
el13ks 0:1c3f3fe862f2 109 joystick.direction = DOWN;
el13ks 0:1c3f3fe862f2 110 } else if ( joystick.x > DIRECTION_TOLERANCE && fabs(joystick.y) < DIRECTION_TOLERANCE) {
el13ks 12:3f4d9cb7dd8a 111 joystick.direction = LEFT;
el13ks 0:1c3f3fe862f2 112 } else if ( joystick.x < DIRECTION_TOLERANCE && fabs(joystick.y) < DIRECTION_TOLERANCE) {
el13ks 12:3f4d9cb7dd8a 113 joystick.direction = RIGHT;
el13ks 0:1c3f3fe862f2 114 } else {
el13ks 0:1c3f3fe862f2 115 joystick.direction = UNKNOWN;
el13ks 0:1c3f3fe862f2 116 }
el13ks 0:1c3f3fe862f2 117
el13ks 0:1c3f3fe862f2 118 }
el13ks 0:1c3f3fe862f2 119
el13ks 15:6d258c667a00 120 void timerExpired() // ISR for timeout function
el13ks 12:3f4d9cb7dd8a 121 {
el13ks 15:6d258c667a00 122 timerflag=1;
el13ks 13:098319060433 123
el13ks 12:3f4d9cb7dd8a 124 }
el13ks 12:3f4d9cb7dd8a 125
el13ks 13:098319060433 126
el13ks 13:098319060433 127 void pressPause()// Interrupt Service Routine (ISR) for pause button
el13ks 13:098319060433 128 {
el13ks 13:098319060433 129 buttonflag=!buttonflag;// set button flag
el13ks 13:098319060433 130 }
el13ks 13:098319060433 131
el13ks 13:098319060433 132
el13ks 12:3f4d9cb7dd8a 133 void pause()
el13ks 12:3f4d9cb7dd8a 134 {
el13ks 15:6d258c667a00 135 timer.attach(&timerExpired,15.0);// Call timeout after 15 seconds
el13ks 13:098319060433 136 button.rise(&pressPause); // event generated on rising edge
el13ks 13:098319060433 137 while (buttonflag) {
el13ks 15:6d258c667a00 138 lcd.clear();
el13ks 15:6d258c667a00 139 lcd.printString("Pause", 25,21);
el13ks 16:237375c3fc62 140 while (timerflag) {// Device goes into sleep and lcd is powered down after 15 seconds in pause menu
el13ks 13:098319060433 141 timer.detach();
el13ks 13:098319060433 142 lcd.turnOff();
el13ks 13:098319060433 143 Sleep();
el13ks 16:237375c3fc62 144 if (!buttonflag) { // Press button again to wake the device up
el13ks 15:6d258c667a00 145 timerflag=0;
el13ks 13:098319060433 146 lcd.init();
el13ks 15:6d258c667a00 147 buttonflag=0;
el13ks 13:098319060433 148 }
el13ks 15:6d258c667a00 149 }
el13ks 15:6d258c667a00 150 }
el13ks 13:098319060433 151
el13ks 15:6d258c667a00 152 }
el13ks 12:3f4d9cb7dd8a 153
el13ks 4:75c7277a1b88 154 void drawMap()
el13ks 4:75c7277a1b88 155 {
el13ks 10:cc0621fbe99b 156
el13ks 10:cc0621fbe99b 157 lcd.drawRect(39,0,3,10,1);//x-coordinate (top-left),y-coordinate(top-left), width, height, fill - 0 transparent (w/outline), 1 filled black, 2 filled white (wo/outline)
el13ks 11:2fd81f59d7a7 158 lcd.drawRect(40,40,2,7,1);// T-shaped obstacle Vertical
el13ks 10:cc0621fbe99b 159 lcd.drawRect(7,8,23,2,1);// Left hand "Hook" shaped obstacle horizontal
el13ks 10:cc0621fbe99b 160 lcd.drawRect(51,8,24,2,1);//Right hand "Hook" shaped obstacle horizontal
el13ks 10:cc0621fbe99b 161 lcd.drawRect(0,18,3,29,1);// left hand border
el13ks 11:2fd81f59d7a7 162 lcd.drawRect(78,18,5,29,1);// Right hand border
el13ks 10:cc0621fbe99b 163 lcd.drawRect(11,18,3,21,1);//Left hand C shape obstacle vertical
el13ks 10:cc0621fbe99b 164 lcd.drawRect(27,11,3,18,1);// Left hand "Hook" shaped obstacle vertical
el13ks 11:2fd81f59d7a7 165 lcd.drawRect(35,37,12,2,1);//T-shaped obstacle Horizontal
el13ks 10:cc0621fbe99b 166 lcd.drawRect(67,18,3,21,1);// Right hand C shaped obstacle vertical
el13ks 10:cc0621fbe99b 167 lcd.drawRect(51,11,3,18,1);//Right hand "Hook" shaped obstacle vertical
el13ks 11:2fd81f59d7a7 168 lcd.drawRect(38,18,5,11,1);// Central block
el13ks 11:2fd81f59d7a7 169 lcd.drawRect(15,18,4,2,1);//Left hand C shape obstacle horizontal
el13ks 10:cc0621fbe99b 170 lcd.drawRect(22,27,5,2,1);//Left hand "Hook" shaped obstacle
el13ks 11:2fd81f59d7a7 171 lcd.drawRect(15,37,4,2,1);//Left hand C shape obstacle
el13ks 11:2fd81f59d7a7 172 lcd.drawRect(55,27,3,2,1);// Right hand "Hook" shaped obstacle
el13ks 10:cc0621fbe99b 173 lcd.drawRect(63,18,4,2,1);//Right hand C shape obstacle horizontal
el13ks 11:2fd81f59d7a7 174 lcd.drawRect(63,37,4,2,1);//Right hand C shape obstacle
el13ks 11:2fd81f59d7a7 175
el13ks 0:1c3f3fe862f2 176 }
el13ks 0:1c3f3fe862f2 177
el13ks 4:75c7277a1b88 178 void checkRight()
el13ks 0:1c3f3fe862f2 179 {
el13ks 1:98cc4f4a20dc 180
el13ks 3:83c1d9cd97f1 181
el13ks 4:75c7277a1b88 182 int r = 0;//Variable for right movement check
el13ks 7:9ecf9df1e95e 183 if(lcd.getPixel (i+3,j))//Check 4 pixels to the right
el13ks 4:75c7277a1b88 184 r++;
el13ks 7:9ecf9df1e95e 185 if(lcd.getPixel (i+4,j))//Check 5 pixels to the right
el13ks 4:75c7277a1b88 186 r++;
el13ks 4:75c7277a1b88 187 if (r==2) { // Condition for solid obstacles
el13ks 4:75c7277a1b88 188 i--;
el13ks 1:98cc4f4a20dc 189
el13ks 4:75c7277a1b88 190 }
el13ks 4:75c7277a1b88 191 }
el13ks 4:75c7277a1b88 192 void checkLeft()
el13ks 4:75c7277a1b88 193 {
el13ks 4:75c7277a1b88 194 int l = 0 ; // Variable for left movement check
el13ks 7:9ecf9df1e95e 195 if(lcd.getPixel (i-3,j))//Check 4 pixels to the left
el13ks 4:75c7277a1b88 196 l++;
el13ks 7:9ecf9df1e95e 197 if(lcd.getPixel (i-4,j))//Check 5 pixels to the left
el13ks 4:75c7277a1b88 198 l++;
el13ks 4:75c7277a1b88 199 if (l==2) { // Condition for solid obstacles
el13ks 4:75c7277a1b88 200 i++;
el13ks 3:83c1d9cd97f1 201
el13ks 3:83c1d9cd97f1 202
el13ks 1:98cc4f4a20dc 203 }
el13ks 0:1c3f3fe862f2 204 }
el13ks 5:61c3bbef19f0 205 void checkUp()
el13ks 6:af4d3c5a9d43 206 {
el13ks 6:af4d3c5a9d43 207 int u=0;
el13ks 7:9ecf9df1e95e 208 if(lcd.getPixel (i,j-3))//Check 4 pixels above
el13ks 5:61c3bbef19f0 209 u++;
el13ks 7:9ecf9df1e95e 210 if(lcd.getPixel (i,j-4))//Check 5 pixels above
el13ks 5:61c3bbef19f0 211 u++;
el13ks 10:cc0621fbe99b 212 if(lcd.getPixel (i+1,j-4))
el13ks 8:c12828c83a44 213 u++;
el13ks 10:cc0621fbe99b 214 if(lcd.getPixel (i-1,j-4))
el13ks 10:cc0621fbe99b 215 u++;
el13ks 11:2fd81f59d7a7 216 if(lcd.getPixel (i-2,j-4))
el13ks 11:2fd81f59d7a7 217 u++;
el13ks 11:2fd81f59d7a7 218 if (u>=4) { // Condition for solid obstacles
el13ks 5:61c3bbef19f0 219 j++;
el13ks 6:af4d3c5a9d43 220 }
el13ks 5:61c3bbef19f0 221 }
el13ks 5:61c3bbef19f0 222
el13ks 6:af4d3c5a9d43 223 void checkDown()
el13ks 6:af4d3c5a9d43 224 {
el13ks 6:af4d3c5a9d43 225 int d=0;
el13ks 7:9ecf9df1e95e 226 if(lcd.getPixel (i,j+3))//Check 4 pixels below
el13ks 5:61c3bbef19f0 227 d++;
el13ks 7:9ecf9df1e95e 228 if(lcd.getPixel (i,j+4))//Check 5 pixels below
el13ks 5:61c3bbef19f0 229 d++;
el13ks 10:cc0621fbe99b 230 if(lcd.getPixel (i+1,j+4))
el13ks 8:c12828c83a44 231 d++;
el13ks 10:cc0621fbe99b 232 if(lcd.getPixel (i-1,j+4))
el13ks 10:cc0621fbe99b 233 d++;
el13ks 13:098319060433 234 if(lcd.getPixel (i-2,j+4))
el13ks 11:2fd81f59d7a7 235 d++;
el13ks 11:2fd81f59d7a7 236 if (d>=4) { // Condition for solid obstacles
el13ks 5:61c3bbef19f0 237 j--;
el13ks 6:af4d3c5a9d43 238 }
el13ks 5:61c3bbef19f0 239 }
el13ks 6:af4d3c5a9d43 240 void drawCoin()
el13ks 6:af4d3c5a9d43 241 {
el13ks 6:af4d3c5a9d43 242
el13ks 6:af4d3c5a9d43 243 if (coinflag) {
el13ks 11:2fd81f59d7a7 244 lcd.drawCircle(10,3,2,0);//Coin 1.1
el13ks 6:af4d3c5a9d43 245 }
el13ks 6:af4d3c5a9d43 246 if (coinflag2) {
el13ks 11:2fd81f59d7a7 247 lcd.drawCircle(22,3,2,0);//Coin 1.2
el13ks 6:af4d3c5a9d43 248 }
el13ks 6:af4d3c5a9d43 249 if (coinflag3) {
el13ks 11:2fd81f59d7a7 250 lcd.drawCircle(35,3,2,0); //Coin 1.3
el13ks 6:af4d3c5a9d43 251 }
el13ks 6:af4d3c5a9d43 252 if (coinflag4) {
el13ks 11:2fd81f59d7a7 253 lcd.drawCircle(47,3,2,0);//Coin 1.4
el13ks 6:af4d3c5a9d43 254 }
el13ks 6:af4d3c5a9d43 255 if (coinflag5) {
el13ks 11:2fd81f59d7a7 256 lcd.drawCircle(65,3,2,0);//Coin 1.5
el13ks 11:2fd81f59d7a7 257 }
el13ks 11:2fd81f59d7a7 258
el13ks 11:2fd81f59d7a7 259 if (coinflag6) {
el13ks 11:2fd81f59d7a7 260 lcd.drawCircle(80,3,2,0);//Coin 1.6
el13ks 11:2fd81f59d7a7 261 }
el13ks 11:2fd81f59d7a7 262 if (coinflag7) {
el13ks 11:2fd81f59d7a7 263 lcd.drawCircle(41,14,2,0);//Coin 2.2
el13ks 11:2fd81f59d7a7 264 }
el13ks 11:2fd81f59d7a7 265 if (coinflag8) {
el13ks 11:2fd81f59d7a7 266 lcd.drawCircle(35,44,2,0);// Coin 5.3
el13ks 11:2fd81f59d7a7 267 }
el13ks 11:2fd81f59d7a7 268 if (coinflag9) {
el13ks 11:2fd81f59d7a7 269 lcd.drawCircle(47,44,2,0);//Coin 5.4
el13ks 11:2fd81f59d7a7 270 }
el13ks 11:2fd81f59d7a7 271 if (coinflag10) {
el13ks 11:2fd81f59d7a7 272 lcd.drawCircle(34,24,2,0); //Coin 3.3
el13ks 11:2fd81f59d7a7 273 }
el13ks 11:2fd81f59d7a7 274 if (coinflag11) {
el13ks 11:2fd81f59d7a7 275 lcd.drawCircle(47,24,2,0); //Coin 3.4
el13ks 11:2fd81f59d7a7 276 }
el13ks 11:2fd81f59d7a7 277
el13ks 11:2fd81f59d7a7 278 if (coinflag12) {
el13ks 11:2fd81f59d7a7 279 lcd.drawCircle(41,33,2,0);//Coin 4
el13ks 11:2fd81f59d7a7 280 }
el13ks 11:2fd81f59d7a7 281
el13ks 11:2fd81f59d7a7 282
el13ks 11:2fd81f59d7a7 283 if (coinflag13) {
el13ks 11:2fd81f59d7a7 284 lcd.drawCircle(7,44,2,0);//Coin 5.1
el13ks 6:af4d3c5a9d43 285 }
el13ks 11:2fd81f59d7a7 286
el13ks 11:2fd81f59d7a7 287 if (coinflag14) {
el13ks 11:2fd81f59d7a7 288 lcd.drawCircle(74,44,2,0);//Coin 5.6
el13ks 11:2fd81f59d7a7 289 }
el13ks 11:2fd81f59d7a7 290 if (coinflag15) {
el13ks 11:2fd81f59d7a7 291 lcd.drawCircle(21,44,2,0);//Coin 5.2
el13ks 11:2fd81f59d7a7 292 }
el13ks 11:2fd81f59d7a7 293 if (coinflag16) {
el13ks 11:2fd81f59d7a7 294 lcd.drawCircle(61,44,2,0);//Coin 5.5
el13ks 11:2fd81f59d7a7 295 }
el13ks 11:2fd81f59d7a7 296 if (coinflag17) {
el13ks 11:2fd81f59d7a7 297 lcd.drawCircle(7,24,2,0); //Coin 3.1
el13ks 11:2fd81f59d7a7 298 }
el13ks 11:2fd81f59d7a7 299 if (coinflag18) {
el13ks 11:2fd81f59d7a7 300 lcd.drawCircle(19,24,2,0); //Coin 3.2
el13ks 11:2fd81f59d7a7 301 }
el13ks 11:2fd81f59d7a7 302 if (coinflag19) {
el13ks 11:2fd81f59d7a7 303 lcd.drawCircle(62,24,2,0); //Coin 3.5
el13ks 13:098319060433 304
el13ks 11:2fd81f59d7a7 305 }
el13ks 13:098319060433 306
el13ks 11:2fd81f59d7a7 307 if (coinflag20) {
el13ks 11:2fd81f59d7a7 308 lcd.drawCircle(74,24,2,0); //Coin 3.6
el13ks 11:2fd81f59d7a7 309 }
el13ks 13:098319060433 310 if (coinflag21) {
el13ks 11:2fd81f59d7a7 311 lcd.drawCircle(15,15,2,0);//Coin 2.1
el13ks 13:098319060433 312 }
el13ks 13:098319060433 313 if (coinflag22) {
el13ks 11:2fd81f59d7a7 314 lcd.drawCircle(65,15,2,0);//Coin 2.3
el13ks 13:098319060433 315 }
el13ks 6:af4d3c5a9d43 316 }
el13ks 11:2fd81f59d7a7 317
el13ks 6:af4d3c5a9d43 318 void checkCoin()
el13ks 11:2fd81f59d7a7 319
el13ks 6:af4d3c5a9d43 320 {
el13ks 6:af4d3c5a9d43 321 if (i==10 &&j==3) {
el13ks 6:af4d3c5a9d43 322 coinflag=0;
el13ks 6:af4d3c5a9d43 323 }
el13ks 11:2fd81f59d7a7 324 if (i==22 &&j==3) {
el13ks 6:af4d3c5a9d43 325 coinflag2=0;
el13ks 6:af4d3c5a9d43 326 }
el13ks 11:2fd81f59d7a7 327 if (i==35 &&j==3) {
el13ks 6:af4d3c5a9d43 328 coinflag3=0;
el13ks 6:af4d3c5a9d43 329 }
el13ks 11:2fd81f59d7a7 330 if (i==47 &&j==3) {
el13ks 6:af4d3c5a9d43 331 coinflag4=0;
el13ks 6:af4d3c5a9d43 332 }
el13ks 11:2fd81f59d7a7 333 if (i==65 &&j==3) {
el13ks 6:af4d3c5a9d43 334 coinflag5=0;
el13ks 6:af4d3c5a9d43 335 }
el13ks 11:2fd81f59d7a7 336 if (i==80 &&j==3) {
el13ks 11:2fd81f59d7a7 337 coinflag6=0;
el13ks 11:2fd81f59d7a7 338 }
el13ks 11:2fd81f59d7a7 339 if (i== 41&&j==14) {
el13ks 11:2fd81f59d7a7 340 coinflag7=0;
el13ks 11:2fd81f59d7a7 341 }
el13ks 11:2fd81f59d7a7 342 if (i==35 &&j==44) {
el13ks 11:2fd81f59d7a7 343 coinflag8=0;
el13ks 11:2fd81f59d7a7 344 }
el13ks 11:2fd81f59d7a7 345 if (i==47&&j==44) {
el13ks 11:2fd81f59d7a7 346 coinflag9=0;
el13ks 11:2fd81f59d7a7 347 }
el13ks 11:2fd81f59d7a7 348 if (i==34 &&j==24) {
el13ks 11:2fd81f59d7a7 349 coinflag10=0;
el13ks 11:2fd81f59d7a7 350 }
el13ks 11:2fd81f59d7a7 351 if (i==47 &&j==24) {
el13ks 11:2fd81f59d7a7 352 coinflag11=0;
el13ks 11:2fd81f59d7a7 353 }
el13ks 11:2fd81f59d7a7 354 if (i==41 &&j==33) {
el13ks 11:2fd81f59d7a7 355 coinflag12=0;
el13ks 11:2fd81f59d7a7 356 }
el13ks 11:2fd81f59d7a7 357 if (i==7 &&j==44) {
el13ks 11:2fd81f59d7a7 358 coinflag13=0;
el13ks 11:2fd81f59d7a7 359 }
el13ks 11:2fd81f59d7a7 360 if (i==74 &&j==44) {
el13ks 11:2fd81f59d7a7 361 coinflag14=0;
el13ks 11:2fd81f59d7a7 362 }
el13ks 11:2fd81f59d7a7 363 if (i==21 &&j==44) {
el13ks 11:2fd81f59d7a7 364 coinflag15=0;
el13ks 11:2fd81f59d7a7 365 }
el13ks 11:2fd81f59d7a7 366 if (i==61 &&j==44) {
el13ks 11:2fd81f59d7a7 367 coinflag16=0;
el13ks 11:2fd81f59d7a7 368 }
el13ks 11:2fd81f59d7a7 369 if (i== 7&&j==24) {
el13ks 11:2fd81f59d7a7 370 coinflag17=0;
el13ks 11:2fd81f59d7a7 371 }
el13ks 11:2fd81f59d7a7 372 if (i==19 &&j==24) {
el13ks 11:2fd81f59d7a7 373 coinflag18=0;
el13ks 11:2fd81f59d7a7 374 }
el13ks 11:2fd81f59d7a7 375 if (i==62 &&j==24) {
el13ks 11:2fd81f59d7a7 376 coinflag19=0;
el13ks 11:2fd81f59d7a7 377 }
el13ks 11:2fd81f59d7a7 378 if (i==74 &&j==24) {
el13ks 11:2fd81f59d7a7 379 coinflag20=0;
el13ks 11:2fd81f59d7a7 380 }
el13ks 11:2fd81f59d7a7 381 if (i==15 &&j==15) {
el13ks 11:2fd81f59d7a7 382 coinflag21=0;
el13ks 11:2fd81f59d7a7 383 }
el13ks 11:2fd81f59d7a7 384 if (i==65 &&j==15) {
el13ks 11:2fd81f59d7a7 385 coinflag22=0;
el13ks 11:2fd81f59d7a7 386 }
el13ks 5:61c3bbef19f0 387 }
el13ks 5:61c3bbef19f0 388
el13ks 6:af4d3c5a9d43 389 void Joystickcheck()
el13ks 6:af4d3c5a9d43 390 {
el13ks 6:af4d3c5a9d43 391 if (joystick.direction == UP) {
el13ks 6:af4d3c5a9d43 392 j--;
el13ks 4:75c7277a1b88 393 }
el13ks 6:af4d3c5a9d43 394 if (joystick.direction == DOWN) {
el13ks 6:af4d3c5a9d43 395 j++;
el13ks 6:af4d3c5a9d43 396 }
el13ks 6:af4d3c5a9d43 397 if (joystick.direction == LEFT) {
el13ks 6:af4d3c5a9d43 398 i--;
el13ks 6:af4d3c5a9d43 399 }
el13ks 6:af4d3c5a9d43 400 if (joystick.direction == RIGHT) {
el13ks 6:af4d3c5a9d43 401 i++;
el13ks 4:75c7277a1b88 402 }
el13ks 4:75c7277a1b88 403
el13ks 6:af4d3c5a9d43 404 }
el13ks 6:af4d3c5a9d43 405 void drawPacman()
el13ks 6:af4d3c5a9d43 406 {
el13ks 6:af4d3c5a9d43 407 if(joystick.direction == RIGHT) {
el13ks 6:af4d3c5a9d43 408 lcd.setPixel(i,j);
el13ks 6:af4d3c5a9d43 409 lcd.setPixel(i-1,j);//Direction dependent (left and right)
el13ks 6:af4d3c5a9d43 410 lcd.setPixel(i-2,j);//Direction dependent (left and right)
el13ks 6:af4d3c5a9d43 411 lcd.setPixel(i-3,j);//Direction dependent (left and right)
el13ks 6:af4d3c5a9d43 412 lcd.setPixel(i,j+1);
el13ks 6:af4d3c5a9d43 413 lcd.setPixel(i,j+2);
el13ks 6:af4d3c5a9d43 414 lcd.setPixel(i,j+3);
el13ks 6:af4d3c5a9d43 415 lcd.setPixel(i,j-1);
el13ks 6:af4d3c5a9d43 416 lcd.setPixel(i,j-2);
el13ks 6:af4d3c5a9d43 417 lcd.setPixel(i,j-3);
el13ks 6:af4d3c5a9d43 418 lcd.setPixel(i-1,j+3);
el13ks 6:af4d3c5a9d43 419 lcd.setPixel(i+1,j+3);
el13ks 6:af4d3c5a9d43 420 lcd.setPixel(i,j-1);
el13ks 6:af4d3c5a9d43 421 lcd.setPixel(i-2,j+2);
el13ks 6:af4d3c5a9d43 422 lcd.setPixel(i-1,j+2);
el13ks 6:af4d3c5a9d43 423 lcd.setPixel(i+2,j+2);
el13ks 6:af4d3c5a9d43 424 lcd.setPixel(i+1,j+2);
el13ks 6:af4d3c5a9d43 425 lcd.setPixel(i-1,j+1);//Direction dependent (left and right)
el13ks 6:af4d3c5a9d43 426 lcd.setPixel(i-2,j+1);//Direction dependent (left and right)
el13ks 6:af4d3c5a9d43 427 lcd.setPixel(i-3,j+1);//Direction dependent (left and right)
el13ks 6:af4d3c5a9d43 428 lcd.setPixel(i-1,j-1);//Direction dependent (left and right)
el13ks 6:af4d3c5a9d43 429 lcd.setPixel(i-2,j-1);//Direction dependent (left and right)
el13ks 6:af4d3c5a9d43 430 lcd.setPixel(i-3,j-1);//Direction dependent (left and right)
el13ks 6:af4d3c5a9d43 431 lcd.setPixel(i-1,j-2);
el13ks 6:af4d3c5a9d43 432 lcd.setPixel(i-2,j-2);
el13ks 6:af4d3c5a9d43 433 lcd.setPixel(i+1,j-2);
el13ks 6:af4d3c5a9d43 434 lcd.setPixel(i+2,j-2);
el13ks 6:af4d3c5a9d43 435 lcd.setPixel(i+1,j-3);
el13ks 6:af4d3c5a9d43 436 lcd.setPixel(i-1,j-3);
el13ks 6:af4d3c5a9d43 437
el13ks 4:75c7277a1b88 438
el13ks 6:af4d3c5a9d43 439 } else if(joystick.direction == LEFT) {
el13ks 6:af4d3c5a9d43 440 lcd.setPixel(i,j);
el13ks 6:af4d3c5a9d43 441 lcd.setPixel(i,j+1);
el13ks 6:af4d3c5a9d43 442 lcd.setPixel(i,j+2);
el13ks 6:af4d3c5a9d43 443 lcd.setPixel(i,j+3);
el13ks 6:af4d3c5a9d43 444 lcd.setPixel(i,j-1);
el13ks 6:af4d3c5a9d43 445 lcd.setPixel(i,j-2);
el13ks 6:af4d3c5a9d43 446 lcd.setPixel(i,j-3);
el13ks 6:af4d3c5a9d43 447 lcd.setPixel(i-1,j+3);
el13ks 6:af4d3c5a9d43 448 lcd.setPixel(i+1,j+3);
el13ks 6:af4d3c5a9d43 449 lcd.setPixel(i,j-1);
el13ks 6:af4d3c5a9d43 450 lcd.setPixel(i-2,j+2);
el13ks 6:af4d3c5a9d43 451 lcd.setPixel(i-1,j+2);
el13ks 6:af4d3c5a9d43 452 lcd.setPixel(i+2,j+2);
el13ks 6:af4d3c5a9d43 453 lcd.setPixel(i+1,j+2);
el13ks 6:af4d3c5a9d43 454 lcd.setPixel(i-1,j-2);
el13ks 6:af4d3c5a9d43 455 lcd.setPixel(i-2,j-2);
el13ks 6:af4d3c5a9d43 456 lcd.setPixel(i+1,j-2);
el13ks 6:af4d3c5a9d43 457 lcd.setPixel(i+2,j-2);
el13ks 6:af4d3c5a9d43 458 lcd.setPixel(i+1,j-3);
el13ks 6:af4d3c5a9d43 459 lcd.setPixel(i-1,j-3);
el13ks 6:af4d3c5a9d43 460 lcd.setPixel(i+1,j);//Direction dependent(left and right)
el13ks 6:af4d3c5a9d43 461 lcd.setPixel(i+2,j);//Direction dependent(left and right)
el13ks 6:af4d3c5a9d43 462 lcd.setPixel(i+3,j);//Direction dependent (left and right)
el13ks 6:af4d3c5a9d43 463 lcd.setPixel(i+1,j+1);//Direction dependent (left and right)
el13ks 6:af4d3c5a9d43 464 lcd.setPixel(i+2,j+1);//Direction dependent (left and right)
el13ks 6:af4d3c5a9d43 465 lcd.setPixel(i+3,j+1);//Direction dependent (left and right)
el13ks 6:af4d3c5a9d43 466 lcd.setPixel(i+1,j-1);//Direction dependent (left and right)
el13ks 6:af4d3c5a9d43 467 lcd.setPixel(i+2,j-1);//Direction dependent (left and right)
el13ks 6:af4d3c5a9d43 468 lcd.setPixel(i+3,j-1);//Direction dependent (left and right)
el13ks 4:75c7277a1b88 469
el13ks 6:af4d3c5a9d43 470 } else if(joystick.direction == UP) {
el13ks 6:af4d3c5a9d43 471 lcd.setPixel(i,j);
el13ks 6:af4d3c5a9d43 472 lcd.setPixel(i+1,j);
el13ks 6:af4d3c5a9d43 473 lcd.setPixel(i+2,j);
el13ks 6:af4d3c5a9d43 474 lcd.setPixel(i+3,j);
el13ks 6:af4d3c5a9d43 475 lcd.setPixel(i-1,j);
el13ks 6:af4d3c5a9d43 476 lcd.setPixel(i-2,j);
el13ks 6:af4d3c5a9d43 477 lcd.setPixel(i-3,j);
el13ks 6:af4d3c5a9d43 478 lcd.setPixel(i,j+1);//Direction dependent(Up and Down)
el13ks 6:af4d3c5a9d43 479 lcd.setPixel(i+1,j+1);//Direction dependent(Up and Down)
el13ks 6:af4d3c5a9d43 480 lcd.setPixel(i+2,j+1);
el13ks 6:af4d3c5a9d43 481 lcd.setPixel(i+3,j+1);
el13ks 6:af4d3c5a9d43 482 lcd.setPixel(i-1,j+1);//Direction dependent(Up and Down)
el13ks 6:af4d3c5a9d43 483 lcd.setPixel(i-2,j+1);
el13ks 6:af4d3c5a9d43 484 lcd.setPixel(i-3,j+1);
el13ks 6:af4d3c5a9d43 485 lcd.setPixel(i,j+2);//Direction dependent(Up and Down)
el13ks 6:af4d3c5a9d43 486 lcd.setPixel(i+1,j+2);//Direction dependent(Up and Down)
el13ks 6:af4d3c5a9d43 487 lcd.setPixel(i+2,j+2);
el13ks 6:af4d3c5a9d43 488 lcd.setPixel(i-1,j+2);//Direction dependent(Up and Down)
el13ks 6:af4d3c5a9d43 489 lcd.setPixel(i-2,j+2);
el13ks 6:af4d3c5a9d43 490 lcd.setPixel(i-1,j+3);//Direction dependent(Up and Down)
el13ks 6:af4d3c5a9d43 491 lcd.setPixel(i,j+3);//Direction dependent(Up and Down)
el13ks 6:af4d3c5a9d43 492 lcd.setPixel(i+1,j+3);//Direction dependent(Up and Down)
el13ks 6:af4d3c5a9d43 493 lcd.setPixel(i-2,j-1);
el13ks 6:af4d3c5a9d43 494 lcd.setPixel(i-3,j-1);
el13ks 6:af4d3c5a9d43 495 lcd.setPixel(i+3,j-1);
el13ks 6:af4d3c5a9d43 496 lcd.setPixel(i+2,j-1);
el13ks 6:af4d3c5a9d43 497 lcd.setPixel(i+2,j-2);
el13ks 6:af4d3c5a9d43 498 lcd.setPixel(i-2,j-2);
el13ks 0:1c3f3fe862f2 499
el13ks 3:83c1d9cd97f1 500
el13ks 6:af4d3c5a9d43 501 } else if (joystick.direction == DOWN) {
el13ks 6:af4d3c5a9d43 502 lcd.setPixel(i,j);
el13ks 6:af4d3c5a9d43 503 lcd.setPixel(i+1,j);
el13ks 6:af4d3c5a9d43 504 lcd.setPixel(i+2,j);
el13ks 6:af4d3c5a9d43 505 lcd.setPixel(i+3,j);
el13ks 6:af4d3c5a9d43 506 lcd.setPixel(i-1,j);
el13ks 6:af4d3c5a9d43 507 lcd.setPixel(i-2,j);
el13ks 6:af4d3c5a9d43 508 lcd.setPixel(i-3,j);
el13ks 6:af4d3c5a9d43 509 lcd.setPixel(i,j-1);//Direction dependent(Up and Down)
el13ks 6:af4d3c5a9d43 510 lcd.setPixel(i+1,j-1);//Direction dependent(Up and Down)
el13ks 6:af4d3c5a9d43 511 lcd.setPixel(i+2,j+1);
el13ks 6:af4d3c5a9d43 512 lcd.setPixel(i+3,j+1);
el13ks 6:af4d3c5a9d43 513 lcd.setPixel(i-1,j-1);//Direction dependent(Up and Down)
el13ks 6:af4d3c5a9d43 514 lcd.setPixel(i-2,j+1);
el13ks 6:af4d3c5a9d43 515 lcd.setPixel(i-3,j+1);
el13ks 6:af4d3c5a9d43 516 lcd.setPixel(i,j-2);//Direction dependent(Up and Down)
el13ks 6:af4d3c5a9d43 517 lcd.setPixel(i+1,j-2);//Direction dependent(Up and Down)
el13ks 6:af4d3c5a9d43 518 lcd.setPixel(i+2,j+2);
el13ks 6:af4d3c5a9d43 519 lcd.setPixel(i-1,j-2);//Direction dependent(Up and Down)
el13ks 6:af4d3c5a9d43 520 lcd.setPixel(i-2,j+2);
el13ks 6:af4d3c5a9d43 521 lcd.setPixel(i-1,j-3);//Direction dependent(Up and Down)
el13ks 6:af4d3c5a9d43 522 lcd.setPixel(i,j-3);//Direction dependent(Up and Down)
el13ks 6:af4d3c5a9d43 523 lcd.setPixel(i+1,j-3);//Direction dependent(Up and Down)
el13ks 6:af4d3c5a9d43 524 lcd.setPixel(i-2,j-1);
el13ks 6:af4d3c5a9d43 525 lcd.setPixel(i-3,j-1);
el13ks 6:af4d3c5a9d43 526 lcd.setPixel(i+3,j-1);
el13ks 6:af4d3c5a9d43 527 lcd.setPixel(i+2,j-1);
el13ks 6:af4d3c5a9d43 528 lcd.setPixel(i+2,j-2);
el13ks 6:af4d3c5a9d43 529 lcd.setPixel(i-2,j-2);
el13ks 0:1c3f3fe862f2 530
el13ks 6:af4d3c5a9d43 531 } else {
el13ks 6:af4d3c5a9d43 532 lcd.setPixel(i,j);
el13ks 6:af4d3c5a9d43 533 lcd.setPixel(i-1,j);//Direction dependent (left and right)
el13ks 6:af4d3c5a9d43 534 lcd.setPixel(i-2,j);//Direction dependent (left and right)
el13ks 6:af4d3c5a9d43 535 lcd.setPixel(i-3,j);//Direction dependent (left and right)
el13ks 6:af4d3c5a9d43 536 lcd.setPixel(i,j+1);
el13ks 6:af4d3c5a9d43 537 lcd.setPixel(i,j+2);
el13ks 6:af4d3c5a9d43 538 lcd.setPixel(i,j+3);
el13ks 6:af4d3c5a9d43 539 lcd.setPixel(i,j-1);
el13ks 6:af4d3c5a9d43 540 lcd.setPixel(i,j-2);
el13ks 6:af4d3c5a9d43 541 lcd.setPixel(i,j-3);
el13ks 6:af4d3c5a9d43 542 lcd.setPixel(i-1,j+3);
el13ks 6:af4d3c5a9d43 543 lcd.setPixel(i+1,j+3);
el13ks 6:af4d3c5a9d43 544 lcd.setPixel(i,j-1);
el13ks 6:af4d3c5a9d43 545 lcd.setPixel(i-2,j+2);
el13ks 6:af4d3c5a9d43 546 lcd.setPixel(i-1,j+2);
el13ks 6:af4d3c5a9d43 547 lcd.setPixel(i+2,j+2);
el13ks 6:af4d3c5a9d43 548 lcd.setPixel(i+1,j+2);
el13ks 6:af4d3c5a9d43 549 lcd.setPixel(i-1,j+1);//Direction dependent (left and right)
el13ks 6:af4d3c5a9d43 550 lcd.setPixel(i-2,j+1);//Direction dependent (left and right)
el13ks 6:af4d3c5a9d43 551 lcd.setPixel(i-3,j+1);//Direction dependent (left and right)
el13ks 6:af4d3c5a9d43 552 lcd.setPixel(i-1,j-1);//Direction dependent (left and right)
el13ks 6:af4d3c5a9d43 553 lcd.setPixel(i-2,j-1);//Direction dependent (left and right)
el13ks 6:af4d3c5a9d43 554 lcd.setPixel(i-3,j-1);//Direction dependent (left and right)
el13ks 6:af4d3c5a9d43 555 lcd.setPixel(i-1,j-2);
el13ks 6:af4d3c5a9d43 556 lcd.setPixel(i-2,j-2);
el13ks 6:af4d3c5a9d43 557 lcd.setPixel(i+1,j-2);
el13ks 6:af4d3c5a9d43 558 lcd.setPixel(i+2,j-2);
el13ks 6:af4d3c5a9d43 559 lcd.setPixel(i+1,j-3);
el13ks 6:af4d3c5a9d43 560 lcd.setPixel(i-1,j-3);
el13ks 0:1c3f3fe862f2 561 }
el13ks 6:af4d3c5a9d43 562 }
el13ks 6:af4d3c5a9d43 563
el13ks 6:af4d3c5a9d43 564
el13ks 16:237375c3fc62 565
el13ks 16:237375c3fc62 566 void drawGhost()
el13ks 16:237375c3fc62 567 {
el13ks 16:237375c3fc62 568 lcd.setPixel(x,y);
el13ks 16:237375c3fc62 569 lcd.setPixel(x+2,y);
el13ks 16:237375c3fc62 570 lcd.setPixel(x-2,y);
el13ks 16:237375c3fc62 571 lcd.setPixel(x,y+1);
el13ks 16:237375c3fc62 572 lcd.setPixel(x,y-1);
el13ks 16:237375c3fc62 573 lcd.setPixel(x-1,y-1);
el13ks 16:237375c3fc62 574 lcd.setPixel(x-2,y-1);
el13ks 16:237375c3fc62 575 lcd.setPixel(x+1,y-1);
el13ks 16:237375c3fc62 576 lcd.setPixel(x+2,y-1);
el13ks 16:237375c3fc62 577 lcd.setPixel(x+2,y+1);
el13ks 16:237375c3fc62 578 lcd.setPixel(x+1,y+1);
el13ks 16:237375c3fc62 579 lcd.setPixel(x-1,y+1);
el13ks 16:237375c3fc62 580 lcd.setPixel(x-2,y+1);
el13ks 16:237375c3fc62 581 lcd.setPixel(x+2,y+2);
el13ks 16:237375c3fc62 582 lcd.setPixel(x+2,y+2);
el13ks 16:237375c3fc62 583 lcd.setPixel(x-1,y+2);
el13ks 16:237375c3fc62 584 lcd.setPixel(x+1,y+2);
el13ks 16:237375c3fc62 585 lcd.setPixel(x,y-2);
el13ks 16:237375c3fc62 586 lcd.setPixel(x+2,y-2);
el13ks 16:237375c3fc62 587 lcd.setPixel(x-1,y-2);
el13ks 16:237375c3fc62 588 lcd.setPixel(x+1,y-2);
el13ks 16:237375c3fc62 589 lcd.setPixel(x-2,y-2);
el13ks 16:237375c3fc62 590 lcd.setPixel(x-2,y+2);
el13ks 16:237375c3fc62 591 }
el13ks 16:237375c3fc62 592 void Boundarycheck()// Set boundary conditions so that ghost and pacman cannot move off screen
el13ks 6:af4d3c5a9d43 593 {
el13ks 6:af4d3c5a9d43 594 if (i<3) {
el13ks 6:af4d3c5a9d43 595 i=3;
el13ks 6:af4d3c5a9d43 596 }
el13ks 6:af4d3c5a9d43 597 if (j<3) {
el13ks 6:af4d3c5a9d43 598 j=3;
el13ks 6:af4d3c5a9d43 599 }
el13ks 6:af4d3c5a9d43 600 if (j>44) {
el13ks 6:af4d3c5a9d43 601 j=44;
el13ks 6:af4d3c5a9d43 602 }
el13ks 6:af4d3c5a9d43 603 if (i>80) {
el13ks 6:af4d3c5a9d43 604 i=80;
el13ks 6:af4d3c5a9d43 605 }
el13ks 6:af4d3c5a9d43 606 }
el13ks 6:af4d3c5a9d43 607
el13ks 15:6d258c667a00 608
el13ks 16:237375c3fc62 609 void winningcondition()// Player wins if all coins are eaten
el13ks 16:237375c3fc62 610 {
el13ks 16:237375c3fc62 611 int WC = coinflag+coinflag2+coinflag3+coinflag4+coinflag5+coinflag6+coinflag7+coinflag8+coinflag9+coinflag10+coinflag11+coinflag12+coinflag13+coinflag14+coinflag15+coinflag16+coinflag17+coinflag18+coinflag19+coinflag20+coinflag21+coinflag22;
el13ks 16:237375c3fc62 612 if (WC==0) {
el13ks 16:237375c3fc62 613 win=true;
el13ks 15:6d258c667a00 614 }
el13ks 16:237375c3fc62 615
el13ks 16:237375c3fc62 616
el13ks 16:237375c3fc62 617 }
el13ks 16:237375c3fc62 618
el13ks 16:237375c3fc62 619 void losingcondition()//Player loses if pacman is eaten by ghost
el13ks 16:237375c3fc62 620 {
el13ks 16:237375c3fc62 621 if (i==x && j==y) {
el13ks 16:237375c3fc62 622 win = false;
el13ks 16:237375c3fc62 623 lose = true;
el13ks 16:237375c3fc62 624 }
el13ks 16:237375c3fc62 625 }
el13ks 16:237375c3fc62 626
el13ks 16:237375c3fc62 627
el13ks 6:af4d3c5a9d43 628 int main()
el13ks 6:af4d3c5a9d43 629 {
el13ks 6:af4d3c5a9d43 630
el13ks 6:af4d3c5a9d43 631 lcd.init();
el13ks 6:af4d3c5a9d43 632 calibrateJoystick(); // get centred values of joystick
el13ks 6:af4d3c5a9d43 633 pollJoystick.attach(&updateJoystick,1.0/10.0); // read joystick 10 times per second
el13ks 13:098319060433 634 PHY_PowerDown();
el13ks 13:098319060433 635
el13ks 16:237375c3fc62 636 while(win==false&& lose==false) {
el13ks 12:3f4d9cb7dd8a 637 lcd.setBrightness(bright);
el13ks 6:af4d3c5a9d43 638 lcd.clear();
el13ks 12:3f4d9cb7dd8a 639 pause();
el13ks 15:6d258c667a00 640 winningcondition();
el13ks 16:237375c3fc62 641 losingcondition();
el13ks 6:af4d3c5a9d43 642 drawPacman();
el13ks 6:af4d3c5a9d43 643 drawMap();
el13ks 6:af4d3c5a9d43 644 drawCoin();
el13ks 16:237375c3fc62 645 drawGhost();
el13ks 6:af4d3c5a9d43 646 checkRight();
el13ks 6:af4d3c5a9d43 647 checkLeft();
el13ks 6:af4d3c5a9d43 648 checkDown();
el13ks 6:af4d3c5a9d43 649 checkUp();
el13ks 6:af4d3c5a9d43 650 Joystickcheck();
el13ks 6:af4d3c5a9d43 651 Boundarycheck();
el13ks 6:af4d3c5a9d43 652 checkCoin();
el13ks 9:d36fed674428 653 lcd.refresh();
el13ks 10:cc0621fbe99b 654 wait_ms(35);
el13ks 11:2fd81f59d7a7 655
el13ks 6:af4d3c5a9d43 656 }
el13ks 16:237375c3fc62 657 if (win==true) {
el13ks 15:6d258c667a00 658 lcd.clear();
el13ks 15:6d258c667a00 659 lcd.printString("Yay", 25,21);
el13ks 16:237375c3fc62 660 }
el13ks 16:237375c3fc62 661 if (lose==true) {
el13ks 16:237375c3fc62 662 lcd.clear();
el13ks 16:237375c3fc62 663 lcd.printString("Game Over", 15,10);
el13ks 16:237375c3fc62 664
el13ks 16:237375c3fc62 665 }
el13ks 15:6d258c667a00 666 }
el13ks 15:6d258c667a00 667