【问题标题】:Having trouble incrementind and decrementing lives在增加和减少生命时遇到麻烦
【发布时间】:2018-02-10 08:08:40
【问题描述】:

所以我尝试在 Android 上的游戏中添加生命值,当我运行 if else 块时,生命值只会减 1 或加 1,但不会进一步下降或加一,每次猜测错误时我都需要它下降,但事实并非如此。

这是代码块,也许我只需要循环它,但我不确定如何。

int lives = 3;
if(guessNumber.getValue() != number) {
    lives--;
    Log.d("dicee", "You have " + lives + " lives left");


} else {
    lives++;
    Log.d("dicee", "You have " + lives + " lives left");

}

如果需要任何其他细节,所有代码都在这里

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.NumberPicker;

import java.util.Random;

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

    final Button rollButton;
    rollButton = (Button) findViewById(R.id.rollButton);

    //image views for dice

    final ImageView leftDice = (ImageView) 
    findViewById(R.id.image_leftDice);


    //Dice array to grab and display images of dice

     final int[] diceArray =
            {R.drawable.dice1,
             R.drawable.dice2,
             R.drawable.dice3,
             R.drawable.dice4,
             R.drawable.dice5,
             R.drawable.dice6};


    rollButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            Log.d("dicee", "Ze Button Has Been Pressed!");

            Random randomNumberGenerator = new Random();

            int number = randomNumberGenerator.nextInt(7);

            Log.d("dicee", "The Random Number Is: " + number);

            leftDice.setImageResource(diceArray[number - 1]);


           NumberPicker guessNumber = null;
           guessNumber = (NumberPicker)findViewById(R.id.guessNumber);
           guessNumber.setMaxValue(6);
           guessNumber.setMinValue(1);
           guessNumber.setWrapSelectorWheel(false);

           if(guessNumber.getValue() == number) {
               Log.d("dicee", "You Are Correct");
           } else {
               Log.d("dicee", "Try Again");
           }

           int lives = 3;
            if(guessNumber.getValue() != number) {
                lives--;
                Log.d("dicee", "You have " + lives + " lives left");
            } else {
                lives++;
                Log.d("dicee", "You have " + lives + " lives left");
            }
        }
    });
  }

}

【问题讨论】:

    标签: java android loops while-loop do-loops


    【解决方案1】:

    每当用户单击 rollButton 时,生命值将显示为 2(如果递减),否则为 4(如果递增),其背后的原因是您将 live 变量声明并初始化到方法 onClick 中,因此每次用户单击按钮时都会生效将显示 2 或 4。

    在解决这个问题时,在方法外声明和初始化变量(在类级别)。

    【讨论】:

      【解决方案2】:

      您在方法中设置了int lives = 3;。所以每次点击它都是 3,你可以向上或向下计数。 您必须将lives 保留在您的班级中,在方法之外。例如,将其放在final Button rollButton; 的下方。

      【讨论】:

        猜你喜欢
        • 2017-09-20
        • 2020-11-02
        • 1970-01-01
        • 2020-06-15
        • 1970-01-01
        • 1970-01-01
        • 2016-05-05
        • 1970-01-01
        • 2016-06-29
        相关资源
        最近更新 更多