Stage 2 プログラムの土台を作る
2-2 定数を設定する
etLogger の直後にある ADDRESS 系は、今はコピペだけして無視してください。
# record files
MAINRECADDRESS = 'mainrecord.txt'
SUBRECADDRESS = 'subrecord.txt'
Stage 8 以降で扱います。気になるって?説明にはね、
順番ってもんがあるんですよ、旦那。
下に SIZE ってのがありますよね。
# board size
SIZE = 8
これは盤面の大きさを表しています。チェスの盤面は 8 × 8 マスなので「SIZE × SIZE のボードを使っていますよ」という意味。
別に 8 って書けばいいじゃねえか
コードが複雑になってきて「この 8 って何の 8 だっけ?」とならないように、あえて名前を付けてあげているんです。
# for if switches
OVERSIZE = SIZE * SIZE
OVERSIZE は Stage 5 以降で出てきますが、SIZE から圧倒的にはみ出る数を使うことで、意図的にバグ... じゃねえや「場合分け」をしやすくしています。
バグ作んのか。面白そうじゃねえか
まあ、お楽しみに。
# for index
FILE = 0
RANK = 1
a, b, c, d, e, f, g, h = 1, 2, 3, 4, 5, 6, 7, 8
FILE と RANK は board など座標を使ってあらわすもののインデックスに使います。file が縦長、rank が横長でしたね。
今回は board に限らず、いろんなところで盤面の座標を扱う機会があります。そのインデックスにやはり名前を付けてあげることで、コードがわかりやすく、そして読みやすくなります。a から h は棋譜の書き方にのっとった file の番号です。
んなもんあったか?
と感じた方は 1-1 へ。
下にはプレーヤーと駒の番号が続きます。board の値が PLAYER * PIECE ですから、これを踏まえた設定をしていきましょう。
WHITE = 1
BLACK = -1
EMPTY = 0
P = PAWN = 1
R = ROOK = 2
N = KNIGHT = 3
B = BISHOP = 4
Q = QUEEN = 5
K = KING = 6
WHITE と BLACK は 1 と -1 がいいんじゃないですか。-1 をかけるだけでプレーヤーを交代できるのが魅力。また board の値を絶対値 abs つまり PIECE で割れば、プレーヤーに応じて WHITE/BLACK が出てきます。
駒はぶっちゃけ数字がバラバラであればいいのですが、唯一 EMPTY 「駒なし」だけは 0 にしておく必要があります。何も置いてないマスは白黒どちら側のものでもありませんから、WHITE とも BLACK ともつかない数がいいです。
駒がないっていうのに文字を当てるのか
駒がある場合と一緒にして使いやすいですからね。board の絶対値 abs をとれば駒の番号になるという点でも、使い勝手がとてもいい。