]> code.delx.au - gnu-emacs-elpa/blob - TODO
some notes added
[gnu-emacs-elpa] / TODO
1 These are features scheduled for future 2.x releases.
2
3 ----------------------------------------------------------------------
4
5 General Features
6
7 - Use TrueType or other chess fonts for displaying positions; this
8 might be the best way of displaying positions on Windows
9
10 - Enable the chat module, and base its interface on what TNT does
11
12 - Merge chess-announce and chess-sound, and use style modules on top
13 of the underlying module
14
15 - Create a generic chess-output interface, for outputting games to a
16 particular format (PGN, HTML, LaTeX, etc)
17
18 - Display in the modeline which game in the database we're in, and
19 what the positional evaluation is
20
21 - Add a `force' event for forcing an engine to move, and a command
22 from chess-display to send this event
23
24 - If you are playing a puzzle game, and the engine is thinking, and
25 you hit space to move to the next puzzle, then when the last move is
26 finally received from the engine it causes an error.
27
28 - Clean up chess.el, and let people override the chess-default-* lists
29
30 - Write chess-descriptive.el, and have the code in general use
31 chess-ply-to-string and chess-string-to-ply, so that users can use
32 descriptive notationas an alternative to algebraic.
33 (NOTE: this might proof problematic since descriptive move notation
34 is ambigious if we don't have the full game information, since
35 we need to destinguish between QR KR QN and KN. So chess-descriptive-to-ply
36 would need to use a game object as reference, rather than just a position.)
37
38 - Change chess-announce/sound so that it reads from the text rendition
39 of the move; this way it will work with either descriptive or
40 algebraic notation. Also, chess-announce and chess-sound can be
41 collapsed into one module, with different "styles" of announcing.
42
43 - Write chess-epd.el, which is based on chess-fen, and is also a
44 database module for accessing positions within an EPD file
45 (This has mostly already been done, however, chess-epd still needs to be
46 converted to a database module.)
47
48 - Make ( create variations in a display, and keys to move into and out
49 of them. At the moment, variations are supported programmatically,
50 but not in the UI.
51
52 - Make a display read-only mode, which allows people to view/browse
53 but not alter a game. This could be used for remoting displays in
54 order that people on other X servers might observe a game.
55
56 - Implement the "50 moves after irreversible" draw rule in chess-ply
57
58 - Port the code to XEmacs
59
60 - Find a way to display pieces on Windows platforms, or at least
61 document how to build XPM support into Emacs for Windows
62
63 - Add a way to include the chess-ucb module in the list of default
64 modules created via M-x chess. Right now there is no facility for
65 having two engines associated with a single game (and chess-link
66 is not what we want in this case).
67
68 ----------------------------------------------------------------------
69
70 ICS Client
71
72 - Add a completion function against logged in users
73
74 - Copy some of ics.el's nicer functionality into chess-ics.el
75
76 ----------------------------------------------------------------------
77
78 PGN Mode
79
80 Maybe pgn-mode could just allow normal editing, and bind some keys
81 to do special things. e.g., the mouse binding could work as normal,
82 SPC could update the display. So if you do
83
84 1 e4 SPC
85 you get the move displayed. Some binding could do redisplay anyway, e.g. C-l?
86 Then, one could enter variations or such simply with ( or { and
87 the display would update automatically.
88 e.g., you do
89 ( 15.e5 SPC Nf3 SPC )
90 and you'd get three display updates, on e5 SPC, you get that
91 ply, then the second one, and on ) you get the position before the
92 variation. Move point into the variation again, and hit C-l and you
93 get the pos where point is on.
94
95 There should be a forward-ply and backward-ply, maybe something like
96 M-f / M-b, and C-u M-f for two plies forward?
97
98 Very nice would be a pcomplete-based completion fascility, so
99 simply hit TAB at any point, and you get the right completion.
100 Example:
101
102 [Event ...]
103
104 TAB 1.TAB ...
105
106 On first tab, the move number is inserted. On second, you get
107 all possible moves in that position.
108
109 ----------------------------------------------------------------------
110
111 Chess by Mail
112
113 - Add support for adjournments; also, implement this is such a way
114 that an e-mail or postal game is basically a game that's adjourned
115 after every move; use BBDB if available
116
117 - Use MIME attachments (application/x-chess-pgn) for sending e-mail
118 chess games back and forth.
119
120 ----------------------------------------------------------------------
121
122 Database Interaction
123
124 - Enable UI commands in chess-display to interact with databases. As
125 of 2.0, this support is programmatic only.
126
127 - Follow what `edit-env' does, in order to make chess-query.el.
128
129 ----------------------------------------------------------------------
130
131 Training/Tutorials
132
133 - Write a scripted chess-tutorial.
134
135 - Allow the opponent to give hints.
136
137 - Add a warning mode that will use the results of an analysis to warn
138 the user (and ask for confirmation) before doing something that
139 might lead to an inferior position.
140
141 - Add a chess tutor program, to teach people how to play chess
142
143 ----------------------------------------------------------------------
144
145 Analysis features
146
147 - Add slots to each position for keeping track of positional
148 evaluation (these values can be automatically determined when
149 parsing ICS12)
150
151 - Add an engine function for obtaining an evaluation of the current
152 position. Then, allow M-x chess to startup a non-game oriented
153 engine, solely for the purpose of submitting position evaluations,
154 and displaying the result in the modeline. (Also, look at crafty's
155 kibitzing feature).
156
157 - Add a Map command, that will colorize the squares depending on
158 whether they are reachable by either side. Green if reachable by
159 you, Red if by your opponent, and blue if by both. With a prefix
160 argument, colorize only the squares that have pieces on them. This
161 is a stable modes that remains in effect until turned off. It also
162 requires the ability to pass a color to the chessboard highlighting
163 routine.
164
165 - Using gnuplot-mode, allow evaluation trends to be plotted
166
167 - Add an analyze command that will indicate which pieces are defended,
168 how well, which are attacked, which moves would increase
169 defense/attack/both, etc. Basically, everything that can be known
170 about the current board, and one move ahead (on both sides).
171
172 ----------------------------------------------------------------------
173
174 Other variations
175
176 - Need a way to play bughouse/crazyhouse games.
177
178 ----------------------------------------------------------------------
179
180 Other features
181
182 - Keeping a player database in BBDB
183
184 - Managing a tournament, setting up pairings, calculating ratings