1

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. 
4

1 に答える 1

0

石を動かしたときに新しい一致がないか確認してみてはいかがでしょうか。したがって、石 x が下に移動すると、X の新しい位置が一致するかどうかを確認します。そうすれば、再帰的な種類のメソッドを作成できます。

于 2013-03-27T13:50:47.863 に答える