Update research.c

This commit is contained in:
Jason Bou-Samra
2024-09-01 19:15:21 +10:00
committed by GitHub
parent 388760f594
commit cc48631aa2
+44 -6
View File
@@ -7,14 +7,16 @@
** thus probably not very efficient ** ** thus probably not very efficient **
****************************************/ ****************************************/
#include <stdio.h> #include <stdio.h>
#include <stdbool.h>
extern int grid [2][18][8]; extern int grid [2][18][8];
#define DEBUG 0 #define DEBUG 0
//////////////////// Detect clusters ////////////////////// //////////////////// Detect clusters //////////////////////
int research (void) { bool research (void) {
int z; int z;
int counter; int counter;
bool matched = false;
// horizontal research // horizontal research
for (int k = 0; k < 18; k++) { for (int k = 0; k < 18; k++) {
for (int i = 0; i < 6; i++) { for (int i = 0; i < 6; i++) {
@@ -28,6 +30,7 @@ int research (void) {
grid[1][k][i] = 1; grid[1][k][i] = 1;
grid[1][k][i + 1] = 1; grid[1][k][i + 1] = 1;
grid[1][k][i + 2] = 1; grid[1][k][i + 2] = 1;
matched = true;
} }
} }
} }
@@ -45,9 +48,10 @@ int research (void) {
grid[1][i][k] = 1; grid[1][i][k] = 1;
grid[1][i + 1][k] = 1; grid[1][i + 1][k] = 1;
grid[1][i + 2][k] = 1; grid[1][i + 2][k] = 1;
matched = true;
} }
}
} }
}
// diagonal south/east research // diagonal south/east research
for (int k = 0; k < 11; k++) { for (int k = 0; k < 11; k++) {
@@ -62,10 +66,10 @@ int research (void) {
grid[1][i + k][i] = 1; grid[1][i + k][i] = 1;
grid[1][i + k + 1][i + 1] = 1; grid[1][i + k + 1][i + 1] = 1;
grid[1][i + k + 2][i + 2] = 1; grid[1][i + k + 2][i + 2] = 1;
matched = true;
} }
} }
} }
// bottom left corner // bottom left corner
z = 5; z = 5;
@@ -81,6 +85,7 @@ int research (void) {
grid[1][i + k][i] = 1; grid[1][i + k][i] = 1;
grid[1][i + k + 1][i + 1] = 1; grid[1][i + k + 1][i + 1] = 1;
grid[1][i + k + 2][i + 2] = 1; grid[1][i + k + 2][i + 2] = 1;
matched = true;
} }
} }
z = z - 1; z = z - 1;
@@ -100,6 +105,7 @@ int research (void) {
grid[1][i][i + k] = 1; grid[1][i][i + k] = 1;
grid[1][i + 1][i + k + 1] = 1; grid[1][i + 1][i + k + 1] = 1;
grid[1][i + 2][i + k + 2] = 1; grid[1][i + 2][i + k + 2] = 1;
matched = true;
} }
} }
z = z - 1; z = z - 1;
@@ -118,6 +124,7 @@ int research (void) {
grid[1][k - i][i] = 1; grid[1][k - i][i] = 1;
grid[1][k - i - 1][i + 1] = 1; grid[1][k - i - 1][i + 1] = 1;
grid[1][k - i - 2][i + 2] = 1; grid[1][k - i - 2][i + 2] = 1;
matched = true;
} }
} }
@@ -136,6 +143,7 @@ int research (void) {
grid[1][k - i][i] = 1; grid[1][k - i][i] = 1;
grid[1][k - i - 1][i + 1] = 1; grid[1][k - i - 1][i + 1] = 1;
grid[1][k - i - 2][i + 2] = 1; grid[1][k - i - 2][i + 2] = 1;
matched = true;
} }
} }
z = z - 1; z = z - 1;
@@ -155,7 +163,8 @@ int research (void) {
grid[1][17 - i][1 + i + k] = 1; grid[1][17 - i][1 + i + k] = 1;
grid[1][16 - i][2 + i + k] = 1; grid[1][16 - i][2 + i + k] = 1;
grid[1][15 - i][3 + i + k] = 1; grid[1][15 - i][3 + i + k] = 1;
} matched = true;
}
} }
z = z - 1; z = z - 1;
} }
@@ -168,7 +177,7 @@ int research (void) {
} }
} }
#endif #endif
return 0; return matched;
} }
///////////////////// Eliminate clusters //////////////////////// ///////////////////// Eliminate clusters ////////////////////////
@@ -182,3 +191,32 @@ int eliminate_c () {
} }
return 0; return 0;
} }
///////////////////// cascade ////////////////////////
int cascade() {
int floor, ceiling, num_tiles;
for (int j = 0; j < 8; j++) {
num_tiles = floor = ceiling = 0;
for (int i = 17; i > -1; i--) {
if (grid[1][i][j] == 1) {num_tiles++;}
} // find total number of tiles to drop
for (int i = 17; i > -1; i--) {
if (grid[1][i][j] == 1) {floor = i; break;}
} // find floor
ceiling = floor - num_tiles; // find ceiling
for (int i = 0; i < ceiling; i++) {
grid[0][floor - i][j] = grid[0][ceiling - i][j];
} // actual drop routine
}
}
///////////////////// clear matched ////////////////////////
// clear matched 3rd dimension array (this should be easy)
int clear() {
for (int j = 0; j < 7; j++) {
for (int i = 0; i < 18; i++) {
grid[1][i][j] = 0;
}
}
}