add virus

This commit is contained in:
2025-01-16 18:08:15 +01:00
parent c4dcb061c7
commit beb9d4178d
3 changed files with 23 additions and 0 deletions

View File

@@ -52,6 +52,9 @@ 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;
default: default:
break; break;
} }
@@ -125,6 +128,24 @@ 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;
default: default:
break; break;
} }

View File

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

View File

@@ -56,6 +56,7 @@ 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";
default: return "Unknown"; default: return "Unknown";
} }
} }