15 lines
691 B
Scala
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
|