chess icon indicating copy to clipboard operation
chess copied to clipboard

Chess app written in Java in 2005. Winner of the OBEA programming contest at age 17.

=chess

This is the Chess app that won first prize back in 2005 for the {OBEA Computer Programming Contest}[http://www.obea.ca/contests_winners_2005.htm] by Arwid (Arvydas) Bancewicz at age 17.

== References

  • https://sourceforge.net/projects/aichess (236 downloads as of Feb 23 2012)
  • http://mac.softpedia.com/get/Games/Arvydas-Chess.shtml (224 downloads as of Feb 23 2012)
  • http://mac.softpedia.com/get/Games/Bancewicz-Chess.shtml (204 downloads as of Feb 23 2012)

== Highlights Extracted from javadoc.

  • {algorithms/}[http://github.com/Arwid/chess/tree/master/source/chess/algorithms]
    • {MiniMax}[http://github.com/Arwid/chess/blob/master/source/chess/algorithms/MiniMax.java] serves as the foundation of chess programs. It is a strategy that minimizes the maximum risk for a player, going through all of the branches in the move tree and evaluating the board position.
    • {AlfaBeta}[http://github.com/Arwid/chess/blob/master/source/chess/algorithms/AlfaBeta.java] is a refined minimax strategy that identifies unfavorable branches in the move tree and removes them early, thus speeding up the search process. This technique is called "alfa-beta pruning".
    • {NegaScout}[http://github.com/Arwid/chess/blob/master/source/chess/algorithms/NegaScout.java] is a variation of the "alfa-beta pruning" technique.
    • {PrincipalVariation}[http://github.com/Arwid/chess/blob/master/source/chess/algorithms/PrincipalVariation.java] is a variation of alpha-beta search where all nodes outside the principal variation are searched with a minimal window beta = alpha + 1. The idea is that with perfect move ordering all moves outside the principal variation will be worse than the principal variation.
    • {MoveAlgorithm (SuperClass)}[http://github.com/Arwid/chess/blob/master/source/chess/algorithms/MoveAlgorithm.java] is the super class for the search algorithms. It consists of all the required utilities defining a playable chess game, such as: move definitions, composing moves from move definitions, applying board position circumstances to the move definition (eg. a piece cannot move to put it's king in check), composing lists of possible moves, and board evaluations based on piece and position costs.
  • {core/}[http://github.com/Arwid/chess/tree/master/source/chess/core]
  • {gui/}[http://github.com/Arwid/chess/tree/master/source/chess/gui]
    • {board/}[http://github.com/Arwid/chess/tree/master/source/chess/gui/board]
    • {lookAndFeel/}[http://github.com/Arwid/chess/tree/master/source/chess/gui/lookAndFeel]
    • {panels/}[http://github.com/Arwid/chess/tree/master/source/chess/gui/panels]
  • {media/}[http://github.com/Arwid/chess/tree/master/source/chess/media]
    • {images/}[http://github.com/Arwid/chess/tree/master/source/chess/media/images]
    • {sound/}[http://github.com/Arwid/chess/tree/master/source/chess/media/sound]
  • {network/}[http://github.com/Arwid/chess/tree/master/source/chess/network]
  • {online/}[http://github.com/Arwid/chess/tree/master/source/chess/online]
  • {properties/}[http://github.com/Arwid/chess/tree/master/source/chess/properties]

== Copyright

Copyright © 2005 Arwid (Arvydas) Bancewicz

GNU GENERAL PUBLIC LICENSE Version 2, June 1991.

See {source/chess/GNULicence.txt}[http://github.com/Arwid/chess/blob/master/source/chess/GNULicence.txt] for details.