Very basic functionality
This commit is contained in:
commit
2a405850e3
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
env
|
||||||
|
bin
|
12
Dockerfile
Normal file
12
Dockerfile
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
FROM debian:11-slim
|
||||||
|
ARG STOCKFISH_VERSION=sf_15.1
|
||||||
|
|
||||||
|
RUN apt-get update && apt-get install -y \
|
||||||
|
git make curl g++ \
|
||||||
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
RUN git clone --quiet https://github.com/official-stockfish/Stockfish.git
|
||||||
|
RUN cd Stockfish/src \
|
||||||
|
&& git checkout --quiet ${STOCKFISH_VERSION} \
|
||||||
|
&& make -j build ARCH=x86-64-modern
|
||||||
|
|
12
LICENSE
Normal file
12
LICENSE
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
Copyright (C) 2023 by Kris Lamoureux <kris@lamoureux.io>
|
||||||
|
|
||||||
|
Permission to use, copy, modify, and/or distribute this software for any
|
||||||
|
purpose with or without fee is hereby granted.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
||||||
|
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
||||||
|
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
||||||
|
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||||||
|
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
||||||
|
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||||
|
PERFORMANCE OF THIS SOFTWARE.
|
22
README.md
Normal file
22
README.md
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
# ChessCLI
|
||||||
|
|
||||||
|
ChessCLI is a simple hobby command-line interface (CLI) chess program written
|
||||||
|
in Python that lets you play against chess engines such as Stockfish, or any
|
||||||
|
other engine that supports the Universal Chess Interface (UCI) protocol. The
|
||||||
|
CLI will prompt you for moves in standard algebraic notation (SAN) to play the
|
||||||
|
game. You would typically use this with a physical chessboard for visualizing.
|
||||||
|
Therefore, if you are looking for graphics, this will not be the software for
|
||||||
|
you.
|
||||||
|
|
||||||
|
### Docker
|
||||||
|
|
||||||
|
A `Dockerfile` and a `docker-compose.yml` file are included to aid in compiling
|
||||||
|
the desired version of Stockfish and to place the resulting binary in an
|
||||||
|
adjacent bin directory for use by the application.
|
||||||
|
|
||||||
|
#### Copyright and License
|
||||||
|
Copyright (C) 2023 Kris Lamoureux
|
||||||
|
|
||||||
|
This project is licensed under the 0BSD License - see the LICENSE file for
|
||||||
|
details.
|
||||||
|
|
18
chesscli.py
Normal file
18
chesscli.py
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
import chess
|
||||||
|
import chess.engine
|
||||||
|
|
||||||
|
board = chess.Board()
|
||||||
|
engine = chess.engine.SimpleEngine.popen_uci("bin/stockfish")
|
||||||
|
count = 1
|
||||||
|
|
||||||
|
while not board.is_game_over():
|
||||||
|
if board.turn == chess.WHITE:
|
||||||
|
move = input(str(count) + " ")
|
||||||
|
board.push_san(move)
|
||||||
|
else:
|
||||||
|
result = engine.play(board, chess.engine.Limit(time=2.0))
|
||||||
|
print(str(count) + "...", board.san(result.move))
|
||||||
|
board.push(result.move)
|
||||||
|
count += 1
|
||||||
|
|
||||||
|
engine.quit()
|
11
docker-compose.yml
Normal file
11
docker-compose.yml
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
version: "3.7"
|
||||||
|
|
||||||
|
services:
|
||||||
|
stockfish:
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
command: sh -c "cp /Stockfish/src/stockfish /output"
|
||||||
|
volumes:
|
||||||
|
- ./bin:/output
|
||||||
|
|
1
requirements.txt
Normal file
1
requirements.txt
Normal file
@ -0,0 +1 @@
|
|||||||
|
chess==1.9.4
|
Loading…
Reference in New Issue
Block a user