问题描述
我正在编写一个递归函数,该函数使用户可以演奏石头,纸张,剪刀,直到用户或计算机获胜3次为止。这是我编写的代码。
println(determineWinner(0,0))
def determineWinner (userWins: Int,compWins:Int):String = {
if (userWins==3 || compWins==3) {
"User won rounds: " +userWins + "\nComputer won rounds: " + compWins
}else{
val rnd = new scala.util.Random; val compChoice = 1 + rnd.nextInt(3)
println("Enter your choice from\n1. 'rock'\n2. 'paper'\n3. 'scissors'\n-------------------")
val userChoice : Double = readDouble()
println("Computer chose " + compChoice)
val computationInt : Double = truncateAt(compChoice/userChoice,1)
computationInt match {
case 3.0 => println("userWins\n"); determineWinner(userWins + 1,compWins)
case 0.6 => println("userWins\n"); determineWinner(userWins + 1,compWins)
case 0.5 => println("userWins\n"); determineWinner(userWins + 1,compWins)
case 1.5 => println("compWins\n"); determineWinner(userWins,compWins+1)
case 2.0 => println("compWins\n"); determineWinner(userWins,compWins+1)
case 0.3 => println("compWins\n"); determineWinner(userWins,compWins+1)
case _ => println("tie\n") ; determineWinner(userWins,compWins)
}
}
}
def truncateAt(n: Double,p: Int): Double = { val s = math pow (10,p); (math floor n * s) / s }
该代码有效,但是我觉得它很长而且很多余。有没有更有效的方法?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)