Pythonプログラミングで

チェスを作る

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] にある駒がどっちのプレーヤーのものか、値を得ることができます。

UNAVAILABLE
UNAVAILABLE

board[file][rank] == WHITE * ROOK
PosNeg(board[file][rank]) == 1 == WHITE

マス目に何もない、つまり board の値が EMPTY のときは白黒どちらのものでもありませんから、0 つまり EMPTY がリターンされます。

UNAVAILABLE

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 です。

UNAVAILABLE

なんで 8 を含めないん?

board とか座標のインデックスの判定に使うからですよ。インデックスの値が 8 以上になるとコンピューターがガンガンエラー鳴らしてきてうっとうしいので、先んじてエラー鳴らす不逞な輩をつまはじきにしているんです。つまりは

InSize(x) == True

というのはそのまま「x は board のリストのインデックスにできますよ」という意味です。

NEXT 2-4 文字を変換する機能を設定する