// // Simple way to generate a map. I learned that this method is called the Hill ALgorithm.' // You basically drop some sand on the map and enter a loop. Then pick random points // and if on that spot is sand than drop sand on that spot and around it. This will // grow that into a hill. // // I drop the sand in a pattern so the hills grow with that shape. // // // #include "raylib.h" #include static int map[300][300]; static int mapWidth = 100; static int mapHeight = 100; static float tileWidth; static float tileHeight; static const int screenWidth = 640; static const int screenHeight = 480; static void makemap(); static void drawmap(); int main(void) { // Initialization //-------------------------------------------------------------------------------------- InitWindow(screenWidth, screenHeight, "raylib example."); // We want to have the tile width and height fill the entire screen. tileWidth = ceil((float)screenWidth / (float)mapWidth); tileHeight = ceil((float)screenHeight / (float)mapHeight); // Here we generate the map using the hill algorithm makemap(); SetTargetFPS(60); // Set our game to run at 60 frames-per-second //-------------------------------------------------------------------------------------- // Main game loop while (!WindowShouldClose()) // Detect window close button or ESC key { // Update //---------------------------------------------------------------------------------- if(IsKeyReleased(KEY_SPACE)){ makemap(); } //---------------------------------------------------------------------------------- // Draw //---------------------------------------------------------------------------------- BeginDrawing(); ClearBackground(RAYWHITE); drawmap(); DrawRectangle(0,0,screenWidth,24,DARKGRAY); DrawText("Press Space to Generate new map",2,2,20,WHITE); EndDrawing(); //---------------------------------------------------------------------------------- } // De-Initialization //-------------------------------------------------------------------------------------- CloseWindow(); // Close window and OpenGL context //-------------------------------------------------------------------------------------- return 0; } static void makemap(){ for(int y=0;y0&&nx0 && ny0){ for(int y=-1;y<2;y++){ for(int x=-1;x<2;x++){ map[nx+x][ny+y]++; if(map[nx+x][ny+y]>100)map[nx+x][ny+y]=100; } } } } }; static void drawmap(){ for(int y=0;y0){ if(map[x][y]>0){//Draw the beach DrawRectangle(x*tileWidth,y*tileHeight,tileWidth,tileHeight,(Color){250,220,0,255}); } if(map[x][y]>3){//If the height is larger than 3 than draw trees DrawRectangle(x*tileWidth,y*tileHeight,tileWidth,tileHeight,(Color){0,210,0,255}); } if(map[x][y]>15){ // here we draw some more trees DrawRectangle(x*tileWidth,y*tileHeight,tileWidth,tileHeight,(Color){0,170,0,255}); } if(map[x][y]>20){ // draw mountains or rocks DrawRectangle(x*tileWidth,y*tileHeight,tileWidth,tileHeight,(Color){110,110,110,255}); } } } } };