Update research.c
This commit is contained in:
+41
-3
@@ -7,14 +7,16 @@
|
||||
** thus probably not very efficient **
|
||||
****************************************/
|
||||
#include <stdio.h>
|
||||
#include <stdbool.h>
|
||||
extern int grid [2][18][8];
|
||||
|
||||
#define DEBUG 0
|
||||
//////////////////// Detect clusters //////////////////////
|
||||
|
||||
int research (void) {
|
||||
bool research (void) {
|
||||
int z;
|
||||
int counter;
|
||||
bool matched = false;
|
||||
// horizontal research
|
||||
for (int k = 0; k < 18; k++) {
|
||||
for (int i = 0; i < 6; i++) {
|
||||
@@ -28,6 +30,7 @@ int research (void) {
|
||||
grid[1][k][i] = 1;
|
||||
grid[1][k][i + 1] = 1;
|
||||
grid[1][k][i + 2] = 1;
|
||||
matched = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -45,6 +48,7 @@ int research (void) {
|
||||
grid[1][i][k] = 1;
|
||||
grid[1][i + 1][k] = 1;
|
||||
grid[1][i + 2][k] = 1;
|
||||
matched = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -62,10 +66,10 @@ int research (void) {
|
||||
grid[1][i + k][i] = 1;
|
||||
grid[1][i + k + 1][i + 1] = 1;
|
||||
grid[1][i + k + 2][i + 2] = 1;
|
||||
matched = true;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
// bottom left corner
|
||||
z = 5;
|
||||
@@ -81,6 +85,7 @@ int research (void) {
|
||||
grid[1][i + k][i] = 1;
|
||||
grid[1][i + k + 1][i + 1] = 1;
|
||||
grid[1][i + k + 2][i + 2] = 1;
|
||||
matched = true;
|
||||
}
|
||||
}
|
||||
z = z - 1;
|
||||
@@ -100,6 +105,7 @@ int research (void) {
|
||||
grid[1][i][i + k] = 1;
|
||||
grid[1][i + 1][i + k + 1] = 1;
|
||||
grid[1][i + 2][i + k + 2] = 1;
|
||||
matched = true;
|
||||
}
|
||||
}
|
||||
z = z - 1;
|
||||
@@ -118,6 +124,7 @@ int research (void) {
|
||||
grid[1][k - i][i] = 1;
|
||||
grid[1][k - i - 1][i + 1] = 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 - 1][i + 1] = 1;
|
||||
grid[1][k - i - 2][i + 2] = 1;
|
||||
matched = true;
|
||||
}
|
||||
}
|
||||
z = z - 1;
|
||||
@@ -155,6 +163,7 @@ int research (void) {
|
||||
grid[1][17 - i][1 + i + k] = 1;
|
||||
grid[1][16 - i][2 + i + k] = 1;
|
||||
grid[1][15 - i][3 + i + k] = 1;
|
||||
matched = true;
|
||||
}
|
||||
}
|
||||
z = z - 1;
|
||||
@@ -168,7 +177,7 @@ int research (void) {
|
||||
}
|
||||
}
|
||||
#endif
|
||||
return 0;
|
||||
return matched;
|
||||
}
|
||||
|
||||
///////////////////// Eliminate clusters ////////////////////////
|
||||
@@ -182,3 +191,32 @@ int eliminate_c () {
|
||||
}
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user