Alright, this is a TERRIBLE example, because I am super tired, but I'll post it anyway lol
BOX 0, 0, 21, 11, RGB(255, 0, 255), RGB(255, 0, 255), RGB(255, 0, 255), RGB(255, 0, 255)
INK RGB(255, 255, 255), 0
LINE 1, 6, 11, 1
LINE 1, 6, 11, 10
LINE 11, 1, 20, 6
LINE 11, 10, 20, 6
SET IMAGE COLORKEY 255, 0, 255
GET IMAGE 1, 0, 0, 20, 10
SPRITE 1, 0, 0, 1
HIDE SPRITE 1
HIDE MOUSE
TickTock = 1
DO
Offset = 0
FOR Y = 1 to 20
FOR X = 1 to 20
PASTE SPRITE 1, (X*20) + Offset, (Y*5)
NEXT X
IF TickTock = 1
INC Offset, 10
TickTock = 0
ELSE
DEC Offset, 10
TickTock = 1
ENDIF
NEXT Y
tX = (INT(MOUSEX() / 10) * 10) + 10
tY = (INT(MOUSEY() / 10) * 10) + 5
IF LEFT$(RIGHT$(STR$(tX), 2), 1) = "0" OR LEFT$(RIGHT$(STR$(tX), 2), 1) = "2" OR LEFT$(RIGHT$(STR$(tX), 2), 1) = "4" OR LEFT$(RIGHT$(STR$(tX), 2), 1) = "6" OR LEFT$(RIGHT$(STR$(tX), 2), 1) = "8"
EvenPush = 0
ELSE
EvenPush = 5
ENDIF
CIRCLE tX, tY + EvenPush, 10
TEXT 10, 10, STR$(tX)
TEXT 10, 30, STR$(tY)
LOOP
Basically, it's the same as a normal grid-based system, only every second "tile" is vertically offset by half the tile image height.