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