В настоящее время я знакомлюсь с курсом java, и я озадачен здесь ..
Я создал rollDice()
метод, который использует Math.random
для получения 2 int
значений типа, хранящихся в переменных d1
и d2
.Если сумма значений равна 4,6,8,9,10 или 11, то из этой суммы устанавливается valuePoint
, а затем вызывается перегруженный метод play(int d1, int d2)
, когда игральные кости снова бросаются до тех пор, пока сумма не станет равной7 (вы проиграли) или сумма равна оригиналу valuePoint
, установленному в первом методе.
Моя проблема в том, что я не могу сохранить исходный valuePoint
постоянным, потому что он впервые установлен как valuePoint = sum
.Поэтому каждый раз, когда я бросаю кубик вторым способом, valuePoint
снова меняется на равную сумму.Надеюсь, я хорошо объяснил свою проблему.
public void play(){
rollDice();
sum = d1 + d2;
if(sum == 2 || sum == 3 || sum == 5) {
status = "You Lose.";
valuePoint = 0;
System.out.println(status);
}
else if(sum == 7 || sum == 11) {
status = "You Win!";
valuePoint = 0;
System.out.println(status);
}
else {
status = "You established the value point ";
valuePoint = sum;
System.out.println(status + valuePoint);
}
if(valuePoint == sum)
play(d1,d2);
} // end of method
public void play(int d1, int d2){
final int vp = valuePoint;
sum = 0;
start = true;
while (true) {
System.out.println("Roll again..");
rollDice();
sum = d1 + d2;
if (sum == vp) {
status = "You Win!";
System.out.println(status);
start = false;
break;
}
else if (sum == 7) {
status = "You Lose.";
System.out.println(status);
start = false;
break;
}
} // end of while
} // end of method
Вот пример моего вывода ..
You rolled 1 + 5 = 6
You established the value point 6
Roll again..
You rolled 2 + 6 = 8
You Win!
Обратите внимание, что второй бросок не достиг valuepoint
, но все равновыигрыш, потому что valuePoint
был изменен на новую сумму.
Также в вопросе приведены атрибуты и операции, поэтому я должен следовать этому API для достижения полной оценки.Единственная переменная, которую я добавил к атрибутам, была последней int vp
в попытке сохранить эту чертову valuePoint
постоянной, когда она была впервые установлена, но это не сработало.