0

アーケード ビデオ ゲームに取り組んでいますが、弾丸の向きについて助けが必要です。現在、動かない弾丸が1つしかありません。それは、開始する場所に描画されているだけです(すべてを段階的に実行しています)。問題は、弾丸が右に行くか左に行くか分からないことです。弾丸が発射されたとき (X キーが離されたとき) に true になる bullet というブール変数があります。

    public void pistol( boolean right ) {

    if( right ) {
        dbg.fillRect( barrelRightX, barrelY, barrelWidth, barrelHeight );
        dbg.fillRect( handleRightX, handleY, handleWidth, handleHeight );
    }
    else {
        dbg.fillRect( barrelLeftX, barrelY, barrelWidth, barrelHeight );
        dbg.fillRect( handleLeftX, handleY, handleWidth, handleHeight );
    }

    if( bullet ) {

        if( right )
            dbg.drawOval( barrelRightX + barrelWidth, barrelY, 5, 5 );

        else
            dbg.drawOval( barrelLeftX - 5, barrelY, 5, 5 );

    }
}

if( bullet ) の前の最初のコード ブロックは、ピストルを描画するだけです。right がブール値のパラメーターであることがわかるように、そこに配置しました。基本的にこれは、弾丸が発射され、ピストルが右を向いている場合、銃弾が銃身から直接出ているように見えるように弾丸を描くことを意味し、弾丸が発射され、右を向いていない場合 (明らかに左を向いていることを意味します) 次に、通常のように出てくるように描画します。問題は、プログラム全体を実行する巨大なアニメーション ループがあるため、弾丸を発射してピストルの方向 (右から左または左から右) を変更すると、弾丸の位置が変わることです。バレットファイナルにしてみましたが、Xキーを離したときにtrueになるように変更する必要があります。そう、

4

1 に答える 1

6

final[member] 変数を再割り当てできない (または、クラスを拡張できない、およびメソッドに関するその他のもの ;-) とだけ言っています。オブジェクトの可変性については何も述べていません。また、コードでの使用法もわかりません...

いずれにせよ、銃が発砲されたときに新しい Bullet [オブジェクト]を作成しないのはなぜですか? つまり、「方向」と「初期位置」は、Bullet の作成時に認識される側面です。これにより、不要な相互作用を恐れることなく [複数の独立した] 弾丸を生成して対処することができます... (1 つの弾丸は N 弾の特殊なケースです)。

于 2012-05-29T00:28:25.317 に答える