2023-09-27 18:46:05

116

Letöltés

tik

Szemléltetés:

js:

  1. const tabla = document.querySelector("#tabla")
  2. const infoDisplay = document.querySelector("#info")
  3. const startCells = [
  4. "", "", "", "", "", "", "", "", ""
  5. ]
  6. let kovetkezik = "kor"
  7. infoDisplay.textContent= "Kör kezd"
  8. let jelekSzama=0
  9. function setTabla(){
  10. startCells.forEach((_cell, index) => {
  11. const cellElement = document.createElement('div')
  12. cellElement.classList.add('negyzet')
  13. cellElement.id = index
  14. cellElement.addEventListener('click', lepes)
  15. tabla.append(cellElement)
  16. })
  17. }
  18. setTabla()
  19. function lepes(e){
  20. jelekSzama++
  21. const kovetkezikDisplay = document.createElement('div')
  22. kovetkezikDisplay.classList.add(kovetkezik)
  23. e.target.append(kovetkezikDisplay)
  24. kovetkezik = kovetkezik === "kor" ? "kereszt" : "kor"
  25. infoDisplay.textContent = kovetkezik === "kor" ? "Kör következik" : "Kereszt következik"
  26. e.target.removeEventListener("click", lepes)
  27. eredmenyEllenorzese()
  28. }
  29. function eredmenyEllenorzese(){
  30. const allnegyzets = document.querySelectorAll(".negyzet")
  31. const wincomb = [
  32. [0,1,2], [3,4,5], [6,7,8],
  33. [0,3,6], [1,4,7], [2,5,8],
  34. [0,4,8], [2,4,6]
  35. ]
  36. wincomb.forEach(array => {
  37. const korWins = array.every(cell =>
  38. allnegyzets[cell].firstChild?.classList.contains('kor'))
  39. if(korWins){
  40. infoDisplay.textContent = "Kör nyert!"
  41. allnegyzets.forEach(negyzet => negyzet.removeEventListener("click", lepes))
  42. addRestart()
  43. return
  44. }
  45. })
  46. wincomb.forEach(array => {
  47. const keresztWins = array.every(cell =>
  48. allnegyzets[cell].firstChild?.classList.contains('kereszt'))
  49. if(keresztWins){
  50. infoDisplay.textContent = "Kereszt nyert!"
  51. allnegyzets.forEach(negyzet => negyzet.removeEventListener("click", lepes))
  52. addRestart()
  53. return
  54. }
  55. })
  56. if( ( ! infoDisplay.textContent.includes("nyert") ) && (jelekSzama == 9) ){
  57. infoDisplay.textContent = "Döntetlen"
  58. addRestart()
  59. }
  60. }
  61. function addRestart(){
  62. const reButton = document.createElement('Button')
  63. reButton.textContent="Új játék"
  64. reButton.onclick = f5
  65. infoDisplay.append(reButton)
  66. }
  67. function f5(){
  68. location.reload()
  69. }

css:

  1. body{
  2. margin: 0;
  3. padding: 0;
  4. display: flex;
  5. justify-content: center;
  6. align-items: center;
  7. height: 100vh;
  8. flex-direction: column;
  9. }
  10. #tabla{
  11. width: 300px;
  12. height: 300px;
  13. background-color:black;
  14. display: flex;
  15. flex-wrap: wrap;
  16. border: solid 1px black;
  17. }
  18. .negyzet{
  19. width: 100px;
  20. height: 100px;
  21. background-color: white;
  22. border: solid 2px black;
  23. box-sizing: border-box;
  24. display:flex;
  25. justify-content: center;
  26. align-items: center;
  27. }
  28. .kor{
  29. width: 90px;
  30. height: 90px;
  31. border-radius: 50%;
  32. border: 15px solid blue;
  33. box-sizing: border-box;
  34. }
  35. .kereszt{
  36. width: 90px;
  37. height: 90px;
  38. position: relative;
  39. transform: rotate(45deg);
  40. }
  41. .kereszt:before, .kereszt:after{
  42. content: "";
  43. position: absolute;
  44. background-color: red;
  45. }
  46. .kereszt:before{
  47. left: 50%;
  48. width: 30%;
  49. margin-left: -15%;
  50. height: 100%;
  51. }
  52. .kereszt:after{
  53. top: 50%;
  54. height: 30%;
  55. margin-top: -15%;
  56. width: 100%;
  57. }

html:

  1. <!doctype html>
  2. <html lang=hu>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>tik</title>
  6. <link rel="stylesheet" href="css.css">
  7. </head>
  8. <body>
  9. <div id="tabla"></div>
  10. <p id=info></p>
  11. <script src="js.js"></script>
  12. </body>
  13. </html>