Pythonプログラミングで

チェスを作る

Stage 1 プログラムの機能を考える

1-1 盤面の機能を考える

さて、対戦できるようにコードを組みたいと思ったとき、まずその戦う場所、バトルフィールドが必要なわけです。チェスのバトルフィールドって

6 × 6マスのムダに白黒したあのただの板

ですよ。あの白黒はムダなので今回は白黒なんかさせません。いや、白黒にしていいですよ。ムダなだけですから私はオススメしませんけど。

UNAVAILABLE
UNAVAILABLE

やっぱ見た目ショボいな

お前はちょっと黙ってろ。

~~~~~~~~~~~~~~~

コマンドプロンプトやターミナルで動かす以上、動かしたい駒の上でクリックして選択なんてできませんから、何らかの形でマス目の位置を指定しないといけません。棋譜の出番ですね。

UNAVAILABLE

棋譜というのはそれぞれの駒の動かし方を記録したものです。ということで、盤面はこのアルファベットと数字で表される「座標」がわかるようにしておきたいですね。

UNAVAILABLE
UNAVAILABLE

これなら機械からすれば扱いやすそうだわ

~~~~~~~~~~~~~~~

せっかくマス目が座標なんだから、マス目のデータも座標っぽく扱ったらいいじゃないってんで、

                        
    board = [FILE][RANK]
                         
                    

の構造にしてみました。ちなみに、file は縦の列、rank は横の列を表します。

UNAVAILABLE

まためんどくせえ言葉使いやがって

いやいや、私が決めたわけじゃありませんから、そんなこと言われてもしょうがないんですが。これ以降はソースコードなど文書を表す意味のファイルと分けるために、filerank の 2 つは英文字表記で統一します。

filerankリストインデックスですから、当然 0 番スタートです。file は棋譜では a から h のアルファベットで表しますので、できればこのままソースコードに使えるようにと

a, b, ..., h = 1, 2, ..., 8

と定義しておきます。こうすれば

UNAVAILABLE

あれ、この数字はタテだっけヨコだっけ?

って困惑することも少なくなるでしょ?そもそも見やすい。それと、board などリストインデックスにするときは

board[a - 1][3 - 1]

のような形にすることを忘れないでください。リストインデックスは必ず 0 スタートですよ。

NEXT 1-2 駒の機能を考える