1

AS3 でかなり基本的なオブジェクト クラスのスペース シューター スタイルのフラッシュ ゲームを開発しています。ゲームには元々、速度やヘルスなどのランダム変数パラメーターを持つ 1 つの敵ターゲットが含まれていましたが、合計スコア カウンターは事前定義されたままでした。

それ以来、ゲームを拡張して、それぞれが独自のクラスを持つ複数の敵ターゲットが存在するようにしました。したがって、それらは独自の変数パラメーター値を持ちます。また、各敵ターゲットの難易度を反映するために、合計スコアを自由に増やしました。

私が直面している問題は、スコア カウンターを結合するための元のコード行がまだ "score++;" に設定されていることです。これは、"if ステートメント" が発生するたびに 1 の値を追加するだけです。

私の質問は、各クラスに割り当てられた値に基づいてスコア カウンターを増加させるにはどうすればよいですか?

関連するコードの一部を以下に示します。

敵のターゲットが殺されたときの「If ステートメント」(レベル クラスに格納):

// if the bullet is touching the ship
if (MyMaths.hitTest(sh, bullets[bcount])) {
sh.health--; // lose 1 heath point
score++;
removeChild(bullets[bcount]); // remove the bullet from the screen
bullets.splice(bcount, 1); // remove the bullet from the list
}

Ship1 (Ship1 クラスに格納されている) スコア値

public function Ship1() {
score=1; // set point value
}       

Ship2 (Ship2 クラスに格納されている) スコア値

public function Ship1() {
score=2; // set point value
}   

Ship3 (Ship3 クラスに格納されている) スコア値

public function Ship1() {
score=3; // set point value
}   

スコア値を組み合わせるために新しい関数を作成する必要があるかどうかはわかりませんが、「score++;」そこから引っ張って、どうやってそれをやりますか?

複数のクラスの変数を単一のカウンターに結合することは、見た目ほど簡単ではないため、これは、多くの目的指向プログラマーの仲間が関連性があると考える質問だと思います。また、これは、ゲーム開発以外の幅広い開発者ニッチで使用できます-ネットワーク内の複数のモデルのコンピューターのデータベースを作成し、新しいOSでワークステーションを更新した後、「合計完了」フィールドを計算しますまたは必要なソフトウェア。

専門知識、意見、および/または励ましの言葉を提供できる人なら誰でも本当に感謝しています。

どうもありがとう、アレックス

4

1 に答える 1

1

そのようにする代わりに、各船が通信するシングルトンを用意してみませんか。

スコアをインクリメントするたびに:

ScoreManager.getInstance().incrementScore(ShipX.getScoreDelta())

各コレクションの後、どこgetScoreDelta()が 0 にリセットされます。

その後、ゲームが終了すると:

ScoreManager.getInstance().getCurrentScore();
于 2013-01-31T23:02:30.783 に答える