Stage 2 プログラムの土台を作る
2-3 インデックスが適正か判定する機能を設定する
コードに fundam.py っていうファイルがありますね。そう、これは基礎的な (fundamental) 関数を入れておいたものです。
やることはとても単純。シバン、import に続いて PosNeg 関数が見えるでしょう。
# positive or negative (returning 1, -1, or 0)
def PosNeg(subject):
if subject > 0:
return 1
elif subject < 0:
return - 1
else:
return 0
int 型の引数 subject がプラスなら 1 を、マイナスなら -1 を、0 なら 0 を返しているだけです。つまり Positive か Negative かを判別しています。
PosNeg(board[file][rank])
とすることで [file, rank] にある駒がどっちのプレーヤーのものか、値を得ることができます。
board[file][rank] == WHITE * ROOK
PosNeg(board[file][rank]) == 1 == WHITE
マス目に何もない、つまり board の値が EMPTY のときは白黒どちらのものでもありませんから、0 つまり EMPTY がリターンされます。
EMPTY も白黒みたいにプレーヤーとして扱うんだよな
~~~~~~~~~~~~~~~
その下、InSize 関数は int 型の subject が 0 以上 8 未満にあるか調べています。
# whether the index is in the board (bool)
def InSize(subject):
if 0 <= subject < config.SIZE:
return True
else:
return False
範囲内にあれば True, なければ False です。
なんで 8 を含めないん?
board とか座標のインデックスの判定に使うからですよ。インデックスの値が 8 以上になるとコンピューターがガンガンエラー鳴らしてきてうっとうしいので、先んじてエラー鳴らす不逞な輩をつまはじきにしているんです。つまりは
InSize(x) == True
というのはそのまま「x は board のリストのインデックスにできますよ」という意味です。