JianWei Lee
/
project_game
Meteor defense project
Diff: Spawn/Spawn.cpp
- 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'; } }