.
中高生のための
今から始めるプログラミング
02. 盤面の描画
最終更新日:2004/02/10

<<BACK ↑HOME NEXT>>

 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
!---------------- △初期化 ----------------
だいぶ見やすくなりましたね。
 
ここまでのソースをダウンロード
 

<<BACK ↑HOME NEXT>>

Copyright (C) 2003-2004 Shohei Ohsawa, Naoya Okada & Fumiya Miyakawa. All rights reserved.