-
Notifications
You must be signed in to change notification settings - Fork 0
/
drawBoard.js
50 lines (39 loc) · 1.35 KB
/
drawBoard.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
import solveQueensBacktracking from "./backtracking.js";
const queenIcon = 'fas fa-chess-queen fa-2x'
window.onload = () => {
drawBoard(8)
}
function start() {
const minAmmount = 4;
let ammount = parseInt(document.getElementById("squareAmount").value);
ammount < minAmmount ? ammount = minAmmount : ammount
drawBoard(ammount)
showSolution(solveQueensBacktracking(ammount))
}
function drawBoard(ammount) {
let board = document.getElementById("chess-board")
board.innerHTML = '';
let square;
for(let row = 0; row < ammount; row++) {
let rowSquare = board.appendChild(document.createElement("div"))
for(let col = 0; col < ammount; col++) {
square = document.createElement("span")
rowSquare.appendChild(square)
square.id = `${row}, ${col}`
}
}
}
function showSolution(solved) {
const solutions = solved.result
const totalSolutions = solved.total
const solutionToShow = parseInt(Math.random() * totalSolutions)
const solution = solutions[solutionToShow]
solution.forEach((column, row) => {
const selectedSquare = document.getElementById(`${row}, ${column}`)
const icon = document.createElement('i')
icon.className = queenIcon
selectedSquare.appendChild(icon)
});
document.getElementById('solucoes').innerHTML = totalSolutions
}
document.querySelector('button').addEventListener('click', start)