chess.js

300 阅读2分钟

github链接:chess.js

1、安装引入

# NPM 引入
npm install chess.js

# Yarn 引入
yarn add chess.js

# 下载后直接在 html 引入
<script src="./chess.js"></script>

2、使用

# npm 或 yarn 方式引入使用方法
const { Chess } = require('./chess.js')
const chess = new Chess()

# html引入使用方法
const chess = new Chess()

3、部分API

介绍一些常用的api,想要了解更多api的同学可以去git上看哦

  • Constructor: Chess([ fen ])

Chess()构造函数接受一个可选参数,该参数以Forsyth-Edwards符号指定棋盘配置

// 当没有参数调用时,默认为起始位置
const chess = new Chess()

// 传入字符串的FEN参数,加载特定棋局
const chess = new Chess(
    'r1k4r/p2nb1p1/2b4p/1p1n1p2/2PP4/3Q1NB1/1P3PPP/R5K1 b - c3 0 19'
)

  • .clear()

清空棋盘

  • .fen()

返回当前棋盘的FEN字符串

  • .history([ options ])

返回包含当前游戏的步骤列表。Options是一个可选参数,可能包含一个'verbose'标志。表示显示移动字段的详细描述

  • .load(fen)

加载fen格式的棋谱,如果加载成功,返回true,加载失败返回false

  • .load_pgn(pgn, [ options ])

加载存储在便携式游戏表示法中的行棋步骤。pgn应该是一个字符串。Options是一个可选对象,可以包含字符串类型的newline_char和布尔型类型的sloppy

newline_char是有效RegExp片段的字符串表示,用于处理PGN。它默认为\r?\n。特殊字符不应该预先转义,但是任何字面特殊字符都应该像正常的RegExp一样转义。记住,JavaScript字符串中的反斜杠本身必须转义(参见下面的sloppy_pgn示例)。避免使用可能在PGN的其他地方出现的newline_char,例如。或者x,因为这会导致意想不到的行为。

sloppy是一个布尔值,它允许chess.js以非标准符号解析移动

  • .move(move, [ options ])

尝试在棋盘上移动棋子,如果该移动是合法的,则返回一个移动对象,否则为空。

.move函数有两种调用方式,一种是通过标准代数表示法(SAN)传递字符串:

const chess = new Chess()

chess.move('e4')
// -> { color: 'w', from: 'e2', to: 'e4', flags: 'b', piece: 'p', san: 'e4' }

chess.move('nf6') // SAN is case sensitive!!
// -> null

chess.move('Nf6')
// -> { color: 'b', from: 'g8', to: 'f6', flags: 'n', piece: 'n', san: 'Nf6' }

或者通过传递.move()一个move对象(只有'to', 'from',和必要的'promotion'字段是需要的)

const chess = new Chess()

chess.move({ from: 'g2', to: 'g3' })
// -> { color: 'w', from: 'g2', to: 'g3', flags: 'n', piece: 'p', san: 'g3' }

  • .pgn()

返回当前棋局的PGN格式。Options是一个可选参数,它可能包括最大宽度和/或换行字符设置。

  • .reset()

将棋盘恢复到初始启动位置

  • .undo()

回退最后半步,如果成功返回一个move对象,否则返回null