Emacspeak speech-enables SuDoKu implemented by sudoku.el.
Speech-enabling games is an effective means of discovering what
additions one needs to make to an auditory interface for
working effectively in an eyes-free environment --- this was
aptly demonstrated a few years ago by identifying interesting
conversational gestures by speech-enabling the game of
Tetris --- see Conversational
Gestures For The Audio Desktop from Assets 1998.
Advicing Interactive Commands
As with speech-enabling any Emacs module,
emacspeak-sudoku advices all interactive
commands to produce spoken feedback.
In addition to speaking the cell moved to, all navigation
commands produce an auditory icon that is a function of whether
the cell value is mutable --- original values cannot be changed
and this is indicated with a distinctive icon.
Additional Interactive Commands
Playing SuDoKu effectively requires one to build a good mental image of the state of the board as well as the ability to effectively query the game for currently active constraints. The eye's ability to quickly move around the board and perceive row, column and sub-square constraints needs to be compensated for in an eyes-free environment. As an example, it is too difficult to build the necessary mental model by just listening to the board spoken aloud, or by listening to idnividual cells by navigating to them.
Here are the set of additional interactive commands that needed to be added in order to be able to play the game effectively.
- Speak current row.
- Speak current column
- Speak current sub-square.
- Speak number of remaining cells in current row.
- Speak number of remaining cells in current column.
- Speak number of remaining cells in current sub-square.
- Move to the sub-square below the current sub-square.
- Move to the sub-square above the current sub-square.
- Move to the next sub-square.
- Move to the previous sub-square.
- Move to the beginning of current row.
- Move to the end of the current row.
- Move to the top of the current column.
- Move to the bottom of the current column.
- Speaks information about the overall distribution of
numbers on the board.
d--- Conveys how many instances of each digit have been filled in.
s--- Conveys number of remaining cells in each sub-square.
r--- Conveys number of remaining cells in each row.
c--- Conveys number of remaining cells in each column.
- Speaks number of remaining cells in the current board.
- Speaks value in current cell.
Notes on how invormation is spoken:
- Numbers are spoken in groups of 3 to achieve effective intonation.
- When navigating by sub-squares, point always moves to the top left corner of the sub-square.
- Additional commands bound to
M-serase the current row, column or sub-square respectively. These commands would probably be convenient to have independent of whether one is using visual output.
Effectiveness Of The Resulting Interface
With the above interface in place, the simpler levels of the game are a breeze, levels difficult and evil are sufficiently challenging to be fun.