Stage 1 プログラムの機能を考える
1-1 盤面の機能を考える
さて、対戦できるようにコードを組みたいと思ったとき、まずその戦う場所、バトルフィールドが必要なわけです。チェスのバトルフィールドって
6 × 6マスのムダに白黒したあのただの板
ですよ。あの白黒はムダなので今回は白黒なんかさせません。いや、白黒にしていいですよ。ムダなだけですから私はオススメしませんけど。
やっぱ見た目ショボいな
お前はちょっと黙ってろ。
~~~~~~~~~~~~~~~
コマンドプロンプトやターミナルで動かす以上、動かしたい駒の上でクリックして選択なんてできませんから、何らかの形でマス目の位置を指定しないといけません。棋譜の出番ですね。
棋譜というのはそれぞれの駒の動かし方を記録したものです。ということで、盤面はこのアルファベットと数字で表される「座標」がわかるようにしておきたいですね。
これなら機械からすれば扱いやすそうだわ
~~~~~~~~~~~~~~~
せっかくマス目が座標なんだから、マス目のデータも座標っぽく扱ったらいいじゃないってんで、
board = [FILE][RANK]
の構造にしてみました。ちなみに、file は縦の列、rank は横の列を表します。
まためんどくせえ言葉使いやがって
いやいや、私が決めたわけじゃありませんから、そんなこと言われてもしょうがないんですが。これ以降はソースコードなど文書を表す意味のファイルと分けるために、file と rank の 2 つは英文字表記で統一します。
file も rank もリストのインデックスですから、当然 0 番スタートです。file は棋譜では a から h のアルファベットで表しますので、できればこのままソースコードに使えるようにと
a, b, ..., h = 1, 2, ..., 8
と定義しておきます。こうすれば
あれ、この数字はタテだっけヨコだっけ?
って困惑することも少なくなるでしょ?そもそも見やすい。それと、board などリストのインデックスにするときは
board[a - 1][3 - 1]