Actions._directions
предположительно словарь, поэтому строка:
dx, dy = Actions._directions[direction]
во время выполнения (на основании сообщения об ошибке):
dx, dy = Actions._directions["W"]
и жалуется, что в этом словаре нет ключа "W". Поэтому вы должны проверить, что вы действительно добавили этот ключ с некоторым значением. Кроме того, вы можете сделать что-то вроде:
dx, dy = Actions._directions.get(direction, (0, 0))
где (0, 0) может быть любым значением по умолчанию, которое вы выбираете, когда такой клавиши нет. Другая возможность - обработать ошибку явно:
try:
dx, dy = Actions._directions[direction]
except KeyError:
# handle the error for missing key