Android用のhtml/javascriptゲームに取り組んでいます。以下を行うボードゲームです。さまざまな色のタイルがあり、ユーザーは 1 つのタイル (プログラムで選択) をボードに配置できます。同じ色/形の 4 つ以上のタイルを取得すると、いくつかのポイントが獲得され、これらのタイルは消えます。削除されたタイルの上のタイルがそれらに置き換わり、新しいタイルが空の場所に追加されます。以下の画像はその仕組みを示しています (これは単なる例であり、実際のボードの寸法は異なる場合があります)。
タイルは<img>
、一致と置換をチェックするために使用する配列に格納された ID を持つ要素です。
それはすべてうまく機能しますが、新しいタイルがボードに追加されたら、ボード全体を調べて、新しい一致が利用可能かどうかを確認する必要があります. ボード全体を調べるのは非常に時間がかかるため、ここでアドバイスが必要です。これを効率的に行う方法はありますか?これが私がやろうと思ったことです:
前の例を考えると、赤い領域の要素のみ、つまり移動または追加された要素のみを調べることを考えました。移動/追加されたタイルを確認するだけで、新しい一致が得られるため、タイルが垂直に移動すると効果的です。しかし、タイルを水平に削除する場合、問題が発生する可能性があります。これらのタイルが下部にある場合、ボード全体を調べる必要があり、同じ問題に直面するからです。
アドバイスや提案をいただければ幸いです。
注: 特定のタイルの行と列をチェックして一致を探すだけなので、コードは追加しませんでした。しかし、必要であれば提供できます。
編集: 異議を唱える前に、ここで回答が得られなかったため、この質問をゲーム開発セクションに追加したことをお知らせしたいと思います:)。
編集:私のコードを追加する
function initializeBoard(){
//items is an array which contains tiles/images names
for(var i=0; i < totalItems; i++)
board[i+1] = Math.floor(Math.random() * (items.length - 1)) + 1;
for(var i=0; i < totalItems; i++)
{
if( !(i % numberShapesXAxis) )
document.write("<BR>");
document.write("<img src=\"images/"+ items[board[i+1]]+ ".gif\" style = \"border:0; height:"+ itemSize+ "px; width:"+ itemSize+ "px;\" name=\"t", i+1,"\" onclick = \"replaceAndCheck(", i+1, ")\"><\/a>");
}
}
//so basically board contains image ids.