@noe_rls/cm-chessboard
Version:
A JavaScript chessboard which is lightweight, ES6 module based, responsive, SVG rendered and without dependencies.
71 lines (69 loc) • 2.88 kB
HTML
<html lang="en">
<head>
<meta charset="UTF-8">
<title>cm-chessboard</title>
<meta name="viewport" content="width=device-width, user-scalable=yes, initial-scale=1.0"/>
<link rel="stylesheet" href="./examples/styles/examples.css"/>
<link rel="stylesheet" href="./assets/styles/cm-chessboard.css"/>
</head>
<body>
<h1><a href="./">cm-chessboard</a></h1>
<h2>Example: Set different positions, with animation</h2>
<p>Animations are queued automatically.</p>
<div class="board" id="board"></div>
<br/>
<button onclick="setPosition('empty')">Empty Position</button>
<button onclick="setPosition('start')">Start Position</button>
<button onclick="setPosition('rnbqkbnr/pppppppp/8/8/4P3/8/PPPP1PPP/RNBQKBNR')">Position 1</button>
<button onclick="setPosition('rnbqkbnr/pp1ppppp/8/2p5/4P3/5N2/PPPP1PPP/RNBQKB1R')">Position 2</button>
<button onclick="setPosition('rn2k1r1/ppp1pp1p/3p2p1/5bn1/P7/2N2B2/1PPPPP2/2BNK1RR')">Position 3</button>
<button onclick="switchOrientation()">Switch Orientation</button>
<pre><button onclick="window.board.setPosition('rn2k1r1/ppp1pp1p/3p2p1/5bn1/P7/2N2B2/1PPPPP2/2BNK1RR')">Position 3</button></pre>
<br/>
Move piece from: <input id="moveFrom" type="text" size="2" value="e2"/> to: <input id="moveTo" type="text" size="2"
value="e4"/>
<button onclick="movePiece()">Do move</button>
<pre>board.movePiece(squareFrom, squareTo)</pre>
<br/>
<button onclick="knightMove()">Knight dance</button>
<pre>
board.setPiece("e4", PIECE.wn)
await board.movePiece("e4", "c3")
await board.movePiece("c3", "d5")
await board.movePiece("d5", "f4")
</pre>
<script type="module">
import {Chessboard, PIECE} from "./src/cm-chessboard/Chessboard.js"
const board = new Chessboard(document.getElementById("board"),
{
position: "start",
sprite: {url: "./assets/images/chessboard-sprite-staunty.svg"},
animationDuration: 500
})
let i = 0
window.setPosition = (position) => {
i++
board.setPosition(position).then(() => {
console.log("setPosition resolved", position, i)
})
}
window.switchOrientation = () => {
board.setOrientation(board.getOrientation() === 'w' ? 'b' : 'w')
}
window.movePiece = () => {
const squareFrom = document.getElementById("moveFrom").value
const squareTo = document.getElementById("moveTo").value
console.log("movePiece", squareFrom, squareTo)
board.movePiece(squareFrom, squareTo)
}
window.knightMove = async () => {
await board.setPosition("empty")
board.setPiece("e4", PIECE.wn)
await board.movePiece("e4", "c3")
await board.movePiece("c3", "d5")
await board.movePiece("d5", "f4")
}
</script>
</body>
</html>