add-fen-loader #5
43
.gitea/workflows/run-tests.yml
Normal file
43
.gitea/workflows/run-tests.yml
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
name: Python tests (make)
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: ["**"]
|
||||||
|
pull_request:
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
test:
|
||||||
|
runs-on: ubuntu-22.04
|
||||||
|
container: mcr.microsoft.com/devcontainers/python:3.11
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Install Node (and git/make) inside container
|
||||||
|
run: |
|
||||||
|
set -eux
|
||||||
|
apt-get update
|
||||||
|
# add gcc & toolchain while keeping your originals
|
||||||
|
apt-get install -y --no-install-recommends curl ca-certificates git build-essential make
|
||||||
|
curl -fsSL https://deb.nodesource.com/setup_20.x | bash -
|
||||||
|
apt-get install -y --no-install-recommends nodejs
|
||||||
|
node -v
|
||||||
|
rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
if: hashFiles('requirements.txt') != ''
|
||||||
|
run: |
|
||||||
|
python -m pip install --upgrade pip
|
||||||
|
pip install -r requirements.txt
|
||||||
|
|
||||||
|
- name: Show Python info
|
||||||
|
run: |
|
||||||
|
python --version
|
||||||
|
pip --version || true
|
||||||
|
|
||||||
|
- name: Run tests via make
|
||||||
|
env:
|
||||||
|
LD_LIBRARY_PATH: build
|
||||||
|
run: make test
|
||||||
21
README.md
21
README.md
@@ -1 +1,20 @@
|
|||||||
The goal of this project is to build a clean, fast chess engine in C that starts from a FEN string and produces fully legal moves, verified via PERFT for correctness and speed. It uses a bitboard architecture with precomputed attack caches (pawns, knights, king; sliders later) and a small, well-structured codebase that’s easy to extend. The emphasis is on correctness-first approach (FEN → board → legal movegen → perft). Later, we will incorporate different algorithms and methods of evaluating chess positions to enable an AI player.
|
# Chess Engine in C — Project Goal
|
||||||
|
|
||||||
|
Build a clean, fast chess engine in C that starts from a FEN string and produces fully legal moves, verified via **PERFT** for correctness and speed.
|
||||||
|
|
||||||
|
## Approach
|
||||||
|
- **Correctness-first engine:** `FEN → board → legal movegen → PERFT`
|
||||||
|
|
||||||
|
## Future Work
|
||||||
|
- Incorporate algorithms and evaluation methods for chess positions to enable an **AI player**.
|
||||||
|
|
||||||
|
- Build an API to facilitate chess games with the AI player over the web.
|
||||||
|
- Starting with a commandline client.
|
||||||
|
- Later building a web based client.
|
||||||
|
|
||||||
|
## Chess Engine Programming & Information
|
||||||
|
- **Chess Programming Wiki (CPW):** <https://www.chessprogramming.org/>
|
||||||
|
- **PERFT (definition & methodology):** <https://www.chessprogramming.org/Perft>
|
||||||
|
- **PERFT Results & test positions:** <https://www.chessprogramming.org/Perft_Results>
|
||||||
|
- **FEN reference:** <https://www.chessprogramming.org/Forsyth-Edwards_Notation>
|
||||||
|
- **Bitboards** <https://www.chessprogramming.org/Bitboards>
|
||||||
Reference in New Issue
Block a user