-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathboard.js
70 lines (49 loc) · 1.46 KB
/
board.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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
const boardContainer = document.getElementById('board-container')
const getStartState = function () {
return [
['-', '-', '-'],
['-', '-', '-'],
['-', '-', '-']
]
}
const createUIElement = function (elementType = 'div', attributes = {}, children = []) {
const element = document.createElement(elementType)
Object.entries(attributes).forEach(attr => {
element.setAttribute(attr[0], attr[1])
})
children.forEach(child => element.appendChild(child))
return element
}
const boardState = getStartState()
const renderBoard = function (gameState, boardContainerRef) {
const boardChildren = []
gameState.reduce((children, row) => {
children.push(createBoardRow(row))
return children
}, boardChildren)
const board = createUIElement('div', {
class: 'board'
}, boardChildren)
boardContainerRef.innerHTML = null
boardContainerRef.appendChild(board)
return board
}
const createBoardRow = function (boardRow) {
const rowChildren = []
boardRow.reduce((row, piece) => {
row.push(createBoardPiece(piece))
return row
}, rowChildren)
const row = createUIElement('div', {
class: 'boardRow'
}, rowChildren)
return row
}
const createBoardPiece = function (boardPiece) {
// piece.innerText = boardPiece
const piece = createUIElement('div', {
class: 'boardPiece flex justify-center items-center w-20 h-20'
}, [document.createTextNode(boardPiece)])
return piece
}
renderBoard(boardState, boardContainer)