Chess Board
A chess board
by Bob Jones
HTML
<svg width="251" height="251" id="mysvg" style="padding-left:2px;padding-top:2px;" class="board" draggable="false">
</svg>
<p>
Console:
</p>
<textarea id="evalconsole"></textarea>
<button onclick="returnstatement.innerText=eval(evalconsole.value)">
Eval!
</button>
<p id="returnstatement"></p>
CSS
text {
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
JavaScript
function makeSVGTag(tagName, properties) {
var keys = Object.keys(properties);
var ret = "<" + tagName;
for (var i = 0; i < keys.length; i++) {
ret += " " + keys[i] + '="' + properties[keys[i]] + '"';
}
ret += "/>";
return ret;
}
function makeSVGTagContent(tagName, properties, content) {
var keys = Object.keys(properties);
var ret = "<" + tagName;
for (var i = 0; i < keys.length; i++) {
ret += " " + keys[i] + '="' + properties[keys[i]] + '"';
}
ret += ">" + content.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">") + "</" + tagName + ">";
return ret;
}
function setMoveOnBoard(color1, color2, color3, color4, symbol1, symbol2, x, y) {
mysvg.innerHTML += makeSVGTag("rect", {
height: 10,
width: 10,
stroke: color2,
"stroke-width": 2,
x: Number(x) + 3,
y: Number(y) + 3,
fill: color1,
class: "move move-display",
"data-index": (Number(y) / 16) * 15 + Number(x) / 16,
draggable: false
});
mysvg.innerHTML += makeSVGTagContent("text", {
x: Number(x) + 4,
y: Number(y) + 10,
"font-family": "Verdana",
"font-size": 10,
stroke: "none",
fill: color3,
class: "move-symbol move-symbol1 move-display",
"data-index": (Number(y) / 16) * 15 + Number(x) / 16,
draggable: false
}, symbol1);
mysvg.innerHTML += makeSVGTagContent("text", {
x: Number(x) + 4,
y: Number(y) + 10,
"font-family": "Verdana",
"font-size": 10,
stroke: "none",
fill: color4,
class: "move-symbol move-symbol2 move-display",
"data-index": (Number(y) / 16) * 15 + Number(x) / 16,
draggable: false
}, symbol2);
}
var config = {
color1: "#f00",
color2: "#000",
color3: "#0f0",
color4: "#00f",
symbol1: ">",
symbol2: "<"
};
var mode = "add";
function toggleMove(i) {
if (getMove(i)[0]) {
mode = "remove";
getMove(i)[0].remove();
getMove(i)[1].remove();
getMove(i)[2].remove();
} else {
mode = "add";
...