Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| c5057a1a67 | |||
| e40ec95349 | |||
|
f11a7722e1
|
|||
|
cb11ee320b
|
|||
|
beb9d4178d
|
|||
| 3fcd0c6fb6 |
@@ -22,3 +22,5 @@ bin/Debug/sandbox
|
||||
| ------ | --- |
|
||||
| Spawn element | Left click |
|
||||
| Change brush | Right click |
|
||||
|
||||

|
||||
|
||||
BIN
sandbox.png
Normal file
BIN
sandbox.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 34 KiB |
44
src/cells.c
44
src/cells.c
@@ -40,6 +40,7 @@ void drawGrid(int grid[CELL_AMOUNT][CELL_AMOUNT])
|
||||
{
|
||||
switch(grid[i][j])
|
||||
{
|
||||
/* Cell drawing colors */
|
||||
case VOID:
|
||||
DrawRectangle(CELL_SIZE_PIXELS*j, CELL_SIZE_PIXELS*i, CELL_SIZE_PIXELS, CELL_SIZE_PIXELS, BLACK);
|
||||
break;
|
||||
@@ -52,6 +53,12 @@ void drawGrid(int grid[CELL_AMOUNT][CELL_AMOUNT])
|
||||
case WATER:
|
||||
DrawRectangle(CELL_SIZE_PIXELS*j, CELL_SIZE_PIXELS*i, CELL_SIZE_PIXELS, CELL_SIZE_PIXELS, BLUE);
|
||||
break;
|
||||
case VIRUS:
|
||||
DrawRectangle(CELL_SIZE_PIXELS*j, CELL_SIZE_PIXELS*i, CELL_SIZE_PIXELS, CELL_SIZE_PIXELS, VIOLET);
|
||||
break;
|
||||
case PLANT:
|
||||
DrawRectangle(CELL_SIZE_PIXELS*j, CELL_SIZE_PIXELS*i, CELL_SIZE_PIXELS, CELL_SIZE_PIXELS, DARKGREEN);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -90,6 +97,7 @@ void updateGrid(int grid[CELL_AMOUNT][CELL_AMOUNT]) {
|
||||
for (int i = CELL_AMOUNT - 1; i >= 0; i--) {
|
||||
for (int j = 0; j < CELL_AMOUNT; j++) {
|
||||
switch (grid[i][j]) {
|
||||
/* Cell type behavior */
|
||||
case VOID:
|
||||
break;
|
||||
case SAND:
|
||||
@@ -125,6 +133,42 @@ void updateGrid(int grid[CELL_AMOUNT][CELL_AMOUNT]) {
|
||||
}
|
||||
}
|
||||
break;
|
||||
case VIRUS: /* It should not be too powerful. */
|
||||
if (i + 1 < CELL_AMOUNT && grid[i+1][j] != VOID && grid[i+1][j] != VIRUS) {
|
||||
int propagate = rand() % 10 == 0 ? 1 : 0;
|
||||
if (propagate) grid[i+1][j] = VIRUS;
|
||||
}
|
||||
else if (i - 1 >= 0 && grid[i-1][j] != VOID && grid[i-1][j] != VIRUS) {
|
||||
int propagate = rand() % 10 == 0 ? 1 : 0;
|
||||
if (propagate) grid[i-1][j] = VIRUS;
|
||||
}
|
||||
else if (j+1 < CELL_AMOUNT && grid[i][j+1] != VOID && grid[i][j+1] != VIRUS) {
|
||||
int propagate = rand() % 10 == 0 ? 1 : 0;
|
||||
if (propagate) grid[i][j+1] = VIRUS;
|
||||
}
|
||||
else if (j-1 >= 0 && grid[i][j-1] != VOID && grid[i][j-1] != VIRUS) {
|
||||
int propagate = rand() % 10 == 0 ? 1 : 0;
|
||||
if (propagate) grid[i][j-1] = VIRUS;
|
||||
}
|
||||
break;
|
||||
case PLANT:
|
||||
if (i+1 < CELL_AMOUNT && grid[i+1][j] == WATER) {
|
||||
int grow = rand() % 600 == 0 ? 1 : 0;
|
||||
if (grow) grid[i+1][j] = PLANT;
|
||||
}
|
||||
if (i-1 >= 0 && grid[i-1][j] == WATER) {
|
||||
int grow = rand() % 20 == 0 ? 1 : 0;
|
||||
if (grow) grid[i-1][j] = PLANT;
|
||||
}
|
||||
if (j+1 < CELL_AMOUNT && grid[i][j+1] == WATER) {
|
||||
int grow = rand() % 600 == 0 ? 1 : 0;
|
||||
if (grow) grid[i][j+1] = PLANT;
|
||||
}
|
||||
if (j-1 >= 0 && grid[i][j-1] == WATER) {
|
||||
int grow = rand() % 600 == 0 ? 1 : 0;
|
||||
if (grow) grid[i][j-1] = PLANT;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -53,6 +53,8 @@ typedef enum CellType
|
||||
SAND,
|
||||
STONE,
|
||||
WATER,
|
||||
VIRUS,
|
||||
PLANT,
|
||||
CELL_TYPE_MAX
|
||||
} CellType;
|
||||
|
||||
|
||||
@@ -56,6 +56,8 @@ char* enumToString(CellType brush)
|
||||
case SAND: return "Sand";
|
||||
case STONE: return "Stone";
|
||||
case WATER: return "Water";
|
||||
case VIRUS: return "Virus";
|
||||
case PLANT: return "Plant";
|
||||
default: return "Unknown";
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user