
Ubuntu日本語フォーラム

ログインしていません。
十進BASICのソースなんですが、
10 declare external sub main.format
20 declare external sub main.post
!**************** メインルーチン ****************
110 call format !formatを呼び出し
160 let w=40 !格子の幅
165 let left=0 !初期化
210 do until right=1
215 let left_=left !直前のマウスの左ボタンの状態
220 mouse poll mx,my,left,right !マウス位置を取得
230 if left=1 and left_=0 then
250 let x=int(mx/w)
260 let y=7-int(my/w)
270 print x,y !クリックされたマスの番地を表示
289 end if
299 loop
999 end
!**************** サブルーチン ****************
1000 module main !モジュール定義
1010 public sub format
1020 public sub post
1100 share numeric w,r,pieces(0 to 7,0 to 7)
1200 !定数を定義
1210 let w=40 !格子の幅
1220 let r=13 !駒の半径
!---------------- ▽初期化 ----------------
1500 external sub format
1600 !盤面の配列の初期化
1601 data 0, 0, 0, 0, 0, 0, 0, 0
1602 data 0, 0, 0, 0, 0, 0, 0, 0
1603 data 0, 0, 0, 0, 0, 0, 0, 0
1604 data 0, 0, 0, 1,-1, 0, 0, 0
1605 data 0, 0, 0,-1, 1, 0, 0, 0
1606 data 0, 0, 0, 0, 0, 0, 0, 0
1607 data 0, 0, 0, 0, 0, 0, 0, 0
1608 data 0, 0, 0, 0, 0, 0, 0, 0
1610 mat read pieces(0 to 7,0 to 7)
1700 !画面の初期化
1710 set bitmap size w*8+1,w*8+1
1720 set window 0,w*8,0,w*8
1810 call post !postを呼び出し
1999 end sub
!---------------- △初期化 ----------------
!---------------- ▽盤面を描画 ----------------
2000 external sub post
2100 !背景を描画
2110 set area color 10
2120 plot area: 0,0; 0,w*8; w*8,w*8; w*8,0
2200 !格子の描画
2210 for i=0 to 8
2220 plot lines : 0,w*i;w*8,w*i !横線を描画
2230 plot lines : w*i, 0;w*i,w*8 !縦線を描画
2299 next i
2300 !駒の描画
2310 for j=0 to 7
2311 for i=0 to 7
2320 select case pieces(j,i)
2330 case 1 !白駒の場合
2331 set area color 0 !色を指定:白
2332 draw disk with scale(r)*shift(w*(0.5+i),w*(0.5+(7-j))) !円を描く
2340 case -1 !黒駒の場合
2341 set area color 1 !色を指定:黒
2342 draw disk with scale(r)*shift(w*(0.5+i),w*(0.5+(7-j))) !円を描く
2350 case else
2351 !何もしない
2369 end select
2398 next i
2399 next j
2999 end sub
!---------------- △盤面を描画 ----------------
9999 end module
220 mouse poll mx,my,left,right !マウス位置を取得 でなぜかエラーが出ます。
原因が分かる方よろしくお願いします。
オフライン
返答がどなたからもまだないようで、私も回答ではないのですが、こちらで尋ねられた方が良いと思います。
http://freebbs.around.ne.jp/article/b/basic/index.html
オフライン
!**************** メインルーチン ****************
110 call format !formatを呼び出し
160 let w=40 !格子の幅
165 let left=0 !初期化
210 do until right=1
215 let left_=left !直前のマウスの左ボタンの状態
220 mouse poll mx,my,left,right !マウス位置を取得
230 if left=1 and left_=0 then
250 let x=int(mx/w)
260 let y=7-int(my/w)
270 print x,y !クリックされたマスの番地を表示
289 end if
299 loop
999 end
「 270 call put(x,y) !putを呼び出し 」に変更してもうまくいかないですか?
クリックされたマスの番地を表示させるためにはまず番地を呼び出さなくてはいけないと思います。
「 270 print x,y !クリックされたマスの番地を表示 」 構文形式を一応確認してください。
参考サイト:
http://contest2.thinkquest.jp/tqj2003/60573/ocello/ocello05.htm
http://contest2.thinkquest.jp/tqj2003/60573/ocello/example07.bas
これで駄目ならGmaxさんのサイトで質問したほうが正確だと思います。
最後の編集者: アルテマ (2007-06-23 12:51:19)
オフライン