Библиотека для работы с шахматной логикой, выделенная из проекта MiniChess.
MiniChess Core - это автономная Java библиотека, предоставляющая основную логику для шахматной игры:
- Представление доски - класс
Boardдля работы с шахматной доской - Модели данных - классы
Piece,Square,Color,PieceType - Валидация ходов - класс
MoveValidatorдля проверки легальности ходов - Генерация ходов - класс
PieceMovesдля генерации возможных ходов - Обнаружение шаха/мата - класс
CheckDetector - Проверка атак - класс
AttackChecker - Шахматный движок - класс
ChessEngineкак основной API
Самый простой способ подключения - через JitPack:
<repositories>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.github.True-Ruslan.MiniChess</groupId>
<artifactId>chess-engine-core</artifactId>
<version>master-SNAPSHOT</version>
</dependency>
</dependencies>Преимущества:
- Не требует настройки аутентификации
- Работает сразу после добавления в pom.xml
- Автоматически обновляется при изменениях в репозитории
Для использования стабильных версий через GitHub Packages:
<repositories>
<repository>
<id>github</id>
<url>https://maven.pkg.github.com/True-Ruslan/MiniChess</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>chess.mini</groupId>
<artifactId>core</artifactId>
<version>${version}</version>
</dependency>
</dependencies>Актуальную версию смотрите тут
Требует настройки аутентификации (см. раздел ниже).
- Перейдите в GitHub Settings → Developer settings → Personal access tokens
- Нажмите "Generate new token (classic)"
- Выберите scope
read:packages - Скопируйте токен
Создайте файл ~/.m2/settings.xml:
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
http://maven.apache.org/xsd/settings-1.0.0.xsd">
<servers>
<server>
<id>github</id>
<username>YOUR_GITHUB_USERNAME</username>
<password>YOUR_GITHUB_TOKEN</password>
</server>
</servers>
</settings>Замените:
YOUR_GITHUB_USERNAME- ваше имя пользователя GitHubYOUR_GITHUB_TOKEN- токен, созданный в шаге 1
import chess.mini.engine.ChessEngine;
import chess.mini.engine.data.Square;
public class ChessExample {
public static void main(String[] args) {
// Создание новой игры
ChessEngine engine = new ChessEngine();
// Получение возможных ходов для пешки e2
Square from = new Square(4, 1); // e2
List<Square> moves = engine.getLegalMoves(from);
System.out.println("Возможные ходы для e2: " + moves);
// Выполнение хода e2-e4
Square to = new Square(4, 3); // e4
engine.makeMove(from, to);
// Проверка состояния игры
System.out.println("Белые под шахом: " + engine.inCheck());
System.out.println("Мат: " + engine.isCheckmate());
}
}// Создание начальной позиции
Board board = Board.initial();
// Получение фигуры на клетке
Piece piece = board.getPiece(0, 4); // Белый король на e1
// Установка фигуры
board.setPiece(4, 4, new Piece(PieceType.QUEEN, Color.WHITE));
// Проверка атаки на клетку
boolean isAttacked = AttackChecker.isSquareAttacked(
new Square(4, 4), Color.BLACK, board
);// Проверка легальности хода
boolean isValid = MoveValidator.isValidMove(
new Square(4, 1), // e2
new Square(4, 3), // e4
Color.WHITE,
board
);
// Получение всех легальных ходов для фигуры
List<Square> legalMoves = MoveValidator.getLegalMoves(
new Square(4, 1),
new Piece(PieceType.PAWN, Color.WHITE),
Color.WHITE,
board
);// Проверка шаха
boolean whiteInCheck = CheckDetector.inCheck(Color.WHITE, board);
boolean blackInCheck = CheckDetector.inCheck(Color.BLACK, board);
// Проверка мата
boolean isCheckmate = CheckDetector.isCheckmate(Color.WHITE, board);
// Проверка пата
boolean isStalemate = CheckDetector.isStalemate(Color.WHITE, board);Основной класс для работы с шахматной логикой.
reset()- сброс к начальной позицииgetBoard()- получение текущей доскиgetSideToMove()- получение стороны для ходаgetLegalMoves(Square from)- получение легальных ходовmakeMove(Square from, Square to)- выполнение ходаinCheck()- проверка шахаisCheckmate()- проверка матаisStalemate()- проверка пата
Представление шахматной доски.
Board.initial()- создание начальной позицииgetPiece(int rank, int file)- получение фигурыsetPiece(int rank, int file, Piece piece)- установка фигуры
Представление шахматной фигуры.
Piece(PieceType type, Color color)
Представление клетки на доске.
Square(int file, int rank)- file: 0-7 (a-h), rank: 0-7 (1-8)
- Java 21+
- Maven 3.6+
mvn clean compile
mvn test
mvn packageРешение: Проверьте настройку репозитория и аутентификации.
Решение:
- Проверьте правильность токена GitHub
- Убедитесь, что токен имеет scope
read:packages - Проверьте файл
~/.m2/settings.xml
Решение:
- Для JitPack: используйте
master-SNAPSHOTили хеш коммита - Для GitHub Packages: проверьте доступность версии в репозитории
Решение:
- Убедитесь, что используется Java 21+
- Проверьте импорты пакетов
Открывайте PR и предлагайте свои решения