将棋のルール

シェアする

  • このエントリーをはてなブックマークに追加

こんばんは。今日はコンピュータ将棋ソフト開発に向けて、将棋のルールを紹介します。

反則や引き分けに関する取り決めが結構複雑で難しいです。

基本ルール

将棋は、初期局面から2人が交互に駒を動かして、相手の玉を取ろうとするゲームです。

将棋盤は9×9の81マスあります。

初期局面は決まっており、自分側の最下段に「香桂銀金玉金銀桂香」。下から二段目の桂馬の真上の2マスに、右に飛車、左に角。下から3段目のすべての筋(縦の列のことを筋と言います)に歩があります。

すべての駒は動き方が決まっています。解説しないので、調べてみて下さい。

相手側3段を敵陣・相手陣、自分側3段を自陣と呼び、自分の「歩・桂・香・銀・角・飛」が敵陣に入るか、敵陣から出てくる(あるいは敵陣内で移動する)と、「成る」ことができます。

「成る」とは、駒の動き方が変化することで、歩・桂・香・銀はそれぞれ「と金・成桂・成香・成銀」になり、すべて金の動きになります。飛車と角はそれぞれ「龍・馬」になり、それぞれ元の動きに玉の動きが加わります(つまり飛び移動に加えて周囲8マスに移動できるようになり、隙が無くなります)

一度成った駒は戻せません。桂・香・銀は成ることで動けなくなる場所があるので、成れるときにもどっちが得かちゃんと考えるものなのです。

香・角・飛・馬・龍を「飛び駒」と呼びます。飛び駒の移動は、駒を飛び越えることができません。

また、自分の駒を相手の駒がいる場所に移動させると、そこにいた相手の駒を「取る」ことができます。取った駒は「持ち駒」となり、自分の手番で盤上の駒を動かす代わりに、持ち駒を何もないマスに打つことができます。

ただし、成り駒を取っても成る前の駒が持ち駒になります。(成った状態の駒を打つことはできません)

次に(相手が防がなければ)相手の玉を取れるような状態にする手を「王手」と言います。王手するときに「王手!」と言う必要はありません。

自分の玉が次の相手の手で取られるような状態で相手に手を渡してはいけません。そのような手を「自殺手」と呼び、禁じられています。(玉を取られて負け、ではなく、反則の手を指して反則負け、になります)

そのため、王手されたのにどうやっても玉が取られないようにできないとき、何もできなくなってしまいます。そのような状態を「詰み」と言い、王手されている方の負けになります。

以上が基本的なルールです。

ただし、将棋には「駒を動かせない所に動かす」「玉をわざと取られるようにする」というような反則の他にもたくさんの反則があります。

将棋の反則

「連続で二手指してはいけない」というのはさすがに省略します。ちなみに囲碁にはパスがありますが、将棋にはありません。「何もせずに相手に手を渡したいけどそれはできない……」という状況って結構あります。相矢倉とかだと特に。

駒が動けない位置に動かしてはいけない

当たり前ですね。歩を横に動かしたり飛車を斜めに動かしたりしたら反則です。

コンピュータ将棋においては、特に飛び駒の飛び越し禁止に注意してください。

玉を見捨ててはいけない

これも当たり前です。玉が相手の利き(駒が動ける場所を「利き」と言います)に飛び込んではいけませんし、王手されてるのに放置してもいけません。

ただし、注意すべき点があります。それは「ピン」です。

ピン(pin)とは、「その駒が動くと玉が取られてしまう」という状態のことで、自玉と相手の飛び駒に自駒1つが挟まれているときに発生します。(元はチェス用語)

例えば「玉  金  v飛」(vは相手の駒という意味です)となっているときに、金を左右以外に動かすと、金の盾を失った玉が相手の飛車に取られてしまいます。

このpinチェックは将棋ソフトの難しい所の一つです。

「行きどころの無い駒」を作ってはいけない

「行きどころの無い駒」とは、自分から見て一番上の段にいる歩と香、一番上の段またはその下の段にいる桂のことです。(動ける先が全部盤の外なので動けません)

そのため、歩・香が最上段に行くときと桂馬が上2段に行くときは必ず成らないといけません。また、その位置に歩・香・桂馬を打つことはできません。指し手列挙時に注意です。

