Git Product home page Git Product logo

chess's Introduction

Chess

Visits Badge Languages Top Languages

Description

The following is a program for playing chess in the console written in python3. The program has been built to use the computer chess standard EPD (extended position description) for loading and exporting game positions. The program also makes use of standard chess notation (English) as you would in an actual chess tournament so that the games can be universally understood and later analysed.

Board Display

Pieces

  • White = Upper Case (Positive)
  • Black = Lower Case (Negative)
  • P,p = Pawn (1,-1)
  • N,n = Knight (2,-2)
  • B,b = Bishop (3,-3)
  • R,r = Rook (4,-4)
  • Q,q = Queen (5,-5)
  • K,k = King (6,-6)

Board

a8 b8 c8 d8 e8 f8 g8 h8
a7 b7 c7 d7 e7 f7 g7 h7
a6 b6 c6 d6 e6 f6 g6 h6
a5 b5 c5 d5 e5 f5 g5 h5
a4 b4 c4 d4 e4 f4 g4 h4
a3 b3 c3 d3 e3 f3 g3 h3
a2 b2 c2 d2 e2 f2 g2 h2
a1 b1 c1 d1 e1 f1 g1 h1

Launch Instructions

(PVP)
step 1: open main.py and make sure the "white" & "black" global variable are as follows;

white = 'human' #Values ['human','ai']
black = 'human' #Values ['human','ai']

setp 2: make sure your game is set to use the initial board position you would like

#Default
chess_game = Chess() #Uses 'rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq -' as EPD hash

or

#Custom starting position
chess_game = Chess(EPD='1b4k1/Q7/p2np1/P1P2p2/1P3P2/1R5R/q6P/5rK1 b - -') #Any EPD hash you want to start with

step 3: open your console
step 4: type the following command "cd [app directory]"
step 5: type the following command "python3 main.py"

(PVAI)
step 1: open main.py and make sure the "white" & "black" global variable are as follows;

#Play as white
white = 'human' #Values ['human','ai']
black = 'ai' #Values ['human','ai']

or

#Play as black
white = 'ai' #Values ['human','ai']
black = 'human' #Values ['human','ai']

step 2: makes sure you have imported the ai you wish to play

from ai_ben.ai import Agent

step 3: make sure your ai is properly initialized

#Play as white
b_bot = Agent(max_depth=100) #Initailize white bot

or

#Play as black
w_bot = Agent(max_depth=100) #Initailize white bot

setp 4: make sure your game is set to use the initial board position you would like

#Default
chess_game = Chess() #Uses 'rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq -' as EPD hash

or

#Custom starting position
chess_game = Chess(EPD='1b4k1/Q7/p2np1/P1P2p2/1P3P2/1R5R/q6P/5rK1 b - -') #Any EPD hash you want to start with

step 5: open your console
step 6: type the following command "cd [app directory]"
step 7: type the following command "python3 main.py"

Write Up

To get a better understanding of why the code is written this way check out my detailed write ups:

chess's People

Contributors

bellerb avatar

Stargazers

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

Watchers

 avatar  avatar  avatar

chess's Issues

Problem with checkmate

Check mate not working returning [0,0,0], forcing users to capture king.

EPG = '1b5k/7P/p1p2np1/2P2p2/PP3P2/4RQ1R/q2r3P/6K1 w - -'

image

Cannot identify checkmate

Hi,

there is an error in the checkmate validation, but I cannot really understand the code to fix it properly, but the error is here:

https://github.com/bellerb/chess/blob/main/chess.py#L321

if k_pos[0] not in g_moves:
  if len(self.log) > 0 and self.log[-1][-1] is not '+':
      self.log[-1] += '+' #Check
  return [0, 0, 0]

I don't get why you check if self.log[-1][-1] is not '+'if this part of the code and some lines below are the only place that adds the '+' to the move.

You can test with the following EPD='4kb2/rpp1p3/6p1/6Np/3Q1B2/4P2b/PPP2PPP/RN1R2K1 w - -'
The winning move is d4 d8.
Roberto

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.