Pythonプログラミングで

チェスを作る

目次

用語

キャスリング

キングとルークを交差させるように動かすこと。駒の動かし方参照。

アンパッサン

相手の 2 マス進んだポーンを通過するように取ること。駒の動かし方参照。

file; ファイル

盤面の縦長の列。クイーンサイドの端から a, b, c, .., h と番号をふる。

rank; ランク

盤面の横長の行。黒側の端から 1, 2, ..., 8 と番号をふる。

チェック; 王手

対処しなければ次のターンで相手にキングを取られる状態。

チェックメイト; 詰み

このターンで自分がどんな手を打っても相手のターンで自分のキングが取られる状態。

ステイルメイト

チェックはされていないが、自らチェックされにいく他に駒の動かしようがない状態。一般にこのとき引き分けとする。

リザイン; 投了

自ら負けを認めること。盤面において優勢であってもプレーヤーのリザインを適用する。

プロモーション

ポーンが一番端の rank までたどり着いたときに、ルーク・ナイト・ビショップ・クイーンのいずれかに成り上がること。よほどの理由がない限りクイーン。

クイーンサイド

初期配置のクイーンがいる file の方向。つまり file が減る方向。

キングサイド

初期配置のキングがいる file の方向。つまり file が増える方向。

初期配置

UNAVAILABLE

駒の動かし方

P ポーン

UNAVAILABLE

R ルーク

UNAVAILABLE

N ナイト

UNAVAILABLE

B ビショップ

UNAVAILABLE

Q クイーン

UNAVAILABLE

K キング

UNAVAILABLE

ポーンの最初

UNAVAILABLE

アンパッサン

UNAVAILABLE

キャスリング

UNAVAILABLE

棋譜の書き方

棋譜の書き方には何通りかありますが、ここでは FIDE (The International Chess Federalation) 公認の standard algebraic notation と呼ばれる記法を使用します。
                
-- 盤面
盤上のマスを一つに絞るのに、数学でやるような「座標」を活用します。横長の行 (rank) は白番から見て下から順に 1, 2, ..., 8 と数え、縦長の列 (file) は白番から見て左から順に a, b, ..., h と番号を振ります。
                
    a   b   c   d   e   f   g   h
   -------------------------------
8 | a8| b8| c8| d8| e8| f8| g8| h8| 8
   -------------------------------
7 | a7| b7| c7| d7| e7| f7| g7| h7| 7
   -------------------------------
6 | a6| b6| c6| d6| e6| f6| g6| h6| 6
   -------------------------------
5 | a5| b5| c5| d5| e5| f5| g5| h5| 5
   -------------------------------
4 | a4| b4| c4| d4| e4| f4| g4| h4| 4
   -------------------------------
3 | a3| b3| c3| d3| e3| f3| g3| h3| 3
   -------------------------------
2 | a2| b2| c2| d2| e2| f2| g2| h2| 2
   -------------------------------
1 | a1| b1| c1| d1| e1| f1| g1| h1| 1
   -------------------------------
    a   b   c   d   e   f   g   h
                
黒番からみる場合にはこれが 180º 開店した形になります。


-- 駒の動き
各駒の名前は表のように割り振っていきます。

    P - ポーン
    R - ルーク
    N - ナイト
    B - ビショップ
    Q - クイーン
    K - キング

まず駒の名前を書いて、その後にどのマスへ移動したかを記録します。

例)
    Bc4 - ビショップが c4 のマスに動いた
    Nf3 - ナイトが f3 のマスに動いた
    Qc7 - クイーンが c7 のマスに動いた

ポーンはしょっちゅう動かすので、棋譜を書くときは基本的に省略します。

例)
    e4 - ポーンが e4 のマスに動いた
    g6 - ポーンが g6 のマスに動いた
    
ポーンが盤面の端まできてプロモーションしたときは、マスを表す2文字に続けて = (成り上がった後の駒の名前) の形で表します。

例)
    b8=Q - ポーンが b8 にきてクイーンにプロモーションした
    h1=N - ポーンが h1 にきてナイトにプロモーションした

相手の駒を取ったときは x を駒の名前と行き先のマスの間に入れて駒を取ったことを明示します。

例)
    Rxf5 - ルークが相手の駒をとって f5 のマスに移動した
    Kxd2 - キングが相手の駒をとって d2 のマスに移動した

ポーンが相手の駒を取ったときは、ポーンが元々いた列 (file) を表すアルファベットを先頭につけ、続けて x を、さらに移動先のマスを並べます。

例)
    gxf6 - g 列のポーンが相手の駒を取って f6 のマスに移動した
    exd5 - e 列のポーンが相手の駒を取って d5 のマスに移動した

ポーンがアンパッサンして相手の駒を取った場合、駒を取ったポーンの移動先を記録します。アンパッサンしたことを明示するために 'e.p.' をつけたりもしますが、必ずつけなければいけないものではありません。

例)
    exd6 - ポーンがアンパッサンして d5 にある相手のポーンをとり d6 のマスへ移動した
    gxh6 e.p. - ポーンがアンパッサンして h5 にある相手のポーンをとり h6 のマスへ移動した
    
駒を動かして相手にチェックをかけたときは、後ろに + をつけます。ダブルチェックの場合は ++ とする流儀もありますが、1つでも十分です。チェックメイトのときは後ろに # をつけます。

例)
    Ba3+ - ビショップが a3 のマスに移動してチェックとなった
    Qxh7# - クイーンが相手の駒を取って h7 のマスに移動しチェックメイトとなった
    f3+ - ポーンが f3 のマスに移動してチェックとなった
    
これまでご紹介した書き方だけだと、駒の動きを一つに絞れないことがあります。そんなときはどのマスにあった駒を動かしたか明示するために、移動先のマスの前に移動元の列 (file) を表すアルファベットを加えてあげます。

例)
    Rad1 - 元々 a 列にいたルークが d1 のマスに移動した
    Nbxd2 - 元々 b 列にいたナイトが相手の駒を取って d2 のマスに移動した
    Rfe1+ - 元々 f 列にいたルークが e1 のマスに移動してチェックとなった

元々同じ列にいた場合は、元いた行 (rank) を表す数字を先ほどと同じ位置に明示してあげます。

例)
    R7e4 - 元々 7 行にいたルークが e4 のマスに移動した
    N1xc3 - 元々 1 行にいたナイトが相手の駒を取って c3 のマスに移動した

キャスリングはここまであげた場合とは全く異なる書き方で記録します。クイーンサイドにキャスリングしたときは O-O と、キングサイドにキャスリングしたときは O-O-O と記録します。

記録者が感じたことをメモするときに下のような記号を使うこともあります。

    ! - 妙手
    !! - 非常に妙手
    ? - 疑問な手
    ?? - ひどい手
    !? - 面白い手
    ?! - 疑わしい手
    
参照:www.chessstrategyonline.comcontent/tutorials/basic-chess-concepts-chess-notation