feat: undo/redo added
This commit is contained in:
@@ -20,7 +20,7 @@ class TerminalUI(engine: GameEngine) extends Observer:
|
||||
print(Renderer.render(e.board))
|
||||
e.capturedPiece.foreach: cap =>
|
||||
println(s"Captured: $cap on ${e.toSquare}")
|
||||
println(s"${e.turn.label}'s turn. Enter move (or 'quit'/'q' to exit):")
|
||||
printPrompt(e.turn)
|
||||
|
||||
case e: CheckDetectedEvent =>
|
||||
println(s"${e.turn.label} is in check!")
|
||||
@@ -36,13 +36,13 @@ class TerminalUI(engine: GameEngine) extends Observer:
|
||||
print(Renderer.render(e.board))
|
||||
|
||||
case e: InvalidMoveEvent =>
|
||||
println(s"Invalid move: ${e.reason}")
|
||||
println(s"⚠️ ${e.reason}")
|
||||
|
||||
case e: BoardResetEvent =>
|
||||
println("Board has been reset to initial position.")
|
||||
println()
|
||||
print(Renderer.render(e.board))
|
||||
println(s"${e.turn.label}'s turn. Enter move (or 'quit'/'q' to exit):")
|
||||
printPrompt(e.turn)
|
||||
|
||||
/** Start the terminal UI game loop. */
|
||||
def start(): Unit =
|
||||
@@ -52,7 +52,7 @@ class TerminalUI(engine: GameEngine) extends Observer:
|
||||
// Show initial board
|
||||
println()
|
||||
print(Renderer.render(engine.board))
|
||||
println(s"${engine.turn.label}'s turn. Enter move (or 'quit'/'q' to exit):")
|
||||
printPrompt(engine.turn)
|
||||
|
||||
// Game loop
|
||||
while running do
|
||||
@@ -62,11 +62,16 @@ class TerminalUI(engine: GameEngine) extends Observer:
|
||||
running = false
|
||||
println("Game over. Goodbye!")
|
||||
case "" =>
|
||||
println("Please enter a valid move.")
|
||||
printPrompt(engine.turn)
|
||||
case _ =>
|
||||
engine.processUserInput(input)
|
||||
|
||||
// Unsubscribe when done
|
||||
engine.unsubscribe(this)
|
||||
|
||||
private def printPrompt(turn: de.nowchess.api.board.Color): Unit =
|
||||
val undoHint = if engine.canUndo then " [undo]" else ""
|
||||
val redoHint = if engine.canRedo then " [redo]" else ""
|
||||
print(s"${turn.label}'s turn. Enter move (or 'quit'/'q' to exit)$undoHint$redoHint: ")
|
||||
|
||||
end TerminalUI
|
||||
|
||||
Reference in New Issue
Block a user