0

こんにちは私はブレイクアウトのゲームを作っています、そして私はボールがパドルまたはレンガから跳ね返るのに問題があります。

ボールをレンガとパドルで跳ね返らせるためのコードを次に示します。

private void checkForHit(){
    GObject collider = getElementAt( ballX, ballspeed);

    if(collider == paddle){
        ballspeed = -ballspeed;
    }
}

なぜそれが機能しないのか、おそらく何か小さなものなのかわかりません。

アップデート

セットを入れるとif(collider.equals(paddle))

ゲームを実行すると、java.lang.NullPointerExceptionエラーが発生します。

4

1 に答える 1

1

これは、オブジェクトに == 記号を使用しようとしているからです。オブジェクトを比較するときの通常の構文は、CodeChimp が説明したようなものです。

<objectname>.equals( <otherobject> )

使用しているオブジェクト (自分で作成した場合) が同じメソッドを使用し、正しいフィールド値などを他のオブジェクトと比較していることを確認する必要があります。オブジェクトを連携させる方法を学ぶことは、OOP の非常に重要な部分です。

キーワード: instanceof を見たいと思うかもしれません。

また、2 つの異なるフィールド値を比較したいだけの場合、これは両方とも 2 つのクラスのそれぞれの fx 整数値です。これらのフィールド値の getter メソッドを作成し、それらの特定の値を簡単に比較できます。

if ( collider.getSpecificValue() == paddle.getSpecificValue() ) { }
于 2013-02-05T17:48:51.297 に答える