区切りがあるため正確なマスの座標を取得することができません。
どう改造すれば正確にマスの座標を取得できるでしょうか…。
#uselib "user32.dll" #cfunc WindowFromPoint "WindowFromPoint" int, int #const global MASU_SIZE 57 #const global KUGIRI_WEIGHT 2 #const SCREEN_X (MASU_SIZE * 9) + (KUGIRI_WEIGHT * 10) + 1 #const SCREEN_Y (MASU_SIZE * 9) + (KUGIRI_WEIGHT * 10) + 1 #module #const global BOARD_COLOR $E7E3AD #const global BOARD_MOUSEOVER_COLOR $FF4D00 #deffunc color32 int intA color intA >> 16 & $FF,intA >> 8 & $FF,intA & $FF return #define global PrintMasu(%1,%2,%3=BOARD_COLOR) _PrintMasu %1,%2,%3 #deffunc _PrintMasu int intX,int intY,int COL,local x,local y x = intX * MASU_SIZE + (KUGIRI_WEIGHT * intX) + 2 y = intY * MASU_SIZE + (KUGIRI_WEIGHT * intY) + 2 color32 COL boxf x,y,x+MASU_SIZE,y+MASU_SIZE color32 $FFFFFF line x+MASU_SIZE,y,x,y line x,y+MASU_SIZE,x,y return #deffunc PrintBoard redraw 0 color 0,0,0 boxf repeat 9 mx = cnt repeat 9 PrintMasu mx,cnt loop loop redraw 1 return #global screen 0,SCREEN_X,SCREEN_Y PrintBoard ;ボードを描画 gsel 0 hwnd0 = hwnd *main if WindowFromPoint(ginfo(0),ginfo(1)) = hwnd0{ ;メインウィンドウにマウスが乗っているか redraw 0 gsel 0 PrintMasu xx,yy ;前の場所をもとに戻す xx = mousex/MASU_SIZE - ((mousex/MASU_SIZE) >= length(board)) ;色を変えるマスX yy = mousey/MASU_SIZE - ((mousey/MASU_SIZE) >= length2(board)) ;色を変えるマスY PrintMasu xx,yy,BOARD_MOUSEOVER_COLOR ;新しい場所の色を変える redraw 1 } wait 10 goto *main