Spontan hätte ich da ein Aspekt meiner Canvas Tileset Engine genommen~
Rote O's :
Code:
int WIDTH = 5;
int rechts = P+1;
int links = P-1;
int unten = P+WIDTH;
int oben = P-WIDTH;
So hättest du schonmal die 4 Positionen der Roten O's.. das könntest du nun ähnlich mit dem Rest machen.
Du müsstets da nur Checks einbauen die kontrollieren ob du "drüber" bist (also über width und height der Tabelle / Box) damit
du nicht außerhalb des ganzen kommst.
Zumindestens würde ichs so machen & habs bei meiner Tile Engine (Spielfigur bewegen, Kollisionsdetection & Events auslösen) ähnlich gelöst gehabt^^
Wäre das ganze z.b in einem Canvas / 3D Raum wo du ne Scanfunktion (Radius+Gradanzahl=Punkt um die Spielfigur die gescannt wird) besitzt, könntest du einfach mit sin&cos entsprechend das ganze lösen.. aber da dies nich der Fall ist, ist das wohl die einfachste Lösung.