Kotlin 条件下的两个优先级
Two priorities in a condition in Kotlin
我做了一个生成随机数的简单游戏,玩家需要猜测随机数。玩家只有 6 次猜测机会,如果玩家在这 6 次机会中没有猜到数字,则游戏将结束。问题是当玩家在 第六次机会 上输入 RIGHT 答案时。系统显示 imgLose
即使答案是 TRUE.
这里是代码段:
guessCount += 1
when {
guessNumber > randomNumber -> {
status.text = "Less than ${tGuess.text}"
tGuess.text = ""
}
guessNumber < randomNumber -> {
status.text = "More than ${tGuess.text}"
tGuess.text = ""
}
guessNumber == randomNumber -> {
status.text = "You're Correct! \nThe Answer is ${randomNumber.toString()}"
btnGuess.isEnabled = false
imgWin.visibility = View.VISIBLE
var soundEffect = MediaPlayer.create(this, R.raw.wining)
soundEffect.start();
}
}
if (guessCount == guessLimit){
status.text = "The Limit is Exceeded! \nThe Answer is $randomNumber"
btnGuess.isEnabled = false
var soundEffect = MediaPlayer.create(this, R.raw.losing)
soundEffect.start();
imgLose.visibility = View.VISIBLE
}
The result with coding right now
有很多方法可以处理这个问题,但也取决于您的其余代码。
如果可能的话,如果该函数中没有其他相关代码,您可以尝试在正确猜测后简单地return
。
另一种方法是将是否有正确的猜测保存在一个布尔值中并检查它。例如:
var isCorrect = false
guessCount += 1
when {
guessNumber > randomNumber -> {
status.text = "Less than ${tGuess.text}"
tGuess.text = ""
}
guessNumber < randomNumber -> {
status.text = "More than ${tGuess.text}"
tGuess.text = ""
}
guessNumber == randomNumber -> {
status.text = "You're Correct! \nThe Answer is ${randomNumber.toString()}"
btnGuess.isEnabled = false
imgWin.visibility = View.VISIBLE
var soundEffect = MediaPlayer.create(this, R.raw.wining)
soundEffect.start();
isCorrect = true
}
}
if (guessCount == guessLimit && !isCorrect){
status.text = "The Limit is Exceeded! \nThe Answer is $randomNumber"
btnGuess.isEnabled = false
var soundEffect = MediaPlayer.create(this, R.raw.losing)
soundEffect.start();
imgLose.visibility = View.VISIBLE
}
实际上只需更改此行就足够了,因为它只会在正确猜测时被禁用:
if (guessCount == guessLimit && btnGuess.isEnabled){
我做了一个生成随机数的简单游戏,玩家需要猜测随机数。玩家只有 6 次猜测机会,如果玩家在这 6 次机会中没有猜到数字,则游戏将结束。问题是当玩家在 第六次机会 上输入 RIGHT 答案时。系统显示 imgLose
即使答案是 TRUE.
这里是代码段:
guessCount += 1
when {
guessNumber > randomNumber -> {
status.text = "Less than ${tGuess.text}"
tGuess.text = ""
}
guessNumber < randomNumber -> {
status.text = "More than ${tGuess.text}"
tGuess.text = ""
}
guessNumber == randomNumber -> {
status.text = "You're Correct! \nThe Answer is ${randomNumber.toString()}"
btnGuess.isEnabled = false
imgWin.visibility = View.VISIBLE
var soundEffect = MediaPlayer.create(this, R.raw.wining)
soundEffect.start();
}
}
if (guessCount == guessLimit){
status.text = "The Limit is Exceeded! \nThe Answer is $randomNumber"
btnGuess.isEnabled = false
var soundEffect = MediaPlayer.create(this, R.raw.losing)
soundEffect.start();
imgLose.visibility = View.VISIBLE
}
The result with coding right now
有很多方法可以处理这个问题,但也取决于您的其余代码。
如果可能的话,如果该函数中没有其他相关代码,您可以尝试在正确猜测后简单地return
。
另一种方法是将是否有正确的猜测保存在一个布尔值中并检查它。例如:
var isCorrect = false
guessCount += 1
when {
guessNumber > randomNumber -> {
status.text = "Less than ${tGuess.text}"
tGuess.text = ""
}
guessNumber < randomNumber -> {
status.text = "More than ${tGuess.text}"
tGuess.text = ""
}
guessNumber == randomNumber -> {
status.text = "You're Correct! \nThe Answer is ${randomNumber.toString()}"
btnGuess.isEnabled = false
imgWin.visibility = View.VISIBLE
var soundEffect = MediaPlayer.create(this, R.raw.wining)
soundEffect.start();
isCorrect = true
}
}
if (guessCount == guessLimit && !isCorrect){
status.text = "The Limit is Exceeded! \nThe Answer is $randomNumber"
btnGuess.isEnabled = false
var soundEffect = MediaPlayer.create(this, R.raw.losing)
soundEffect.start();
imgLose.visibility = View.VISIBLE
}
实际上只需更改此行就足够了,因为它只会在正确猜测时被禁用:
if (guessCount == guessLimit && btnGuess.isEnabled){