Code Monkey home page Code Monkey logo

peterhughes / sharpchess Goto Github PK

View Code? Open in Web Editor NEW
133.0 20.0 87.0 910 KB

SharpChess is a free, open-source computer application that enables you to play chess against the computer. SharpChess is also a chess engine that competes in computer vs. computer chess tournaments. The main goal of this project is to improve SharpChess's chess playing strength. Find out more about chess programming at SharpChess.com or the excellent: http://chessprogramming.wikispaces.com/

Home Page: SharpChess.com

License: GNU General Public License v3.0

C# 90.09% HTML 9.91%

sharpchess's Introduction

SharpChess is a free, open-source, computer application that enables you to play chess against the computer.

SharpChess also uses the Chess Engine Communication Protocol, and can therefore play against other chess engines using WinBoard or Arena. SharpChess has competed in computer vs. computer chess tournaments (WBEC and ChessWar). Developers are invited to participate in the open-source SharpChess project at GitHub in order to improve SharpChess's chess-playing powers!

SharpChess has been wholly developed using, C# (C Sharp), and runs on Microsoft Windows and Mono.

Find out more about SharpChess at http://SharpChess.com

An excellent resource for chess programming can be found at http://chessprogramming.wikispaces.com

---------------------------------------------------------------

SharpChess Copyright (c) Peter Hughes 2011. All rights reserved.

All aspects of SharpChess are covered by the GNU GPL v3 License. See GNU_GPL_Licence.txt for full details.


This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.

sharpchess's People

Contributors

peterhughes avatar zass30 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

sharpchess's Issues

abandonware ?

Has not been updated in 4 years, the official site at http://SharpChess.com has a link to filedropper.com which always gets redirected to filedroppers homepage.
where to get the binaries in 2018/2019?

Game should stop after getting in final state

Currently after getting stalemate by repetition (and result 1/2-1/2) it is possible to press 'Think' button. Then computer player will make next move and the game continues.

I feel this is very wrong behaviour: the game should fully stop after getting in final states such as checkmate and stalemate.

Use Path.Combine when baking FullPath yourself

This will make SharpChess compatible with Mono (so it becomes cross-platform).

In project SharpChess in file frmMain.cs line 2946 (in method frmMain_Load) there is a line where you combine absolute path to Documents folder with save file name ('BackupGame.sharpchess'). The line looks like this:

Game.BackupGamePath =
Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\BackupGame.sharpchess";

Build from sources is OK.

But when running in Ubuntu Linux with Mono 2.10.6 this line produces completely wrong path due to backslash symbol '' and app crashes with unhandled exception.

I suggest you to replace this line with

Game.BackupGamePath = System.IO.Path.Combine( Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "BackupGame.sharpchess");

Then SharpChess works well in Ubuntu Linux also.

Copy - paste bug in SharpChess Brain

Hi,

I am about to embark on an attempt to implement a chess engine written in c#. Researching if there are existing reusable WinBoard protocol implementations I came across the SharpChess codebase here on GitHub.

As I peeked into the code I found an apparent copy – paste bug around line 308 of Brain.cs.

The code reads:

            if (this.MyPlayer.CanClaimInsufficientMaterialDraw)
            {
                WinBoard.SendDrawByFiftyMoveRule();
                return;
            }

But should read:

            if (this.MyPlayer.CanClaimInsufficientMaterialDraw)
            {
                WinBoard.SendDrawByInsufficientMaterial();
                return;
            }

I can’t be arsed to fork the code and create a pull request, so I'm posting like this instead.

This is no showstopper as the draw will be claimed regardless. But the reason fo the claim might look strange to a human reader.

Regards!

Permanent Brain

This function adds a lot of power and energy and memory saving to the engine, stockfish and hiarcs also has it, however I think they can be improved, I am working on it currently but debugging eats my time...

Make ComputerPlayer think (and move) automatically

Currently I observe very strange issue: computer player will never move until I press Ctrl-T (item 'Think' from main menu).

It looks like this behaviour is by design, but it is too boring to press neccessary button every computer's ply.

Game raise exception in this case

