Meteor defense project

Dependencies:   N5110 mbed

Revision:
20:32f115462bbc
Parent:
19:7ccbb19703f9
Child:
21:e5585569a938
--- a/Spawn/Spawn.cpp	Wed Apr 12 13:53:37 2017 +0000
+++ b/Spawn/Spawn.cpp	Wed Apr 12 17:02:22 2017 +0000
@@ -16,103 +16,109 @@
     spawnRateB = 1;
     spawnRateC = 2;
 }
-void Spawn::randomizeSpawn(char Arr2[][Rows], char Arr3[][Rows]) {
+void Spawn::randomizeSpawn(int Arr[][Rows], char cArr[][Rows]) {
         //there is 3 kind of different spawn - a, b and c.
         if (stopSpawnA == 0) { //spawn for this row
-            spawnA(Arr2, Arr3);
+            spawnA(Arr, cArr);
             stopSpawnA= 1;
         } else { //stop spawn for the next row
             stopSpawnA = 0;
         }
         for ( int x = 0; x < Cols; x++) {
-            spawnB(Arr2, Arr3);
-            spawnC(Arr2, Arr3);
+            spawnB(x, Arr, cArr);
+            spawnC(x, Arr, cArr);
         }
         //printf("at x=2, y=0. value = %d \n",Arr1[2][0]);
 }
-void Spawn::spawnA(int Arr2[][Rows],char Arr3[][Rows]) {
+void Spawn::spawnA(int Arr[][Rows],char cArr[][Rows]) {
     for ( int x = 0; x < Cols; x++) {
         //32/200 chance of spawning for A.
         //can depends on level
         bool TrueFalseA = (rand() % 200) < spawnRateA;
         if (TrueFalseA) {
             //spawning from the top of the screen
-            Arr2[x][0] = healthA;
-            Arr3[x][0] = 'a';
+            Arr[x][0] = healthA;
+            cArr[x][0] = 'a';
             //printf("spawn set at x = is %d \n",x);
         }
     }    
 }
-void Spawn::spawnB(int Arr2[][Rows],char Arr3[][Rows]) {
+void Spawn::spawnB(int x, int Arr[][Rows],char cArr[][Rows]) {
     bool TrueFalseB = (rand() % 200) < spawnRateB;
     if (TrueFalseB) {
-        Arr2[x][0] = 100000;
-        Arr3[x][0] = 'b';
+        Arr[x][0] = 100000;
+        cArr[x][0] = 'b';
     }
 }
-void Spawn:spawnC(int Arr2[][Rows],char Arr3[][Rows]) {
+void Spawn::spawnC(int x, int Arr[][Rows],char cArr[][Rows]) {
     bool TrueFalseC = (rand() % 200) < spawnRateC;
     if (TrueFalseC) {
-        Arr2[x][0] = healthC;
-        Arr3[x][0] = 'c';
+        Arr[x][0] = healthC;
+        cArr[x][0] = 'c';
     }
 }
-void Spawn::moveSpawnABC(int Arr1[][Rows], int Arr2[][Rows], char Arr3[][Rows]) {
+void Spawn::moveSpawnABC(int Arr[][Rows], int Arr2[][Rows], char cArr[][Rows], char cArr2[][Rows]) {
     //printf("x=2,y =0. value = %d \n",array[2][0]);
     //scan through the whole array
     for (int x = 0; x < Cols; x++) {
         for (int y = 0; y < Rows; y++) {
-            if (Arr2[x][y] > 0) {
+            if (cArr[x][y] == 'a' || cArr[x][y] == 'b' || cArr[x][y] == 'c') {
                 //move everything down a row
-                Arr1[x][y+1] = Arr2[x][y];       
-                Arr3[x][y+1] = Arr3[x][y];
-                Arr3[x][y] = '\0';
+                
+                Arr2[x][y+1] = Arr[x][y];       
+                cArr2[x][y+1] = cArr[x][y];
             } else {
-                Arr1[x][y+1] = 0;
+                Arr2[x][y+1] = 0;
+                cArr2[x][y+1] = '\0';
             }
         }
     }
     printf("at x=2, y=47. number is =%d \n",Arr2[2][47]);  
 }
-void Spawn::moveSpawnB(int Arr1[][Rows], int Arr2[][Rows], char Arr3[][Rows]){
+void Spawn::moveSpawnB(int Arr[][Rows], int Arr2[][Rows], char cArr[][Rows], char cArr2[][Rows]){
     //printf("moving spawn B \n");
     for (int x = 0; x < Cols; x++) {
         for (int y = 0; y < Rows; y++) {
-            if (Arr2[x][y] > 20000) { //any number larger than this must be spawn b.
-                Arr1[x][y+1] = Arr2[x][y];
-                Arr1[x][y] = 0;
-                Arr3[x][y+1] = 'b';
-                Arr3[x][y] = '\0';
+            deleteChar(x, y, Arr2, cArr2);
+            if (cArr[x][y] == 'b') { 
+                Arr2[x][y+1] = Arr[x][y];
+                cArr2[x][y+1] = 'b';
+                cArr2[x][y] = '\0';
+                Arr2[x][y] = 0;
             }
         }
     }            
 }
-void Spawn::updateSpawn(int Arr1[][Rows], int Arr2[][Rows], char Arr3[][Rows],N5110 &lcd) {
+void Spawn::updateSpawn(int Arr[][Rows], int Arr2[][Rows], char cArr[][Rows], char cArr2[][Rows], N5110 &lcd) {
     for ( int x = 0; x < Cols; x++) {
         for ( int y = 0; y < Rows; y++) {
-            deleteChar(x, y, Arr1, Arr3);
-            if (Arr3[x][y] == 'a') {
+            deleteChar(x, y, Arr2, cArr2);
+            if (cArr2[x][y] == 'a') {
                 lcd.setPixel(x,y);
-                //to update array1 
-                Arr2[x][y] = Arr1[x][y];
-            } else if (Arr3[x][y] == 'b') {
+                //to update the main array
+                Arr[x][y] = Arr2[x][y];
+                cArr[x][y] = 'a';
+            } else if (cArr2[x][y] == 'b') {
                 lcd.setPixel(x,y); lcd.setPixel(x,y+1);
-                Arr2[x][y] = Arr1[x][y];                
-            } else if (Arr3[x][y] == 'c') {
-                Arr3[x-1][y-1] = 'l';
-                Arr3[x+1][y-1] = 'r';
-                Arr2[x][y] = Arr1[x][y];
+                Arr[x][y] = Arr2[x][y]; 
+                cArr[x][y] = 'b';             
+            } else if (cArr2[x][y] == 'c') {
+                cArr[x-1][y-1] = 'l'; // L and R (left and right) side of the spawn C for bigger hit box.
+                cArr[x+1][y-1] = 'r';
+                cArr[x][y] = 'c';
+                Arr[x][y] = Arr2[x][y];
                 lcd.setPixel(x,y); lcd.setPixel(x,y+1);
                 lcd.setPixel(x+1,y); lcd.setPixel(x-1,y);
             }else {
-                Arr2[x][y] = 0;
+                Arr[x][y] = 0;
+                cArr[x][y] = '\0';
             }
         }
     }
 }
-void Spawn::deleteChar(int x, int y, int Arr1[][Rows], char Arr3[][Rows]) {
-    if (Arr1[x][y] == 0) {
-        Arr3[x][y] = '\0';
+void Spawn::deleteChar(int x, int y, int Arr2[][Rows], char cArr2[][Rows]) { // to clean up the array killing the spawn.
+    if (Arr2[x][y] <= 0) { 
+        cArr2[x][y] = '\0';
     }   
 }