さらにわかりやすく、二次元配列にしてみました。
よく考えずに書いたらxとyが逆になっちゃった(^_^;;
xm=10 ;Xマージン
ym=10 ;Yマージン
xsize=16
ysize=16
vn=5
hn=11
sdim char,4,vn,hn
;五十音表示用を兼ねているのでcharにしましたが、messageと考えてください
char="あ","い","う","え","お"
char.0.1="か","き","く","け","こ"
char.0.2="さ","し","す","せ","そ"
char.0.3="た","ち","つ","て","と"
char.0.4="な","に","ぬ","ね","の"
char.0.5="は","ひ","ふ","へ","ほ"
char.0.6="ま","み","む","め","も"
char.0.7="や"," ","ゆ"," ","よ"
char.0.8="ら","り","る","れ","ろ"
char.0.9="わ"," "," "," ","を"
char.0.10="ん","゛","゜"," "," "
y=ym: cy=0
repeat vn
x=xm: cx=0
repeat hn
pos x,y: mes char(cy,cx)
x+=xsize
cx++
loop
y+=ysize
cy++
loop
repeat: wait 1
mx=mousex: my=mousey
stick c,,1
if c==256 {
if mx>=xm { if my>=ym {
msgx=(mx-xm)/xsize
if msgx<hn {
msgy=(my-ym)/ysize
if msgy<vn {
dialog char(msgy,msgx)
}
}
} }
}
loop
っていうか「Picture1_Click」の「1」の部分に変数を使えないと
全然便利じゃないんですけど?
間違えて「sdim char,vn,hn」と書いたのに動いたのはなぜ?
んな、自動拡張あったっけ?(^_^;;
msgx=(mx-xm)/xsize
if msgx>=0 { if msgx<hn {
msgy=(my-ym)/ysize
if msgy>=0 { if msgy<vn {
dialog char(msgy,msgx)
} }
} }
って書いたらマージン部分にも反応する。なぜ?と考えてみたら、
割り算が負の場合は絶対値切り捨てだからですね。ああ、BASICは良かった。