vramので取得とpeek,pokeは問題なく
bgrと上下逆さまなのは調べて知識としてはわかったのですが
位置関係がよくわかりません
マップだと
普段xウィンドウサイズ*yでyの段を求めxでキャラの位置とか求めてたのですが
-+一緒じゃないので別々に考えるしかないでしょうか
これ以上砕けないとは思うのですが普段と違うのでもっといい式ないかなと気になりました
p=((ginfo_winy-1-y)*ginfo_winx+x)*3
もう一つの質問です
画面全体を透過色で塗りつぶしていましたが描いた直後に位置を取っておいてそれはよかったんですが
if s=2としている時だとマウスを動かしながらクリックした場合に端っこが残る場合があります
#uselib "user32.dll"
#func GetWindowLong "GetWindowLongA" int,int
#func SetWindowLong "SetWindowLongA" int,int,int
#func SetLayeredWindowAttributes "SetLayeredWindowAttributes" int,sptr,int,int
#define LWA_COLORKEY 0x00000001
#define LWA_ALPHA 0x00000002
dispx_size=ginfo_dispx
dispy_size=ginfo_dispy
bgscr 0,dispx_size,dispy_size,,0,0
hwnd0 = hwnd
color 127,127,127
uindou_wan_x_ichi=100
uindou_wan_y_ichi=100
uindou_wan_x_size=100
uindou_wan_y_size=50
GetWindowLong hwnd0,-20
SetWindowLong hwnd0,-20,stat|$80000
SetLayeredWindowAttributes hwnd0,0x00FFFFFF,255,LWA_ALPHA|LWA_COLORKEY
*main
redraw 0
mausu_x=ginfo_mx
mausu_y=ginfo_my
stick k,256
color 255,255,255
boxf a,b,c,d;このままでも使えるのですがif s=2 でやると移動しながらクリックした時にちょっとだけ残ってしまうときがあるのでどう改善したらいいか
;boxf 0,0,ginfo_dispx,ginfo_dispy ;描いたウィンドウを透過色に消すためなので先に描く
color 127,127,127
boxf uindou_wan_x_ichi-sagaku_x,uindou_wan_y_ichi-sagaku_y,uindou_wan_x_ichi+uindou_wan_x_size-sagaku_x,uindou_wan_y_ichi+uindou_wan_y_size-sagaku_y
;-----描いた場所の位置を取得
a=uindou_wan_x_ichi-sagaku_x
b=uindou_wan_y_ichi-sagaku_y
c=uindou_wan_x_ichi+uindou_wan_x_size-sagaku_x
d=uindou_wan_y_ichi+uindou_wan_y_size-sagaku_y
;----------------------------------------------------------
color 200,200,200 : boxf 200,200,400,300
pos 200,200 : font "MS ゴシック",font_size,16 : color 0,0,0 : mes "sagaku_x"+sagaku_x+""
pos 200,220 : font "MS ゴシック",font_size,16 : color 0,0,0 : mes "sagaku_y"+sagaku_y+""
pos 200,240 : font "MS ゴシック",font_size,16 : color 0,0,0 : mes "uindou_wan_x_ichi"+uindou_wan_x_ichi+""
if ((uindou_wan_x_ichi<mausu_x&uindou_wan_x_ichi+uindou_wan_x_size>mausu_x)&(uindou_wan_y_ichi<mausu_y&uindou_wan_y_ichi+uindou_wan_y_size>mausu_y)) :if k&256 : {
if s=0 : s=1
}
if s=1 : genzai_mausu_x=mausu_x : genzai_mausu_y=mausu_y : s=2
if s=2 : {
sagaku_x=genzai_mausu_x-mausu_x
sagaku_y=genzai_mausu_y-mausu_y
}
if k!256 : {
uindou_wan_x_ichi=uindou_wan_x_ichi-sagaku_x
uindou_wan_y_ichi=uindou_wan_y_ichi-sagaku_y
: sagaku_x=0 : sagaku_y=0 : s=0
}
wait 1
redraw 1
goto *main