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.
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.
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.
r
c
s
R
C
S
d
u
n
p
a
e
t
b
,
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./
.
Notes on how invormation is spoken:
M-r
,
M-c
and M-s
erase the current row,
column or sub-square respectively. These commands would probably
be convenient to have independent of whether one is using visual
output.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.