Java 当玩家赢或输骰子游戏时,重置点值
我试图在玩家赢或输后重置玩家的积分值,但我无法用我当前的代码找出最佳的方法。我尝试过在Java 当玩家赢或输骰子游戏时,重置点值,java,android,eclipse,Java,Android,Eclipse,我试图在玩家赢或输后重置玩家的积分值,但我无法用我当前的代码找出最佳的方法。我尝试过在轮==0时重置pointValue.setText(“0”),但这只是将字符串设置为“0”,并且点从不重新初始化。我还尝试添加一个win和lose布尔值设置为false,在win或lost if语句中设置win或lose=true,然后在设置point=0的rollClicked()方法的末尾编写一个if语句。我所有的尝试都没有成功,我可能想得太多了。对于那些不知道如何玩骰子的人:如果第一次掷骰子的总和是4、5
轮==0时重置pointValue.setText(“0”)
,但这只是将字符串设置为“0”,并且点从不重新初始化。我还尝试添加一个win
和lose
布尔值设置为false,在win或lost if语句中设置win
或lose=true
,然后在设置point=0
的rollClicked()
方法的末尾编写一个if语句。我所有的尝试都没有成功,我可能想得太多了。对于那些不知道如何玩骰子的人:如果第一次掷骰子的总和是4、5、6、8、9或10,那么这个总和将成为玩家的“点数”。要赢,玩家必须继续掷骰子,直到掷出点数为止。玩家在掷点之前掷7,输掉比赛
下面是我的MainActivity中使用上述失败的布尔值尝试的代码
public class MainActivity extends Activity
{
// declarations
private Button button1, button2;
private ImageView dice1Image;
private ImageView dice2Image;
private TextView roll;
private TextView point;
private TextView results;
private TextView betText;
private TextView bankRollText;
private String result;
String betAmountString;
String bankRollString;
private Spinner bettingSpinner;
int winNumber1 = 7;
int winNumber2 = 11;
int loseNumber1 = 2;
int loseNumber2 = 3;
int loseNumber3 = 12;
int rounds = 0;
int rollTotal = 0;
int pointValue = 0;
private int winsCounter = 0;
private int loseCounter = 0;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
// Get the view from activity_main.xml
setContentView(R.layout.activity_main);
// initialize objects
dice1Image = (ImageView) findViewById(R.id.imageViewDie01);
dice2Image = (ImageView) findViewById(R.id.imageViewDie02);
roll = (TextView) findViewById(R.id.textViewRollTotal);
point = (TextView) findViewById(R.id.textViewPoint);
results = (TextView) findViewById(R.id.results);
button1 = (Button) findViewById(R.id.howToPlayButton);
button2 = (Button) findViewById(R.id.backToHomeButton);
bettingSpinner = (Spinner) findViewById(R.id.betSpinner);
betText = (TextView)findViewById(R.id.textViewBetAmount);
bankRollText = (TextView)findViewById(R.id.textViewBuyInAmount);
if (savedInstanceState == null) {
results.setVisibility(View.GONE);
}
// get selected variable from spinner on HomeActivity
TextView buyInText = (TextView)findViewById(R.id.textViewBuyInAmount);
buyInText.setText(getIntent().getExtras().getString("buyInAmount"));
// query the data, put it in the string-array and use ArrayAdapter constructor
ArrayAdapter adapter = ArrayAdapter.createFromResource(this, R.array.bet, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_item);
bettingSpinner.setAdapter(adapter);
bettingSpinner.setOnItemSelectedListener(new function());
// restores instanceState
if (savedInstanceState != null) {
onRestoreInstanceState(savedInstanceState);
}
// Capture button clicks
button1.setOnClickListener(new OnClickListener()
{
public void onClick(View arg1)
{
// Start NewActivity.class
Intent myIntent = new Intent(MainActivity.this,
NewActivity.class);
//myIntent.putExtra("buyInAmount",buyInAmountGlobalVar);
startActivity(myIntent);
}
}); // end setOnClickListener
// Capture button clicks
button2.setOnClickListener(new OnClickListener()
{
public void onClick(View arg2)
{
// Start HomeActivity.class
Intent myIntent = new Intent(MainActivity.this,
HomeActivity.class);
startActivity(myIntent);
}
}); // end setOnClickListener
} // end onCreate method
int d1, d2;
int betInt, bankRollInt;
boolean win = false;
boolean lose = false;
// initializes rollClicked method when ROLL button is clicked
public void rollClicked(View v) {
int dice1, dice2;
betInt = Integer.valueOf(bettingSpinner.getSelectedItem().toString());
bankRollInt = Integer.valueOf(bankRollText.getText().toString());
Random rand1 = new Random();
Random rand2 = new Random();
dice1 = rand1.nextInt(6) + 1;
dice2 = rand2.nextInt(6) + 1;
// sets values for dice images
if(dice1 == 1) {
dice1Image.setImageResource(R.drawable.die1);
d1 = 1;
}
else if(dice1 == 2) {
dice1Image.setImageResource(R.drawable.die2);
d1 = 2;
}
else if(dice1 == 3) {
dice1Image.setImageResource(R.drawable.die3);
d1 = 3;
}
else if(dice1 == 4) {
dice1Image.setImageResource(R.drawable.die4);
d1 = 4;
}
else if(dice1 == 5) {
dice1Image.setImageResource(R.drawable.die5);
d1 = 5;
}
else if(dice1 == 6) {
dice1Image.setImageResource(R.drawable.die6);
d1 = 6;
}
if(dice2 == 1) {
dice2Image.setImageResource(R.drawable.die1);
d2 = 1;
}
else if(dice2 == 2) {
dice2Image.setImageResource(R.drawable.die2);
d2 = 2;
}
else if(dice2 == 3) {
dice2Image.setImageResource(R.drawable.die3);
d2 = 3;
}
else if(dice2 == 4) {
dice2Image.setImageResource(R.drawable.die4);
d2 = 4;
}
else if(dice2 == 5) {
dice2Image.setImageResource(R.drawable.die5);
d2 = 5;
}
else if(dice2 == 6) {
dice2Image.setImageResource(R.drawable.die6);
d2 = 6;
}
// calculate sum of dice for each roll
if (rounds >= 0)
{
rollTotal = sum(dice1, dice2);
roll.setText(String.valueOf(rollTotal));
}
// win on first roll
if((dice1 + dice2 == winNumber1 || (sum(dice1, dice2) == winNumber2)) && rounds == 0) {
winsCounter++;
bankRollInt = bankRollInt + betInt;
bankRollText.setText(String.valueOf(bankRollInt));
results.setVisibility(View.VISIBLE);
win = true;
}
// lose on first roll
else if(rounds == 0 && (sum(dice1, dice2) == loseNumber1 || sum(dice1, dice2) == loseNumber2 || sum(dice1, dice2) == loseNumber3)){
loseCounter++;
bankRollInt = bankRollInt - betInt;
bankRollText.setText(String.valueOf(bankRollInt));
results.setVisibility(View.VISIBLE);
results.setText("House wins! You Lose.");
lose = true;
}
// display round results if no win or lose on first roll
else if(rounds == 0) {
pointValue = sum(dice1, dice2);
results.setVisibility(View.VISIBLE);
point.setText(String.valueOf(pointValue));
results.setText("Point established. It is " + pointValue + ". Roll Again.");
}
// lose if player hits 7 after first roll
if(rounds > 0 && (sum(dice1, dice2) == 7)) {
loseCounter++;
bankRollInt = bankRollInt - betInt;
bankRollText.setText(String.valueOf(bankRollInt));
results.setVisibility(View.VISIBLE);
results.setText("House wins! You Lose.");
lose = true;
}
// player wins if roll = pointValue after first roll
else if(rounds > 0 && (sum(dice1, dice2) == pointValue)) {
winsCounter++;
bankRollInt = bankRollInt + betInt;
bankRollText.setText(String.valueOf(bankRollInt));
results.setVisibility(View.VISIBLE);
win = true;
}
// display round results if no win or lose after first roll
else if(rounds > 0 && (sum(dice1, dice2) != pointValue && sum(dice1, dice2) != 7)){
results.setVisibility(View.VISIBLE);
results.setText("No one wins. Keep rolling Dice.");
}
rounds++;
// reset point if player wins or loses
if (win = true){
point.setText("0");
} else if (lose = true){
point.setText("0");
}
} // end rollClicked method
// calculate sum of dice
public int sum(int num1, int num2) {
return num1 + num2;
} // end sum method
// clear board for new game
public void resetGame(View v)
{
point.setText("0");
roll.setText("0");
results.setText("");
betText.setText("10");
bankRollText.setText("100");
// reset counter
rounds = 0;
} // end resetGame method
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
} // end onOptionsItemSelected
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
super.onSaveInstanceState(savedInstanceState);
// Save UI state changes to the savedInstanceState.
// This bundle will be passed to onCreate if the process is
// killed and restarted.
result = results.getText().toString();
bankRollString = bankRollText.getText().toString();
betAmountString = betText.getText().toString();
savedInstanceState.putInt("POINT_VALUE", pointValue);
savedInstanceState.putInt("ROLL_TOTAL", rollTotal);
savedInstanceState.putString("RESULTS", result);
savedInstanceState.putInt("DIE_1", d1);
savedInstanceState.putInt("DIE_2", d2);
savedInstanceState.putString("BANK_ROLL", bankRollString);
savedInstanceState.putString("BET_AMOUNT", betAmountString);
} // end onSavedInstanceState method
@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
// Restore UI state from the savedInstanceState.
// This bundle has also been passed to onCreate.
pointValue = savedInstanceState.getInt("POINT_VALUE");
rollTotal = savedInstanceState.getInt("ROLL_TOTAL");
result = savedInstanceState.getString("RESULTS");
d1 = savedInstanceState.getInt("DIE_1");
d2 = savedInstanceState.getInt("DIE_2");
bankRollString = savedInstanceState.getString("BANK_ROLL");
betAmountString = savedInstanceState.getString("BET_AMOUNT");
roll.setText(String.valueOf(rollTotal));
point.setText(String.valueOf(pointValue));
results.setText(String.valueOf(result));
bankRollText.setText(String.valueOf(bankRollString));
betText.setText(String.valueOf(betAmountString));
// resets dice image values for onRestoreInstanceState
if(d1 == 1) {
dice1Image.setImageResource(R.drawable.die1);
}
else if(d1 == 2) {
dice1Image.setImageResource(R.drawable.die2);
}
else if(d1 == 3) {
dice1Image.setImageResource(R.drawable.die3);
}
else if(d1 == 4) {
dice1Image.setImageResource(R.drawable.die4);
}
else if(d1 == 5) {
dice1Image.setImageResource(R.drawable.die5);
}
else if(d1 == 6) {
dice1Image.setImageResource(R.drawable.die6);
}
if(d2 == 1) {
dice2Image.setImageResource(R.drawable.die1);
}
else if(d2 == 2) {
dice2Image.setImageResource(R.drawable.die2);
}
else if(d2 == 3) {
dice2Image.setImageResource(R.drawable.die3);
}
else if(d2 == 4) {
dice2Image.setImageResource(R.drawable.die4);
}
else if(d2 == 5) {
dice2Image.setImageResource(R.drawable.die5);
}
else if(d2 == 6) {
dice2Image.setImageResource(R.drawable.die6);
}
} // end onRestoreInstanceState method
public class function implements AdapterView.OnItemSelectedListener {
public void onItemSelected(AdapterView<?> adapterView, View v, int pos, long l)
{
// passes selected spinner variable to textViewBetAmount
String betString = adapterView.getItemAtPosition(pos).toString();
betText.setText(betString);
} // end onItemSelected method
public void onNothingSelected(AdapterView<?> adapterView)
{
} // end onNothingSelected method
} // end function inner class
} // end MainActivity class
公共类MainActivity扩展活动
{
//声明
私人按钮按钮1,按钮2;
私有图像查看Dice1图像;
私有图像视图2图像;
私有文本视图卷;
私人视角;
私有文本视图结果;
私有文本视图;
私有文本视图bankRollText;
私有字符串结果;
字符串betAmountString;
字符串倾斜字符串;
私人纺纱机;
int=1=7;
int=2=11;
int loseNumber1=2;
int loseNumber2=3;
int loseNumber3=12;
整数=0;
int rollTotal=0;
int pointValue=0;
私有int WinsCenter=0;
专用计数器=0;
@凌驾
创建时的公共void(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
//从activity_main.xml获取视图
setContentView(R.layout.activity_main);
//初始化对象
dice1Image=(ImageView)findViewById(R.id.imageViewDie01);
dice2Image=(ImageView)findViewById(R.id.imageViewDie02);
roll=(TextView)findViewById(R.id.textViewRollTotal);
点=(TextView)findViewById(R.id.textViewPoint);
结果=(TextView)findViewById(R.id.results);
button1=(按钮)findViewById(R.id.howToPlayButton);
button2=(按钮)findViewById(R.id.backToHomeButton);
bettingSpinner=(微调器)findViewById(R.id.betSpinner);
betText=(TextView)findViewById(R.id.textViewBetAmount);
bankRollText=(TextView)findViewById(R.id.textViewBuyInAmount);
如果(savedInstanceState==null){
结果:setVisibility(View.GONE);
}
//从HomeActivity上的微调器获取所选变量
TextView buyInText=(TextView)findViewById(R.id.textViewBuyInAmount);
buyInText.setText(getIntent().getExtras().getString(“buyInAmount”));
//查询数据,将其放入字符串数组并使用ArrayAdapter构造函数
ArrayAdapter=ArrayAdapter.createFromResource(这个,R.array.bet,android.R.layout.simple\u微调器\u项);
setDropDownViewResource(android.R.layout.simple\u微调器\u项);
设置适配器(适配器);
bettingSpinner.setOnItemSelectedListener(新函数());
//还原instanceState
如果(savedInstanceState!=null){
onRestoreInstanceState(savedInstanceState);
}
//捕获按钮点击
button1.setOnClickListener(新的OnClickListener()
{
公共void onClick(视图arg1)
{
//启动NewActivity.class
Intent myIntent=新Intent(MainActivity.this,
新活动(课堂);
//myIntent.putExtra(“buyInAmount”,buyInAmountGlobalVar);
星触觉(myIntent);
}
});//结束setOnClickListener
//捕获按钮点击
button2.setOnClickListener(新的OnClickListener()
{
公共void onClick(视图arg2)
{
//启动HomeActivity.class
Intent myIntent=新Intent(MainActivity.this,
家庭活动(课堂);
星触觉(myIntent);
}
});//结束setOnClickListener
}//结束onCreate方法
int d1、d2;
int betInt,bankRollInt;
布尔赢=假;
布尔丢失=假;
//单击滚动按钮时初始化rollClicked方法
已单击的公共视图(视图v){
智力骰子1,骰子2;
betInt=Integer.valueOf(bettingSpinner.getSelectedItem().toString());
bankRollInt=Integer.valueOf(bankRollText.getText().toString());
Random rand1=新的Random();
Random rand2=新的Random();
dice1=rand1.nextInt(6)+1;
dice2=rand2.nextInt(6)+1;
//设置骰子图像的值
如果(1==1){
dice1Image.setImageResource(R.drawable.die1);
d1=1;
}
否则如果(1==2){
Dice1图像设置图像资源(R.drawable.die2);
d1=2;
}
否则如果(1==3){
Dice1图像设置图像资源(R.drawable.die3);
d1=3;
}
否则如果(1==4){
dice1Image.setImageResource(R.drawable.die4);
d1=4;
}
否则如果(1==5){
dice1Image.setImageResource(R.drawable.die5);
d1=5;
}
否则如果(1==6){
dice1Image.setImageResource(R.drawable.die6);
d1=6;
}
如果(2==1){
dice2Image.setImageResource(R.drawable.die1);
d2=1;
}
else if(dice2==2){
dice2Image.setImageResource(R.drawable.die2);
d2=2;
rounds++;
// reset point if player wins or loses
if (win = true){
point.setText("0");
} else if (lose = true){
point.setText("0");
}
// reset point if player wins or loses else keep playing
if(resetPointValue == true) {
rounds = 0;
pointValue = 0;
}
else {
rounds++;
}
private boolean resetPointValue = false;
// initializes rollClicked method when ROLL button is clicked
public void rollClicked(View v) {
int dice1, dice2;
betInt = Integer.valueOf(bettingSpinner.getSelectedItem().toString());
Random rand1 = new Random();
Random rand2 = new Random();
dice1 = rand1.nextInt(6) + 1;
dice2 = rand2.nextInt(6) + 1;
// sets values for dice images
if(dice1 == 1) {
dice1Image.setImageResource(R.drawable.die1);
d1 = 1;
}
else if(dice1 == 2) {
dice1Image.setImageResource(R.drawable.die2);
d1 = 2;
}
else if(dice1 == 3) {
dice1Image.setImageResource(R.drawable.die3);
d1 = 3;
}
else if(dice1 == 4) {
dice1Image.setImageResource(R.drawable.die4);
d1 = 4;
}
else if(dice1 == 5) {
dice1Image.setImageResource(R.drawable.die5);
d1 = 5;
}
else if(dice1 == 6) {
dice1Image.setImageResource(R.drawable.die6);
d1 = 6;
}
if(dice2 == 1) {
dice2Image.setImageResource(R.drawable.die1);
d2 = 1;
}
else if(dice2 == 2) {
dice2Image.setImageResource(R.drawable.die2);
d2 = 2;
}
else if(dice2 == 3) {
dice2Image.setImageResource(R.drawable.die3);
d2 = 3;
}
else if(dice2 == 4) {
dice2Image.setImageResource(R.drawable.die4);
d2 = 4;
}
else if(dice2 == 5) {
dice2Image.setImageResource(R.drawable.die5);
d2 = 5;
}
else if(dice2 == 6) {
dice2Image.setImageResource(R.drawable.die6);
d2 = 6;
}
// calculate sum of dice for each roll
if (rounds >= 0)
{
rollTotal = sum(dice1, dice2);
roll.setText(String.valueOf(rollTotal));
}
else {
point.setText(String.valueOf(pointValue));
}
// win on first roll
if((dice1 + dice2 == winNumber1 || (sum(dice1, dice2) == winNumber2)) && rounds == 0) {
winsCounter++;
bankRollInt = bankRollInt + betInt;
bankRollText.setText(String.valueOf(bankRollInt));
// display win result
results.setVisibility(View.VISIBLE);
resetPointValue = true;
}
// lose on first roll
else if(rounds == 0 && (sum(dice1, dice2) == loseNumber1 || sum(dice1, dice2) == loseNumber2 || sum(dice1, dice2) == loseNumber3)){
loseCounter++;
bankRollInt = bankRollInt - betInt;
bankRollText.setText(String.valueOf(bankRollInt));
results.setVisibility(View.VISIBLE);
results.setText("House wins! You Lose.");
resetPointValue = true;
}
// display round results if no win or lose on first roll
else if(rounds == 0) {
pointValue = sum(dice1, dice2);
results.setVisibility(View.VISIBLE);
point.setText(String.valueOf(pointValue));
bankRollText.setText(String.valueOf(bankRollInt));
results.setText("Point established. It is " + pointValue + ". Roll Again.");
resetPointValue = false;
}
// lose if player hits 7 after first roll
if(rounds > 0 && (sum(dice1, dice2) == 7)) {
loseCounter++;
bankRollInt = bankRollInt - betInt;
bankRollText.setText(String.valueOf(bankRollInt));
results.setVisibility(View.VISIBLE);
results.setText("House wins! You Lose.");
resetPointValue = true;
}
// player wins if roll = pointValue after first roll
else if(rounds > 0 && (sum(dice1, dice2) == pointValue)) {
winsCounter++;
bankRollInt = bankRollInt + betInt;
bankRollText.setText(String.valueOf(bankRollInt));
// display win result
results.setVisibility(View.VISIBLE);
resetPointValue = true;
}
// display round results if no win or lose after first roll
else if(rounds > 0 && (sum(dice1, dice2) != pointValue && sum(dice1, dice2) != 7)){
results.setVisibility(View.VISIBLE);
bankRollText.setText(String.valueOf(bankRollInt));
results.setText("No one wins. Keep rolling Dice.");
}
if(resetPointValue == true) {
rounds = 0;
pointValue = 0;
}
else {
rounds++;
}
} // end rollClicked method
// calculate sum of dice
public int sum(int num1, int num2) {
return num1 + num2;
} // end sum method