#include "main.h" // functions int distance_manhattan(int x1,int y1, int x2, int y2); int absolute(int val); int min(int a, int b) { return a < b ? a : b; } int max(int a, int b) { return a > b ? a : b; } void create_map(int w, int h){ int i,j, k; int r = (w/NB_TEAMS < h ? w/NB_TEAMS : h)/2; for(i=0; i<NB_TEAMS; i++){ teams[i].spawn.x = (w/(NB_TEAMS*2))*(1+i*2); teams[i].spawn.y = h/2; } //génération de la carte for (i=0;i<w;i++){ for(j=0;j<h;j++){ map[i][j].data = NULL; if (i == 0 || j == 0 || i == w-1 || j == h-1){ map[i][j].type = BEDROCK; }else{ int d = max(w, h); for(k=0; k<NB_TEAMS; k++){ d = min(d, distance_manhattan(teams[k].spawn.x, teams[k].spawn.y, i, j)); if(!d) break; } if(d == 0){ map[i][j].type = SPAWN; map[i][j].data = malloc(sizeof(int)); *((int*)(map[i][j].data)) = k; }else{ int l = (d-20)+(rand()%40); if(l > r+15){ map[i][j].type = rand()%8 ? ROCK : IRON_ORE; }else if(l < r-15){ map[i][j].type = rand()%15 ? GRASS : BERRIES; }else{ l = rand()%10; map[i][j].type = l > 5 ? TREE : l ? GRASS : BERRIES; } } } } } } int distance_manhattan(int x1,int y1, int x2, int y2){ return absolute(x1-x2) + absolute(y1-y2); } int absolute(int val){ return val > 0 ? val : -val; }