让用户玩石头,纸,剪刀的递归功能-SCALA

问题描述

我正在编写一个递归函数,该函数使用户可以演奏石头,纸张,剪刀,直到用户或计算机获胜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 (将#修改为@)