!Game FEN="" TurnNo="119" WhitePlayer="Human" BlackPlayer="Computer" BoardOrientation="White" Version="2.6.9.0" DifficultyLevel="10" ClockMoves="120" ClockSeconds="1800" MaximumSearchDepth="0" Pondering="0" UseRandomOpeningMoves="1"+
!Move MoveNo="1" Name="Standard" From="e2" To="e4" SecondsElapsed="0" /+
!Move MoveNo="1" Name="Standard" From="g7" To="g6" SecondsElapsed="0" /+
!Move MoveNo="2" Name="Standard" From="d2" To="d4" SecondsElapsed="2" /+
!Move MoveNo="2" Name="Standard" From="f8" To="g7" SecondsElapsed="0" /+
!Move MoveNo="3" Name="Standard" From="g1" To="f3" SecondsElapsed="30" /+
!Move MoveNo="3" Name="Standard" From="d7" To="d6" SecondsElapsed="0" /+
!Move MoveNo="4" Name="Standard" From="f1" To="b5" SecondsElapsed="48" /+
!Move MoveNo="4" Name="Standard" From="c7" To="c6" SecondsElapsed="10" /+
!Move MoveNo="5" Name="Standard" From="b5" To="a4" SecondsElapsed="63" /+
!Move MoveNo="5" Name="Standard" From="g8" To="f6" SecondsElapsed="33" /+
!Move MoveNo="6" Name="Standard" From="e4" To="e5" SecondsElapsed="123" /+
!Move MoveNo="6" Name="Standard" From="d6" To="e5" SecondsElapsed="41" /+
!Move MoveNo="7" Name="Standard" From="f3" To="e5" SecondsElapsed="126" /+
!Move MoveNo="7" Name="Standard" From="b8" To="d7" SecondsElapsed="47" /+
!Move MoveNo="8" Name="Standard" From="e5" To="d7" SecondsElapsed="131" /+
!Move MoveNo="8" Name="Standard" From="f6" To="d7" SecondsElapsed="53" /+
!Move MoveNo="9" Name="Standard" From="c2" To="c3" SecondsElapsed="135" /+
!Move MoveNo="9" Name="CastleKingSide" From="e8" To="g8" SecondsElapsed="66" /+
!Move MoveNo="10" Name="CastleKingSide" From="e1" To="g1" SecondsElapsed="135" /+
!Move MoveNo="10" Name="Standard" From="e7" To="e5" SecondsElapsed="78" /+
!Move MoveNo="11" Name="Standard" From="c1" To="e3" SecondsElapsed="149" /+
!Move MoveNo="11" Name="Standard" From="e5" To="d4" SecondsElapsed="89" /+
!Move MoveNo="12" Name="Standard" From="e3" To="d4" SecondsElapsed="152" /+
!Move MoveNo="12" Name="Standard" From="g7" To="d4" SecondsElapsed="99" /+
!Move MoveNo="13" Name="Standard" From="d1" To="d4" SecondsElapsed="155" /+
!Move MoveNo="13" Name="Standard" From="d7" To="b6" SecondsElapsed="116" /+
!Move MoveNo="14" Name="Standard" From="d4" To="d8" SecondsElapsed="187" /+
!Move MoveNo="14" Name="Standard" From="f8" To="d8" SecondsElapsed="122" /+
!Move MoveNo="15" Name="Standard" From="a4" To="b3" SecondsElapsed="192" /+
!Move MoveNo="15" Name="Standard" From="c8" To="f5" SecondsElapsed="131" /+
!Move MoveNo="16" Name="Standard" From="b1" To="a3" SecondsElapsed="197" /+
!Move MoveNo="16" Name="Standard" From="d8" To="d2" SecondsElapsed="140" /+
!Move MoveNo="17" Name="Standard" From="a3" To="c4" SecondsElapsed="232" /+
!Move MoveNo="17" Name="Standard" From="b6" To="c4" SecondsElapsed="147" /+
!Move MoveNo="18" Name="Standard" From="b3" To="c4" SecondsElapsed="235" /+
!Move MoveNo="18" Name="Standard" From="b7" To="b5" SecondsElapsed="166" /+
!Move MoveNo="19" Name="Standard" From="c4" To="b3" SecondsElapsed="240" /+
!Move MoveNo="19" Name="Standard" From="a7" To="a5" SecondsElapsed="181" /+
!Move MoveNo="20" Name="Standard" From="a2" To="a4" SecondsElapsed="240" /+
!Move MoveNo="20" Name="Standard" From="d2" To="b2" SecondsElapsed="195" /+
!Move MoveNo="21" Name="Standard" From="b3" To="d1" SecondsElapsed="257" /+
!Move MoveNo="21" Name="Standard" From="f5" To="e4" SecondsElapsed="212" /+
!Move MoveNo="22" Name="Standard" From="a4" To="b5" SecondsElapsed="266" /+
!Move MoveNo="22" Name="Standard" From="c6" To="b5" SecondsElapsed="226" /+
!Move MoveNo="23" Name="Standard" From="f1" To="e1" SecondsElapsed="275" /+
!Move MoveNo="23" Name="Standard" From="f7" To="f5" SecondsElapsed="242" /+
!Move MoveNo="24" Name="Standard" From="f2" To="f3" SecondsElapsed="280" /+
!Move MoveNo="24" Name="Standard" From="e4" To="c6" SecondsElapsed="261" /+
!Move MoveNo="25" Name="Standard" From="e1" To="e2" SecondsElapsed="294" /+
!Move MoveNo="25" Name="Standard" From="b2" To="e2" SecondsElapsed="267" /+
!Move MoveNo="26" Name="Standard" From="d1" To="e2" SecondsElapsed="296" /+
!Move MoveNo="26" Name="Standard" From="a5" To="a4" SecondsElapsed="272" /+
!Move MoveNo="27" Name="Standard" From="a1" To="a3" SecondsElapsed="296" /+
!Move MoveNo="27" Name="Standard" From="g6" To="g5" SecondsElapsed="292" /+
!Move MoveNo="28" Name="Standard" From="h2" To="h3" SecondsElapsed="319" /+
!Move MoveNo="28" Name="Standard" From="f5" To="f4" SecondsElapsed="306" /+
!Move MoveNo="29" Name="Standard" From="g1" To="f1" SecondsElapsed="322" /+
!Move MoveNo="29" Name="Standard" From="g8" To="g7" SecondsElapsed="315" /+
!Move MoveNo="30" Name="Standard" From="f1" To="e1" SecondsElapsed="325" /+
!Move MoveNo="30" Name="Standard" From="h7" To="h5" SecondsElapsed="323" /+
!Move MoveNo="31" Name="Standard" From="e1" To="d2" SecondsElapsed="332" /+
!Move MoveNo="31" Name="Standard" From="a8" To="d8" SecondsElapsed="335" /+
!Move MoveNo="32" Name="Standard" From="d2" To="e1" SecondsElapsed="332" /+
!Move MoveNo="32" Name="Standard" From="h5" To="h4" SecondsElapsed="351" /+
!Move MoveNo="33" Name="Standard" From="a3" To="a1" SecondsElapsed="347" /+
!Move MoveNo="33" Name="Standard" From="d8" To="a8" SecondsElapsed="366" /+
!Move MoveNo="34" Name="Standard" From="e1" To="d2" SecondsElapsed="359" /+
!Move MoveNo="34" Name="Standard" From="a4" To="a3" SecondsElapsed="382" /+
!Move MoveNo="35" Name="Standard" From="d2" To="c2" SecondsElapsed="363" /+
!Move MoveNo="35" Name="Standard" From="a8" To="a4" SecondsElapsed="397" /+
!Move MoveNo="36" Name="Standard" From="c2" To="b3" SecondsElapsed="363" /+
!Move MoveNo="36" Name="Standard" From="c6" To="d5" SecondsElapsed="409" /+
!Move MoveNo="37" Name="Standard" From="c3" To="c4" SecondsElapsed="365" /+
!Move MoveNo="37" Name="Standard" From="d5" To="c4" SecondsElapsed="416" /+
!Move MoveNo="38" Name="Standard" From="e2" To="c4" SecondsElapsed="367" /+
!Move MoveNo="38" Name="Standard" From="a4" To="c4" SecondsElapsed="436" /+
!Move MoveNo="39" Name="Standard" From="a1" To="a3" SecondsElapsed="370" /+
!Move MoveNo="39" Name="Standard" From="g7" To="f7" SecondsElapsed="451" /+
!Move MoveNo="40" Name="Standard" From="a3" To="a6" SecondsElapsed="387" /+
!Move MoveNo="40" Name="Standard" From="c4" To="d4" SecondsElapsed="461" /+
!Move MoveNo="41" Name="Standard" From="b3" To="c2" SecondsElapsed="395" /+
!Move MoveNo="41" Name="Standard" From="b5" To="b4" SecondsElapsed="471" /+
!Move MoveNo="42" Name="Standard" From="a6" To="a4" SecondsElapsed="400" /+
!Move MoveNo="42" Name="Standard" From="d4" To="c4" SecondsElapsed="482" /+
!Move MoveNo="43" Name="Standard" From="c2" To="d3" SecondsElapsed="400" /+
!Move MoveNo="43" Name="Standard" From="c4" To="c3" SecondsElapsed="489" /+
!Move MoveNo="44" Name="Standard" From="d3" To="d4" SecondsElapsed="405" /+
!Move MoveNo="44" Name="Standard" From="c3" To="c2" SecondsElapsed="499" /+
!Move MoveNo="45" Name="Standard" From="a4" To="b4" SecondsElapsed="418" /+
!Move MoveNo="45" Name="Standard" From="c2" To="g2" SecondsElapsed="512" /+
!Move MoveNo="46" Name="Standard" From="d4" To="e5" SecondsElapsed="420" /+
!Move MoveNo="46" Name="Standard" From="g2" To="d2" SecondsElapsed="518" /+
!Move MoveNo="47" Name="Standard" From="b4" To="b7" SecondsElapsed="427" /+
!Move MoveNo="47" Name="Standard" From="f7" To="g6" SecondsElapsed="531" /+
!Move MoveNo="48" Name="Standard" From="b7" To="b6" SecondsElapsed="435" /+
!Move MoveNo="48" Name="Standard" From="g6" To="f7" SecondsElapsed="542" /+
!Move MoveNo="49" Name="Standard" From="e5" To="f5" SecondsElapsed="438" /+
!Move MoveNo="49" Name="Standard" From="d2" To="d5" SecondsElapsed="577" /+
!Move MoveNo="50" Name="Standard" From="f5" To="g4" SecondsElapsed="440" /+
!Move MoveNo="50" Name="Standard" From="d5" To="e5" SecondsElapsed="584" /+
!Move MoveNo="51" Name="Standard" From="b6" To="h6" SecondsElapsed="451" /+
!Move MoveNo="51" Name="Standard" From="f7" To="g7" SecondsElapsed="591" /+
!Move MoveNo="52" Name="Standard" From="h6" To="h5" SecondsElapsed="454" /+
!Move MoveNo="52" Name="Standard" From="g7" To="g6" SecondsElapsed="597" /+
!Move MoveNo="53" Name="Standard" From="h5" To="h8" SecondsElapsed="457" /+
!Move MoveNo="53" Name="Standard" From="e5" To="b5" SecondsElapsed="608" /+
!Move MoveNo="54" Name="Standard" From="h8" To="g8" SecondsElapsed="464" /+
!Move MoveNo="54" Name="Standard" From="g6" To="h6" SecondsElapsed="614" /+
!Move MoveNo="55" Name="Standard" From="g8" To="f8" SecondsElapsed="475" /+
!Move MoveNo="55" Name="Standard" From="h6" To="g6" SecondsElapsed="630" /+
!Move MoveNo="56" Name="Standard" From="f8" To="g8" SecondsElapsed="484" /+
!Move MoveNo="56" Name="Standard" From="g6" To="h6" SecondsElapsed="636" /+
!Move MoveNo="57" Name="Standard" From="g8" To="f8" SecondsElapsed="491" /+
!Move MoveNo="57" Name="Standard" From="h6" To="g7" SecondsElapsed="644" /+
!Move MoveNo="58" Name="Standard" From="f8" To="f5" SecondsElapsed="495" /+
!Move MoveNo="58" Name="Standard" From="b5" To="f5" SecondsElapsed="650" /+
!Move MoveNo="59" Name="Standard" From="g4" To="f5" SecondsElapsed="505" /+
!Move MoveNo="59" Name="Standard" From="g7" To="h6" SecondsElapsed="662" /+
!Move MoveNo="60" Name="Standard" From="f5" To="g4" SecondsElapsed="506" /+
!/Game+

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.