MItaly, ho provato la mia funzione ma non va, praticamente io ho un ciclo(gameloop) del tipo:
do {
...
}
while (!Terminato)
Ora ad ogni iterazione io ottengo delle coordinate x e y e in base a queste devo un intorno a questo punto intorno che vale "lunghezzaIntorno". Inoltre la matrice è toroidale,quindi quando mi trovo sulla ultima colonna , se ottengo una x > numero righe matrice, allora x vale 0, cioè colonna opposta(la prima), analogamente per la prima e l'ultima riga.
praticamente devo fare in modo che appena vi è una coordinata che occupa l'area con centro (cx,cy), setto un flag a 1 altrimenti resta a 0;
codice:
// se (nx,ny) è un punto che appartiene all'area la funzione deve restituire 1
int foo(int cx, int cy, int lunghezzaArea, int nx, int ny)
{
int ulx, lrx;
int uly, lry;
int flag=0;
// bisogna prenderle in modulo poichè l'universo è toroidale
ulx=cx-Nemico->AreaIns;
lrx=cx+Nemico->AreaIns;
uly=cy-Nemico->AreaIns;
lry=cy+Nemico->AreaIns;
for(int x=ulx; x<lrx; ++x)
for(int y=uly; y<lry; ++y)
if(ulx <= nx <= lrx || uly <= ny <= lry)
flag=1;
return flag;
}