2016-07-07 6 views
-2

のためのスコアトラッカー私はスペースインベーダースタイルのゲームを作成するためのプロジェクトに取り組んでいます:のjava:二者択一のint値:ゲーム

  • 私はプレイヤーがターゲットに当たったときのスコアを維持できるようにする必要があります(+1点)またはミス(-1点)。
  • プレーヤーがエイリアンエンティティで撃ったときにrecordScore()メソッドを呼び出しますが、値(int point)が1または-1のいずれかになるように設定する方法がわかりません。私が感じる

    //if there is a hit  
        recordScore(1) 
        //if there is no hit 
        recordScore(-1) 
    

    が...ヒントですが、私が使用してのように感じる:

    public void recordScore(int point){ 
    if(/*an alien ship is hit*/){ 
        point = 1; 
    } 
    else{ 
        point = -1; 
    } 
    

    私のようなメソッドを呼び出します:

このは、私が現在持っているものですループは間違っていますが、メソッドが呼び出される方法ではうまくいかないと思っていますが、変数を2つの値に初期化する(またはif節を満たす)他の方法は考えられません。

+0

として作成されてからのナンセンスが、有効なコードを防ぐことができます私たちは、あなたのクラスを参照してくださいことはできますか?私はあなたがどこかでクラスフィールドの得点を記録していると思いますか? – arjabbar

+0

そしてあなたは何のことを言っているのですか?あなたが投稿したコードには何もありません。 – csmckelvey

+0

私は誤ってif-else文をループと呼びました!だから、if-else文! – lild0nut

答えて

3

これは逆方向に考えている:

public void recordScore(int point){ 
if(/*an alien ship is hit*/){ 
    point = 1; 
} 
else{ 
    point = -1; 
} 

あなたがやるべきことの正反対であるメソッドのパラメータに値を代入しようとしています。このメソッドには、値が割り当てられて渡されていることを忘れないでください。

代わりに、パラメータが保持する値を使用してクラスフィールドの値に割り当てるか、場合によってはフィールドの値を増減します。

だから、のようなもの:

public void recordScore(int point) { 
    score += point; // similar to score = score + point; 
} 

はあなたが必要なものに近いです。スコアフィールドを持っているかどうかは分かりません。あなたの状態という


注:

私はループを使用してのように感じるが

間違っているあなたがいる場合/他の構造にまで言及している場合、これがあることをご理解くださいループではなく、むしろプログラム制御フローステートメントまたは論理ブロックである。 ループはコード自体を繰り返します。例にはforループとwhileループがあります。

スコアを1だけ増減する場合は、ブール値パラメータを使用する方法を使用することもできます。例えば

public void attemptHit(boolean hitSuccessful) { 
    if (hitSuccessful) { 
     score++; 
    else { 
     score--; 
    } 
} 

、あなたが好きそれを呼びたい:

attemptHit(true); // for a successful hit 
attemptHit(false); // for a miss 

これは、このような

recordScore(-23020); 
関連する問題