同じ筋に歩が2つ存在してはいけない

特殊なルールですが、歩が存在する筋に手持ちの歩を打つのは「二歩」と呼ばれている禁じ手です。少し前に某八段がNHK杯でやってしまって話題になりましたが、プロでもたまーにあるミスです。

歩は前にしか移動できないので、持ち歩を打つときだけ問題になります。持ち駒を打つ手を生成するときに注意しなければいけません。

ちなみに、と金が存在する筋には歩を打っても構いませんし、複数のと金が同じ筋にあっても大丈夫です。あくまで成っていない歩だけの話です。

歩を打つ手を生成するときは、打てる筋のチェックをしないといけません。

歩を打って詰ませてはいけない

これも変わったルールです。

相手の玉の頭(駒の目の前のマスを「頭」と言います)に歩を打って、次に相手が王手を逃れられないような場合、詰ませたのに歩を打った方が負けになります。

駒を打つ手を列挙するとき、歩を打つ手ならば「これによって相手が詰まないか?」を考えないといけません。詰むならそれは違法手(ルール違反)です。

ちなみに、相手玉の前の前にあった自分の歩を一つ前に進めて相手玉を詰ます「突き歩詰め」は大丈夫です。(歩を前に進めることを「突く」と言います)

歩を相手玉の頭に打つときだけ調べればいいので実装は難しくないと思います。

同一局面が4回発生すると千日手

これは反則ではありません。

同一局面が4回発生すると「千日手」と呼ばれる状態になり、大会によって「引き分け」にしたり「手番を入れ替えて持ち時間そのままで最初から指し直し」になったりします。対局が永遠に終わらないと困るので。

千日手が良いものかどうかはその時の状況によります。

自分の方が形勢が悪いと思っている場合、千日手は嬉しいことです。負けそうな対局を引き分けにできたり、互角の局面(初期局面)まで戻せるのですから。

逆に、自分の方が形勢が良いと思っている場合は、千日手は避けるべきです。千日手になりそうな状態で千日手を避けることを「千日手を打開する」といいます。(千日手は打開したほうが負ける、とよく言われますが。)

また、将棋は人間の場合ほんの少しだけ先手の方が有利なので(コンピュータだとどうなるかは把握していません)、千日手になった局面を「互角よりやや後手有利」と判断させることで、コンピュータの先読みで千日手を上手く扱うことができるようになります。

千日手をコンピュータソフトに実装する場合、訪れた局面を覚えておかないといけないので、局面に対するハッシュ関数を定義して訪れた局面をハッシュ表に登録……というようなことをします。難しいので私はまだ手を付けていません。

連続王手の千日手は王手をかけた側の反則負け

こっちは反則です。

千日手自体は引き分けor指し直しですが、「王手→玉逃げる→王手→玉逃げる→王手→玉逃げる→王手→……」というような形で、全く同じ王手を4回かけると、王手をかけた方が負けになります。

なぜこれが反則負けなのかと言うと、ガチの将棋の話になりますが、自玉に必至が掛かっている(現在は王手されていないが何もしなければ次の相手の手で詰まされる状態を「詰めろ」と言い、さらに詰みを防ぐ手段が一つもない状態を「必至」と言う)場合、負けを逃れるには相手玉に王手をかけ続けて詰ますしかありません。このとき、まず王手をかけ、相手の逃げ道が1つしかなくて、さらに王手をかけ、また逃げ道が一つしかなくて同一局面に戻る場合、自玉に必至が掛かっているのに引き分けに持っていくことができるようになり、これは良くないんじゃないかということです。

これも将棋ソフトに判断させるのはかなり難しいので、私はまだ実装できていません。

以上が、将棋における反則のお話です。ちなみに引き分け・特殊な勝ち方として「持将棋の宣言法」というものがあります。いつかプログラムに実装したいと思っていますが、まだまだ先になると思います。興味のある方は調べてください。(第二回電王戦の第三局で、塚田泰明九段がコンピュータソフトPuella αに対して持将棋で引き分けの宣言を行って認められました)

次回はプログラムっぽい内容を書きます。局面の保持とか指し手生成とかですかね。では。

スポンサーリンク
レクタングル(大)
レクタングル(大)

シェアする

  • このエントリーをはてなブックマークに追加

フォローする