-1

下に長すぎて読めなかったバージョンがあります。

そこで、画面の右上隅にある必要なレンガの色と一致するレンガのグリッドをクリックする必要がある小さなゲームを作成しました。必要な色をクリックすると、レンガが爆発し、隣の同じ色のレンガも爆発してコンボが作成されます。これによりグリッドに穴が残るため、ゲームステート自体をリセットせずにグリッド自体を何らかの方法でリセットする必要があります。私は今これが働いている何かを持っています:

private function ResetNow():Void
{                  

    if (Restter == 1) Restter = 0;

    //if this block is up here, same results
    /*
    wantedBricks.kill();
    wantedBrik._changeColor = FlxMath.rand(0, 2);
    bricks.autoReviveMembers = true;
    bricks.revive();           
    */ 
    Restter = 0;

    //Removes stray detectors so the neverending combo bug won't occur
    for (stray in dets.members) stray.kill();      

    if (Restter == 0)
    {  

        wantedBricks.kill();
        wantedBrik._changeColor = FlxMath.rand(0, 2);
        bricks.autoReviveMembers = true;
        bricks.revive();           

        wantedBricks.autoReviveMembers = true;
        wantedBricks.revive();         

        for (zgem in bricks.members) zgem.EQUITYCHECK = FlxMath.rand(0, 2);


    }      

    //add(bricks);     

    Restter = 1;

}

繰り返しになりますが、作成時にブロックのグリッドを設定しました。これがグループ ブリックです。そして、私はウォンテッドブリックである右上隅にスプライトを持っています. ゲームプレイ中に何が起こるかというと、プレーヤーは必要なブロックと一致するブロックをクリックして、グリッドからそれらをクリアします。WantBrick(グループ)がなくなると、グリッドをリセットし、wantedBrik の色を変更することになっています。また、大きなグリッドの EQUITYCHECK (値がハッキングされた基本的なオブジェクト) のメンバーが WantBrik と等しい場合、それを WantBricks に追加するというコードの別の場所もあります (これが、それ以上チェックしていない理由です)。 )。それで、何が起こるのですか?

そうですね、wantedBrik の色が変わらなければ、すべて問題なく、通常どおりにリセットされます。WantBricks グループは、実際に WantBrik の色に一致するレンガを正確に数えます。そして、それが変化した場合、何らかの理由で、ゲームプレイは正常です. しかし、wantedBricks は、古い色がまだ必要であると考えているだけでなく、新しい色もまだ必要であると考えています。そのため、プレーヤーが新しい必要な色のブロックをクリックすると爆発しますが、wantedBrik は古い色がまだ必要であると考えているため、null にヒットせず、グリッドはリセットされません。

色の変更後、wantedBricks が正しく動作するようにするにはどうすればよいですか?

TL;DR バージョン: 古い数字を忘れたり失ったりするために、Haxe 配列を取得する必要があります。これどうやってするの?

4

1 に答える 1

2

「Pirate Pig」のサンプルが役に立つかもしれません。パズルゲームなので、そこで解いた似たような問題がいくつかあるかもしれません。openfl createを使用して、またはnme create現在使用しているものに応じて見つけることができます。

次のような単純な配列を作成できます。

var myArray = [];

次のように、配列を入力することもできます。

var numbers = new Array<Float>();

push()その後、、concat()およびその他の配列メソッドを使用できます。

于 2013-06-14T15:25:12.373 に答える