WITB2

Dependencies:   mbed 4DGL-uLCD-SE PinDetect

Committer:
Nydrel
Date:
Wed Nov 08 20:19:16 2017 +0000
Revision:
1:21558533e3b9
Parent:
0:5e90b8577fef
Child:
2:9ece21082838
About to try a different method to erase the earth before updating x,y values;

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 1:21558533e3b9 4 #include "PinDetect.h"
Nydrel 1:21558533e3b9 5 #include "Speaker.h"
Nydrel 1:21558533e3b9 6
Nydrel 1:21558533e3b9 7 /*-----Define Statements-----*/
Nydrel 1:21558533e3b9 8
Nydrel 1:21558533e3b9 9 #define ASTEROID_HEIGHT 12
Nydrel 1:21558533e3b9 10 #define ASTEROID_WIDTH 15
Nydrel 1:21558533e3b9 11 #define SPRITE_MAX 15
Nydrel 1:21558533e3b9 12 #define EARTH_WIDTH 10
Nydrel 1:21558533e3b9 13 #define EARTH_HEIGHT 10
Nydrel 1:21558533e3b9 14 #define EXPLOSION1_WIDTH 20
Nydrel 1:21558533e3b9 15 #define SCREEN_MAX 125
Nydrel 1:21558533e3b9 16 #define SCREEN_MIN 1
Nydrel 1:21558533e3b9 17 #define NUM_ASTEROIDS 4
Nydrel 1:21558533e3b9 18 #define Q 0x808000 //OLIVE
Nydrel 1:21558533e3b9 19 #define I 0x008000 //GREEN
Nydrel 1:21558533e3b9 20 #define S 0xC0C0C0 //SILVER
Nydrel 1:21558533e3b9 21 #define C 0x17202A //UFO GLASS
Nydrel 1:21558533e3b9 22 #define D 0x797D7F //DARK GREY
Nydrel 1:21558533e3b9 23 #define L 0x00FF00 //LIME
Nydrel 1:21558533e3b9 24 #define P 0xFF00FF //PINK
Nydrel 1:21558533e3b9 25 #define R 0xF1C40F //YELLOW
Nydrel 1:21558533e3b9 26 #define O 0xF39C12 //ORANGE
Nydrel 1:21558533e3b9 27 #define G 0xAAB7B8 //GREY
Nydrel 1:21558533e3b9 28 #define _ 0x000000 //BLACK
Nydrel 1:21558533e3b9 29 #define X 0xFFFFFF //WHITE
Nydrel 1:21558533e3b9 30 #define B 0x0000FF //BLUE
Nydrel 1:21558533e3b9 31 #define r 0xFF0000 //RED
Nydrel 1:21558533e3b9 32
Nydrel 1:21558533e3b9 33
Nydrel 1:21558533e3b9 34 /*-----Sprites------*/
Nydrel 1:21558533e3b9 35
Nydrel 1:21558533e3b9 36 int spaceship_earth1[EARTH_WIDTH * EARTH_HEIGHT] = {
Nydrel 1:21558533e3b9 37 _,_,S,S,S,S,S,S,_,_,
Nydrel 1:21558533e3b9 38 _,S,I,I,I,I,I,I,S,_,
Nydrel 1:21558533e3b9 39 S,I,I,I,I,I,I,I,I,S,
Nydrel 1:21558533e3b9 40 S,I,I,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,S,_,
Nydrel 1:21558533e3b9 46 _,S,S,S,S,S,S,S,_,_,
Nydrel 1:21558533e3b9 47 };
Nydrel 1:21558533e3b9 48
Nydrel 1:21558533e3b9 49 int earth_blank[EARTH_WIDTH * EARTH_HEIGHT] = {
Nydrel 1:21558533e3b9 50 _,_,_,_,_,_,_,_,_,_,
Nydrel 1:21558533e3b9 51 _,_,_,_,_,_,_,_,_,_,
Nydrel 1:21558533e3b9 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 1:21558533e3b9 62
Nydrel 1:21558533e3b9 63 //Instantiate Accelerometer Object
Nydrel 1:21558533e3b9 64
jd7142128 0:5e90b8577fef 65 Serial pc(USBTX,USBRX); //not used in this program
Nydrel 1:21558533e3b9 66 MMA8452 acc(p9, p10, 40000); //instantiate an acc object!
Nydrel 1:21558533e3b9 67 double x, y, z;
jd7142128 0:5e90b8577fef 68
Nydrel 1:21558533e3b9 69 //Instantiate uLCD Object
jd7142128 0:5e90b8577fef 70
Nydrel 1:21558533e3b9 71 DigitalOut myled(LED1);
Nydrel 1:21558533e3b9 72 uLCD_4DGL uLCD(p28, p27, p29); // create a global uLCD object
Nydrel 1:21558533e3b9 73 //Speaker mySpeaker(p21);
Nydrel 1:21558533e3b9 74
Nydrel 1:21558533e3b9 75 int factor = 50;
Nydrel 1:21558533e3b9 76 int offset = 63;
Nydrel 1:21558533e3b9 77
Nydrel 1:21558533e3b9 78
Nydrel 1:21558533e3b9 79
Nydrel 1:21558533e3b9 80
Nydrel 1:21558533e3b9 81 /*-----ScreenObject Class------*/
jd7142128 0:5e90b8577fef 82
Nydrel 1:21558533e3b9 83 class ScreenObject
Nydrel 1:21558533e3b9 84 {
Nydrel 1:21558533e3b9 85 public:
Nydrel 1:21558533e3b9 86 //ScreenObject();
Nydrel 1:21558533e3b9 87 //setter functions
Nydrel 1:21558533e3b9 88 void setXPos(int x)
Nydrel 1:21558533e3b9 89 {
Nydrel 1:21558533e3b9 90 x_pos = x;
Nydrel 1:21558533e3b9 91 }
Nydrel 1:21558533e3b9 92
Nydrel 1:21558533e3b9 93 void setYPos(int y)
Nydrel 1:21558533e3b9 94 {
Nydrel 1:21558533e3b9 95 y_pos = y;
Nydrel 1:21558533e3b9 96 }
Nydrel 1:21558533e3b9 97
Nydrel 1:21558533e3b9 98 //getter functions
Nydrel 1:21558533e3b9 99 // int getXPos();
Nydrel 1:21558533e3b9 100 // int getYPos();
Nydrel 1:21558533e3b9 101
Nydrel 1:21558533e3b9 102 //pure virtual
Nydrel 1:21558533e3b9 103 virtual void draw() = 0;
Nydrel 1:21558533e3b9 104 virtual void update() = 0;
Nydrel 1:21558533e3b9 105 protected:
Nydrel 1:21558533e3b9 106 int x_pos;
Nydrel 1:21558533e3b9 107 int y_pos;
Nydrel 1:21558533e3b9 108 };
Nydrel 1:21558533e3b9 109
Nydrel 1:21558533e3b9 110
Nydrel 1:21558533e3b9 111 /*-----SpaceShipEarth Class------*/
Nydrel 1:21558533e3b9 112
Nydrel 1:21558533e3b9 113 class SpaceShipEarth: public ScreenObject
Nydrel 1:21558533e3b9 114 {
Nydrel 1:21558533e3b9 115 public:
Nydrel 1:21558533e3b9 116 SpaceShipEarth() {
Nydrel 1:21558533e3b9 117 x_pos = 63;
Nydrel 1:21558533e3b9 118 y_pos = 63;
Nydrel 1:21558533e3b9 119 }
Nydrel 1:21558533e3b9 120
Nydrel 1:21558533e3b9 121 void draw() {
Nydrel 1:21558533e3b9 122 uLCD.BLIT(y_pos, x_pos, ASTEROID_WIDTH, ASTEROID_HEIGHT,spaceship_earth1);
Nydrel 1:21558533e3b9 123 }
Nydrel 1:21558533e3b9 124
Nydrel 1:21558533e3b9 125 void update() {
Nydrel 1:21558533e3b9 126
Nydrel 1:21558533e3b9 127 uLCD.BLIT(y_pos, x_pos, ASTEROID_WIDTH, ASTEROID_HEIGHT,earth_blank);
Nydrel 1:21558533e3b9 128 //uLCD.filled_rectangle(-1*y*factor-3+offsety,-1*x*factor+radius+offsety,-1*y*factor+3+offsetx,-1*x*factor+radius+6+offsety, BLACK);
Nydrel 1:21558533e3b9 129
Nydrel 1:21558533e3b9 130 if(!acc.isXYZReady()) {
Nydrel 1:21558533e3b9 131 wait(0.02);
Nydrel 1:21558533e3b9 132 }
Nydrel 1:21558533e3b9 133
Nydrel 1:21558533e3b9 134 else {
Nydrel 1:21558533e3b9 135 acc.readXYZGravity(&x,&y,&z); //notice this is passed by reference use pointers
Nydrel 1:21558533e3b9 136 setXPos(-1*x*factor + offset);
Nydrel 1:21558533e3b9 137 setYPos(-1*y*factor + offset);
Nydrel 1:21558533e3b9 138
Nydrel 1:21558533e3b9 139 draw();
Nydrel 1:21558533e3b9 140
Nydrel 1:21558533e3b9 141 } //end else
Nydrel 1:21558533e3b9 142 }
Nydrel 1:21558533e3b9 143
Nydrel 1:21558533e3b9 144 };
Nydrel 1:21558533e3b9 145
Nydrel 1:21558533e3b9 146
Nydrel 1:21558533e3b9 147
Nydrel 1:21558533e3b9 148
Nydrel 1:21558533e3b9 149 //Program Start
Nydrel 1:21558533e3b9 150
Nydrel 1:21558533e3b9 151 int main()
Nydrel 1:21558533e3b9 152 {
Nydrel 1:21558533e3b9 153 uLCD.baudrate(300000);
Nydrel 1:21558533e3b9 154 wait(0.2);
Nydrel 1:21558533e3b9 155 srand(time(0)); // do this srand call here ONLY... no where else in the code!
Nydrel 1:21558533e3b9 156 //ScreenObject * ActiveAsteroids[NUM_ASTEROIDS];
Nydrel 1:21558533e3b9 157 SpaceShipEarth ship; //instantiate a SpaceShipEarth object
Nydrel 1:21558533e3b9 158
Nydrel 1:21558533e3b9 159
Nydrel 1:21558533e3b9 160 //set parameters -- use these and don't change
Nydrel 1:21558533e3b9 161 acc.setBitDepth(MMA8452::BIT_DEPTH_12);
Nydrel 1:21558533e3b9 162 acc.setDynamicRange(MMA8452::DYNAMIC_RANGE_4G);
Nydrel 1:21558533e3b9 163 acc.setDataRate(MMA8452::RATE_100);
Nydrel 1:21558533e3b9 164
Nydrel 1:21558533e3b9 165
Nydrel 1:21558533e3b9 166 while(1) {
Nydrel 1:21558533e3b9 167 ship.update();
Nydrel 1:21558533e3b9 168
Nydrel 1:21558533e3b9 169 //ship.draw();
Nydrel 1:21558533e3b9 170 } //end infinite while loop
Nydrel 1:21558533e3b9 171 } //end main
Nydrel 1:21558533e3b9 172
Nydrel 1:21558533e3b9 173