Stephen Ralph / Mbed 2 deprecated Asteroids

Dependencies:   mbed 4DGL-uLCD-SE PinDetect

Revision:
1:79577bd1e4cb
Parent:
0:f2cc64948895
Child:
2:fe6ab9956767
diff -r f2cc64948895 -r 79577bd1e4cb main.cpp
--- a/main.cpp	Fri Nov 30 04:49:11 2018 +0000
+++ b/main.cpp	Fri Nov 30 05:37:28 2018 +0000
@@ -0,0 +1,122 @@
+#include "uLCD_4DGL.h"
+#include "MMA8452.h"
+
+
+#include "SSE.h"
+#include "ConcreteAsteroid1.h"
+#include "ConcreteAsteroid2.h"
+#include "ConcreteAsteroid3.h"
+#include "ConcreteAsteroid4.h"
+#include "overlap.h"
+
+#include <math.h>
+
+
+#define ASTEROID_HEIGHT 12
+#define ASTEROID_WIDTH 15
+#define SPRITE_MAX 15
+#define EARTH_WIDTH 10
+#define EARTH_HEIGHT 10
+#define EXPLOSION1_WIDTH 20
+
+#define SCREEN_MAX 125
+#define SCREEN_MIN 1
+#define NUM_ASTEROIDS 4
+
+#define Q 0x808000 //OLIVE
+#define I 0x008000 //GREEN
+#define S 0xC0C0C0 //SILVER
+#define C 0x17202A //UFO GLASS
+#define D 0x797D7F //DARK GREY
+#define L 0x00FF00 //LIME
+#define P 0xFF00FF //PINK
+#define R 0xF1C40F //YELLOW
+#define O 0xF39C12 //ORANGE
+#define G 0xAAB7B8 //GREY
+#define _ 0x000000 //BLACK 
+#define X 0xFFFFFF //WHITE
+#define B 0x0000FF  //BLUE
+#define r 0xFF0000   //RED
+
+uLCD_4DGL uLCD(p28, p27, p29);
+Serial pc(USBTX,USBRX);
+MMA8452 acc(p9, p10, 40000);  //instantiate an acc object! 
+
+int asteroid_sprite_1[ASTEROID_HEIGHT * ASTEROID_WIDTH] = {_,_,_,_,X,X,X,X,X,X,X,X,_,_,_,_,_,_,X,_,_,_,_,_,_,_,_,X,_,_,_,_,X,_,_,_,_,_,_,_,_,_,X,_,_,_,X,_,_,_,_,_,_,_,_,_,_,X,_,_,X,X,X,X,_,_,_,_,_,_,_,_,_,X,_,_,_,_,X,_,_,_,_,_,_,_,_,_,X,_,_,_,X,_,_,_,_,_,_,_,_,_,_,X,_,_,X,_,_,_,_,_,X,_,_,_,_,_,X,_,X,_,_,_,_,_,X,X,_,_,_,_,X,_,_,_,X,_,_,_,X,_,X,_,_,_,_,X,_,_,_,_,X,_,X,_,_,X,_,_,_,X,_,_,_,_,_,_,X,_,_,_,X,X,X,X,_,_,_,_};
+
+int asteroid_sprite_2[ASTEROID_HEIGHT * ASTEROID_WIDTH] = {_,_,_,_,X,X,X,X,X,X,X,X,_,_,_,_,_,_,X,_,_,_,_,_,_,_,_,X,_,_,_,_,X,_,_,_,_,_,_,_,_,_,X,_,_,_,X,_,_,_,_,_,_,_,_,_,_,X,_,_,X,X,X,X,_,_,_,_,_,_,_,_,_,X,_,_,_,_,X,_,_,_,_,_,_,_,_,_,X,_,_,_,X,_,_,_,_,_,_,_,_,_,_,X,_,_,X,_,_,_,_,_,X,_,_,_,_,_,X,_,X,_,_,_,_,_,X,X,_,_,_,_,X,_,_,_,X,_,_,_,X,_,X,_,_,_,_,X,_,_,_,_,X,_,X,_,_,X,_,_,_,X,_,_,_,_,_,_,X,_,_,_,X,X,X,X,_,_,_,_};
+
+int asteroid_sprite_3[ASTEROID_HEIGHT * ASTEROID_WIDTH] = {_,_,_,_,X,X,X,X,X,X,X,X,_,_,_,_,_,_,X,_,_,_,_,_,_,_,_,X,_,_,_,_,X,_,_,_,_,_,_,_,_,_,X,_,_,_,X,_,_,_,_,_,_,_,_,_,_,X,_,_,X,X,X,X,_,_,_,_,_,_,_,_,_,X,_,_,_,_,X,_,_,_,_,_,_,_,_,_,X,_,_,_,X,_,_,_,_,_,_,_,_,_,_,X,_,_,X,_,_,_,_,_,X,_,_,_,_,_,X,_,X,_,_,_,_,_,X,X,_,_,_,_,X,_,_,_,X,_,_,_,X,_,X,_,_,_,_,X,_,_,_,_,X,_,X,_,_,X,_,_,_,X,_,_,_,_,_,_,X,_,_,_,X,X,X,X,_,_,_,_};
+
+int asteroid_sprite_4[ASTEROID_HEIGHT * ASTEROID_WIDTH] = {_,_,_,_,X,X,X,X,X,X,X,X,_,_,_,_,_,_,X,_,_,_,_,_,_,_,_,X,_,_,_,_,X,_,_,_,_,_,_,_,_,_,X,_,_,_,X,_,_,_,_,_,_,_,_,_,_,X,_,_,X,X,X,X,_,_,_,_,_,_,_,_,_,X,_,_,_,_,X,_,_,_,_,_,_,_,_,_,X,_,_,_,X,_,_,_,_,_,_,_,_,_,_,X,_,_,X,_,_,_,_,_,X,_,_,_,_,_,X,_,X,_,_,_,_,_,X,X,_,_,_,_,X,_,_,_,X,_,_,_,X,_,X,_,_,_,_,X,_,_,_,_,X,_,X,_,_,X,_,_,_,X,_,_,_,_,_,_,X,_,_,_,X,X,X,X,_,_,_,_};
+
+
+int spaceship_earth1[EARTH_WIDTH *EARTH_HEIGHT] = {_,_,S,S,S,S,S,S,_,_,_,S,I,I,I,I,I,I,S,_,S,I,I,I,I,I,I,I,I,S,S,I,I,I,I,I,I,I,I,S,S,I,I,I,I,I,I,I,I,S,S,I,I,I,I,I,I,I,I,S,S,I,I,I,I,I,I,I,I,S,S,I,I,I,I,I,I,I,I,S,S,I,I,I,I,I,I,I,S,_,_,S,S,S,S,S,S,S,_,_,};
+
+int main() { 
+    uLCD.baudrate(300000);
+    wait(0.2);    
+    srand(time(0)); // do this srandcall here ONLY... no where else in the code!
+    ScreenObject *AstAry[NUM_ASTEROIDS];
+    
+    AstAry[0] = new ConcreteAsteroid1;
+    AstAry[1] = new ConcreteAsteroid2;
+    AstAry[2] = new ConcreteAsteroid3;
+    AstAry[3] = new ConcreteAsteroid4;
+    
+    SSE ship;
+    
+   
+   //set parameters -- use these and don't change
+   acc.setBitDepth(MMA8452::BIT_DEPTH_12);
+   acc.setDynamicRange(MMA8452::DYNAMIC_RANGE_4G);
+   acc.setDataRate(MMA8452::RATE_100);
+    
+    time_t startTime;
+    startTime = time(0);
+    time_t timeElapsed = time(0)-startTime;
+    while (true){
+        uLCD.cls();
+        
+        
+        timeElapsed = time(0)-startTime;
+        double t = (double)timeElapsed;
+        double tw = (t/30)*SCREEN_MAX;
+        uLCD.filled_rectangle(0, 0 , SCREEN_MAX-ceil(tw) , 5, G);
+        
+        if (timeElapsed >= 30){
+            uLCD.printf("\nYOU WIN!\n PRESS BUTTON TO RESTART");
+            wait(1);
+            return 0;
+        }
+        
+        ship.draw();
+        ship.update();
+        
+        for(int i=0; i < NUM_ASTEROIDS; i++){
+            AstAry[i]->draw();
+            AstAry[i]->update();
+            
+            if(AstAry[i]->outB()){
+                int rando = (rand() % 4);
+                
+                if (rando == 0) {
+                    AstAry[i] = new ConcreteAsteroid1;   
+                } else if (rando == 1) {
+                    AstAry[i] = new ConcreteAsteroid2;   
+                } else if (rando == 2) {
+                    AstAry[i] = new ConcreteAsteroid3;   
+                } else {
+                    AstAry[i] = new ConcreteAsteroid4;   
+                }
+            }
+            
+            if(overlap( ship, *AstAry[i])){
+                uLCD.printf("\nGAME OVER\n");
+                wait(2);
+                return 0;
+            }
+        }
+        wait(.2);
+    }
+}
\ No newline at end of file