WITB2

Dependencies:   mbed 4DGL-uLCD-SE PinDetect

Committer:
Nydrel
Date:
Mon Nov 13 22:45:56 2017 +0000
Revision:
3:462904d1c1a9
Parent:
2:9ece21082838
Child:
4:d128df681d05
Testing the proper functionality of the concrete asteroids and boundary checking

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 2:9ece21082838 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 2:9ece21082838 65 int asteroid_sprite_1[ASTEROID_HEIGHT * ASTEROID_WIDTH] = {
Nydrel 2:9ece21082838 66 _,_,_,_,X,X,X,X,X,X,X,X,_,_,_,
Nydrel 2:9ece21082838 67 _,_,_,X,_,_,_,_,_,_,_,_,X,_,_,
Nydrel 2:9ece21082838 68 _,_,X,_,_,_,_,_,_,_,_,_,X,_,_,
Nydrel 2:9ece21082838 69 _,X,_,_,_,_,_,_,_,_,_,_,X,_,_,
Nydrel 2:9ece21082838 70 X,X,X,X,_,_,_,_,_,_,_,_,_,X,_,
Nydrel 2:9ece21082838 71 _,_,_,X,_,_,_,_,_,_,_,_,_,X,_,
Nydrel 2:9ece21082838 72 _,_,X,_,_,_,_,_,_,_,_,_,_,X,_,
Nydrel 2:9ece21082838 73 _,X,_,_,_,_,_,X,_,_,_,_,_,X,_,
Nydrel 2:9ece21082838 74 X,_,_,_,_,_,X,X,_,_,_,_,X,_,_,
Nydrel 2:9ece21082838 75 _,X,_,_,_,X,_,X,_,_,_,_,X,_,_,
Nydrel 2:9ece21082838 76 _,_,X,_,X,_,_,X,_,_,_,X,_,_,_,
Nydrel 2:9ece21082838 77 _,_,_,X,_,_,_,X,X,X,X,_,_,_,_
Nydrel 2:9ece21082838 78 };
Nydrel 2:9ece21082838 79
Nydrel 2:9ece21082838 80
Nydrel 2:9ece21082838 81 int asteroid_sprite_2[ASTEROID_HEIGHT * ASTEROID_WIDTH] = {
Nydrel 2:9ece21082838 82 _,_,X,X,X,X,X,X,X,X,_,_,_,_,_,
Nydrel 2:9ece21082838 83 _,_,_,X,_,_,_,_,_,_,X,X,_,_,_,
Nydrel 2:9ece21082838 84 _,_,_,_,X,_,_,_,_,_,_,_,X,_,_,
Nydrel 2:9ece21082838 85 X,X,X,X,X,X,_,_,_,_,_,_,_,X,_,
Nydrel 2:9ece21082838 86 X,_,_,_,_,_,_,_,_,_,_,_,_,_,X,
Nydrel 2:9ece21082838 87 X,_,_,_,_,_,_,_,_,_,_,_,_,X,X,
Nydrel 2:9ece21082838 88 X,_,_,_,_,_,_,_,_,_,_,X,X,_,_,
Nydrel 2:9ece21082838 89 _,X,_,_,_,_,_,_,_,_,X,_,_,_,_,
Nydrel 2:9ece21082838 90 _,_,X,_,_,_,_,_,_,_,_,X,X,_,_,
Nydrel 2:9ece21082838 91 _,_,_,X,_,_,_,_,X,_,_,_,_,X,X,
Nydrel 2:9ece21082838 92 _,_,_,_,X,_,X,X,_,X,X,_,_,X,_,
Nydrel 2:9ece21082838 93 _,_,_,_,_,X,_,_,_,_,_,X,X,_,_
Nydrel 2:9ece21082838 94 };
Nydrel 2:9ece21082838 95
Nydrel 2:9ece21082838 96
Nydrel 2:9ece21082838 97 int asteroid_sprite_3[ASTEROID_HEIGHT * ASTEROID_WIDTH] = {
Nydrel 2:9ece21082838 98 _,_,X,X,X,_,_,_,_,_,_,X,X,_,_,
Nydrel 2:9ece21082838 99 _,X,_,_,_,X,X,_,_,_,X,_,_,X,_,
Nydrel 2:9ece21082838 100 X,_,_,_,_,_,_,X,X,X,_,_,_,_,X,
Nydrel 2:9ece21082838 101 _,X,_,_,_,_,_,_,_,_,_,_,_,X,_,
Nydrel 2:9ece21082838 102 _,_,X,_,_,_,_,_,_,_,X,X,X,_,_,
Nydrel 2:9ece21082838 103 _,_,_,X,_,_,_,_,_,_,X,X,_,_,_,
Nydrel 2:9ece21082838 104 _,_,X,_,_,_,_,_,_,_,_,_,X,_,_,
Nydrel 2:9ece21082838 105 _,X,_,_,_,_,_,_,_,_,_,_,_,X,_,
Nydrel 2:9ece21082838 106 X,_,_,_,_,_,_,_,_,_,_,_,_,_,X,
Nydrel 2:9ece21082838 107 _,X,_,_,_,X,X,X,_,_,_,_,_,X,_,
Nydrel 2:9ece21082838 108 _,_,X,_,X,_,_,_,X,X,_,X,X,_,_,
Nydrel 2:9ece21082838 109 _,_,_,X,_,_,_,_,_,_,X,X,X,_,_
Nydrel 2:9ece21082838 110 };
Nydrel 2:9ece21082838 111
Nydrel 2:9ece21082838 112
Nydrel 2:9ece21082838 113 int asteroid_sprite_4[ASTEROID_HEIGHT * ASTEROID_WIDTH] = {
Nydrel 2:9ece21082838 114 _,_,_,X,X,_,_,_,_,_,X,_,_,_,_,
Nydrel 2:9ece21082838 115 _,_,X,_,_,X,_,_,_,X,_,X,X,_,_,
Nydrel 2:9ece21082838 116 _,X,_,_,_,_,X,_,X,_,_,_,_,X,_,
Nydrel 2:9ece21082838 117 X,_,_,_,_,_,_,X,_,_,_,_,_,_,X,
Nydrel 2:9ece21082838 118 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,_,
Nydrel 2:9ece21082838 123 _,X,_,_,_,_,_,_,_,_,_,_,X,_,_,
Nydrel 2:9ece21082838 124 _,_,X,_,_,_,_,_,_,_,_,X,_,_,_,
Nydrel 2:9ece21082838 125 _,_,_,X,X,X,X,X,X,X,X,_,_,_,_
Nydrel 2:9ece21082838 126 };
Nydrel 2:9ece21082838 127
Nydrel 2:9ece21082838 128
Nydrel 2:9ece21082838 129 int asteroid_blank[ASTEROID_WIDTH * ASTEROID_HEIGHT] =
Nydrel 2:9ece21082838 130 {
Nydrel 2:9ece21082838 131 _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,
Nydrel 2:9ece21082838 132 _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,
Nydrel 2:9ece21082838 133 _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,
Nydrel 2:9ece21082838 134 _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,
Nydrel 2:9ece21082838 135 _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,
Nydrel 2:9ece21082838 136 _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,
Nydrel 2:9ece21082838 137 _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,
Nydrel 2:9ece21082838 138 _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,
Nydrel 2:9ece21082838 139 _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,
Nydrel 2:9ece21082838 140 _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,
Nydrel 2:9ece21082838 141 _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,
Nydrel 2:9ece21082838 142 _,_,_,_,_,_,_,_,_,_,_,_,_,_,_
Nydrel 1:21558533e3b9 143 };
Nydrel 1:21558533e3b9 144
Nydrel 1:21558533e3b9 145
Nydrel 1:21558533e3b9 146 //Instantiate Accelerometer Object
Nydrel 1:21558533e3b9 147
jd7142128 0:5e90b8577fef 148 Serial pc(USBTX,USBRX); //not used in this program
Nydrel 1:21558533e3b9 149 MMA8452 acc(p9, p10, 40000); //instantiate an acc object!
Nydrel 1:21558533e3b9 150 double x, y, z;
jd7142128 0:5e90b8577fef 151
Nydrel 1:21558533e3b9 152 //Instantiate uLCD Object
jd7142128 0:5e90b8577fef 153
Nydrel 1:21558533e3b9 154 DigitalOut myled(LED1);
Nydrel 1:21558533e3b9 155 uLCD_4DGL uLCD(p28, p27, p29); // create a global uLCD object
Nydrel 1:21558533e3b9 156 //Speaker mySpeaker(p21);
Nydrel 1:21558533e3b9 157
Nydrel 1:21558533e3b9 158 int factor = 50;
Nydrel 1:21558533e3b9 159 int offset = 63;
Nydrel 1:21558533e3b9 160
Nydrel 1:21558533e3b9 161
Nydrel 1:21558533e3b9 162
Nydrel 1:21558533e3b9 163 /*-----ScreenObject Class------*/
jd7142128 0:5e90b8577fef 164
Nydrel 1:21558533e3b9 165 class ScreenObject
Nydrel 1:21558533e3b9 166 {
Nydrel 1:21558533e3b9 167 public:
Nydrel 1:21558533e3b9 168 //ScreenObject();
Nydrel 1:21558533e3b9 169 //setter functions
Nydrel 2:9ece21082838 170
Nydrel 2:9ece21082838 171 /*void setXPos(int x)
Nydrel 1:21558533e3b9 172 {
Nydrel 1:21558533e3b9 173 x_pos = x;
Nydrel 1:21558533e3b9 174 }
Nydrel 1:21558533e3b9 175
Nydrel 1:21558533e3b9 176 void setYPos(int y)
Nydrel 1:21558533e3b9 177 {
Nydrel 1:21558533e3b9 178 y_pos = y;
Nydrel 2:9ece21082838 179 } */
Nydrel 1:21558533e3b9 180
Nydrel 1:21558533e3b9 181 //getter functions
Nydrel 1:21558533e3b9 182 // int getXPos();
Nydrel 1:21558533e3b9 183 // int getYPos();
Nydrel 1:21558533e3b9 184
Nydrel 1:21558533e3b9 185 //pure virtual
Nydrel 1:21558533e3b9 186 virtual void draw() = 0;
Nydrel 1:21558533e3b9 187 virtual void update() = 0;
Nydrel 3:462904d1c1a9 188 virtual bool boundaryCheck() = 0;
Nydrel 1:21558533e3b9 189 protected:
Nydrel 1:21558533e3b9 190 int x_pos;
Nydrel 1:21558533e3b9 191 int y_pos;
Nydrel 1:21558533e3b9 192 };
Nydrel 1:21558533e3b9 193
Nydrel 1:21558533e3b9 194
Nydrel 1:21558533e3b9 195 /*-----SpaceShipEarth Class------*/
Nydrel 1:21558533e3b9 196
Nydrel 1:21558533e3b9 197 class SpaceShipEarth: public ScreenObject
Nydrel 1:21558533e3b9 198 {
Nydrel 1:21558533e3b9 199 public:
Nydrel 1:21558533e3b9 200 SpaceShipEarth() {
Nydrel 1:21558533e3b9 201 x_pos = 63;
Nydrel 1:21558533e3b9 202 y_pos = 63;
Nydrel 1:21558533e3b9 203 }
Nydrel 1:21558533e3b9 204
Nydrel 1:21558533e3b9 205 void draw() {
Nydrel 2:9ece21082838 206 uLCD.BLIT(x_pos, y_pos, EARTH_WIDTH, EARTH_HEIGHT,spaceship_earth1);
Nydrel 1:21558533e3b9 207 }
Nydrel 1:21558533e3b9 208
Nydrel 1:21558533e3b9 209 void update() {
Nydrel 1:21558533e3b9 210
Nydrel 2:9ece21082838 211 uLCD.BLIT(x_pos, y_pos, EARTH_WIDTH, EARTH_HEIGHT,earth_blank);
Nydrel 1:21558533e3b9 212
Nydrel 1:21558533e3b9 213 if(!acc.isXYZReady()) {
Nydrel 1:21558533e3b9 214 wait(0.02);
Nydrel 1:21558533e3b9 215 }
Nydrel 1:21558533e3b9 216
Nydrel 1:21558533e3b9 217 else {
Nydrel 1:21558533e3b9 218 acc.readXYZGravity(&x,&y,&z); //notice this is passed by reference use pointers
Nydrel 2:9ece21082838 219 x_pos = -1*x*factor + offset;
Nydrel 2:9ece21082838 220 y_pos = -1*y*factor + offset;
Nydrel 2:9ece21082838 221
Nydrel 1:21558533e3b9 222 } //end else
Nydrel 2:9ece21082838 223 }//end if
Nydrel 3:462904d1c1a9 224
Nydrel 3:462904d1c1a9 225 bool boundaryCheck()
Nydrel 3:462904d1c1a9 226 {
Nydrel 3:462904d1c1a9 227 if(((x_pos == 0) || (x_pos == 126)) || ((y_pos == 0) || (y_pos == 126)))
Nydrel 3:462904d1c1a9 228 return true;
Nydrel 3:462904d1c1a9 229 else
Nydrel 3:462904d1c1a9 230 return false;
Nydrel 3:462904d1c1a9 231 }
Nydrel 1:21558533e3b9 232
Nydrel 1:21558533e3b9 233 };
Nydrel 1:21558533e3b9 234
Nydrel 1:21558533e3b9 235
Nydrel 1:21558533e3b9 236
Nydrel 2:9ece21082838 237 /*-----AbstractAsteroid Class-----*/
Nydrel 2:9ece21082838 238
Nydrel 2:9ece21082838 239
Nydrel 2:9ece21082838 240 class AbstractAsteroid: public ScreenObject
Nydrel 2:9ece21082838 241 {
Nydrel 2:9ece21082838 242 public:
Nydrel 2:9ece21082838 243 void pickCorner(int corner)
Nydrel 2:9ece21082838 244 {
Nydrel 2:9ece21082838 245 switch (corner)
Nydrel 2:9ece21082838 246 {
Nydrel 2:9ece21082838 247 case 1: //top left
Nydrel 2:9ece21082838 248 x_pos = 1;
Nydrel 2:9ece21082838 249 y_pos = 1;
Nydrel 2:9ece21082838 250 deltaX = rand() % 3 + 1;
Nydrel 2:9ece21082838 251 deltaY = rand() % 3 + 1;
Nydrel 2:9ece21082838 252 break;
Nydrel 2:9ece21082838 253 case 2: //top right
Nydrel 2:9ece21082838 254 x_pos = 125;
Nydrel 2:9ece21082838 255 y_pos = 1;
Nydrel 2:9ece21082838 256 deltaX = -1*(rand() % 3 + 1);
Nydrel 2:9ece21082838 257 deltaY = rand() % 3 + 1;
Nydrel 2:9ece21082838 258 break;
Nydrel 2:9ece21082838 259 case 3: //bottom left
Nydrel 2:9ece21082838 260 x_pos = 1;
Nydrel 2:9ece21082838 261 y_pos = 125;
Nydrel 2:9ece21082838 262 deltaX = rand() % 3 + 1;
Nydrel 2:9ece21082838 263 deltaY = -1*(rand() % 3 + 1);
Nydrel 2:9ece21082838 264 break;
Nydrel 2:9ece21082838 265 case 4: //bottom right
Nydrel 2:9ece21082838 266 x_pos = 125;
Nydrel 2:9ece21082838 267 y_pos = 125;
Nydrel 2:9ece21082838 268 deltaX = -1*(rand() % 3 + 1);
Nydrel 2:9ece21082838 269 deltaY = -1*(rand() % 3 + 1);
Nydrel 2:9ece21082838 270 break;
Nydrel 2:9ece21082838 271 }
Nydrel 2:9ece21082838 272 }
Nydrel 2:9ece21082838 273
Nydrel 2:9ece21082838 274 void pickCorner()
Nydrel 2:9ece21082838 275 {
Nydrel 2:9ece21082838 276 int corner = rand() % 4 + 1;
Nydrel 2:9ece21082838 277
Nydrel 2:9ece21082838 278 switch (corner)
Nydrel 2:9ece21082838 279 {
Nydrel 2:9ece21082838 280 case 1: //top left
Nydrel 2:9ece21082838 281 x_pos = 1;
Nydrel 2:9ece21082838 282 y_pos = 1;
Nydrel 2:9ece21082838 283 deltaX = rand() % 3 + 1;
Nydrel 2:9ece21082838 284 deltaY = rand() % 3 + 1;
Nydrel 2:9ece21082838 285 break;
Nydrel 2:9ece21082838 286 case 2: //top right
Nydrel 2:9ece21082838 287 x_pos = 125;
Nydrel 2:9ece21082838 288 y_pos = 1;
Nydrel 2:9ece21082838 289 deltaX = -1*(rand() % 3 + 1);
Nydrel 2:9ece21082838 290 deltaY = rand() % 3 + 1;
Nydrel 2:9ece21082838 291 break;
Nydrel 2:9ece21082838 292 case 3: //bottom left
Nydrel 2:9ece21082838 293 x_pos = 1;
Nydrel 2:9ece21082838 294 y_pos = 125;
Nydrel 2:9ece21082838 295 deltaX = rand() % 3 + 1;
Nydrel 2:9ece21082838 296 deltaY = -1*(rand() % 3 + 1);
Nydrel 2:9ece21082838 297 break;
Nydrel 2:9ece21082838 298 case 4: //bottom right
Nydrel 2:9ece21082838 299 x_pos = 125;
Nydrel 2:9ece21082838 300 y_pos = 125;
Nydrel 2:9ece21082838 301 deltaX = -1*(rand() % 3 + 1);
Nydrel 2:9ece21082838 302 deltaY = -1*(rand() % 3 + 1);
Nydrel 2:9ece21082838 303 break;
Nydrel 2:9ece21082838 304 }
Nydrel 2:9ece21082838 305 }
Nydrel 2:9ece21082838 306
Nydrel 2:9ece21082838 307 bool boundaryCheck()
Nydrel 2:9ece21082838 308 {
Nydrel 2:9ece21082838 309 if(((x_pos == 0) || (x_pos == 126)) || ((y_pos == 0) || (y_pos == 126)))
Nydrel 3:462904d1c1a9 310 return true;
Nydrel 3:462904d1c1a9 311 else
Nydrel 3:462904d1c1a9 312 return false;
Nydrel 2:9ece21082838 313 }
Nydrel 2:9ece21082838 314
Nydrel 2:9ece21082838 315 protected:
Nydrel 2:9ece21082838 316 int deltaX;
Nydrel 2:9ece21082838 317 int deltaY;
Nydrel 2:9ece21082838 318 };
Nydrel 2:9ece21082838 319
Nydrel 2:9ece21082838 320
Nydrel 2:9ece21082838 321
Nydrel 2:9ece21082838 322 //-----Concrete Asteroids-----//
Nydrel 2:9ece21082838 323
Nydrel 2:9ece21082838 324 //-----Asteroid1-----//
Nydrel 2:9ece21082838 325 class Asteroid1: public AbstractAsteroid
Nydrel 2:9ece21082838 326 {
Nydrel 2:9ece21082838 327 public:
Nydrel 2:9ece21082838 328 Asteroid1(int corner)
Nydrel 2:9ece21082838 329 {
Nydrel 2:9ece21082838 330 pickCorner(corner);
Nydrel 2:9ece21082838 331 startTime = time(0);
Nydrel 2:9ece21082838 332 }
Nydrel 2:9ece21082838 333
Nydrel 2:9ece21082838 334 Asteroid1()
Nydrel 2:9ece21082838 335 {
Nydrel 2:9ece21082838 336 pickCorner();
Nydrel 2:9ece21082838 337 startTime = time(0);
Nydrel 2:9ece21082838 338 }
Nydrel 2:9ece21082838 339
Nydrel 2:9ece21082838 340 ~Asteroid1(void)
Nydrel 2:9ece21082838 341 {
Nydrel 2:9ece21082838 342 }
Nydrel 2:9ece21082838 343
Nydrel 2:9ece21082838 344 void draw()
Nydrel 2:9ece21082838 345 {
Nydrel 2:9ece21082838 346 uLCD.BLIT(x_pos, y_pos, ASTEROID_WIDTH, ASTEROID_HEIGHT,asteroid_sprite_1);
Nydrel 2:9ece21082838 347 }
Nydrel 2:9ece21082838 348
Nydrel 2:9ece21082838 349 void update()
Nydrel 2:9ece21082838 350 {
Nydrel 2:9ece21082838 351 uLCD.BLIT(x_pos, y_pos, ASTEROID_WIDTH, ASTEROID_HEIGHT,asteroid_blank);
Nydrel 2:9ece21082838 352 wait(0.02);
Nydrel 2:9ece21082838 353 time_t timeElapsed = time(0)-startTime;
Nydrel 2:9ece21082838 354 x_pos = x_pos + (deltaX * timeElapsed);
Nydrel 2:9ece21082838 355 y_pos = y_pos + (deltaY * timeElapsed);
Nydrel 2:9ece21082838 356 }
Nydrel 2:9ece21082838 357
Nydrel 2:9ece21082838 358 protected:
Nydrel 2:9ece21082838 359 time_t startTime;
Nydrel 2:9ece21082838 360 };
Nydrel 2:9ece21082838 361
Nydrel 2:9ece21082838 362
Nydrel 2:9ece21082838 363 //-----Asteroid2-----//
Nydrel 2:9ece21082838 364 class Asteroid2: public AbstractAsteroid
Nydrel 2:9ece21082838 365 {
Nydrel 2:9ece21082838 366 public:
Nydrel 2:9ece21082838 367 Asteroid2(int corner)
Nydrel 2:9ece21082838 368 {
Nydrel 2:9ece21082838 369 pickCorner(corner);
Nydrel 2:9ece21082838 370 startTime = time(0);
Nydrel 2:9ece21082838 371 }
Nydrel 2:9ece21082838 372
Nydrel 2:9ece21082838 373 Asteroid2()
Nydrel 2:9ece21082838 374 {
Nydrel 2:9ece21082838 375 pickCorner();
Nydrel 2:9ece21082838 376 startTime = time(0);
Nydrel 2:9ece21082838 377 }
Nydrel 2:9ece21082838 378
Nydrel 2:9ece21082838 379 void draw()
Nydrel 2:9ece21082838 380 {
Nydrel 2:9ece21082838 381 uLCD.BLIT(x_pos, y_pos, ASTEROID_WIDTH, ASTEROID_HEIGHT,asteroid_sprite_2);
Nydrel 2:9ece21082838 382 }
Nydrel 2:9ece21082838 383
Nydrel 2:9ece21082838 384 void update()
Nydrel 2:9ece21082838 385 {
Nydrel 2:9ece21082838 386 uLCD.BLIT(x_pos, y_pos, ASTEROID_WIDTH, ASTEROID_HEIGHT,asteroid_blank);
Nydrel 2:9ece21082838 387 wait(0.02);
Nydrel 2:9ece21082838 388 time_t timeElapsed = time(0)-startTime;
Nydrel 2:9ece21082838 389 x_pos = x_pos + (deltaX * timeElapsed);
Nydrel 2:9ece21082838 390 y_pos = y_pos + (deltaY * timeElapsed);
Nydrel 2:9ece21082838 391 }
Nydrel 2:9ece21082838 392
Nydrel 2:9ece21082838 393 protected:
Nydrel 2:9ece21082838 394 time_t startTime;
Nydrel 2:9ece21082838 395 };
Nydrel 2:9ece21082838 396
Nydrel 2:9ece21082838 397
Nydrel 2:9ece21082838 398
Nydrel 2:9ece21082838 399
Nydrel 2:9ece21082838 400 //-----Asteroid3-----//
Nydrel 2:9ece21082838 401 class Asteroid3: public AbstractAsteroid
Nydrel 2:9ece21082838 402 {
Nydrel 2:9ece21082838 403 public:
Nydrel 2:9ece21082838 404 Asteroid3(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 2:9ece21082838 410 Asteroid3()
Nydrel 2:9ece21082838 411 {
Nydrel 2:9ece21082838 412 pickCorner();
Nydrel 2:9ece21082838 413 startTime = time(0);
Nydrel 2:9ece21082838 414 }
Nydrel 2:9ece21082838 415
Nydrel 2:9ece21082838 416 void draw()
Nydrel 2:9ece21082838 417 {
Nydrel 2:9ece21082838 418 uLCD.BLIT(x_pos, y_pos, ASTEROID_WIDTH, ASTEROID_HEIGHT,asteroid_sprite_3);
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 2:9ece21082838 430 protected:
Nydrel 2:9ece21082838 431 time_t startTime;
Nydrel 2:9ece21082838 432 };
Nydrel 2:9ece21082838 433
Nydrel 2:9ece21082838 434
Nydrel 2:9ece21082838 435
Nydrel 2:9ece21082838 436 //-----Asteroid4-----//
Nydrel 2:9ece21082838 437 class Asteroid4: public AbstractAsteroid
Nydrel 2:9ece21082838 438 {
Nydrel 2:9ece21082838 439 public:
Nydrel 2:9ece21082838 440 Asteroid4(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 2:9ece21082838 446 Asteroid4()
Nydrel 2:9ece21082838 447 {
Nydrel 2:9ece21082838 448 pickCorner();
Nydrel 2:9ece21082838 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_4);
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 1:21558533e3b9 473
Nydrel 1:21558533e3b9 474 //Program Start
Nydrel 1:21558533e3b9 475
Nydrel 1:21558533e3b9 476 int main()
Nydrel 1:21558533e3b9 477 {
Nydrel 1:21558533e3b9 478 uLCD.baudrate(300000);
Nydrel 1:21558533e3b9 479 wait(0.2);
Nydrel 1:21558533e3b9 480 srand(time(0)); // do this srand call here ONLY... no where else in the code!
Nydrel 3:462904d1c1a9 481 ScreenObject * ActiveAsteroids[NUM_ASTEROIDS];
Nydrel 3:462904d1c1a9 482 //SpaceShipEarth ship; //instantiate a SpaceShipEarth object
Nydrel 2:9ece21082838 483
Nydrel 2:9ece21082838 484
Nydrel 2:9ece21082838 485 Asteroid1 rock1(1);
Nydrel 2:9ece21082838 486 //Asteroid2 rock2(2);
Nydrel 2:9ece21082838 487 //Asteroid3 rock3(3);
Nydrel 2:9ece21082838 488 //Asteroid4 rock4(4);
Nydrel 3:462904d1c1a9 489
Nydrel 3:462904d1c1a9 490 ActiveAsteroids[0] = &rock1;
Nydrel 1:21558533e3b9 491
Nydrel 1:21558533e3b9 492 //set parameters -- use these and don't change
Nydrel 1:21558533e3b9 493 acc.setBitDepth(MMA8452::BIT_DEPTH_12);
Nydrel 1:21558533e3b9 494 acc.setDynamicRange(MMA8452::DYNAMIC_RANGE_4G);
Nydrel 1:21558533e3b9 495 acc.setDataRate(MMA8452::RATE_100);
Nydrel 1:21558533e3b9 496
Nydrel 1:21558533e3b9 497
Nydrel 1:21558533e3b9 498 while(1) {
Nydrel 3:462904d1c1a9 499 //ship.update();
Nydrel 1:21558533e3b9 500
Nydrel 3:462904d1c1a9 501 //ship.draw();
Nydrel 2:9ece21082838 502
Nydrel 3:462904d1c1a9 503 if(ActiveAsteroids[0]->boundaryCheck() == true)
Nydrel 3:462904d1c1a9 504 {
Nydrel 3:462904d1c1a9 505 //delete ActiveAsteroids[0];
Nydrel 3:462904d1c1a9 506 Asteroid1 newRock;
Nydrel 3:462904d1c1a9 507 ActiveAsteroids[0] = &newRock;
Nydrel 3:462904d1c1a9 508 ActiveAsteroids[0]->draw();
Nydrel 3:462904d1c1a9 509 }
Nydrel 3:462904d1c1a9 510
Nydrel 3:462904d1c1a9 511 ActiveAsteroids[0]->update();
Nydrel 3:462904d1c1a9 512
Nydrel 3:462904d1c1a9 513 ActiveAsteroids[0]->draw();
Nydrel 2:9ece21082838 514
Nydrel 2:9ece21082838 515 //rock2.update();
Nydrel 2:9ece21082838 516 //rock2.draw();
Nydrel 2:9ece21082838 517
Nydrel 2:9ece21082838 518 //rock3.update();
Nydrel 2:9ece21082838 519 //rock3.draw();
Nydrel 2:9ece21082838 520
Nydrel 2:9ece21082838 521 //rock4.update();
Nydrel 2:9ece21082838 522 //rock4.draw();
Nydrel 1:21558533e3b9 523 } //end infinite while loop
Nydrel 1:21558533e3b9 524 } //end main
Nydrel 1:21558533e3b9 525
Nydrel 1:21558533e3b9 526