Konlatee Sittichaivijit / Mbed 2 deprecated PacManII

Dependencies:   N5110 PowerControl mbed

Committer:
el13ks
Date:
Mon Apr 27 12:17:32 2015 +0000
Revision:
12:3f4d9cb7dd8a
Parent:
11:2fd81f59d7a7
Child:
13:098319060433
V2.2 Pause menu completed ;

Who changed what in which revision?

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