Add options for start squares of kings
This commit is contained in:
parent
543f9bdbc2
commit
5d8e8da87f
76
takhta.html
76
takhta.html
|
@ -34,6 +34,18 @@
|
||||||
#board tbody :nth-child(n) :first-child {
|
#board tbody :nth-child(n) :first-child {
|
||||||
background-color: unset;
|
background-color: unset;
|
||||||
}
|
}
|
||||||
|
#options {
|
||||||
|
display: table;
|
||||||
|
}
|
||||||
|
.option {
|
||||||
|
display: table-row;
|
||||||
|
}
|
||||||
|
.option :nth-child(1) {
|
||||||
|
display: table-cell;
|
||||||
|
}
|
||||||
|
.optionvalues :nth-child(1) {
|
||||||
|
display: inline;
|
||||||
|
}
|
||||||
body {
|
body {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
|
@ -189,6 +201,36 @@
|
||||||
<input type="button" value="Download moves" onclick="download()">
|
<input type="button" value="Download moves" onclick="download()">
|
||||||
</form>
|
</form>
|
||||||
</p>
|
</p>
|
||||||
|
<p>
|
||||||
|
<form id="options">
|
||||||
|
<div class="option">
|
||||||
|
<div class="optiontext">White king on</div>
|
||||||
|
<div class="optionvalues">
|
||||||
|
<label>
|
||||||
|
<input type="radio" id="whited1" name="whiteking" value="d1" checked onchange="setupKings()">
|
||||||
|
d1
|
||||||
|
</label>
|
||||||
|
<label>
|
||||||
|
<input type="radio" id="whitee1" name="whiteking" value="e1" onchange="setupKings()">
|
||||||
|
e1
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="option">
|
||||||
|
<div class="optiontext">Black king on</div>
|
||||||
|
<div class="optionvalues">
|
||||||
|
<label>
|
||||||
|
<input type="radio" id="blackd8" name="blackking" value="d8" checked onchange="setupKings()">
|
||||||
|
d8
|
||||||
|
</label>
|
||||||
|
<label>
|
||||||
|
<input type="radio" id="blacke8" name="blackking" value="e8" onchange="setupKings()">
|
||||||
|
e8
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</p>
|
||||||
</section>
|
</section>
|
||||||
<section id="moves">
|
<section id="moves">
|
||||||
<p>Moves thus far</p>
|
<p>Moves thus far</p>
|
||||||
|
@ -201,6 +243,9 @@
|
||||||
let form = document.getElementById('input');
|
let form = document.getElementById('input');
|
||||||
form.onsubmit = moveEvent;
|
form.onsubmit = moveEvent;
|
||||||
|
|
||||||
|
document.getElementById('whited1').checked = true;
|
||||||
|
document.getElementById('blackd8').checked = true;
|
||||||
|
|
||||||
let moveHistory = [];
|
let moveHistory = [];
|
||||||
let moveFuture = [];
|
let moveFuture = [];
|
||||||
|
|
||||||
|
@ -432,10 +477,15 @@
|
||||||
let ret = doMove(move);
|
let ret = doMove(move);
|
||||||
if ('error' in ret) {
|
if ('error' in ret) {
|
||||||
alert(ret.error);
|
alert(ret.error);
|
||||||
|
// Put back in list of undone moves
|
||||||
|
moveFuture.push(move);
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Mark it as un-undone in the list of moves
|
// Mark it as un-undone in the list of moves
|
||||||
document.getElementById('movelist').children[index].className = '';
|
document.getElementById('movelist').children[index].className = '';
|
||||||
|
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
function flipBoard() {
|
function flipBoard() {
|
||||||
|
@ -532,6 +582,32 @@
|
||||||
link.click();
|
link.click();
|
||||||
actions.removeChild(link);
|
actions.removeChild(link);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function setupKings() {
|
||||||
|
let options = new FormData(document.getElementById('options'));
|
||||||
|
let whiteKing = options.get('whiteking');
|
||||||
|
let whiteQueen = whiteKing === 'd1' ? 'e1' : 'd1';
|
||||||
|
let blackKing = options.get('blackking');
|
||||||
|
let blackQueen = blackKing === 'd8' ? 'e8' : 'd8';
|
||||||
|
|
||||||
|
// Undo all moves
|
||||||
|
while (moveHistory.length > 0) {
|
||||||
|
undoMove();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Place the kings and queens
|
||||||
|
document.getElementById(whiteKing).firstChild.data = '♔';
|
||||||
|
document.getElementById(whiteQueen).firstChild.data = '♕';
|
||||||
|
document.getElementById(blackKing).firstChild.data = '♚';
|
||||||
|
document.getElementById(blackQueen).firstChild.data = '♛';
|
||||||
|
|
||||||
|
// Redo all the moves we can
|
||||||
|
while (moveFuture.length > 0) {
|
||||||
|
if (!redoMove()) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
Loading…
Reference in New Issue