Compare commits

6 Commits
0.0.1 ... main

Author SHA1 Message Date
c5057a1a67 Update README.md 2025-12-29 10:19:45 +01:00
e40ec95349 Upload files to "/" 2025-12-29 10:18:58 +01:00
f11a7722e1 add plant 2025-01-16 18:25:45 +01:00
cb11ee320b Merge branch 'main' of https://github.com/xamidev/sandbox 2025-01-16 18:09:05 +01:00
beb9d4178d add virus 2025-01-16 18:08:15 +01:00
3fcd0c6fb6 Update README.md 2025-01-15 14:09:41 +01:00
5 changed files with 51 additions and 1 deletions

View File

@@ -22,3 +22,5 @@ bin/Debug/sandbox
| ------ | --- |
| Spawn element | Left click |
| Change brush | Right click |
![Sandbox2](sandbox.png)

BIN
sandbox.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

View File

@@ -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;
}

View File

@@ -53,6 +53,8 @@ typedef enum CellType
SAND,
STONE,
WATER,
VIRUS,
PLANT,
CELL_TYPE_MAX
} CellType;

View File

@@ -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";
}
}