私はJavascriptを学んでおり、プロジェクトの課題としてチェスゲームを作っています。ルーク、ポーン、ナイト、ビショップの動きのロジックをコーディングしました。今、クイーンの動きにハマっています。クイーンの移動は、基本的にビショップとルークの移動ロジックを含みます。
私がやりたいのは、クイーンが移動したときに、ソースタイルのファイルが宛先タイルと同じかどうかを確認することです。同じ場合は、Rook のコード移動ロジックを呼び出します。そうでない場合は、Bishop のコード移動ロジックを呼び出します。たとえば、クイーンが d4 (ソース タイル) に配置され、d8 または g4 (宛先タイル) に移動された場合。次に、この場合、Rook の move 関数を呼び出す必要があります。
すべてのピース オブジェクトには move() が含まれています。この場合、Queen の move() から Rook の move() を呼び出したいと思います。私はここで立ち往生しています。よろしくお願いします。関連するコードを以下に貼り付けます。同様に、Rook やその他のオブジェクトを作成しました。この Queen() の move() から、Rook/Bishop の move() を呼び出したいと思います。
chess.QueenFactory =
{
instance: function(color, type)
{
var Queen =
{
move: function(color, type)
{
alert("In Queen");
}
};
createPiece.call(Queen, color, type);
return Queen;
}
};
ビショップのわざ機能はこんな感じで配置
chess.BishopFactory =
{
instance: function(color, type)
{
var Bishop =
{
move: function(source, destn)
{ //Code here
}
}
}
}
この関数を Queen の move() から呼び出したいと思います。それ、どうやったら出来るの?
以下のhtmlリンクでコード全体を見つけてください。
https://github.com/varunpaprunia/ChessInJavascript/blob/master/ChessBoard_Tags_1.html