WITB2

Dependencies:   mbed 4DGL-uLCD-SE PinDetect

Committer:
Nydrel
Date:
Mon Nov 13 21:49:05 2017 +0000
Revision:
2:9ece21082838
Parent:
1:21558533e3b9
Child:
3:462904d1c1a9
This version has proper SpaceshipEarth movement and displays asteroids to screen with random slopes.

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 1:21558533e3b9 188 protected:
Nydrel 1:21558533e3b9 189 int x_pos;
Nydrel 1:21558533e3b9 190 int y_pos;
Nydrel 1:21558533e3b9 191 };
Nydrel 1:21558533e3b9 192
Nydrel 1:21558533e3b9 193
Nydrel 1:21558533e3b9 194 /*-----SpaceShipEarth Class------*/
Nydrel 1:21558533e3b9 195
Nydrel 1:21558533e3b9 196 class SpaceShipEarth: public ScreenObject
Nydrel 1:21558533e3b9 197 {
Nydrel 1:21558533e3b9 198 public:
Nydrel 1:21558533e3b9 199 SpaceShipEarth() {
Nydrel 1:21558533e3b9 200 x_pos = 63;
Nydrel 1:21558533e3b9 201 y_pos = 63;
Nydrel 1:21558533e3b9 202 }
Nydrel 1:21558533e3b9 203
Nydrel 1:21558533e3b9 204 void draw() {
Nydrel 2:9ece21082838 205 uLCD.BLIT(x_pos, y_pos, EARTH_WIDTH, EARTH_HEIGHT,spaceship_earth1);
Nydrel 1:21558533e3b9 206 }
Nydrel 1:21558533e3b9 207
Nydrel 1:21558533e3b9 208 void update() {
Nydrel 1:21558533e3b9 209
Nydrel 2:9ece21082838 210 uLCD.BLIT(x_pos, y_pos, EARTH_WIDTH, EARTH_HEIGHT,earth_blank);
Nydrel 1:21558533e3b9 211
Nydrel 1:21558533e3b9 212 if(!acc.isXYZReady()) {
Nydrel 1:21558533e3b9 213 wait(0.02);
Nydrel 1:21558533e3b9 214 }
Nydrel 1:21558533e3b9 215
Nydrel 1:21558533e3b9 216 else {
Nydrel 1:21558533e3b9 217 acc.readXYZGravity(&x,&y,&z); //notice this is passed by reference use pointers
Nydrel 2:9ece21082838 218 x_pos = -1*x*factor + offset;
Nydrel 2:9ece21082838 219 y_pos = -1*y*factor + offset;
Nydrel 2:9ece21082838 220
Nydrel 1:21558533e3b9 221 } //end else
Nydrel 2:9ece21082838 222 }//end if
Nydrel 1:21558533e3b9 223
Nydrel 1:21558533e3b9 224 };
Nydrel 1:21558533e3b9 225
Nydrel 1:21558533e3b9 226
Nydrel 1:21558533e3b9 227
Nydrel 2:9ece21082838 228 /*-----AbstractAsteroid Class-----*/
Nydrel 2:9ece21082838 229
Nydrel 2:9ece21082838 230
Nydrel 2:9ece21082838 231 class AbstractAsteroid: public ScreenObject
Nydrel 2:9ece21082838 232 {
Nydrel 2:9ece21082838 233 public:
Nydrel 2:9ece21082838 234 void pickCorner(int corner)
Nydrel 2:9ece21082838 235 {
Nydrel 2:9ece21082838 236 switch (corner)
Nydrel 2:9ece21082838 237 {
Nydrel 2:9ece21082838 238 case 1: //top left
Nydrel 2:9ece21082838 239 x_pos = 1;
Nydrel 2:9ece21082838 240 y_pos = 1;
Nydrel 2:9ece21082838 241 deltaX = rand() % 3 + 1;
Nydrel 2:9ece21082838 242 deltaY = rand() % 3 + 1;
Nydrel 2:9ece21082838 243 break;
Nydrel 2:9ece21082838 244 case 2: //top right
Nydrel 2:9ece21082838 245 x_pos = 125;
Nydrel 2:9ece21082838 246 y_pos = 1;
Nydrel 2:9ece21082838 247 deltaX = -1*(rand() % 3 + 1);
Nydrel 2:9ece21082838 248 deltaY = rand() % 3 + 1;
Nydrel 2:9ece21082838 249 break;
Nydrel 2:9ece21082838 250 case 3: //bottom left
Nydrel 2:9ece21082838 251 x_pos = 1;
Nydrel 2:9ece21082838 252 y_pos = 125;
Nydrel 2:9ece21082838 253 deltaX = rand() % 3 + 1;
Nydrel 2:9ece21082838 254 deltaY = -1*(rand() % 3 + 1);
Nydrel 2:9ece21082838 255 break;
Nydrel 2:9ece21082838 256 case 4: //bottom right
Nydrel 2:9ece21082838 257 x_pos = 125;
Nydrel 2:9ece21082838 258 y_pos = 125;
Nydrel 2:9ece21082838 259 deltaX = -1*(rand() % 3 + 1);
Nydrel 2:9ece21082838 260 deltaY = -1*(rand() % 3 + 1);
Nydrel 2:9ece21082838 261 break;
Nydrel 2:9ece21082838 262 }
Nydrel 2:9ece21082838 263 }
Nydrel 2:9ece21082838 264
Nydrel 2:9ece21082838 265 void pickCorner()
Nydrel 2:9ece21082838 266 {
Nydrel 2:9ece21082838 267 int corner = rand() % 4 + 1;
Nydrel 2:9ece21082838 268
Nydrel 2:9ece21082838 269 switch (corner)
Nydrel 2:9ece21082838 270 {
Nydrel 2:9ece21082838 271 case 1: //top left
Nydrel 2:9ece21082838 272 x_pos = 1;
Nydrel 2:9ece21082838 273 y_pos = 1;
Nydrel 2:9ece21082838 274 deltaX = rand() % 3 + 1;
Nydrel 2:9ece21082838 275 deltaY = rand() % 3 + 1;
Nydrel 2:9ece21082838 276 break;
Nydrel 2:9ece21082838 277 case 2: //top right
Nydrel 2:9ece21082838 278 x_pos = 125;
Nydrel 2:9ece21082838 279 y_pos = 1;
Nydrel 2:9ece21082838 280 deltaX = -1*(rand() % 3 + 1);
Nydrel 2:9ece21082838 281 deltaY = rand() % 3 + 1;
Nydrel 2:9ece21082838 282 break;
Nydrel 2:9ece21082838 283 case 3: //bottom left
Nydrel 2:9ece21082838 284 x_pos = 1;
Nydrel 2:9ece21082838 285 y_pos = 125;
Nydrel 2:9ece21082838 286 deltaX = rand() % 3 + 1;
Nydrel 2:9ece21082838 287 deltaY = -1*(rand() % 3 + 1);
Nydrel 2:9ece21082838 288 break;
Nydrel 2:9ece21082838 289 case 4: //bottom right
Nydrel 2:9ece21082838 290 x_pos = 125;
Nydrel 2:9ece21082838 291 y_pos = 125;
Nydrel 2:9ece21082838 292 deltaX = -1*(rand() % 3 + 1);
Nydrel 2:9ece21082838 293 deltaY = -1*(rand() % 3 + 1);
Nydrel 2:9ece21082838 294 break;
Nydrel 2:9ece21082838 295 }
Nydrel 2:9ece21082838 296 }
Nydrel 2:9ece21082838 297
Nydrel 2:9ece21082838 298 bool boundaryCheck()
Nydrel 2:9ece21082838 299 {
Nydrel 2:9ece21082838 300 if(((x_pos == 0) || (x_pos == 126)) || ((y_pos == 0) || (y_pos == 126)))
Nydrel 2:9ece21082838 301 return true;
Nydrel 2:9ece21082838 302 }
Nydrel 2:9ece21082838 303
Nydrel 2:9ece21082838 304 protected:
Nydrel 2:9ece21082838 305 int deltaX;
Nydrel 2:9ece21082838 306 int deltaY;
Nydrel 2:9ece21082838 307 };
Nydrel 2:9ece21082838 308
Nydrel 2:9ece21082838 309
Nydrel 2:9ece21082838 310
Nydrel 2:9ece21082838 311 //-----Concrete Asteroids-----//
Nydrel 2:9ece21082838 312
Nydrel 2:9ece21082838 313 //-----Asteroid1-----//
Nydrel 2:9ece21082838 314 class Asteroid1: public AbstractAsteroid
Nydrel 2:9ece21082838 315 {
Nydrel 2:9ece21082838 316 public:
Nydrel 2:9ece21082838 317 Asteroid1(int corner)
Nydrel 2:9ece21082838 318 {
Nydrel 2:9ece21082838 319 pickCorner(corner);
Nydrel 2:9ece21082838 320 startTime = time(0);
Nydrel 2:9ece21082838 321 }
Nydrel 2:9ece21082838 322
Nydrel 2:9ece21082838 323 Asteroid1()
Nydrel 2:9ece21082838 324 {
Nydrel 2:9ece21082838 325 pickCorner();
Nydrel 2:9ece21082838 326 startTime = time(0);
Nydrel 2:9ece21082838 327 }
Nydrel 2:9ece21082838 328
Nydrel 2:9ece21082838 329 ~Asteroid1(void)
Nydrel 2:9ece21082838 330 {
Nydrel 2:9ece21082838 331 }
Nydrel 2:9ece21082838 332
Nydrel 2:9ece21082838 333 void draw()
Nydrel 2:9ece21082838 334 {
Nydrel 2:9ece21082838 335 uLCD.BLIT(x_pos, y_pos, ASTEROID_WIDTH, ASTEROID_HEIGHT,asteroid_sprite_1);
Nydrel 2:9ece21082838 336 }
Nydrel 2:9ece21082838 337
Nydrel 2:9ece21082838 338 void update()
Nydrel 2:9ece21082838 339 {
Nydrel 2:9ece21082838 340 uLCD.BLIT(x_pos, y_pos, ASTEROID_WIDTH, ASTEROID_HEIGHT,asteroid_blank);
Nydrel 2:9ece21082838 341 wait(0.02);
Nydrel 2:9ece21082838 342 time_t timeElapsed = time(0)-startTime;
Nydrel 2:9ece21082838 343 x_pos = x_pos + (deltaX * timeElapsed);
Nydrel 2:9ece21082838 344 y_pos = y_pos + (deltaY * timeElapsed);
Nydrel 2:9ece21082838 345
Nydrel 2:9ece21082838 346 if(boundaryCheck() )
Nydrel 2:9ece21082838 347 {
Nydrel 2:9ece21082838 348 delete this;
Nydrel 2:9ece21082838 349 Asteroid1();
Nydrel 2:9ece21082838 350 }
Nydrel 2:9ece21082838 351 }
Nydrel 2:9ece21082838 352
Nydrel 2:9ece21082838 353 protected:
Nydrel 2:9ece21082838 354 time_t startTime;
Nydrel 2:9ece21082838 355 };
Nydrel 2:9ece21082838 356
Nydrel 2:9ece21082838 357
Nydrel 2:9ece21082838 358 //-----Asteroid2-----//
Nydrel 2:9ece21082838 359 class Asteroid2: public AbstractAsteroid
Nydrel 2:9ece21082838 360 {
Nydrel 2:9ece21082838 361 public:
Nydrel 2:9ece21082838 362 Asteroid2(int corner)
Nydrel 2:9ece21082838 363 {
Nydrel 2:9ece21082838 364 pickCorner(corner);
Nydrel 2:9ece21082838 365 startTime = time(0);
Nydrel 2:9ece21082838 366 }
Nydrel 2:9ece21082838 367
Nydrel 2:9ece21082838 368 Asteroid2()
Nydrel 2:9ece21082838 369 {
Nydrel 2:9ece21082838 370 pickCorner();
Nydrel 2:9ece21082838 371 startTime = time(0);
Nydrel 2:9ece21082838 372 }
Nydrel 2:9ece21082838 373
Nydrel 2:9ece21082838 374 void draw()
Nydrel 2:9ece21082838 375 {
Nydrel 2:9ece21082838 376 uLCD.BLIT(x_pos, y_pos, ASTEROID_WIDTH, ASTEROID_HEIGHT,asteroid_sprite_2);
Nydrel 2:9ece21082838 377 }
Nydrel 2:9ece21082838 378
Nydrel 2:9ece21082838 379 void update()
Nydrel 2:9ece21082838 380 {
Nydrel 2:9ece21082838 381 uLCD.BLIT(x_pos, y_pos, ASTEROID_WIDTH, ASTEROID_HEIGHT,asteroid_blank);
Nydrel 2:9ece21082838 382 wait(0.02);
Nydrel 2:9ece21082838 383 time_t timeElapsed = time(0)-startTime;
Nydrel 2:9ece21082838 384 x_pos = x_pos + (deltaX * timeElapsed);
Nydrel 2:9ece21082838 385 y_pos = y_pos + (deltaY * timeElapsed);
Nydrel 2:9ece21082838 386
Nydrel 2:9ece21082838 387 if(boundaryCheck() )
Nydrel 2:9ece21082838 388 {
Nydrel 2:9ece21082838 389 Asteroid2();
Nydrel 2:9ece21082838 390 }
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 if(boundaryCheck() )
Nydrel 2:9ece21082838 430 {
Nydrel 2:9ece21082838 431 Asteroid3();
Nydrel 2:9ece21082838 432 }
Nydrel 2:9ece21082838 433 }
Nydrel 2:9ece21082838 434
Nydrel 2:9ece21082838 435 protected:
Nydrel 2:9ece21082838 436 time_t startTime;
Nydrel 2:9ece21082838 437 };
Nydrel 2:9ece21082838 438
Nydrel 2:9ece21082838 439
Nydrel 2:9ece21082838 440
Nydrel 2:9ece21082838 441 //-----Asteroid4-----//
Nydrel 2:9ece21082838 442 class Asteroid4: public AbstractAsteroid
Nydrel 2:9ece21082838 443 {
Nydrel 2:9ece21082838 444 public:
Nydrel 2:9ece21082838 445 Asteroid4(int corner)
Nydrel 2:9ece21082838 446 {
Nydrel 2:9ece21082838 447 pickCorner(corner);
Nydrel 2:9ece21082838 448 startTime = time(0);
Nydrel 2:9ece21082838 449 }
Nydrel 2:9ece21082838 450
Nydrel 2:9ece21082838 451 Asteroid4()
Nydrel 2:9ece21082838 452 {
Nydrel 2:9ece21082838 453 pickCorner();
Nydrel 2:9ece21082838 454 startTime = time(0);
Nydrel 2:9ece21082838 455 }
Nydrel 2:9ece21082838 456
Nydrel 2:9ece21082838 457 void draw()
Nydrel 2:9ece21082838 458 {
Nydrel 2:9ece21082838 459 uLCD.BLIT(x_pos, y_pos, ASTEROID_WIDTH, ASTEROID_HEIGHT,asteroid_sprite_4);
Nydrel 2:9ece21082838 460 }
Nydrel 2:9ece21082838 461
Nydrel 2:9ece21082838 462 void update()
Nydrel 2:9ece21082838 463 {
Nydrel 2:9ece21082838 464 uLCD.BLIT(x_pos, y_pos, ASTEROID_WIDTH, ASTEROID_HEIGHT,asteroid_blank);
Nydrel 2:9ece21082838 465 wait(0.02);
Nydrel 2:9ece21082838 466 time_t timeElapsed = time(0)-startTime;
Nydrel 2:9ece21082838 467 x_pos = x_pos + (deltaX * timeElapsed);
Nydrel 2:9ece21082838 468 y_pos = y_pos + (deltaY * timeElapsed);
Nydrel 2:9ece21082838 469
Nydrel 2:9ece21082838 470 if(boundaryCheck() )
Nydrel 2:9ece21082838 471 {
Nydrel 2:9ece21082838 472 Asteroid4();
Nydrel 2:9ece21082838 473 }
Nydrel 2:9ece21082838 474 }
Nydrel 2:9ece21082838 475
Nydrel 2:9ece21082838 476 protected:
Nydrel 2:9ece21082838 477 time_t startTime;
Nydrel 2:9ece21082838 478 };
Nydrel 2:9ece21082838 479
Nydrel 2:9ece21082838 480
Nydrel 2:9ece21082838 481
Nydrel 2:9ece21082838 482
Nydrel 1:21558533e3b9 483
Nydrel 1:21558533e3b9 484 //Program Start
Nydrel 1:21558533e3b9 485
Nydrel 1:21558533e3b9 486 int main()
Nydrel 1:21558533e3b9 487 {
Nydrel 1:21558533e3b9 488 uLCD.baudrate(300000);
Nydrel 1:21558533e3b9 489 wait(0.2);
Nydrel 1:21558533e3b9 490 srand(time(0)); // do this srand call here ONLY... no where else in the code!
Nydrel 2:9ece21082838 491 //ScreenObject * ActiveAsteroids[NUM_ASTEROIDS];
Nydrel 1:21558533e3b9 492 SpaceShipEarth ship; //instantiate a SpaceShipEarth object
Nydrel 2:9ece21082838 493
Nydrel 2:9ece21082838 494
Nydrel 2:9ece21082838 495 Asteroid1 rock1(1);
Nydrel 2:9ece21082838 496 //Asteroid2 rock2(2);
Nydrel 2:9ece21082838 497 //Asteroid3 rock3(3);
Nydrel 2:9ece21082838 498 //Asteroid4 rock4(4);
Nydrel 1:21558533e3b9 499
Nydrel 1:21558533e3b9 500 //set parameters -- use these and don't change
Nydrel 1:21558533e3b9 501 acc.setBitDepth(MMA8452::BIT_DEPTH_12);
Nydrel 1:21558533e3b9 502 acc.setDynamicRange(MMA8452::DYNAMIC_RANGE_4G);
Nydrel 1:21558533e3b9 503 acc.setDataRate(MMA8452::RATE_100);
Nydrel 1:21558533e3b9 504
Nydrel 1:21558533e3b9 505
Nydrel 1:21558533e3b9 506 while(1) {
Nydrel 1:21558533e3b9 507 ship.update();
Nydrel 1:21558533e3b9 508
Nydrel 2:9ece21082838 509 ship.draw();
Nydrel 2:9ece21082838 510
Nydrel 2:9ece21082838 511 rock1.update();
Nydrel 2:9ece21082838 512 rock1.draw();
Nydrel 2:9ece21082838 513
Nydrel 2:9ece21082838 514 //rock2.update();
Nydrel 2:9ece21082838 515 //rock2.draw();
Nydrel 2:9ece21082838 516
Nydrel 2:9ece21082838 517 //rock3.update();
Nydrel 2:9ece21082838 518 //rock3.draw();
Nydrel 2:9ece21082838 519
Nydrel 2:9ece21082838 520 //rock4.update();
Nydrel 2:9ece21082838 521 //rock4.draw();
Nydrel 1:21558533e3b9 522 } //end infinite while loop
Nydrel 1:21558533e3b9 523 } //end main
Nydrel 1:21558533e3b9 524
Nydrel 1:21558533e3b9 525