JavaScript将棋盤 ほぼ完成したので公開してみる
おひさしぶりです。ただのあほです。
JavaScriptで将棋盤の将棋のルールの部分がほぼ完成したので公開してみます。
2014/03/04/15:41 追記 二歩の判定にバグがあったので修正しました
対応している将棋のルールがこちら。
・駒の動き
・手番
・成/不成の選択
・行きどころのないマスに動いたら自動で成る(歩、桂馬、香車)
・駒をとる、打つ
・行きどころのないマスへ打つことの禁止(歩、桂馬、香車)
・二歩の禁止
・自殺手、王手放置の禁止(玉がとられる手は指せない)
「ほぼ完成」というのは、以下のルールに対応していないからです。
・詰みの判定
・打ち歩詰め
・千日手
勝ち負けの判定だけなら、玉がとられたら負けにすればかんたんですね。
ほかの方がつくったJavaScript将棋盤もみてみたのですが、
http://www.geocities.co.jp/HeartLand-Sumire/4033/show-gi/show-gi.html : 詰みは判定されない
んとか将棋 | 将棋ゲームの時間 : 玉がとられる手を指した時点で勝負を判定
というように、「詰み」の判定はしていないようです。
コンピュータと対戦できるサイトでは、
hozo.biz
こちらが自殺手を指すと玉がとられて負け(詰み判定はなし)
こちらが詰ますときは詰みが判定されて勝ち
将棋サイト「きのあ将棋」 | QinoaSyougi
こちらが自殺手を指すとその時点で負け(詰み判定はなし)
こちらが詰ます前に投了する。詰み判定もあるはず。
というように、こちらの玉の詰み判定はされず、
コンピュータの玉の詰み判定だけになっています。
おそらくこちらの玉の詰み判定がないのは、
指し手のたびに詰み判定をしなければならないのがめんどうで、
重くなるということだと思います。
このJavaScript将棋盤は、
コンピュータと対局できるものをつくる練習のようなものです。
べんりな機能をつけるつもりはありません。
そういったことができるものはすでにありますしね。
というわけで、いまは合法手を生成する関数をつくっています。
JavaScriptで将棋盤の、将棋のルールに関する記事はまだ書き終わっていないので、
自分が書いたきったないコードを直すというもっとも過酷な作業がおわれば、
そのうち書くと思います。
(たぶん)(きっと)(ニコ生将棋とネット将棋の誘惑に勝てれば)
しかし、あほが書いたコードをみてみたいという需要があるのか、
疑問にはなってきた今日このごろです。
ただアドバイスいただけると本当にうれしいですし、
記事にするとじぶんの頭の中でも整理ができるので、
がんばって記事にしたいと思います。
それでは。