#include #include #include "simulation.h" void printGrid(simulation::SimulationGrid* grid) { std::cout << std::string(grid->x_max+2, '_') << std::endl; for (unsigned char y = grid->y_max; y > 0; y--) { std::cout << "|"; for (unsigned char x = 0; x < grid->x_max; x++) { unsigned int offset = getCellOffset(x, y-1, 0, grid); unsigned int material = grid->out[offset]; switch (material) { case simulation::VACUUM: std::cout << " "; break; case simulation::WATER: std::cout << "~"; break; default: std::cout << "?"; } } std::cout << "|" << std::endl; } std::cout << std::string(grid->x_max+2, '_') << std::endl; } void initGrid(simulation::SimulationGrid* grid) { unsigned int offset = simulation::getCellOffset(0,2,0, grid); grid->in[offset] = simulation::WATER; } int main() { unsigned char xMax = 50; unsigned char yMax = 20; unsigned char zMax = 1; size_t bufferSizeInBytes = sizeof(unsigned int) * xMax * yMax * zMax; auto inCells = static_cast(std::malloc(bufferSizeInBytes)); std::memset(inCells, 0, bufferSizeInBytes); auto outCells = static_cast(std::malloc(bufferSizeInBytes)); simulation::SimulationGrid grid = { inCells, outCells, xMax, yMax, zMax }; initGrid(&grid); for (int n=0; n< 2; n++) { simulation::step(0, &grid); printGrid(&grid); prepareForNextStep(&grid); } std::free(inCells); std::free(outCells); return 0; }