何を聞きたいのかはっきりしない・・・
マップ表示とキャラ表示で違うところは無いと思うんだけど・・・
MAX_X=10 :MAX_Y=10 :MAPMAX_X=MAX_X :MAPMAX_Y=MAX_X :BSIZE=32 :BHSIZ=BSIZE/2 :BQSIZ=BSIZE/4
SPOS_X=640/2-BHSIZ :SPOS_Y=480/2-BQSIZ*10+50 :max_x_=MAX_X-1 :max_y_=MAX_Y-1
screen 1,32*5,32*2,8,0,0:cls 4:gsel 1,2:randomize
repeat 5: r=100+rnd(100):g=r/2+50+rnd(50):b=50+rnd(80):x=cnt*32
repeat 2:color r*(cnt=0)+20,g,b:p2=cnt*2+x,16+x,32-cnt+x,16+x:p3=24,16,24,32-cnt:gsquare -1,p2,p3:loop:loop
color 50,50,50:circle 8,20+32,32-8,28+32,1 :color 50,250,250 :p2=16,32-10,16,10:p3=8+32,14+32,32-8+32,14+32:gsquare -1,p2,p3
color 250,250,50:circle 0+11,4+32,32-11,4+8+32,1
buffer 2,640,480 :cls 2 :color 50,200,250:dim map,MAPMAX_X,MAPMAX_Y
repeat MAPMAX_X*MAPMAX_Y :map(cnt\MAPMAX_X,cnt/MAPMAX_Y)=rnd(5) :x=(cnt\MAPMAX_X)*BHSIZ:y=(cnt/MAPMAX_Y)*BHSIZ
line x+BHSIZ,y+BHSIZ,x,y+BHSIZ:line x+BHSIZ,y:loop
color 0,80,80:boxf 0,SPOS_Y,:gmode 2,BSIZE,BSIZE,255
//裏画面にマップを作成
repeat MAX_Y
ycnt=cnt
repeat MAX_X
pos (cnt-ycnt)*BHSIZ+SPOS_X,(cnt+ycnt)*BQSIZ+SPOS_Y
gcopy 1,map(cnt,ycnt)*BSIZE,0
loop
loop
gsel 0,1:width ,,150,100
repeat
redraw 0:gmode 0:pos 0,0 :gcopy 2,0,0,640,480
//マウス座標からmap配列の要素に変換(map要素:me_x、me_y)
map_mx=mousex-SPOS_X-BHSIZ ;マウス座標から基準座標を引く(SPOS_X,SPOS_Y がmap(0,0)の位置)
map_my=mousey-SPOS_Y-BHSIZ ;-BHSIZはマウスカーソルとマップとの見た目の位置を合わせるため
vmpos_x=(map_my+map_mx/2) ;仮想マップ座標_X=Y +(X / 2)-(ブロックサイズ/2)
vmpos_y=(map_my-map_mx/2) ;仮想マップ座標_Y=Y -(X / 2)
me_x=vmpos_x/BHSIZ ;map要素_X=仮想マップ座標_X /(ブロックサイズ/2)
me_y=vmpos_y/BHSIZ ;map要素_Y=仮想マップ座標_Y /(ブロックサイズ/2)
mouse_on=1 ;マップ範囲外かのフラグ(mouse_on:0=範囲外 1=範囲内)
if me_x<0 {me_x=0 :mouse_on=0}else{if me_x>max_x_ {me_x=max_x_ :mouse_on=0}}
if me_y<0 {me_y=0 :mouse_on=0}else{if me_y>max_y_ {me_y=max_y_ :mouse_on=0}}
//map要素からマップ上の座標に変換(マップカ−ソル座標:mc_x、mc_y)
mc_x=(me_x-me_y)*BHSIZ+SPOS_X ;マップカ−ソル座標_X=(map要素_X - map要素_Y)*(ブロックサイズ/2)+ 基準座標X
mc_y=(me_y+me_x)*BQSIZ+SPOS_Y ;マップカ−ソル座標_Y=(map要素_Y + map要素_X)*(ブロックサイズ/4)+ 基準座標Y
gmode 5,,,128.0+sin(0.1*cnt)*128 ;マウスカーソル位置のマップを光らせる(マップカ−ソル)
pos mc_x,mc_y :gcopy 1,map(me_x,me_y)*BSIZE,0,BSIZE,BSIZE ;マップカ−ソル表示
//マウスが表示マップ内でクリックされたら map要素をキャラmap要素に(キャラmap要素:cex、cey)
if ((ky&256)>0) and mouse_on {cex=me_x :cey=me_y}
//キャラmap要素からマップ座標に変換(キャラ座標:sc_cx、sc_cy)
sc_cx=(cex-cey)*BHSIZ+SPOS_X :sc_cy=(cey+cex)*BQSIZ+SPOS_Y
pos sc_cx,sc_cy :gmode 2 :gcopy 1,0,32,32,32 ;キャラ表示
repeat 2:color 255*cnt,255*cnt,255*cnt:pos mousex-10-cnt,mousey-16-cnt:mes ""+(me_x)+","+str(me_y):loop
pos me_x*BHSIZ,me_y*BHSIZ :color 200,200,200 :mes "■":pos cex*BHSIZ,cey*BHSIZ :color 250,60,60 :mes "●"
color 0,255,0 :boxf vmpos_x-2,vmpos_y-2,vmpos_x+2,vmpos_y+2
redraw 1:await 15 :stick ky,$fff:if ky=128{end}:loop