 |
|
 |
|
中高生のための 今から始めるプログラミング
02. 盤面の描画 |
最終更新日:2004/02/10
|
|
|
1 画面の初期化
|
|
盤面を描画する前に、まずはそのキャンバスとなる画面を初期化する必要があります。そのためには、キャンバスのサイズを指定しなければなりませんが、ここで描画するのは盤面のみなので、盤面のサイズがキャンバスのサイズとなります。盤面のサイズは、格子の幅を 40 とすれば、オセロは 8×8 マスなのでサイズは (40*8+1)×(40*8+1)、つまり 321×321 となることがわかりますね。
では、これをもとに初期化しましょう。1700行目から、キャンバスの大きさを指定する命令を入れます。
|
|
|
!---------------- ▽初期化 ----------------
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 321,321
1720 set window 0,320,0,320
1999 end sub
!---------------- △初期化 ----------------
|
|
|
|
|
2 マジックナンバーの除去
|
|
これでキャンバスは初期化されたわけですが、1710行目の 321 などは、あとで見ると一体何の値だったのか忘れやすいものです。このような、後で何の値かわかりにくいような数をマジックナンバーと呼ぶことがあります。マジックナンバーはなるべくプログラムにはないほうがいいので、まとまった場所で定義しましょう。
|
|
|
!**************** サブルーチン ****************
1000 module main !モジュール定義
1010 public sub format
1100 share numeric w,pieces(0 to 7,0 to 7)
1200 !定数を定義
1210 let w=40 !格子の幅
!---------------- ▽初期化 ----------------
1500 external sub format
......
1700 !画面の初期化
1710 set bitmap size w*8+1,w*8+1
1720 set window 0,w*8,0,w*8
1999 end sub
!---------------- △初期化 ----------------
|
|
|
だいぶ見やすくなりましたね。
|
|
|
ここまでのソースをダウンロード
|
|
|
|
|
 |
|
 |
|