pushed last version
This commit is contained in:
parent
ef9451f59a
commit
c4968cedda
|
@ -0,0 +1,143 @@
|
||||||
|
<!doctype html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>Vier gewinnt</title>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
|
||||||
|
div {
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
.board {
|
||||||
|
width: 84vw;
|
||||||
|
margin: auto;
|
||||||
|
outline: 1px solid black;
|
||||||
|
}
|
||||||
|
|
||||||
|
.board .field {
|
||||||
|
border: 1px solid black;
|
||||||
|
width: 12vw;
|
||||||
|
height: 12vw;
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.board .field:first-child {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.board .field .piece {
|
||||||
|
width: 10vw;
|
||||||
|
height: 10vw;
|
||||||
|
border-radius: 50%;
|
||||||
|
margin: 1vw;
|
||||||
|
}
|
||||||
|
.board .field .blue {
|
||||||
|
background-color: blue;
|
||||||
|
}
|
||||||
|
.board .field .red {
|
||||||
|
background-color: red;
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<button class="boardclearbutton" style="margin: 10px;">Neues Spiel</button>
|
||||||
|
<p>Spieler <a id="actualPlayer"></a> ist am Zug.</p>
|
||||||
|
<div class="board"></div>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
function elt(type, attrs, ...children) {
|
||||||
|
let node = document.createElement(type)
|
||||||
|
for (a in attrs) {
|
||||||
|
node.setAttribute(a, attrs[a])
|
||||||
|
}
|
||||||
|
for (let child of children) {
|
||||||
|
if (typeof child != "string") node.appendChild(child)
|
||||||
|
else node.appendChild(document.createTextNode(child))
|
||||||
|
}
|
||||||
|
return node
|
||||||
|
}
|
||||||
|
|
||||||
|
function showBoard() {
|
||||||
|
let board = document.querySelector(".board")
|
||||||
|
board.innerHTML = ''
|
||||||
|
for(row = 0; row < rows; row++) {
|
||||||
|
for(column = 0; column < columns; column++) {
|
||||||
|
let attributes = {"id": column.toString() + ":" + row.toString(), "class": "field"}
|
||||||
|
let children = elt("div", {"class": state[row][column] + " piece"})
|
||||||
|
board.append(elt("div", attributes, children))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function clearBoard() {
|
||||||
|
state = Array(rows).fill('').map(el => Array(columns).fill(''))
|
||||||
|
switchNextColor()
|
||||||
|
showBoard();
|
||||||
|
}
|
||||||
|
|
||||||
|
function switchNextColor() {
|
||||||
|
if(state.nextColor === "red") {
|
||||||
|
state.nextColor = "blue"
|
||||||
|
document.getElementById("actualPlayer").innerHTML = "blau"
|
||||||
|
} else {
|
||||||
|
state.nextColor = "red"
|
||||||
|
document.getElementById("actualPlayer").innerHTML = "rot"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function setField(row, column) {
|
||||||
|
state[row][column] = state.nextColor
|
||||||
|
switchNextColor()
|
||||||
|
showBoard()
|
||||||
|
}
|
||||||
|
|
||||||
|
function setColumn(column) {
|
||||||
|
let row = rows - 1
|
||||||
|
const column_number = column
|
||||||
|
while(row >= 0){
|
||||||
|
if(state[row][column_number] !== ''){
|
||||||
|
row--
|
||||||
|
} else {
|
||||||
|
setField(row, column_number)
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const columns = 7
|
||||||
|
const rows = 6
|
||||||
|
let state = {}
|
||||||
|
clearBoard()
|
||||||
|
|
||||||
|
|
||||||
|
const boardClearButton = document.querySelector(".boardclearbutton")
|
||||||
|
boardClearButton.addEventListener("click", event => {
|
||||||
|
clearBoard()
|
||||||
|
})
|
||||||
|
showBoard()
|
||||||
|
document.querySelector(".board").addEventListener("click", event => {
|
||||||
|
let element = event.target
|
||||||
|
if(element.classList.contains("piece")){
|
||||||
|
element = element.parentElement
|
||||||
|
}
|
||||||
|
let column = Number(element.id.split(":")[0])
|
||||||
|
setColumn(column)
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
Loading…
Reference in New Issue