Allora ragazzi io ho risolto (in parte) così:

codice:
int foo(int x1,int y1, int x2, int y2, int l)
{
    int ulx, lrx;
    int uly, lry;
    int flag=0;


    // bisogna prenderle in modulo poichè l'universo è toroidale
    ulx=(x1-2+l) % l;
    lrx=(x1+2) % l;
    uly=(y1-2+l) % l;
    lry=(y1+2) % l;
    
    if ( (ulx <= x2 && x2 <= lrx) &&
         (uly <= y2 && y2 <= lry))
    flag=1;




    return flag;
}
Funziona , tranne in un solo caso, cioè se tipo mi trovo

0,0,0,0,0,0,0,0
0,0,0,0,0,0,0,0
0,0,0,0,0,0,0,0
0,2,0,0,0,0,0,1
0,0,0,0,0,0,0,0
0,0,0,0,0,0,0,0
0,0,0,0,0,0,0,0
0,0,0,0,0,0,0,0

Se il centro è dove stà il 2(x1,y1) e 1(x2,y2) invece indica la coordinata del punto che invade l'area, in questo caso non va bene perchè calcolando ulx , questo è uguale a 7 e fa:

if (7 <= 7 && 7 <= 3) && ( 1<=3 && 3 <= 5) , dovrebbe andare bene ma nella prima condizione fa 7<= 3 e sballa.