WITB2

Dependencies:   mbed 4DGL-uLCD-SE PinDetect

Committer:
Nydrel
Date:
Thu Nov 29 18:37:00 2018 +0000
Revision:
5:ed52ac77cdf9
Parent:
4:d128df681d05
witb 2;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jd7142128 0:5e90b8577fef 1 #include "mbed.h"
jd7142128 0:5e90b8577fef 2 #include "MMA8452.h"
Nydrel 1:21558533e3b9 3 #include "uLCD_4DGL.h"
Nydrel 5:ed52ac77cdf9 4 #include "PinDetect.h"
Nydrel 1:21558533e3b9 5 #include "Speaker.h"
Nydrel 2:9ece21082838 6 #include <ctime>
Nydrel 1:21558533e3b9 7
Nydrel 1:21558533e3b9 8 /*-----Define Statements-----*/
Nydrel 1:21558533e3b9 9
Nydrel 1:21558533e3b9 10 #define ASTEROID_HEIGHT 12
Nydrel 1:21558533e3b9 11 #define ASTEROID_WIDTH 15
Nydrel 1:21558533e3b9 12 #define SPRITE_MAX 15
Nydrel 1:21558533e3b9 13 #define EARTH_WIDTH 10
Nydrel 1:21558533e3b9 14 #define EARTH_HEIGHT 10
Nydrel 1:21558533e3b9 15 #define EXPLOSION1_WIDTH 20
Nydrel 1:21558533e3b9 16 #define SCREEN_MAX 125
Nydrel 1:21558533e3b9 17 #define SCREEN_MIN 1
Nydrel 1:21558533e3b9 18 #define NUM_ASTEROIDS 4
Nydrel 1:21558533e3b9 19 #define Q 0x808000 //OLIVE
Nydrel 1:21558533e3b9 20 #define I 0x008000 //GREEN
Nydrel 1:21558533e3b9 21 #define S 0xC0C0C0 //SILVER
Nydrel 1:21558533e3b9 22 #define C 0x17202A //UFO GLASS
Nydrel 1:21558533e3b9 23 #define D 0x797D7F //DARK GREY
Nydrel 1:21558533e3b9 24 #define L 0x00FF00 //LIME
Nydrel 1:21558533e3b9 25 #define P 0xFF00FF //PINK
Nydrel 1:21558533e3b9 26 #define R 0xF1C40F //YELLOW
Nydrel 1:21558533e3b9 27 #define O 0xF39C12 //ORANGE
Nydrel 1:21558533e3b9 28 #define G 0xAAB7B8 //GREY
Nydrel 1:21558533e3b9 29 #define _ 0x000000 //BLACK
Nydrel 1:21558533e3b9 30 #define X 0xFFFFFF //WHITE
Nydrel 1:21558533e3b9 31 #define B 0x0000FF //BLUE
Nydrel 1:21558533e3b9 32 #define r 0xFF0000 //RED
Nydrel 1:21558533e3b9 33
Nydrel 1:21558533e3b9 34
Nydrel 1:21558533e3b9 35 /*-----Sprites------*/
Nydrel 1:21558533e3b9 36
Nydrel 2:9ece21082838 37 int spaceship_earth1[EARTH_WIDTH * EARTH_HEIGHT] =
Nydrel 2:9ece21082838 38 {
Nydrel 1:21558533e3b9 39 _,_,S,S,S,S,S,S,_,_,
Nydrel 1:21558533e3b9 40 _,S,I,I,I,I,I,I,S,_,
Nydrel 1:21558533e3b9 41 S,I,I,I,I,I,I,I,I,S,
Nydrel 1:21558533e3b9 42 S,I,I,I,I,I,I,I,I,S,
Nydrel 1:21558533e3b9 43 S,I,I,I,I,I,I,I,I,S,
Nydrel 1:21558533e3b9 44 S,I,I,I,I,I,I,I,I,S,
Nydrel 1:21558533e3b9 45 S,I,I,I,I,I,I,I,I,S,
Nydrel 1:21558533e3b9 46 S,I,I,I,I,I,I,I,I,S,
Nydrel 1:21558533e3b9 47 S,I,I,I,I,I,I,I,S,_,
Nydrel 2:9ece21082838 48 _,S,S,S,S,S,S,S,_,_
Nydrel 1:21558533e3b9 49 };
Nydrel 1:21558533e3b9 50
Nydrel 2:9ece21082838 51 int earth_blank[EARTH_WIDTH * EARTH_HEIGHT] =
Nydrel 2:9ece21082838 52 {
Nydrel 1:21558533e3b9 53 _,_,_,_,_,_,_,_,_,_,
Nydrel 1:21558533e3b9 54 _,_,_,_,_,_,_,_,_,_,
Nydrel 1:21558533e3b9 55 _,_,_,_,_,_,_,_,_,_,
Nydrel 1:21558533e3b9 56 _,_,_,_,_,_,_,_,_,_,
Nydrel 1:21558533e3b9 57 _,_,_,_,_,_,_,_,_,_,
Nydrel 1:21558533e3b9 58 _,_,_,_,_,_,_,_,_,_,
Nydrel 1:21558533e3b9 59 _,_,_,_,_,_,_,_,_,_,
Nydrel 1:21558533e3b9 60 _,_,_,_,_,_,_,_,_,_,
Nydrel 1:21558533e3b9 61 _,_,_,_,_,_,_,_,_,_,
Nydrel 2:9ece21082838 62 _,_,_,_,_,_,_,_,_,_
Nydrel 2:9ece21082838 63 };
Nydrel 2:9ece21082838 64
Nydrel 5:ed52ac77cdf9 65
Nydrel 5:ed52ac77cdf9 66 int earth_destroy[EARTH_WIDTH * EARTH_HEIGHT] =
Nydrel 5:ed52ac77cdf9 67 {
Nydrel 5:ed52ac77cdf9 68 R,R,R,R,R,R,R,R,R,R,
Nydrel 5:ed52ac77cdf9 69 R,R,r,_,_,r,_,_,r,R,
Nydrel 5:ed52ac77cdf9 70 R,R,_,r,_,r,_,r,_,R,
Nydrel 5:ed52ac77cdf9 71 R,R,_,_,r,r,r,_,_,R,
Nydrel 5:ed52ac77cdf9 72 R,R,r,r,r,r,r,r,r,R,
Nydrel 5:ed52ac77cdf9 73 R,R,_,_,r,r,r,_,_,R,
Nydrel 5:ed52ac77cdf9 74 R,R,_,r,_,r,_,r,_,R,
Nydrel 5:ed52ac77cdf9 75 R,R,r,_,_,r,_,_,r,R,
Nydrel 5:ed52ac77cdf9 76 R,R,R,R,R,R,R,R,R,R,
Nydrel 5:ed52ac77cdf9 77 R,R,R,R,R,R,R,R,R,R
Nydrel 5:ed52ac77cdf9 78 };
Nydrel 5:ed52ac77cdf9 79
Nydrel 2:9ece21082838 80 int asteroid_sprite_1[ASTEROID_HEIGHT * ASTEROID_WIDTH] = {
Nydrel 2:9ece21082838 81 _,_,_,_,X,X,X,X,X,X,X,X,_,_,_,
Nydrel 2:9ece21082838 82 _,_,_,X,_,_,_,_,_,_,_,_,X,_,_,
Nydrel 2:9ece21082838 83 _,_,X,_,_,_,_,_,_,_,_,_,X,_,_,
Nydrel 2:9ece21082838 84 _,X,_,_,_,_,_,_,_,_,_,_,X,_,_,
Nydrel 2:9ece21082838 85 X,X,X,X,_,_,_,_,_,_,_,_,_,X,_,
Nydrel 2:9ece21082838 86 _,_,_,X,_,_,_,_,_,_,_,_,_,X,_,
Nydrel 2:9ece21082838 87 _,_,X,_,_,_,_,_,_,_,_,_,_,X,_,
Nydrel 2:9ece21082838 88 _,X,_,_,_,_,_,X,_,_,_,_,_,X,_,
Nydrel 2:9ece21082838 89 X,_,_,_,_,_,X,X,_,_,_,_,X,_,_,
Nydrel 2:9ece21082838 90 _,X,_,_,_,X,_,X,_,_,_,_,X,_,_,
Nydrel 2:9ece21082838 91 _,_,X,_,X,_,_,X,_,_,_,X,_,_,_,
Nydrel 2:9ece21082838 92 _,_,_,X,_,_,_,X,X,X,X,_,_,_,_
Nydrel 2:9ece21082838 93 };
Nydrel 2:9ece21082838 94
Nydrel 2:9ece21082838 95
Nydrel 2:9ece21082838 96 int asteroid_sprite_2[ASTEROID_HEIGHT * ASTEROID_WIDTH] = {
Nydrel 2:9ece21082838 97 _,_,X,X,X,X,X,X,X,X,_,_,_,_,_,
Nydrel 2:9ece21082838 98 _,_,_,X,_,_,_,_,_,_,X,X,_,_,_,
Nydrel 2:9ece21082838 99 _,_,_,_,X,_,_,_,_,_,_,_,X,_,_,
Nydrel 2:9ece21082838 100 X,X,X,X,X,X,_,_,_,_,_,_,_,X,_,
Nydrel 2:9ece21082838 101 X,_,_,_,_,_,_,_,_,_,_,_,_,_,X,
Nydrel 2:9ece21082838 102 X,_,_,_,_,_,_,_,_,_,_,_,_,X,X,
Nydrel 2:9ece21082838 103 X,_,_,_,_,_,_,_,_,_,_,X,X,_,_,
Nydrel 2:9ece21082838 104 _,X,_,_,_,_,_,_,_,_,X,_,_,_,_,
Nydrel 2:9ece21082838 105 _,_,X,_,_,_,_,_,_,_,_,X,X,_,_,
Nydrel 2:9ece21082838 106 _,_,_,X,_,_,_,_,X,_,_,_,_,X,X,
Nydrel 2:9ece21082838 107 _,_,_,_,X,_,X,X,_,X,X,_,_,X,_,
Nydrel 2:9ece21082838 108 _,_,_,_,_,X,_,_,_,_,_,X,X,_,_
Nydrel 2:9ece21082838 109 };
Nydrel 2:9ece21082838 110
Nydrel 2:9ece21082838 111
Nydrel 2:9ece21082838 112 int asteroid_sprite_3[ASTEROID_HEIGHT * ASTEROID_WIDTH] = {
Nydrel 2:9ece21082838 113 _,_,X,X,X,_,_,_,_,_,_,X,X,_,_,
Nydrel 2:9ece21082838 114 _,X,_,_,_,X,X,_,_,_,X,_,_,X,_,
Nydrel 2:9ece21082838 115 X,_,_,_,_,_,_,X,X,X,_,_,_,_,X,
Nydrel 2:9ece21082838 116 _,X,_,_,_,_,_,_,_,_,_,_,_,X,_,
Nydrel 2:9ece21082838 117 _,_,X,_,_,_,_,_,_,_,X,X,X,_,_,
Nydrel 2:9ece21082838 118 _,_,_,X,_,_,_,_,_,_,X,X,_,_,_,
Nydrel 2:9ece21082838 119 _,_,X,_,_,_,_,_,_,_,_,_,X,_,_,
Nydrel 2:9ece21082838 120 _,X,_,_,_,_,_,_,_,_,_,_,_,X,_,
Nydrel 2:9ece21082838 121 X,_,_,_,_,_,_,_,_,_,_,_,_,_,X,
Nydrel 2:9ece21082838 122 _,X,_,_,_,X,X,X,_,_,_,_,_,X,_,
Nydrel 2:9ece21082838 123 _,_,X,_,X,_,_,_,X,X,_,X,X,_,_,
Nydrel 2:9ece21082838 124 _,_,_,X,_,_,_,_,_,_,X,X,X,_,_
Nydrel 2:9ece21082838 125 };
Nydrel 2:9ece21082838 126
Nydrel 2:9ece21082838 127
Nydrel 2:9ece21082838 128 int asteroid_sprite_4[ASTEROID_HEIGHT * ASTEROID_WIDTH] = {
Nydrel 2:9ece21082838 129 _,_,_,X,X,_,_,_,_,_,X,_,_,_,_,
Nydrel 2:9ece21082838 130 _,_,X,_,_,X,_,_,_,X,_,X,X,_,_,
Nydrel 2:9ece21082838 131 _,X,_,_,_,_,X,_,X,_,_,_,_,X,_,
Nydrel 2:9ece21082838 132 X,_,_,_,_,_,_,X,_,_,_,_,_,_,X,
Nydrel 2:9ece21082838 133 X,_,_,_,_,_,_,_,_,_,_,_,_,X,_,
Nydrel 2:9ece21082838 134 X,_,_,_,_,_,_,_,_,_,_,_,X,_,_,
Nydrel 2:9ece21082838 135 X,_,_,_,_,_,_,_,_,_,_,_,_,X,_,
Nydrel 2:9ece21082838 136 X,_,_,_,_,_,_,_,_,_,_,_,_,_,X,
Nydrel 2:9ece21082838 137 X,_,_,_,_,_,_,_,_,_,_,_,_,X,_,
Nydrel 2:9ece21082838 138 _,X,_,_,_,_,_,_,_,_,_,_,X,_,_,
Nydrel 2:9ece21082838 139 _,_,X,_,_,_,_,_,_,_,_,X,_,_,_,
Nydrel 2:9ece21082838 140 _,_,_,X,X,X,X,X,X,X,X,_,_,_,_
Nydrel 2:9ece21082838 141 };
Nydrel 2:9ece21082838 142
Nydrel 2:9ece21082838 143
Nydrel 2:9ece21082838 144 int asteroid_blank[ASTEROID_WIDTH * ASTEROID_HEIGHT] =
Nydrel 2:9ece21082838 145 {
Nydrel 2:9ece21082838 146 _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,
Nydrel 2:9ece21082838 147 _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,
Nydrel 2:9ece21082838 148 _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,
Nydrel 2:9ece21082838 149 _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,
Nydrel 2:9ece21082838 150 _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,
Nydrel 2:9ece21082838 151 _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,
Nydrel 2:9ece21082838 152 _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,
Nydrel 2:9ece21082838 153 _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,
Nydrel 2:9ece21082838 154 _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,
Nydrel 2:9ece21082838 155 _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,
Nydrel 2:9ece21082838 156 _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,
Nydrel 2:9ece21082838 157 _,_,_,_,_,_,_,_,_,_,_,_,_,_,_
Nydrel 1:21558533e3b9 158 };
Nydrel 1:21558533e3b9 159
Nydrel 1:21558533e3b9 160
Nydrel 5:ed52ac77cdf9 161
Nydrel 1:21558533e3b9 162 //Instantiate Accelerometer Object
Nydrel 1:21558533e3b9 163
jd7142128 0:5e90b8577fef 164 Serial pc(USBTX,USBRX); //not used in this program
Nydrel 1:21558533e3b9 165 MMA8452 acc(p9, p10, 40000); //instantiate an acc object!
Nydrel 1:21558533e3b9 166 double x, y, z;
jd7142128 0:5e90b8577fef 167
Nydrel 1:21558533e3b9 168 //Instantiate uLCD Object
jd7142128 0:5e90b8577fef 169
Nydrel 1:21558533e3b9 170 DigitalOut myled(LED1);
Nydrel 1:21558533e3b9 171 uLCD_4DGL uLCD(p28, p27, p29); // create a global uLCD object
Nydrel 5:ed52ac77cdf9 172 Speaker mySpeaker(p21);
Nydrel 5:ed52ac77cdf9 173
Nydrel 5:ed52ac77cdf9 174 //Setup pushbutton for bomb
Nydrel 5:ed52ac77cdf9 175 PinDetect pb1(p16);
Nydrel 1:21558533e3b9 176
Nydrel 1:21558533e3b9 177 int factor = 50;
Nydrel 1:21558533e3b9 178 int offset = 63;
Nydrel 5:ed52ac77cdf9 179 bool BombUsed = false;
Nydrel 5:ed52ac77cdf9 180 bool ExplodeAllAsteroids = false;
Nydrel 1:21558533e3b9 181
Nydrel 1:21558533e3b9 182
Nydrel 5:ed52ac77cdf9 183 void pb1_hit_callback (void)
Nydrel 5:ed52ac77cdf9 184 {
Nydrel 5:ed52ac77cdf9 185 if (!BombUsed )
Nydrel 5:ed52ac77cdf9 186 {
Nydrel 5:ed52ac77cdf9 187 ExplodeAllAsteroids = true;
Nydrel 5:ed52ac77cdf9 188 BombUsed = true;
Nydrel 5:ed52ac77cdf9 189 }
Nydrel 5:ed52ac77cdf9 190 }
Nydrel 1:21558533e3b9 191
Nydrel 1:21558533e3b9 192 /*-----ScreenObject Class------*/
jd7142128 0:5e90b8577fef 193
Nydrel 1:21558533e3b9 194 class ScreenObject
Nydrel 1:21558533e3b9 195 {
Nydrel 1:21558533e3b9 196 public:
Nydrel 1:21558533e3b9 197 //ScreenObject();
Nydrel 1:21558533e3b9 198 //setter functions
Nydrel 2:9ece21082838 199
Nydrel 2:9ece21082838 200 /*void setXPos(int x)
Nydrel 1:21558533e3b9 201 {
Nydrel 1:21558533e3b9 202 x_pos = x;
Nydrel 1:21558533e3b9 203 }
Nydrel 1:21558533e3b9 204
Nydrel 1:21558533e3b9 205 void setYPos(int y)
Nydrel 1:21558533e3b9 206 {
Nydrel 1:21558533e3b9 207 y_pos = y;
Nydrel 2:9ece21082838 208 } */
Nydrel 1:21558533e3b9 209
Nydrel 1:21558533e3b9 210 //getter functions
Nydrel 1:21558533e3b9 211 // int getXPos();
Nydrel 1:21558533e3b9 212 // int getYPos();
Nydrel 1:21558533e3b9 213
Nydrel 1:21558533e3b9 214 //pure virtual
Nydrel 1:21558533e3b9 215 virtual void draw() = 0;
Nydrel 1:21558533e3b9 216 virtual void update() = 0;
Nydrel 3:462904d1c1a9 217 virtual bool boundaryCheck() = 0;
Nydrel 5:ed52ac77cdf9 218 virtual void reset() = 0;
Nydrel 5:ed52ac77cdf9 219
Nydrel 5:ed52ac77cdf9 220 friend bool overlap(ScreenObject & objectA, ScreenObject & objectB)
Nydrel 5:ed52ac77cdf9 221 {
Nydrel 5:ed52ac77cdf9 222 bool rangeX = (objectA.x_pos <= objectB.x_pos + 7) && (objectA.x_pos + 8 >= objectB.x_pos);
Nydrel 5:ed52ac77cdf9 223 bool rangeY = (objectA.y_pos <= objectB.y_pos + 7) && (objectA.y_pos + 7 >= objectB.y_pos);
Nydrel 5:ed52ac77cdf9 224 return (rangeX && rangeY);
Nydrel 5:ed52ac77cdf9 225 }
Nydrel 5:ed52ac77cdf9 226 //you put stuff in here!
Nydrel 5:ed52ac77cdf9 227
Nydrel 1:21558533e3b9 228 protected:
Nydrel 1:21558533e3b9 229 int x_pos;
Nydrel 1:21558533e3b9 230 int y_pos;
Nydrel 1:21558533e3b9 231 };
Nydrel 1:21558533e3b9 232
Nydrel 1:21558533e3b9 233
Nydrel 1:21558533e3b9 234 /*-----SpaceShipEarth Class------*/
Nydrel 1:21558533e3b9 235
Nydrel 1:21558533e3b9 236 class SpaceShipEarth: public ScreenObject
Nydrel 1:21558533e3b9 237 {
Nydrel 1:21558533e3b9 238 public:
Nydrel 1:21558533e3b9 239 SpaceShipEarth() {
Nydrel 1:21558533e3b9 240 x_pos = 63;
Nydrel 1:21558533e3b9 241 y_pos = 63;
Nydrel 1:21558533e3b9 242 }
Nydrel 1:21558533e3b9 243
Nydrel 1:21558533e3b9 244 void draw() {
Nydrel 2:9ece21082838 245 uLCD.BLIT(x_pos, y_pos, EARTH_WIDTH, EARTH_HEIGHT,spaceship_earth1);
Nydrel 1:21558533e3b9 246 }
Nydrel 1:21558533e3b9 247
Nydrel 1:21558533e3b9 248 void update() {
Nydrel 1:21558533e3b9 249
Nydrel 2:9ece21082838 250 uLCD.BLIT(x_pos, y_pos, EARTH_WIDTH, EARTH_HEIGHT,earth_blank);
Nydrel 1:21558533e3b9 251
Nydrel 1:21558533e3b9 252 if(!acc.isXYZReady()) {
Nydrel 1:21558533e3b9 253 wait(0.02);
Nydrel 1:21558533e3b9 254 }
Nydrel 1:21558533e3b9 255
Nydrel 1:21558533e3b9 256 else {
Nydrel 1:21558533e3b9 257 acc.readXYZGravity(&x,&y,&z); //notice this is passed by reference use pointers
Nydrel 2:9ece21082838 258 x_pos = -1*x*factor + offset;
Nydrel 2:9ece21082838 259 y_pos = -1*y*factor + offset;
Nydrel 2:9ece21082838 260
Nydrel 1:21558533e3b9 261 } //end else
Nydrel 2:9ece21082838 262 }//end if
Nydrel 3:462904d1c1a9 263
Nydrel 5:ed52ac77cdf9 264 void explode() {
Nydrel 5:ed52ac77cdf9 265 uLCD.BLIT(x_pos, y_pos, EARTH_WIDTH, EARTH_HEIGHT,earth_blank);
Nydrel 5:ed52ac77cdf9 266 uLCD.BLIT(x_pos, y_pos, EARTH_WIDTH, EARTH_HEIGHT,earth_destroy);
Nydrel 5:ed52ac77cdf9 267 }
Nydrel 5:ed52ac77cdf9 268
Nydrel 3:462904d1c1a9 269 bool boundaryCheck()
Nydrel 3:462904d1c1a9 270 {
Nydrel 3:462904d1c1a9 271 if(((x_pos == 0) || (x_pos == 126)) || ((y_pos == 0) || (y_pos == 126)))
Nydrel 3:462904d1c1a9 272 return true;
Nydrel 3:462904d1c1a9 273 else
Nydrel 3:462904d1c1a9 274 return false;
Nydrel 3:462904d1c1a9 275 }
Nydrel 4:d128df681d05 276
Nydrel 5:ed52ac77cdf9 277 void reset()
Nydrel 5:ed52ac77cdf9 278 {
Nydrel 5:ed52ac77cdf9 279 x_pos = 63;
Nydrel 5:ed52ac77cdf9 280 y_pos = 63;
Nydrel 5:ed52ac77cdf9 281 }
Nydrel 5:ed52ac77cdf9 282
Nydrel 4:d128df681d05 283 /*
Nydrel 5:ed52ac77cdf9 284 bool boundaryCheck(* ScreenObject asteroid)
Nydrel 5:ed52ac77cdf9 285 {
Nydrel 5:ed52ac77cdf9 286 //compare the four corners of the Earth and asteroid sprites
Nydrel 5:ed52ac77cdf9 287 bool c1 = (asteroid->x_pos) <=
Nydrel 5:ed52ac77cdf9 288 }
Nydrel 4:d128df681d05 289 */
Nydrel 1:21558533e3b9 290
Nydrel 1:21558533e3b9 291 };
Nydrel 1:21558533e3b9 292
Nydrel 1:21558533e3b9 293
Nydrel 1:21558533e3b9 294
Nydrel 2:9ece21082838 295 /*-----AbstractAsteroid Class-----*/
Nydrel 2:9ece21082838 296
Nydrel 2:9ece21082838 297
Nydrel 2:9ece21082838 298 class AbstractAsteroid: public ScreenObject
Nydrel 2:9ece21082838 299 {
Nydrel 2:9ece21082838 300 public:
Nydrel 2:9ece21082838 301 void pickCorner(int corner)
Nydrel 2:9ece21082838 302 {
Nydrel 2:9ece21082838 303 switch (corner)
Nydrel 2:9ece21082838 304 {
Nydrel 2:9ece21082838 305 case 1: //top left
Nydrel 5:ed52ac77cdf9 306 x_pos = 2;
Nydrel 5:ed52ac77cdf9 307 y_pos = 2;
Nydrel 2:9ece21082838 308 deltaX = rand() % 3 + 1;
Nydrel 2:9ece21082838 309 deltaY = rand() % 3 + 1;
Nydrel 2:9ece21082838 310 break;
Nydrel 2:9ece21082838 311 case 2: //top right
Nydrel 5:ed52ac77cdf9 312 x_pos = 124 - ASTEROID_WIDTH;
Nydrel 5:ed52ac77cdf9 313 y_pos = 2;
Nydrel 2:9ece21082838 314 deltaX = -1*(rand() % 3 + 1);
Nydrel 2:9ece21082838 315 deltaY = rand() % 3 + 1;
Nydrel 2:9ece21082838 316 break;
Nydrel 2:9ece21082838 317 case 3: //bottom left
Nydrel 5:ed52ac77cdf9 318 x_pos = 2;
Nydrel 5:ed52ac77cdf9 319 y_pos = 124 - ASTEROID_HEIGHT;
Nydrel 2:9ece21082838 320 deltaX = rand() % 3 + 1;
Nydrel 2:9ece21082838 321 deltaY = -1*(rand() % 3 + 1);
Nydrel 2:9ece21082838 322 break;
Nydrel 2:9ece21082838 323 case 4: //bottom right
Nydrel 5:ed52ac77cdf9 324 x_pos = 124 - ASTEROID_WIDTH;
Nydrel 5:ed52ac77cdf9 325 y_pos = 124 - ASTEROID_HEIGHT;
Nydrel 2:9ece21082838 326 deltaX = -1*(rand() % 3 + 1);
Nydrel 2:9ece21082838 327 deltaY = -1*(rand() % 3 + 1);
Nydrel 2:9ece21082838 328 break;
Nydrel 2:9ece21082838 329 }
Nydrel 2:9ece21082838 330 }
Nydrel 2:9ece21082838 331
Nydrel 5:ed52ac77cdf9 332 void pickEdge()
Nydrel 2:9ece21082838 333 {
Nydrel 5:ed52ac77cdf9 334 int edge = rand() % 4 + 1;
Nydrel 2:9ece21082838 335
Nydrel 5:ed52ac77cdf9 336 switch (edge)
Nydrel 2:9ece21082838 337 {
Nydrel 5:ed52ac77cdf9 338 case 1: //top
Nydrel 5:ed52ac77cdf9 339 x_pos = rand() % 2 + (120 - ASTEROID_WIDTH);
Nydrel 5:ed52ac77cdf9 340 y_pos = 2;
Nydrel 5:ed52ac77cdf9 341 if((rand() % 1))
Nydrel 5:ed52ac77cdf9 342 deltaX = rand() % 3 + 1;
Nydrel 5:ed52ac77cdf9 343 else
Nydrel 5:ed52ac77cdf9 344 deltaX = -1*(rand() % 3 + 1);
Nydrel 2:9ece21082838 345 deltaY = rand() % 3 + 1;
Nydrel 2:9ece21082838 346 break;
Nydrel 5:ed52ac77cdf9 347 case 2: //bottom
Nydrel 5:ed52ac77cdf9 348 x_pos = rand() % 2 + (120 - ASTEROID_WIDTH);
Nydrel 5:ed52ac77cdf9 349 y_pos = 120 - ASTEROID_HEIGHT;
Nydrel 5:ed52ac77cdf9 350 if((rand() % 1))
Nydrel 5:ed52ac77cdf9 351 deltaX = rand() % 3 + 1;
Nydrel 5:ed52ac77cdf9 352 else
Nydrel 5:ed52ac77cdf9 353 deltaX = -1*(rand() % 3 + 1);
Nydrel 2:9ece21082838 354 deltaY = -1*(rand() % 3 + 1);
Nydrel 2:9ece21082838 355 break;
Nydrel 5:ed52ac77cdf9 356 case 3: //left
Nydrel 5:ed52ac77cdf9 357 x_pos = 2;
Nydrel 5:ed52ac77cdf9 358 y_pos = rand() % 1 + (120 - ASTEROID_HEIGHT);
Nydrel 5:ed52ac77cdf9 359 deltaX = rand() % 3 + 1;
Nydrel 5:ed52ac77cdf9 360 if((rand() % 1))
Nydrel 5:ed52ac77cdf9 361 deltaY = rand() % 3 + 1;
Nydrel 5:ed52ac77cdf9 362 else
Nydrel 5:ed52ac77cdf9 363 deltaY = -1*(rand() % 3 + 1);
Nydrel 5:ed52ac77cdf9 364 break;
Nydrel 5:ed52ac77cdf9 365 case 4: //right
Nydrel 5:ed52ac77cdf9 366 x_pos = 120 - ASTEROID_WIDTH;
Nydrel 5:ed52ac77cdf9 367 y_pos = rand() % 1 + (120 - ASTEROID_HEIGHT);
Nydrel 2:9ece21082838 368 deltaX = -1*(rand() % 3 + 1);
Nydrel 5:ed52ac77cdf9 369 if((rand() % 1))
Nydrel 5:ed52ac77cdf9 370 deltaY = rand() % 3 + 1;
Nydrel 5:ed52ac77cdf9 371 else
Nydrel 5:ed52ac77cdf9 372 deltaY = -1*(rand() % 3 + 1);
Nydrel 2:9ece21082838 373 break;
Nydrel 2:9ece21082838 374 }
Nydrel 4:d128df681d05 375 }
Nydrel 2:9ece21082838 376
Nydrel 5:ed52ac77cdf9 377
Nydrel 2:9ece21082838 378 bool boundaryCheck()
Nydrel 2:9ece21082838 379 {
Nydrel 5:ed52ac77cdf9 380 bool c1 = x_pos + ASTEROID_WIDTH > 124; //if moving towards right side of screen
Nydrel 5:ed52ac77cdf9 381 bool c2 = x_pos <= 0; //if moving towards left side of screen
Nydrel 5:ed52ac77cdf9 382 bool c3 = y_pos + ASTEROID_HEIGHT > 124; //if moving towards bottom of screen
Nydrel 5:ed52ac77cdf9 383 bool c4 = y_pos <= 0; //if moving towards top of screen
Nydrel 4:d128df681d05 384
Nydrel 4:d128df681d05 385 if(c1 || c2 || c3 || c4)
Nydrel 3:462904d1c1a9 386 return true;
Nydrel 3:462904d1c1a9 387 else
Nydrel 3:462904d1c1a9 388 return false;
Nydrel 2:9ece21082838 389 }
Nydrel 2:9ece21082838 390
Nydrel 2:9ece21082838 391 protected:
Nydrel 2:9ece21082838 392 int deltaX;
Nydrel 2:9ece21082838 393 int deltaY;
Nydrel 2:9ece21082838 394 };
Nydrel 2:9ece21082838 395
Nydrel 2:9ece21082838 396
Nydrel 2:9ece21082838 397
Nydrel 2:9ece21082838 398 //-----Concrete Asteroids-----//
Nydrel 2:9ece21082838 399
Nydrel 2:9ece21082838 400 //-----Asteroid1-----//
Nydrel 2:9ece21082838 401 class Asteroid1: public AbstractAsteroid
Nydrel 2:9ece21082838 402 {
Nydrel 2:9ece21082838 403 public:
Nydrel 2:9ece21082838 404 Asteroid1(int corner)
Nydrel 2:9ece21082838 405 {
Nydrel 2:9ece21082838 406 pickCorner(corner);
Nydrel 2:9ece21082838 407 startTime = time(0);
Nydrel 2:9ece21082838 408 }
Nydrel 2:9ece21082838 409
Nydrel 5:ed52ac77cdf9 410 void reset()
Nydrel 2:9ece21082838 411 {
Nydrel 5:ed52ac77cdf9 412 pickEdge();
Nydrel 5:ed52ac77cdf9 413 startTime = time(0);
Nydrel 2:9ece21082838 414 }
Nydrel 2:9ece21082838 415
Nydrel 2:9ece21082838 416 void draw()
Nydrel 5:ed52ac77cdf9 417 {
Nydrel 2:9ece21082838 418 uLCD.BLIT(x_pos, y_pos, ASTEROID_WIDTH, ASTEROID_HEIGHT,asteroid_sprite_1);
Nydrel 2:9ece21082838 419 }
Nydrel 2:9ece21082838 420
Nydrel 2:9ece21082838 421 void update()
Nydrel 2:9ece21082838 422 {
Nydrel 2:9ece21082838 423 uLCD.BLIT(x_pos, y_pos, ASTEROID_WIDTH, ASTEROID_HEIGHT,asteroid_blank);
Nydrel 2:9ece21082838 424 wait(0.02);
Nydrel 2:9ece21082838 425 time_t timeElapsed = time(0)-startTime;
Nydrel 2:9ece21082838 426 x_pos = x_pos + (deltaX * timeElapsed);
Nydrel 2:9ece21082838 427 y_pos = y_pos + (deltaY * timeElapsed);
Nydrel 2:9ece21082838 428 }
Nydrel 2:9ece21082838 429
Nydrel 5:ed52ac77cdf9 430
Nydrel 2:9ece21082838 431 protected:
Nydrel 2:9ece21082838 432 time_t startTime;
Nydrel 2:9ece21082838 433 };
Nydrel 2:9ece21082838 434
Nydrel 2:9ece21082838 435
Nydrel 2:9ece21082838 436 //-----Asteroid2-----//
Nydrel 2:9ece21082838 437 class Asteroid2: public AbstractAsteroid
Nydrel 2:9ece21082838 438 {
Nydrel 2:9ece21082838 439 public:
Nydrel 2:9ece21082838 440 Asteroid2(int corner)
Nydrel 2:9ece21082838 441 {
Nydrel 2:9ece21082838 442 pickCorner(corner);
Nydrel 2:9ece21082838 443 startTime = time(0);
Nydrel 2:9ece21082838 444 }
Nydrel 2:9ece21082838 445
Nydrel 5:ed52ac77cdf9 446 void reset()
Nydrel 2:9ece21082838 447 {
Nydrel 5:ed52ac77cdf9 448 pickEdge();
Nydrel 5:ed52ac77cdf9 449 startTime = time(0);
Nydrel 2:9ece21082838 450 }
Nydrel 2:9ece21082838 451
Nydrel 2:9ece21082838 452 void draw()
Nydrel 2:9ece21082838 453 {
Nydrel 2:9ece21082838 454 uLCD.BLIT(x_pos, y_pos, ASTEROID_WIDTH, ASTEROID_HEIGHT,asteroid_sprite_2);
Nydrel 2:9ece21082838 455 }
Nydrel 2:9ece21082838 456
Nydrel 2:9ece21082838 457 void update()
Nydrel 2:9ece21082838 458 {
Nydrel 2:9ece21082838 459 uLCD.BLIT(x_pos, y_pos, ASTEROID_WIDTH, ASTEROID_HEIGHT,asteroid_blank);
Nydrel 2:9ece21082838 460 wait(0.02);
Nydrel 2:9ece21082838 461 time_t timeElapsed = time(0)-startTime;
Nydrel 2:9ece21082838 462 x_pos = x_pos + (deltaX * timeElapsed);
Nydrel 2:9ece21082838 463 y_pos = y_pos + (deltaY * timeElapsed);
Nydrel 2:9ece21082838 464 }
Nydrel 2:9ece21082838 465
Nydrel 2:9ece21082838 466 protected:
Nydrel 2:9ece21082838 467 time_t startTime;
Nydrel 2:9ece21082838 468 };
Nydrel 2:9ece21082838 469
Nydrel 2:9ece21082838 470
Nydrel 2:9ece21082838 471
Nydrel 2:9ece21082838 472
Nydrel 2:9ece21082838 473 //-----Asteroid3-----//
Nydrel 2:9ece21082838 474 class Asteroid3: public AbstractAsteroid
Nydrel 2:9ece21082838 475 {
Nydrel 2:9ece21082838 476 public:
Nydrel 2:9ece21082838 477 Asteroid3(int corner)
Nydrel 2:9ece21082838 478 {
Nydrel 2:9ece21082838 479 pickCorner(corner);
Nydrel 2:9ece21082838 480 startTime = time(0);
Nydrel 2:9ece21082838 481 }
Nydrel 2:9ece21082838 482
Nydrel 5:ed52ac77cdf9 483 void reset()
Nydrel 2:9ece21082838 484 {
Nydrel 5:ed52ac77cdf9 485 pickEdge();
Nydrel 5:ed52ac77cdf9 486 startTime = time(0);
Nydrel 2:9ece21082838 487 }
Nydrel 2:9ece21082838 488
Nydrel 2:9ece21082838 489 void draw()
Nydrel 2:9ece21082838 490 {
Nydrel 2:9ece21082838 491 uLCD.BLIT(x_pos, y_pos, ASTEROID_WIDTH, ASTEROID_HEIGHT,asteroid_sprite_3);
Nydrel 2:9ece21082838 492 }
Nydrel 2:9ece21082838 493
Nydrel 2:9ece21082838 494 void update()
Nydrel 2:9ece21082838 495 {
Nydrel 2:9ece21082838 496 uLCD.BLIT(x_pos, y_pos, ASTEROID_WIDTH, ASTEROID_HEIGHT,asteroid_blank);
Nydrel 2:9ece21082838 497 wait(0.02);
Nydrel 2:9ece21082838 498 time_t timeElapsed = time(0)-startTime;
Nydrel 2:9ece21082838 499 x_pos = x_pos + (deltaX * timeElapsed);
Nydrel 2:9ece21082838 500 y_pos = y_pos + (deltaY * timeElapsed);
Nydrel 2:9ece21082838 501 }
Nydrel 2:9ece21082838 502
Nydrel 5:ed52ac77cdf9 503
Nydrel 2:9ece21082838 504 protected:
Nydrel 2:9ece21082838 505 time_t startTime;
Nydrel 2:9ece21082838 506 };
Nydrel 2:9ece21082838 507
Nydrel 2:9ece21082838 508
Nydrel 2:9ece21082838 509
Nydrel 2:9ece21082838 510 //-----Asteroid4-----//
Nydrel 2:9ece21082838 511 class Asteroid4: public AbstractAsteroid
Nydrel 2:9ece21082838 512 {
Nydrel 2:9ece21082838 513 public:
Nydrel 2:9ece21082838 514 Asteroid4(int corner)
Nydrel 2:9ece21082838 515 {
Nydrel 2:9ece21082838 516 pickCorner(corner);
Nydrel 2:9ece21082838 517 startTime = time(0);
Nydrel 2:9ece21082838 518 }
Nydrel 2:9ece21082838 519
Nydrel 5:ed52ac77cdf9 520 void reset()
Nydrel 2:9ece21082838 521 {
Nydrel 5:ed52ac77cdf9 522 pickEdge();
Nydrel 5:ed52ac77cdf9 523 startTime = time(0);
Nydrel 2:9ece21082838 524 }
Nydrel 2:9ece21082838 525
Nydrel 2:9ece21082838 526 void draw()
Nydrel 2:9ece21082838 527 {
Nydrel 2:9ece21082838 528 uLCD.BLIT(x_pos, y_pos, ASTEROID_WIDTH, ASTEROID_HEIGHT,asteroid_sprite_4);
Nydrel 2:9ece21082838 529 }
Nydrel 2:9ece21082838 530
Nydrel 2:9ece21082838 531 void update()
Nydrel 2:9ece21082838 532 {
Nydrel 2:9ece21082838 533 uLCD.BLIT(x_pos, y_pos, ASTEROID_WIDTH, ASTEROID_HEIGHT,asteroid_blank);
Nydrel 2:9ece21082838 534 wait(0.02);
Nydrel 2:9ece21082838 535 time_t timeElapsed = time(0)-startTime;
Nydrel 2:9ece21082838 536 x_pos = x_pos + (deltaX * timeElapsed);
Nydrel 2:9ece21082838 537 y_pos = y_pos + (deltaY * timeElapsed);
Nydrel 2:9ece21082838 538 }
Nydrel 2:9ece21082838 539
Nydrel 5:ed52ac77cdf9 540
Nydrel 2:9ece21082838 541 protected:
Nydrel 2:9ece21082838 542 time_t startTime;
Nydrel 2:9ece21082838 543 };
Nydrel 2:9ece21082838 544
Nydrel 2:9ece21082838 545
Nydrel 2:9ece21082838 546
Nydrel 2:9ece21082838 547
Nydrel 1:21558533e3b9 548 //Program Start
Nydrel 1:21558533e3b9 549
Nydrel 1:21558533e3b9 550 int main()
Nydrel 1:21558533e3b9 551 {
Nydrel 1:21558533e3b9 552 uLCD.baudrate(300000);
Nydrel 1:21558533e3b9 553 wait(0.2);
Nydrel 1:21558533e3b9 554 srand(time(0)); // do this srand call here ONLY... no where else in the code!
Nydrel 3:462904d1c1a9 555 ScreenObject * ActiveAsteroids[NUM_ASTEROIDS];
Nydrel 4:d128df681d05 556 SpaceShipEarth ship; //instantiate a SpaceShipEarth object
Nydrel 5:ed52ac77cdf9 557
Nydrel 5:ed52ac77cdf9 558 pb1.mode(PullUp);
Nydrel 5:ed52ac77cdf9 559 wait(0.01);
Nydrel 5:ed52ac77cdf9 560 pb1.attach_deasserted(&pb1_hit_callback);
Nydrel 5:ed52ac77cdf9 561 pb1.setSampleFrequency();
Nydrel 2:9ece21082838 562
Nydrel 5:ed52ac77cdf9 563
Nydrel 5:ed52ac77cdf9 564 double bar = 127;
Nydrel 2:9ece21082838 565
Nydrel 5:ed52ac77cdf9 566 Asteroid1 rock1(1);
Nydrel 5:ed52ac77cdf9 567 Asteroid2 rock2(2);
Nydrel 5:ed52ac77cdf9 568 Asteroid3 rock3(3);
Nydrel 5:ed52ac77cdf9 569 Asteroid4 rock4(4);
Nydrel 3:462904d1c1a9 570
Nydrel 5:ed52ac77cdf9 571 ActiveAsteroids[0] = &rock1;
Nydrel 5:ed52ac77cdf9 572 ActiveAsteroids[1] = &rock2;
Nydrel 5:ed52ac77cdf9 573 ActiveAsteroids[2] = &rock3;
Nydrel 5:ed52ac77cdf9 574 ActiveAsteroids[3] = &rock4;
Nydrel 1:21558533e3b9 575
Nydrel 1:21558533e3b9 576 //set parameters -- use these and don't change
Nydrel 1:21558533e3b9 577 acc.setBitDepth(MMA8452::BIT_DEPTH_12);
Nydrel 1:21558533e3b9 578 acc.setDynamicRange(MMA8452::DYNAMIC_RANGE_4G);
Nydrel 1:21558533e3b9 579 acc.setDataRate(MMA8452::RATE_100);
Nydrel 5:ed52ac77cdf9 580
Nydrel 5:ed52ac77cdf9 581
Nydrel 5:ed52ac77cdf9 582 time_t startTime;
Nydrel 5:ed52ac77cdf9 583 time_t timeElapsed;
Nydrel 5:ed52ac77cdf9 584 startTime = time(0);
Nydrel 5:ed52ac77cdf9 585
Nydrel 5:ed52ac77cdf9 586 int dur = 30;
Nydrel 1:21558533e3b9 587
Nydrel 1:21558533e3b9 588 while(1) {
Nydrel 5:ed52ac77cdf9 589 //check winning condition
Nydrel 5:ed52ac77cdf9 590 if((time(0)-startTime) > dur)
Nydrel 5:ed52ac77cdf9 591 {
Nydrel 5:ed52ac77cdf9 592 uLCD.printf("YOU WIN!");
Nydrel 5:ed52ac77cdf9 593 return 1;
Nydrel 5:ed52ac77cdf9 594 }
Nydrel 5:ed52ac77cdf9 595
Nydrel 5:ed52ac77cdf9 596 else
Nydrel 5:ed52ac77cdf9 597 {
Nydrel 5:ed52ac77cdf9 598 timeElapsed = time(0)-startTime;
Nydrel 5:ed52ac77cdf9 599 bar = 127 - (timeElapsed*(127/dur));
Nydrel 5:ed52ac77cdf9 600 uLCD.filled_rectangle(1, 1,127,1,R);
Nydrel 5:ed52ac77cdf9 601 uLCD.filled_rectangle(1, 1,127-bar,1,_);
Nydrel 5:ed52ac77cdf9 602 }
Nydrel 5:ed52ac77cdf9 603
Nydrel 4:d128df681d05 604 ship.update();
Nydrel 1:21558533e3b9 605
Nydrel 4:d128df681d05 606 ship.draw();
Nydrel 2:9ece21082838 607
Nydrel 3:462904d1c1a9 608
Nydrel 3:462904d1c1a9 609 ActiveAsteroids[0]->update();
Nydrel 3:462904d1c1a9 610
Nydrel 4:d128df681d05 611 if(ActiveAsteroids[0]->boundaryCheck())
Nydrel 5:ed52ac77cdf9 612 ActiveAsteroids[0]->reset();
Nydrel 4:d128df681d05 613
Nydrel 3:462904d1c1a9 614 ActiveAsteroids[0]->draw();
Nydrel 2:9ece21082838 615
Nydrel 4:d128df681d05 616 ActiveAsteroids[1]->update();
Nydrel 4:d128df681d05 617
Nydrel 4:d128df681d05 618 if(ActiveAsteroids[1]->boundaryCheck())
Nydrel 5:ed52ac77cdf9 619 ActiveAsteroids[1]->reset();
Nydrel 4:d128df681d05 620
Nydrel 4:d128df681d05 621 ActiveAsteroids[1]->draw();
Nydrel 5:ed52ac77cdf9 622
Nydrel 4:d128df681d05 623 ActiveAsteroids[2]->update();
Nydrel 2:9ece21082838 624
Nydrel 5:ed52ac77cdf9 625 if(ActiveAsteroids[2]->boundaryCheck())
Nydrel 5:ed52ac77cdf9 626 ActiveAsteroids[2]->reset();
Nydrel 4:d128df681d05 627
Nydrel 4:d128df681d05 628 ActiveAsteroids[2]->draw();
Nydrel 5:ed52ac77cdf9 629
Nydrel 5:ed52ac77cdf9 630 ActiveAsteroids[3]->update();
Nydrel 2:9ece21082838 631
Nydrel 4:d128df681d05 632 if(ActiveAsteroids[3]->boundaryCheck())
Nydrel 5:ed52ac77cdf9 633 ActiveAsteroids[3]->reset();
Nydrel 5:ed52ac77cdf9 634
Nydrel 5:ed52ac77cdf9 635 ActiveAsteroids[3]->draw();
Nydrel 5:ed52ac77cdf9 636
Nydrel 5:ed52ac77cdf9 637
Nydrel 5:ed52ac77cdf9 638 //check to see if the pushbutton has activated the bomb
Nydrel 5:ed52ac77cdf9 639 if(ExplodeAllAsteroids)
Nydrel 4:d128df681d05 640 {
Nydrel 5:ed52ac77cdf9 641 for(int i = 0; i < 4; i++)
Nydrel 5:ed52ac77cdf9 642 {
Nydrel 5:ed52ac77cdf9 643 ActiveAsteroids[i]->update();
Nydrel 5:ed52ac77cdf9 644 wait(0.25);
Nydrel 5:ed52ac77cdf9 645 ActiveAsteroids[i]->reset();
Nydrel 5:ed52ac77cdf9 646 }
Nydrel 5:ed52ac77cdf9 647 ExplodeAllAsteroids = false;
Nydrel 4:d128df681d05 648 }
Nydrel 4:d128df681d05 649
Nydrel 4:d128df681d05 650
Nydrel 5:ed52ac77cdf9 651 //check for overlap between Asteroids and Earth
Nydrel 5:ed52ac77cdf9 652 //return 1 and end game
Nydrel 5:ed52ac77cdf9 653 if(overlap(ship,rock1)) {
Nydrel 5:ed52ac77cdf9 654 ship.explode();
Nydrel 5:ed52ac77cdf9 655 mySpeaker.PlayNote(500.0,0.25,0.1);
Nydrel 5:ed52ac77cdf9 656 mySpeaker.PlayNote(450.0,0.25,0.1);
Nydrel 5:ed52ac77cdf9 657 mySpeaker.PlayNote(400.0,0.25,0.1);
Nydrel 5:ed52ac77cdf9 658 mySpeaker.PlayNote(300.0,0.25,0.1);
Nydrel 5:ed52ac77cdf9 659 uLCD.printf("GAME OVER");
Nydrel 5:ed52ac77cdf9 660 wait(3);
Nydrel 5:ed52ac77cdf9 661 return 1;
Nydrel 5:ed52ac77cdf9 662 }
Nydrel 5:ed52ac77cdf9 663
Nydrel 5:ed52ac77cdf9 664 else if(overlap(ship,rock2)) {
Nydrel 5:ed52ac77cdf9 665 ship.explode();
Nydrel 5:ed52ac77cdf9 666 mySpeaker.PlayNote(500.0,0.25,0.1);
Nydrel 5:ed52ac77cdf9 667 mySpeaker.PlayNote(450.0,0.25,0.1);
Nydrel 5:ed52ac77cdf9 668 mySpeaker.PlayNote(400.0,0.25,0.1);
Nydrel 5:ed52ac77cdf9 669 mySpeaker.PlayNote(300.0,0.25,0.1);
Nydrel 5:ed52ac77cdf9 670 uLCD.printf("GAME OVER");
Nydrel 5:ed52ac77cdf9 671 wait(3);
Nydrel 5:ed52ac77cdf9 672 return 1;
Nydrel 5:ed52ac77cdf9 673 }
Nydrel 4:d128df681d05 674
Nydrel 5:ed52ac77cdf9 675 else if(overlap(ship,rock3)) {
Nydrel 5:ed52ac77cdf9 676 ship.explode();
Nydrel 5:ed52ac77cdf9 677 mySpeaker.PlayNote(500.0,0.25,0.1);
Nydrel 5:ed52ac77cdf9 678 mySpeaker.PlayNote(450.0,0.25,0.1);
Nydrel 5:ed52ac77cdf9 679 mySpeaker.PlayNote(400.0,0.25,0.1);
Nydrel 5:ed52ac77cdf9 680 mySpeaker.PlayNote(300.0,0.25,0.1);
Nydrel 5:ed52ac77cdf9 681 uLCD.printf("GAME OVER");
Nydrel 5:ed52ac77cdf9 682 wait(3);
Nydrel 5:ed52ac77cdf9 683 return 1;
Nydrel 5:ed52ac77cdf9 684 }
Nydrel 5:ed52ac77cdf9 685
Nydrel 5:ed52ac77cdf9 686 else if(overlap(ship,rock4)) {
Nydrel 5:ed52ac77cdf9 687 ship.explode();
Nydrel 5:ed52ac77cdf9 688 mySpeaker.PlayNote(500.0,0.25,0.1);
Nydrel 5:ed52ac77cdf9 689 mySpeaker.PlayNote(450.0,0.25,0.1);
Nydrel 5:ed52ac77cdf9 690 mySpeaker.PlayNote(400.0,0.25,0.1);
Nydrel 5:ed52ac77cdf9 691 mySpeaker.PlayNote(300.0,0.25,0.1);
Nydrel 5:ed52ac77cdf9 692 uLCD.printf("GAME OVER");
Nydrel 5:ed52ac77cdf9 693 wait(3);
Nydrel 5:ed52ac77cdf9 694 return 1;
Nydrel 5:ed52ac77cdf9 695 }
Nydrel 5:ed52ac77cdf9 696
Nydrel 5:ed52ac77cdf9 697
Nydrel 5:ed52ac77cdf9 698 //check to see if the game is over
Nydrel 5:ed52ac77cdf9 699
Nydrel 1:21558533e3b9 700 } //end infinite while loop
Nydrel 1:21558533e3b9 701 } //end main
Nydrel 1:21558533e3b9 702