chess
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.