class for obstacles in Car_race game

Revision:
11:c0922d4fda7b
Parent:
10:515df7535b2f
diff -r 515df7535b2f -r c0922d4fda7b Obstacles.cpp
--- a/Obstacles.cpp	Tue May 02 22:25:19 2017 +0000
+++ b/Obstacles.cpp	Thu May 04 12:04:51 2017 +0000
@@ -12,81 +12,81 @@
 
 void Obstacles::init(int seed)
 {
-    _Obstacle_x = seed;
-    _score = 0;
+    _Obstacle_pos_x = seed;     
+    _score = 0;               // initialise scores
     _totalscore = 0;
-    // try to draw them here in this function as we need the draw function for another purpose
-    // are we done though? we might need to split the draw function into two, one for drawing the car
-    // and the other for drawing the obstacles as they are drawn in a time basis
+    // printf("_Obstacle_pos_x=%d \n",_Obstacle_pos_x);
 }
 
 void Obstacles::draw(N5110 &lcd,int seed)
 {
-    _Obstacle_x = seed;
-
-    switch(_Obstacle_x) {
+    _Obstacle_pos_x = seed;     // give a random number to the x position of the obstacle
+    // printf("_Obstacle_pos_x=%d \n",_Obstacle_pos_x);
+    switch(_Obstacle_pos_x) {
         case 0:
-            lcd.drawRect(2,11,25,2,FILL_BLACK);  // it was lcd.drawRect(2,2,25,2,FILL_BLACK);
+            lcd.drawRect(2,11,25,2,FILL_BLACK);  // draw in the left
             break;
 
         case 1:
-            lcd.drawRect(28,11,27,2,FILL_BLACK);  // it was lcd.drawRect(28,2,27,2,FILL_BLACK);
+            lcd.drawRect(28,11,27,2,FILL_BLACK);  // draw in the middle
             break;
 
         case 2:
-            lcd.drawRect(56,11,25,2,FILL_BLACK);  // it was  lcd.drawRect(56,2,25,2,FILL_BLACK);
+            lcd.drawRect(56,11,25,2,FILL_BLACK);  // draw in the right
             break;
     }
 }
 
-void Obstacles::update(N5110 &lcd) // adjust this function to be able to store all pixels values
+void Obstacles::update(N5110 &lcd)
 {
-    // then they are used to shift the screen
-    addScore(lcd);
-    char pixelstate[82][37];              // it was char pixelstate[82][46];
-    for (int i=1; i<83; i+=1) {          // it was    for (int i=1; i<83; i+=1) {
-        for (int j=10; j<47; j+=1) {   // it was for (int j=1; j<47; j+=1) {
-            if (lcd.getPixel(i,j)) {      // if (lcd.getPixel(i,j)) {
-                pixelstate[i-1][j-10]=1;   //  pixelstate[i-1][j-1]=1;
+    add_Score(lcd);
+
+    char pixelstate[82][37];              // generate an array to store pixels' values
+    for (int i=1; i<83; i+=1) {
+        for (int j=10; j<47; j+=1) {       // notice that we start from the 10th row as to allow enough for the
+            if (lcd.getPixel(i,j)) {         // real time prints to be displayed in the first 10 rows
+                pixelstate[i-1][j-10]=1;
             } else  {
-                pixelstate[i-1][j-10]=0;        //  pixelstate[i-1][j-1]=0;
+                pixelstate[i-1][j-10]=0;
             }
         }
     }
-    for (int i=1; i<83; i+=1) {           // it was  for (int i=1; i<83; i+=1) {
-        for (int j=10; j<47; j+=1) {    // it was  for (int j=1; j<47; j+=1) {
-            if ((pixelstate[i-1][j-10]) ) {   // it was  if ((pixelstate[i-1][j-1]) ) {
-                lcd.setPixel(i,j+2);         //       lcd.setPixel(i,j+2);
-            }      // CAN INCREASE THE SPEED BY ADDING 1 FOR Y VALUES
-            if ((pixelstate[i-1][j-11]==0) ) {    // if ((pixelstate[i-1][j-2]==0) ) {
-                lcd.setPixel(i,j+1,false);     //  lcd.setPixel(i,j+1,false);
+    for (int i=1; i<83; i+=1) {              // loop through the array values now and then
+        for (int j=10; j<47; j+=1) {                // shift all the pixels down
+            if ((pixelstate[i-1][j-10]) ) {
+                lcd.setPixel(i,j+2);            // pixels move in an increment of two for higher speed
+            }
+            if ((pixelstate[i-1][j-11]==0) ) {
+                lcd.setPixel(i,j+1,false);
             }
         }
     }
 }
 
-void Obstacles::addScore(N5110 &lcd)
+void Obstacles::add_Score(N5110 &lcd)
 {
-    for (int i=2; i<83; i+=1) {
-        if (lcd.getPixel(i,46)) {
-            _score++;
-            _totalscore++;
+    // loop through the last row of the screen and check if a pixel is detected
+    for (int i=2; i<83; i+=1) {             // if so, then an obstacle is passing, hence break out from the loop since
+        if (lcd.getPixel(i,46)) {                   // only one pixel is sufficient to prove that
+            _score++;           // increase adjustable score
+            _totalscore++;      // increase total/final score
+            // printf("Done \n");
             break;
         }
     }
 }
 
-void Obstacles::updateScore()
+void Obstacles::reduce_Score()
 {
-    _score -= 10;
+    _score -= 10;     // reduce score when feature is used in other functions
 }
 
-int Obstacles::getScore()
+int Obstacles::get_Score()
 {
-    return _score;
+    return _score;        // adjustable score
 }
-int Obstacles::getTotalScore()
+int Obstacles::get_TotalScore()
 {
-    return _totalscore;
+    return _totalscore;   // total/final score
 }