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