56将棋開発ブログ

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

JavaScriptで将棋のルール その2 ~ 駒の動き ~

はいどうも、ただのあほです。

今日は、駒の動きをチェックする関数をつくりました。


とにかくできたものを動かしたいというかたは、

こちらのページへどうぞ。

http://www54.atpages.jp/tetsuzuki/


まずは下準備として、駒が動ける方向を、配列にいれておきます。



gist9107351


Directionという配列が、

8方向 + 桂馬の動き4方向 = 12方向

をあらわしていて、それぞれの方向に対応した dan , suji の値がはいっています。


CanGoという配列は、二次元配列もどきになっています。

(正確には配列の各要素に、別の配列を格納しているらしいです)


たとえばCanGo[0][FU]には、

0 の方向(Directionのインデックスと対応している)に、FU(歩)が動けるかどうかをあらわす、

1 or 0 がはいっています。


CanJumpも同様で、その方向に飛べるかどうかを 1 or 0 であらわしています。


このやりかたは、うさぴょんの作者様のページ
将棋プログラムの作り方

をマネしたものです。感謝です。


さて、ようやく駒の動きをチェックする関数ですが、

これはわりと短いコードなので、とりあえず貼ってみます。


gist9107532


いちおうポイントとしては、14行目の、

if(board[moved.dan][moved.suji] != EMPTY)break;

というコードをいれることで、駒を飛びこえないようにしているところでしょうか。


この関数をつかうことで、駒の種類ごとの動きしかできないようになりました。

ただの将棋盤のページにも、変更を反映させたので、

よかったら動かしてみてください。

http://www54.atpages.jp/tetsuzuki/


つぎは、王手をチェックする関数をつくることになると思います。

それでは。