The applet divides in three parts, the graphic interface (IHM), the basic mechanisms, and the center of decisions.
Little to say about the graphic interface, written with AWT it asks only to be improved.
The basic mechanisms, the real skeleton of the application, manage and control all the movements on the board. The speed at which these tasks are implemented depends largely on Cyrano's performance.
Let's talk about the center of decisions. Cyrano's real brain, it integrates most of the latest developments concerning this type of product. Let's examine if closer.
The center of decisions works permanently and complies in its own Thread, the IHM can interrogate it at any time. A IHM request is simply the transmission of a position. It determines then, according to remaining time and the game stage, the time granted to find an answer, then verifies that the position corresponds to the current search (reflection on the opponent's time) and if need be relaunches a study. The granted time is not systematically used, for example if the deep study has little chance of ending.
Opening game: Cyrano borrows from Cassio a mini-opening library, the most common lines with the most frequent answer, Fate (balanced) allows of vary the pleasures. This part is embryonic because it gobbles up memory (best programmes have a library of some Mb, even several dozens Mb).
Mid-game : Cyrano, as all the others, uses a variant of the alpha-beta algoritm, the Negascout. Several improvements have been implemened, iterative deepening which offers, among others, the advantage of finding an answer quickly, Aspiration search reduce the search window, sorting of moves thanks to a shallow search (generaly 1), a TWODEEP type hashtable with ETC anticipation avoids analyzing the same position several times and ProbCut which refutes the least likely moves. But all these developments are worth nothing without a good position evaluation.The evaluation function : Two criteria enter into position evaluation, mobility and structure.The first is estimated, the second is calculated thanks to a statistical study on data bases of games[Wthor][Edax][logistello].They are balanced according to how the game is advancing. M Buro, author of Logistello, has widely commented the subject.
Cyrano uses 3 dynamic patterns(stages 10-54),
and one static pattern for structure.
End-game : Another alpha-beta variant has been implemented, MTD(f) which, it seems to me, is slightly superior for resolving a position than Aspiration Negascout, a ProbCut in its version EndCut speed up the decision-making. Here the evaluation function is insignificant.
Cyrano and its resources are in a JAR archive, whose size is slightly inferior to 128Ko.