add play again feature
addictions are good (especially when they don't require internet to maintain (a la wordle))
This commit is contained in:
parent
8f63113e4c
commit
30f147095d
3 changed files with 76 additions and 11 deletions
15
index.html
15
index.html
|
@ -20,6 +20,7 @@
|
||||||
background-color: #002121;
|
background-color: #002121;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
color: white;
|
||||||
}
|
}
|
||||||
#board {
|
#board {
|
||||||
margin-left: auto;
|
margin-left: auto;
|
||||||
|
@ -27,11 +28,10 @@
|
||||||
width: calc(min(90vw, 90vh));
|
width: calc(min(90vw, 90vh));
|
||||||
height: calc(min(90vw, 90vh));
|
height: calc(min(90vw, 90vh));
|
||||||
}
|
}
|
||||||
#game-over, #stats, #copy-stats {
|
#game-over, #stats, #copy-stats, #play-again {
|
||||||
display: none;
|
display: none;
|
||||||
margin-left: auto;
|
margin-left: auto;
|
||||||
margin-right: auto;
|
margin-right: auto;
|
||||||
color: white;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#game-over {
|
#game-over {
|
||||||
|
@ -47,7 +47,7 @@
|
||||||
margin-bottom: 0;
|
margin-bottom: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#copy-stats {
|
#copy-stats, #play-again {
|
||||||
color: black;
|
color: black;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -66,12 +66,15 @@
|
||||||
font-family: 'Courier New', Courier, monospace;
|
font-family: 'Courier New', Courier, monospace;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
h1 {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
p {
|
p {
|
||||||
font-family: 'Times New Roman', Times, serif;
|
font-family: 'Times New Roman', Times, serif;
|
||||||
}
|
}
|
||||||
|
|
||||||
#players, .player {
|
#players, .player {
|
||||||
color: white;
|
|
||||||
margin-left: auto;
|
margin-left: auto;
|
||||||
margin-right: auto;
|
margin-right: auto;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
@ -130,10 +133,12 @@
|
||||||
></g-chess-board>
|
></g-chess-board>
|
||||||
<button style="display: none" id="finish">show me the answer please i toootally guessed already</button>
|
<button style="display: none" id="finish">show me the answer please i toootally guessed already</button>
|
||||||
<h1 id="game-over"></h1>
|
<h1 id="game-over"></h1>
|
||||||
|
<button id="play-again">> play again <</button>
|
||||||
<pre id="stats"></pre>
|
<pre id="stats"></pre>
|
||||||
<button id="copy-stats">^ copy ^</button>
|
<button id="copy-stats">^ copy ^</button>
|
||||||
<div id="players">
|
<br>
|
||||||
<h1>Players: (click name to toggle strikethrough)</h1>
|
<h1>Players: (click name to toggle strikethrough)</h1>
|
||||||
|
<div id="players">
|
||||||
</div>
|
</div>
|
||||||
<footer>
|
<footer>
|
||||||
<a href="https://www.youtube.com/watch?v=DpXy041BIlA">Tutorial</a><br>
|
<a href="https://www.youtube.com/watch?v=DpXy041BIlA">Tutorial</a><br>
|
||||||
|
|
32
main.js
32
main.js
|
@ -103,7 +103,7 @@ const alphabetical = board => {
|
||||||
// yeah this version sucks butttttt uh
|
// yeah this version sucks butttttt uh
|
||||||
// yeah
|
// yeah
|
||||||
// prettier-ignore
|
// prettier-ignore
|
||||||
var equalizer_state = {
|
const equalizer_state_default = {
|
||||||
piece_moves: {
|
piece_moves: {
|
||||||
p: 0,
|
p: 0,
|
||||||
b: 0,
|
b: 0,
|
||||||
|
@ -124,6 +124,7 @@ var equalizer_state = {
|
||||||
a1: 0, b1: 0, c1: 0, d1: 0, e1: 0, f1: 0, g1: 0, h1: 0
|
a1: 0, b1: 0, c1: 0, d1: 0, e1: 0, f1: 0, g1: 0, h1: 0
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
var equalizer_state = equalizer_state_default;
|
||||||
const equalizer = board => {
|
const equalizer = board => {
|
||||||
let best_move;
|
let best_move;
|
||||||
let least_moved_found = Infinity;
|
let least_moved_found = Infinity;
|
||||||
|
@ -623,8 +624,8 @@ function find_specified_in_hash() {
|
||||||
const todays_player = (_a = find_specified_in_hash()) !== null && _a !== void 0 ? _a : players[Math.floor(Math.random() * players.length)];
|
const todays_player = (_a = find_specified_in_hash()) !== null && _a !== void 0 ? _a : players[Math.floor(Math.random() * players.length)];
|
||||||
console.log(`SPOILER: today's player is ${todays_player.name}`);
|
console.log(`SPOILER: today's player is ${todays_player.name}`);
|
||||||
// const todays_player = min_oppt_move;
|
// const todays_player = min_oppt_move;
|
||||||
const board = document.getElementById("board");
|
var board = document.getElementById("board");
|
||||||
const game = new Chess();
|
var game = new Chess();
|
||||||
function computer_move() {
|
function computer_move() {
|
||||||
num_moves++;
|
num_moves++;
|
||||||
history += "M";
|
history += "M";
|
||||||
|
@ -653,6 +654,9 @@ ${history}`;
|
||||||
let copy_stats = document.getElementById("copy-stats");
|
let copy_stats = document.getElementById("copy-stats");
|
||||||
copy_stats.style.display = "block";
|
copy_stats.style.display = "block";
|
||||||
copy_stats.addEventListener("click", _ => navigator.clipboard.writeText(stats_text));
|
copy_stats.addEventListener("click", _ => navigator.clipboard.writeText(stats_text));
|
||||||
|
let play_again = document.getElementById("play-again");
|
||||||
|
play_again.style.display = "block";
|
||||||
|
play_again.addEventListener("click", _ => reset());
|
||||||
console.log("PLAYER IS WIN");
|
console.log("PLAYER IS WIN");
|
||||||
}
|
}
|
||||||
var num_guesses = 0;
|
var num_guesses = 0;
|
||||||
|
@ -689,6 +693,28 @@ function append_players_to(n) {
|
||||||
n.appendChild(child);
|
n.appendChild(child);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// ERROR: !
|
||||||
|
// INELEGANT
|
||||||
|
// "HACK"!
|
||||||
|
function reset() {
|
||||||
|
game = new Chess();
|
||||||
|
board.fen = game.fen();
|
||||||
|
board.turn = "white";
|
||||||
|
board.interactive = true;
|
||||||
|
num_guesses = 0;
|
||||||
|
num_moves = 0;
|
||||||
|
history = "";
|
||||||
|
equalizer_state = equalizer_state_default;
|
||||||
|
let players = document.getElementById("players");
|
||||||
|
players.innerHTML = "";
|
||||||
|
append_players_to(players);
|
||||||
|
let stats = document.getElementById("stats");
|
||||||
|
stats.innerHTML = "";
|
||||||
|
stats.style.display = "none";
|
||||||
|
document.getElementById("copy-stats").style.display = "none";
|
||||||
|
document.getElementById("play-again").style.display = "none";
|
||||||
|
document.getElementById("game-over").style.display = "none";
|
||||||
|
}
|
||||||
window.addEventListener("DOMContentLoaded", () => {
|
window.addEventListener("DOMContentLoaded", () => {
|
||||||
board.addEventListener("movestart", (e) => {
|
board.addEventListener("movestart", (e) => {
|
||||||
console.log(`Move started: ${e.detail.from}, ${e.detail.piece.color} ${e.detail.piece.pieceType}`);
|
console.log(`Move started: ${e.detail.from}, ${e.detail.piece.color} ${e.detail.piece.pieceType}`);
|
||||||
|
|
40
main.ts
40
main.ts
|
@ -140,7 +140,7 @@ const alphabetical: Player = board => {
|
||||||
// yeah this version sucks butttttt uh
|
// yeah this version sucks butttttt uh
|
||||||
// yeah
|
// yeah
|
||||||
// prettier-ignore
|
// prettier-ignore
|
||||||
var equalizer_state: {
|
const equalizer_state_default: {
|
||||||
piece_moves: Record<PieceSymbol, number>;
|
piece_moves: Record<PieceSymbol, number>;
|
||||||
square_visits: Record<Square, number>;
|
square_visits: Record<Square, number>;
|
||||||
} = {
|
} = {
|
||||||
|
@ -165,6 +165,8 @@ var equalizer_state: {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
var equalizer_state = equalizer_state_default;
|
||||||
|
|
||||||
const equalizer: Player = board => {
|
const equalizer: Player = board => {
|
||||||
let best_move: Move;
|
let best_move: Move;
|
||||||
let least_moved_found = Infinity;
|
let least_moved_found = Infinity;
|
||||||
|
@ -749,9 +751,9 @@ const todays_player =
|
||||||
console.log(`SPOILER: today's player is ${todays_player.name}`);
|
console.log(`SPOILER: today's player is ${todays_player.name}`);
|
||||||
// const todays_player = min_oppt_move;
|
// const todays_player = min_oppt_move;
|
||||||
|
|
||||||
const board: any = document.getElementById("board");
|
var board: any = document.getElementById("board");
|
||||||
|
|
||||||
const game = new Chess();
|
var game = new Chess();
|
||||||
|
|
||||||
function computer_move() {
|
function computer_move() {
|
||||||
num_moves++;
|
num_moves++;
|
||||||
|
@ -789,6 +791,10 @@ ${history}`;
|
||||||
navigator.clipboard.writeText(stats_text)
|
navigator.clipboard.writeText(stats_text)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
let play_again = document.getElementById("play-again");
|
||||||
|
play_again.style.display = "block";
|
||||||
|
play_again.addEventListener("click", _ => reset());
|
||||||
|
|
||||||
console.log("PLAYER IS WIN");
|
console.log("PLAYER IS WIN");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -834,6 +840,34 @@ function append_players_to(n: Node) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ERROR: !
|
||||||
|
// INELEGANT
|
||||||
|
// "HACK"!
|
||||||
|
function reset() {
|
||||||
|
game = new Chess();
|
||||||
|
board.fen = game.fen();
|
||||||
|
board.turn = "white";
|
||||||
|
board.interactive = true;
|
||||||
|
|
||||||
|
num_guesses = 0;
|
||||||
|
num_moves = 0;
|
||||||
|
history = "";
|
||||||
|
|
||||||
|
equalizer_state = equalizer_state_default;
|
||||||
|
|
||||||
|
let players = document.getElementById("players");
|
||||||
|
players.innerHTML = "";
|
||||||
|
append_players_to(players);
|
||||||
|
|
||||||
|
let stats = document.getElementById("stats");
|
||||||
|
stats.innerHTML = "";
|
||||||
|
stats.style.display = "none";
|
||||||
|
|
||||||
|
document.getElementById("copy-stats").style.display = "none";
|
||||||
|
document.getElementById("play-again").style.display = "none";
|
||||||
|
document.getElementById("game-over").style.display = "none";
|
||||||
|
}
|
||||||
|
|
||||||
window.addEventListener("DOMContentLoaded", () => {
|
window.addEventListener("DOMContentLoaded", () => {
|
||||||
board.addEventListener("movestart", (e: any) => {
|
board.addEventListener("movestart", (e: any) => {
|
||||||
console.log(
|
console.log(
|
||||||
|
|
Loading…
Reference in a new issue