Scala从控制台运行游戏

时间:2016-08-20 15:17:05

标签: scala

我正试图从控制台运行下面的国际象棋游戏:

package chess
import java.io.Console

object Game {

  def readCorrectMove(c: Console): String = {
    val move: String = c.readLine()
    if(!(move.length == 4 &&
      1 <= move(0).toInt && move(0).toInt <= 8 &&
      'a' <= move(0) && move(0) <= 'h' &&
      1 <= move(0).toInt && move(0).toInt <= 8 &&
      'a' <= move(0) && move(0) <= 'h')) {
      println("Wrong move!")
      readCorrectMove(c: Console)
    } else {
      move
    }
  }

  def main(args: Array[String]) {

    val c: Console = System.console()
    val board = new Board()

    c.format(board.toString)

    while(true) {
      val wm = readCorrectMove(c)
      c.format(board.toString)
//      if(board.checkMate()) {
//        println("White wins!!!")
//        return
//      }
      val bm = readCorrectMove(c)
      c.format(board.toString)
//      if(board.checkMate()) {
//        println("Black wins!!!")
//      }
    }

  }

}

我希望程序等待用户移动,然后输出结果板。

我不知道怎么做。

如果我运行代码,我会在此行中获得NullPointerException

    c.format(board.toString)

这可能意味着我没有正确使用Console

那么如何在Scala类中创建一个从用户那里获取输入的交互式控制台?

0 个答案:

没有答案