- Object oriented Chess game model (MVC based)
- Legal move generation
- Game history with variation support (alternative move suggestions)
- Move comment support in text and Numeric Annotation Glyphs (NAG)
- Standard Algebraic Notation (SAN) read/write support (internationalized for presentation in 16 languages)
- Portable Game Notation (PGN) read/write support (including move variations, and FEN)
- Forsyth-Edwards Notation (FEN) read/write support
- True MVC structure with board displays driven by game model events
- Command-line Board display
- Well documented. Sample code also provided.
- FICS support (freechess.org)
ictk is distributed under the MIT License
If you're looking for a super fast Java implementation of a chess model to use as a basis for a chess engine you need to look elsewhere. The design goal of this library has never been speed. If it were it would create a LOT fewer objects. Instead, the goal of ictk is to render chess in a natural object oriented way that is both easy to use and well documented.
This library started out in 1997 as a proof of Object Oriented Design concepts. The chess pieces act as agents and generate their own moves after analysis of the board state. A move object is an implementation of a Command Pattern. And so on.
The Internet Chess Server (ICS/FICS) support converts the server's telent text into POJOs, implementing a MVC based EventListener model for client code to easily process. As Java is overly verbose, and the messages are relatively simplistic, the parsing is done in XML and converted to Java POJOs via XSTL. The approach may seem overly complex to you, but saves a lot of time.
Finally, this is not a graphics library, it is a game modeling library. It provides for reading and writing standard game notations as well.
The following commands will retrieve the latest source, generate the source code through XSLT, compile, create the Java-Doc and make the full jar file. Just add the jar file to your
$ git clone https://github.com/jvarsoke/ictk $ cd ictk $ ant build
The javadoc documentation can be generated through Ant, or found online for the latest stable version.
If you find this library useful, drop me an email just to let me know what you're doing with it. Even if you're just messing around. Knowing someone is using this encourages me to dedicate time toward improving ictk -- otherwise I have lots of other things to donate my time to. Thanks.