我正试图从控制台运行下面的国际象棋游戏:
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类中创建一个从用户那里获取输入的交互式控制台?