56将棋開発ブログ

5×6マスのミニ将棋、「56将棋」で遊べるものをいろいろ開発してます。

JavaScript将棋盤 ほぼ完成したので公開してみる

おひさしぶりです。ただのあほです。

JavaScriptで将棋盤の将棋のルールの部分がほぼ完成したので公開してみます。


JavaScript将棋盤


2014/03/04/15:41 追記 二歩の判定にバグがあったので修正しました


対応している将棋のルールがこちら。

・駒の動き

・手番

・成/不成の選択

・行きどころのないマスに動いたら自動で成る(歩、桂馬、香車)

・駒をとる、打つ

・行きどころのないマスへ打つことの禁止(歩、桂馬、香車)

・二歩の禁止

・自殺手、王手放置の禁止(玉がとられる手は指せない)


「ほぼ完成」というのは、以下のルールに対応していないからです。

・詰みの判定

・打ち歩詰め

千日手


勝ち負けの判定だけなら、玉がとられたら負けにすればかんたんですね。


ほかの方がつくったJavaScript将棋盤もみてみたのですが、

JavaScript将棋 : 詰みは判定されない

んとか将棋 | 将棋ゲームの時間 : 玉がとられる手を指した時点で勝負を判定

というように、「詰み」の判定はしていないようです。


コンピュータと対戦できるサイトでは、

ハム将棋
こちらが自殺手を指すと玉がとられて負け(詰み判定はなし)
こちらが詰ますときは詰みが判定されて勝ち


きのあ将棋 | QinoaSyougi
こちらが自殺手を指すとその時点で負け(詰み判定はなし) 
こちらが詰ます前に投了する。詰み判定もあるはず。


というように、こちらの玉の詰み判定はされず、

コンピュータの玉の詰み判定だけになっています。


おそらくこちらの玉の詰み判定がないのは、

指し手のたびに詰み判定をしなければならないのがめんどうで、

重くなるということだと思います。


このJavaScript将棋盤は、

コンピュータと対局できるものをつくる練習のようなものです。


棋譜を読み込んで棋譜並べをできるようにするとか、

べんりな機能をつけるつもりはありません。

そういったことができるものはすでにありますしね。


というわけで、いまは合法手を生成する関数をつくっています。


JavaScriptで将棋盤の、将棋のルールに関する記事はまだ書き終わっていないので、

自分が書いたきったないコードを直すというもっとも過酷な作業がおわれば、

そのうち書くと思います。

(たぶん)(きっと)(ニコ生将棋とネット将棋の誘惑に勝てれば)


しかし、あほが書いたコードをみてみたいという需要があるのか、

疑問にはなってきた今日このごろです。

ただアドバイスいただけると本当にうれしいですし、

記事にするとじぶんの頭の中でも整理ができるので、

がんばって記事にしたいと思います。


それでは。