Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| c5057a1a67 | |||
| e40ec95349 | |||
|
f11a7722e1
|
|||
|
cb11ee320b
|
|||
|
beb9d4178d
|
|||
| 3fcd0c6fb6 |
@@ -21,4 +21,6 @@ bin/Debug/sandbox
|
|||||||
| Action | Key |
|
| Action | Key |
|
||||||
| ------ | --- |
|
| ------ | --- |
|
||||||
| Spawn element | Left click |
|
| Spawn element | Left click |
|
||||||
| Change brush | Right 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])
|
switch(grid[i][j])
|
||||||
{
|
{
|
||||||
|
/* Cell drawing colors */
|
||||||
case VOID:
|
case VOID:
|
||||||
DrawRectangle(CELL_SIZE_PIXELS*j, CELL_SIZE_PIXELS*i, CELL_SIZE_PIXELS, CELL_SIZE_PIXELS, BLACK);
|
DrawRectangle(CELL_SIZE_PIXELS*j, CELL_SIZE_PIXELS*i, CELL_SIZE_PIXELS, CELL_SIZE_PIXELS, BLACK);
|
||||||
break;
|
break;
|
||||||
@@ -52,6 +53,12 @@ void drawGrid(int grid[CELL_AMOUNT][CELL_AMOUNT])
|
|||||||
case WATER:
|
case WATER:
|
||||||
DrawRectangle(CELL_SIZE_PIXELS*j, CELL_SIZE_PIXELS*i, CELL_SIZE_PIXELS, CELL_SIZE_PIXELS, BLUE);
|
DrawRectangle(CELL_SIZE_PIXELS*j, CELL_SIZE_PIXELS*i, CELL_SIZE_PIXELS, CELL_SIZE_PIXELS, BLUE);
|
||||||
break;
|
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:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -90,6 +97,7 @@ void updateGrid(int grid[CELL_AMOUNT][CELL_AMOUNT]) {
|
|||||||
for (int i = CELL_AMOUNT - 1; i >= 0; i--) {
|
for (int i = CELL_AMOUNT - 1; i >= 0; i--) {
|
||||||
for (int j = 0; j < CELL_AMOUNT; j++) {
|
for (int j = 0; j < CELL_AMOUNT; j++) {
|
||||||
switch (grid[i][j]) {
|
switch (grid[i][j]) {
|
||||||
|
/* Cell type behavior */
|
||||||
case VOID:
|
case VOID:
|
||||||
break;
|
break;
|
||||||
case SAND:
|
case SAND:
|
||||||
@@ -125,6 +133,42 @@ void updateGrid(int grid[CELL_AMOUNT][CELL_AMOUNT]) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
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:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -53,6 +53,8 @@ typedef enum CellType
|
|||||||
SAND,
|
SAND,
|
||||||
STONE,
|
STONE,
|
||||||
WATER,
|
WATER,
|
||||||
|
VIRUS,
|
||||||
|
PLANT,
|
||||||
CELL_TYPE_MAX
|
CELL_TYPE_MAX
|
||||||
} CellType;
|
} CellType;
|
||||||
|
|
||||||
|
|||||||
@@ -56,6 +56,8 @@ char* enumToString(CellType brush)
|
|||||||
case SAND: return "Sand";
|
case SAND: return "Sand";
|
||||||
case STONE: return "Stone";
|
case STONE: return "Stone";
|
||||||
case WATER: return "Water";
|
case WATER: return "Water";
|
||||||
|
case VIRUS: return "Virus";
|
||||||
|
case PLANT: return "Plant";
|
||||||
default: return "Unknown";
|
default: return "Unknown";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user