This post is primary for HGMuller, as is he who is releasing winboard.
I implemented a menu in winboard to be able to play against a engine with fixed depth (it was already implemented, just there was no menu to make this option available through menu in windows). I put it in the Time Control menu, as it is primary a feature of time control.
I also enabled what i think must be the best way to play against a fixed depth: the machine spents at least the time it would use in case that it was not playing in fixed depth. I've done this just before the call of HandleMachineMove. I intercept all the messages from the engine where appears the string move. This way, the first time the engine move at normal depth, i intercept it, undo this move, and ask the engine to play at a fixed depth. The next time i receive a move instruction, it is from fixed depth thinking, i set back the depth to 100 (to be sure it plays again as strong as always) and send the instruction to HandleMachineMove.
Why do i do this? I could put just a delay in HandleMachineMove, but doing this this way, i get the score of the position with a good thinking in it, and i will have a good display score, plus i can calculate how well the user is playing comparing the score of a position before and after the user move.
All this will be usefull when the depth is not high, so the machine takes no time reaching it. Maybe it can be bad when the user asks for a big depth... but i think that almost all ppl who wants to play at fixed depth but the engine playing at a normal rate, would want low depths, so they have a chance to win.
Maybe there could be an option to let the user decide if they want the computer to ask as fast as it reach this depth, or if they rather prefer to let it think normally...
I would want to know if HGMuller is interested in this implementation, possibly with some changes, or if he has no interest at all, so i dont improve it any further (as it makes the trick for me).
Another change i would love to have is about the training mode. ATM u can load a game and set training mode on (beware, not always work!). A problem there is that u can see the history of the game up to the end, this makes no sense, because then u can just look at it and do the correct move. It would be great to display just the moves up to the current position.
Another change that must be done is about loading the next game: it makes no sense that when u load a new game, the training mode is automatically set to off. If im training a lot of positions, then i want to load one after another but remain in training until i decide i dont want to train more, isn't it?
And another change that would make this mode better is to have a window that ask u to input the move u think is the best.
Oh, and last, and maybe not so important, but that will make the training mode better than other chess software, it would be great to have a button in the same window that tells u that the move is not correct which was called "refutation", and when u make a mistake, u can push it and then automatically an engine is loaded and answer your incorrect move, as a normal game. When you understand why your move is not correct (because the engine is smashing you in the game), you push a button that can be called "return to the position", and then the game is set back to the initial position where u made a bad move.
It happened to me to made a bad move, and i wanted to know why it was a bad move, and CT-Art does not allow you to see the evaluation of the engine while you are training.
If some1 is interested in help me programing all this, or if it is interesting to have it in winboard and Muller wants me to do all this things in a certain way compatible with everything else in winboard, let me know.