#include <map.h> #include <cmath> #include <cstdlib> #include <algorithm> // g++ -shared anselme.cpp -o anselme.dll -I../src extern "C" void generate(Map *mapPtr) { Map &map = *mapPtr; int w = map.getWidth(); int h = map.getHeight(); int n = map.getNbTeams(); int i, j, k; for(i=0; i<n; i++) map.team(i) = Coord((w/(n*2))*(1+i*2), h/2); int r = h; if(n != 0) r = (w/n < h ? w/n : h)/2; //génération de la carte for (i=0;i<w;i++){ for(j=0;j<h;j++){ int d = std::max(w, h); if(n == 0) d = h; for(k=0; k<n; k++){ d = std::min(d, map.team(k).dist(i, j)); if(!d) break; } if(d == 0){ map[i][j].type = SPAWN; map[i][j].data.nbRes = k; }else{ int l = (d-20)+(rand()%40); if(l > r+15) // mountain map[i][j].type = rand()%8 ? ROCK : IRON_ORE; else if(l < r-15) // plains map[i][j].type = rand()%15 ? GRASS : BERRIES; else // forest { l = rand()%10; map[i][j].type = l > 5 ? TREE : l ? GRASS : BERRIES; } } } } }