Files
functional-programming-snake/scala/solutions/Input.scala
T

15 lines
691 B
Scala

package snake
/** m09 input: from keyboard keys to game actions. */
object Input:
// A pattern match on string literals is the lookup table; `|` lists the alternatives.
def keyToAction(key: String): Option[Action] = key match
case "ArrowUp" | "w" | "W" => Some(Action.Turn(Direction.Up))
case "ArrowDown" | "s" | "S" => Some(Action.Turn(Direction.Down))
case "ArrowLeft" | "a" | "A" => Some(Action.Turn(Direction.Left))
case "ArrowRight" | "d" | "D" => Some(Action.Turn(Direction.Right))
case " " => Some(Action.TogglePause) // m10
case "r" | "R" => Some(Action.Restart) // m10
case _ => None