在增加和减少生活方面遇到困难
Having trouble incrementind and decrementing lives
所以我试图在 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");
}
}
});
}
}
您在方法中设置了 int lives = 3;
。所以每次点击都是 3,你可以向上或向下计数。
您必须在方法之外的 class 中保留 lives
。例如,将其放在 final Button rollButton;
.
正下方
每当用户单击 rollButton 时,lives 将显示为 2(如果递减)或 4(如果递增),这背后的原因是您在 onClick 方法中声明并初始化了 live 变量,因此每次用户单击按钮寿命将显示为 2 或 4。
在这个问题的解决方案中声明并初始化方法外的变量(在class级别)。
所以我试图在 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");
}
}
});
}
}
您在方法中设置了 int lives = 3;
。所以每次点击都是 3,你可以向上或向下计数。
您必须在方法之外的 class 中保留 lives
。例如,将其放在 final Button rollButton;
.
每当用户单击 rollButton 时,lives 将显示为 2(如果递减)或 4(如果递增),这背后的原因是您在 onClick 方法中声明并初始化了 live 变量,因此每次用户单击按钮寿命将显示为 2 或 4。
在这个问题的解决方案中声明并初始化方法外的变量(在class级别)。