GithubHelp home page GithubHelp logo

terredeciels / chesspresso Goto Github PK

View Code? Open in Web Editor NEW

This project forked from bernhardseybold/chesspresso

0.0 1.0 0.0 1.34 MB

Chesspresso is an open-source chess librarary, written entirely in Java

Java 100.00%

chesspresso's Introduction

What Is Chesspresso™?

Chesspresso™ is Java library to help developers in writing any kind of chess program. It is open-source (LGPL) and contains state-of the art algorithms to implement chess concepts.

What Is Chesspresso™ For?

When you always wanted to write a chess application but feared the effort to implement all the necessary data structures and rules, Chesspresso™ is the just what you might be looking for. Chesspresso™ wants to be the library you base your next Java chess-program on. It is prepared to a base for all kinds of chess applications, be it databases, game browsers, statistic programs, engines, front-end for internet chess servers, teaching programs, etc.

Short History

Chesspresso™ was actually not only a chess library, but a full database program. Feel free to download that version as well (not open-source). Recently, I decided to make the core of the application open-source and call it Chesspresso™ as well. I have not decided yet how to resolve that confusion.

Power versus Performance

If your goal is to write a world-class chess engine, Java should not be your language of choice. However, if you have the choice to use a speedy versus a slow implementation, you would also choose the former one, wouldn't you? If it is not too expensive both money and time-wise. And it is neither!

Chesspresso™ tries to combine both performance (memory footprint and speed) and programmatical power (through high-level abstractions and interfaces). Chesspresso™ was optimized for speed but only if it did not harm clean design.

Main Concepts

Browse the entire Javadoc to get an impression on the available features.

Fundamental Models

  • Chess: a class containing general definitions for chess
  • Move: a class representing chess moves
  • Position: several abstractions of a chess position are available: immutable, mutable, and moveable position (move, undo move, generateAllMoves) interfaces plus implementations, the main one is based on bitboards.
  • Game: abstraction of a chess game with support for lines, annotations, ability to traverse, walk through the game, etc.

Views

  • PositionView: an interactive panel to display a position, reacts on piece dragging and square clicking and fowrads events to listeners
  • GameBrowser: an interactive panel to display a game, contains both a textual (based on PGN) and a graphical view (based on the free Chess Cases font), support for browsing the game
  • HTMLGameBrowser: produces HTML displaying a game, allowing to browse through the game with a web browser. Uses JavaScript. Here is an example.

Standards

  • PGN (portable game notation): the de-facto standard for ASCII-based game collections. Chesspresso™ contains a high-speed PGNReader and PGNWriter
  • FEN (Forsyth-Edwards Notation): a standard for describing chess positions using the ASCII character set. Chesspresso™ contains support to parse and generate FENs
  • NAG (Numeric Annotation Glyph): to annotate chess moves and games Chesspresso™ understands NAG and symbolic and English descriptions
  • xboard: contains a class to start xboard compatible engines (like crafty)
  • EPD support will follow soon.

ChesspressoBar, Plugins (future plans)

When you always wanted to create a small chess releated program but feared the overhead for all the basic functionality to get started, the ChesspressoBar is for you.

The ChesspressoBar is an application to work with chess games and collections. It allows to read and write PGN files, to view and create games, and much more. The main feature of the ChesspressoBar, however, is that is allows to house plugins. Plugins comprise some chess-related functionality that can be plugged into a framework.

Possible plugin include playing engines, statistic modules, teaching application. Basically everything that operates on chess games and positions.

The ChesspressoBar will be released within one of the next releases of Chesspresso.

Who Wrote Chesspresso™?

The author of Chesspresso™ is Bernhard Seybold. That's me. I own a Ph.D. in computer science from the Federal Institute of Technology in Zurich (ETHZ). No not in chess programming. However, I took all the courses that were slightly related to AI, computer games, algorithms, data-structures etc. Now, I work as a senior software developer for ELCA, a leading supplier of IT services in Switzerland. I play chess since over 20 years and still do (ELO 2100). Sometimes I play on FICS, as BerniMan. My first game playing program was a connect4 engine, which I wrote competing against this guy. As you can see on his webpage, he still has his version plus a world-class engine for Checkers. Now I thought it is my turn...

chesspresso's People

Contributors

bernhardseybold avatar davecom avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.