Stephen Ralph / Mbed 2 deprecated Asteroids

Dependencies:   mbed 4DGL-uLCD-SE PinDetect

Files at this revision

API Documentation at this revision

Comitter:
sralph3
Date:
Fri Nov 30 06:50:01 2018 +0000
Parent:
6:7b71038ea3df
Child:
8:137330cfe63d
Commit message:
FINAL

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/main.cpp	Fri Nov 30 06:33:17 2018 +0000
+++ b/main.cpp	Fri Nov 30 06:50:01 2018 +0000
@@ -1,9 +1,10 @@
+// ## MBED INCLUDES ##
 #include "uLCD_4DGL.h"
 #include "MMA8452.h"
 #include "Speaker.h"
 #include "PinDetect.h"
 
-
+// ## CUSTOM INCLUDES ##
 #include "SSE.h"
 #include "ConcreteAsteroid1.h"
 #include "ConcreteAsteroid2.h"
@@ -11,9 +12,10 @@
 #include "ConcreteAsteroid4.h"
 #include "overlap.h"
 
+// ## MATH ##
 #include <math.h>
 
-
+// ## CUSTOM DEFINES ##
 #define ASTEROID_HEIGHT 12
 #define ASTEROID_WIDTH 15
 #define SPRITE_MAX 15
@@ -40,15 +42,18 @@
 #define B 0x0000FF  //BLUE
 #define r 0xFF0000   //RED
 
+// ## VARIOUS MBED INSTANTIATIONS ##
 uLCD_4DGL uLCD(p28, p27, p29);
 Serial pc(USBTX,USBRX);
-MMA8452 acc(p9, p10, 40000);  //instantiate an acc object!
+MMA8452 acc(p9, p10, 40000);
 Speaker mySpeaker(p21);
 PinDetect pb1(p18);
 
+// ## GLOBAL VARS FOR BOMB BUTTON ##
 bool BombUsed = false;
 bool ExplodeAllAsteroids = false;
 
+// ## SET UP PUSHBUTTON FOR INTURRUPT ##
 void pb1_hit_callback (void)
 {
     if (!BombUsed ){
@@ -57,7 +62,7 @@
         mySpeaker.PlayNote(100.0,0.25,0.1);
     }
 }
-
+// ##  SPRITES ## 
 int asteroid_sprite_1[ASTEROID_HEIGHT * ASTEROID_WIDTH] = {
     _,_,_,_,X,X,X,X,X,X,X,X,_,_,_,
     _,_,_,X,_,_,_,_,_,_,_,_,X,_,_,
@@ -143,45 +148,50 @@
     _,S,S,S,S,S,S,S,_,_,
 };
 
+// ## MAIN ##
 int main() { 
+    // ## SETUP LCD BAUDRATE, PB PULLUP, AND SRAND ##
     uLCD.baudrate(300000);
-    wait(0.2);    
-    srand(time(0)); // do this srandcall here ONLY... no where else in the code!
-    ScreenObject *AstAry[NUM_ASTEROIDS];
+    wait(0.2);
+    pb1.mode(PullUp);
+    wait(0.1);
+    srand(time(0));
     
     
-    pb1.mode(PullUp);
-    wait(0.1);
-    // Setup Interrupt callback function for a pb hit
+    // ## SET PARAMETERS FOR ACCELEROMETER ##
+    acc.setBitDepth(MMA8452::BIT_DEPTH_12);
+    acc.setDynamicRange(MMA8452::DYNAMIC_RANGE_4G);
+    acc.setDataRate(MMA8452::RATE_100);
+   
+    // ## SETUP INTURRUPT CALLBACK FUNCTION FOR A PB HIT ##
     pb1.attach_deasserted(&pb1_hit_callback);
-    // Start sampling pb input using interrupt
+    // ## START SAMPLING PB CALLBACK ##
     pb1.setSampleFrequency();
     
+    // ## CREATE ARRAY OF SCREENOBJECTS (AND SHIP) ##
+    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);
-    
+    // ## SETUP TIME & ELAPSED TIME ##
     time_t startTime;
     startTime = time(0);
     time_t timeElapsed = time(0)-startTime;
+    
+    // ## GAME LOOP ##
     while (true){
         uLCD.cls();
         
-        
+        // ## TAKE TIME ELAPSED, CONVERT TO OUT OF 30SEC, SCALE TO SCREN SIZE ##
         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);
         
+        // ## WINNING IF STATEMENT ##
         if (timeElapsed >= 30){
             mySpeaker.PlayNote(600.0,0.25,0.2);
             mySpeaker.PlayNote(800.0,0.25,0.1);
@@ -191,6 +201,7 @@
             return 0;
         }
         
+        // ## BOMB IF STATEMENT ##
         if (ExplodeAllAsteroids){
             for(int i=0; i < NUM_ASTEROIDS; i++){
                 int rando = (rand() % 4);
@@ -210,6 +221,7 @@
         
         ship.update();
         
+        // ## LOOP THROUGH ASTROID ARY, SEE IF OOB ##
         for(int i=0; i < NUM_ASTEROIDS; i++){
             AstAry[i]->update();
             if(AstAry[i]->outB()){
@@ -226,6 +238,7 @@
                 }
             }
             
+            // ## LOSING IF STATEMENT ##
             if(overlap( ship, *AstAry[i])){
                 uLCD.BLIT(ship.xpos, ship.ypos, EARTH_WIDTH, EARTH_HEIGHT, exp1);
                 mySpeaker.PlayNote(800.0,0.25,0.1);