Làm cách nào để tạo bảng tic tac toe trong html?

Đầu tiên chúng ta sẽ code HTML sau đó là CSS & cuối cùng là JS, ngoài ra mình cũng có share codepen ink để các bạn dễ dàng hơn



HTML 🎈[ bước - 1]


Trong HTML, chúng tôi đã tạo một div cho vùng chứa & cho lưới trò chơi tic-tac-toe. Ngoài ra, chúng tôi đã sử dụng các div khác nhau cho mỗi hộp trong vùng chứa này



Player 1: 0

Tic Tac Toe

Player 2: 0
Reset


Sau HTML, chúng tôi sẽ thiết kế vùng chứa và lưới và sẽ tạo ra một thiết kế tuyệt vời của Trò chơi Tic-Tac-Toe




CSS🎈 [ bước - 2]


body {
  background-color: white;
}

.grid {
  background-color: rgba[0,0,0,.2];
  margin: 50px auto;
  vertical-align: center;
  width: 400px;
  height: 400px;
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  grid-template rows: 1fr 1fr 1fr;
  grid-gap: 2px;
  border-radius: 4px;
  box-shadow: rgba[0, 0, 0, 0.3] 0px 17px 50px;
}

.space {
  background-color: white;
  transition: background-color .5s;  
  display: flex;
  justify-content: center;
  align-items: center;
}

.space:hover {
  background-color: rgba[0,0,0,0];
  transition: background-color .5s;
  cursor: pointer;
}

.x, .o {
 font-family: 'arial';
 font-size: 70px;
 position: absolute;
}

.x {
  color: tomato;
}

.o {
  color: #33DBFF;
}

.header {
  font-family: 'IBM Plex Sans Condensed', sans-serif;
  font-family: 'Montserrat', sans-serif;
  font-size: 35px;
  color: tomato;
  text-align: center;
  margin-top: 50px;
}

.reset {
  font-size: 20px;
  font-family: 'IBM Plex Sans Condensed', sans-serif;
  font-family: 'Montserrat', sans-serif;
  color: tomato;
  background-color: white;
  border: 1px solid tomato;
  padding: 5px;
  transition: border, color, .5s;
}

.reset:hover {
  cursor: pointer;
  color: #33DBFF;
  border: 1px solid #33DBFF;
  transition: border, color, .5s;
}

.reset:focus {
  outline: none;
}

.wrapper {
  display: flex;
  justify-content: center;
  margin-bottom: 50px;
}

.p1, .p2 {
  font-family: 'IBM Plex Sans Condensed', sans-serif;
  font-family: 'Montserrat', sans-serif;
  font-size: 20px;
}

.p1 {
  color: tomato;
  margin-left: 20px;
}

.p2 {
  color: #33DBFF;
  margin-right: 20px;
}

.flex {
  display: flex;
  flex-direction: row;
  justify-content: space-between;
}




Bây giờ chúng ta cũng đã hoàn thành mã hóa CSS, bây giờ hãy chuyển sang javascript. trong javascript, chúng tôi chưa thực hiện đủ mã hóa. chúng tôi đã viết để làm cho các nút hoạt động




JavaScript🎈 [ bước - 3]


let board = [
      [1,2,3],
      [4,5,6],
      [7,8,9],
];

let p1Counter = 1;
let p2Counter = 1;

class Player {
  constructor[] {
    this.isTurn = false;
    this.win = false;
  }
}

class Space {
  constructor[id] {
    this.played = false;
    this.id = id;
  }

  addSymbolX[space] {
    $[space].append["
X
"]; } addSymbolO[space] { $[space].append["
O
"]; } } //create players const player1 = new Player[]; const player2 = new Player[]; //create spaces const space1 = new Space['one']; const space2 = new Space['two']; const space3 = new Space['three']; const space4 = new Space['four']; const space5 = new Space['five']; const space6 = new Space['six']; const space7 = new Space['seven']; const space8 = new Space['eight']; const space9 = new Space['nine']; //switch turns function switchTurns[one, two] { one.isTurn = true; two.isTurn = false; } //gameplay player1.isTurn = true; $['.grid'].on['click', [e] => { if[player1.win !== true && player2.win !== true] { if[e.target.id === space1.id && space1.played === false] { if[player1.isTurn] { space1.addSymbolX[e.target]; let index = board[0].indexOf[1]; if[index !== -1] { board[0][index] = 'x'; } switchTurns[player2, player1]; space1.played = true; } else { space1.addSymbolO[e.target]; let index = board[0].indexOf[1]; if[index !== -1] { board[0][index] = 'o'; } switchTurns[player1, player2]; space1.played = true; } } else if [e.target.id === space2.id && space2.played === false] { if[player1.isTurn] { space2.addSymbolX[e.target]; let index = board[0].indexOf[2]; if[index !== -1] { board[0][index] = 'x'; } switchTurns[player2, player1]; space2.played = true; } else { space2.addSymbolO[e.target]; let index = board[0].indexOf[2]; if[index !== -1] { board[0][index] = 'o'; } switchTurns[player1, player2]; space2.played = true; } } else if [e.target.id === space3.id && space3.played === false] { if[player1.isTurn] { space3.addSymbolX[e.target]; let index = board[0].indexOf[3]; if[index !== -1] { board[0][index] = 'x'; } switchTurns[player2, player1]; space3.played = true; } else { space3.addSymbolO[e.target]; let index = board[0].indexOf[3]; if[index !== -1] { board[0][index] = 'o'; } switchTurns[player1, player2]; space3.played = true; } } else if [e.target.id === space4.id && space4.played === false] { if[player1.isTurn] { space4.addSymbolX[e.target]; let index = board[1].indexOf[4]; if[index !== -1] { board[1][index] = 'x'; } switchTurns[player2, player1]; space4.played = true; } else { space4.addSymbolO[e.target]; let index = board[1].indexOf[4]; if[index !== -1] { board[1][index] = 'o'; } switchTurns[player1, player2]; space4.played = true; } } else if [e.target.id === space5.id && space5.played === false] { if[player1.isTurn] { space5.addSymbolX[e.target]; let index = board[1].indexOf[5]; if[index !== -1] { board[1][index] = 'x'; } switchTurns[player2, player1]; space5.played = true; } else { space5.addSymbolO[e.target]; let index = board[1].indexOf[5]; if[index !== -1] { board[1][index] = 'o'; } switchTurns[player1, player2]; space5.played = true; } } else if [e.target.id === space6.id && space6.played === false] { if[player1.isTurn] { space6.addSymbolX[e.target]; let index = board[1].indexOf[6]; if[index !== -1] { board[1][index] = 'x'; } switchTurns[player2, player1]; space6.played = true; } else { space6.addSymbolO[e.target]; let index = board[1].indexOf[6]; if[index !== -1] { board[1][index] = 'o'; } switchTurns[player1, player2]; space6.played = true; } } else if [e.target.id === space7.id && space7.played === false] { if[player1.isTurn] { space7.addSymbolX[e.target]; let index = board[2].indexOf[7]; if[index !== -1] { board[2][index] = 'x'; } switchTurns[player2, player1]; space7.played = true; } else { space7.addSymbolO[e.target]; let index = board[2].indexOf[7]; if[index !== -1] { board[2][index] = 'o'; } switchTurns[player1, player2]; space7.played = true; } } else if [e.target.id === space8.id && space8.played === false] { if[player1.isTurn] { space8.addSymbolX[e.target]; let index = board[2].indexOf[8]; if[index !== -1] { board[2][index] = 'x'; } switchTurns[player2, player1]; space8.played = true; } else { space8.addSymbolO[e.target]; let index = board[2].indexOf[8]; if[index !== -1] { board[2][index] = 'o'; } switchTurns[player1, player2]; space8.played = true; } } else if [e.target.id === space9.id && space9.played === false] { if[player1.isTurn] { space9.addSymbolX[e.target]; let index = board[2].indexOf[9]; if[index !== -1] { board[2][index] = 'x'; } switchTurns[player2, player1]; space9.played = true; } else { space9.addSymbolO[e.target]; let index = board[2].indexOf[9]; if[index !== -1] { board[2][index] = 'o'; } switchTurns[player1, player2]; space9.played = true; } } //check if playerX wins // top row if[board[0][0] === "x" && board[0][1] === "x" && board[0][2] === "x"] { $['.header'].text['Player One Wins!']; $['.header'].css['color', 'tomato']; $['.p1'].text ['Player 1: '+ p1Counter]; p1Counter += 1; player1.win = true; } // middle row else if [board[1][0] === "x" && board[1][1] === "x" && board[1][2] === "x"] { $['.header'].text['Player One Wins!']; $['.header'].css['color', 'tomato']; $['.p1'].text ['Player 1:' + p1counter]; p1Counter += 1; player1.win = true; } // bottom row else if [board[2][0] === "x" && board[2][1] === "x" && board[2][2] === "x"] { $['.header'].text['Player One Wins!']; $['.header'].css['color', 'tomato']; $['.p1'].text ['Player 1: ' + p1Counter]; p1Counter += 1; player1.win = true; } // first column else if [board[0][0] === 'x' && board[1][0] === 'x' && board[2][0] === 'x'] { $['.header'].text['Player One Wins!']; $['.header'].css['color', 'tomato']; $['.p1'].text ['Player 1: ' + p1Counter]; p1Counter += 1; player1.win = true; } // second column else if [board[0][1] === 'x' && board[1][1] === 'x' && board[2][1] === 'x'] { $['.header'].text['Player One Wins!']; $['.header'].css['color', 'tomato']; $['.p1'].text ['Player 1: ' + p1Counter]; p1Counter += 1; player1.win = true; } // third column else if [board[0][2] === 'x' && board[1][2] === 'x' && board[2][2] === 'x'] { $['.header'].text['Player One Wins!']; $['.header'].css['color', 'tomato']; $['.p1'].text ['Player 1: ' + p1Counter]; p1Counter += 1; player1.win = true; } // diaganol right else if [board[0][0] === 'x' && board[1][1] === 'x' && board[2][2] === 'x'] { $['.header'].text['Player One Wins!']; $['.header'].css['color', 'tomato']; $['.p1'].text ['Player 1: ' + p1Counter]; p1Counter += 1; player1.win = true; } // diaganol left else if [board[0][2] === 'x' && board[1][1] === 'x' && board[2][0] === 'x'] { $['.header'].text['Player One Wins!']; $['.header'].css['color', 'tomato']; $['.p1'].text ['Player 1: ' + p1Counter]; p1Counter += 1; player1.win = true; } // check if player 2 wins //top row if[board[0][0] === "o" && board[0][1] === "o" && board[0][2] === "o"] { $['.header'].text['Player Two Wins!']; $['.header'].css['color', '#33DBFF']; $['.p2'].text ['Player 2: ' + p2Counter]; p2Counter += 1; player2.win = true; } // middle row else if [board[1][0] === "o" && board[1][1] === "o" && board[1][2] === "o"] { $['.header'].text['Player Two Wins!']; $['.header'].css['color', '#33DBFF']; $['.p2'].text ['Player 2: ' + p2Counter]; p2Counter += 1; player2.win = true; } // bottom row else if [board[2][0] === "o" && board[2][1] === "o" && board[2][2] === "o"] { $['.header'].text['Player Two Wins!']; $['.header'].css['color', '#33DBFF']; $['.p2'].text ['Player 2: ' + p2Counter]; p2Counter += 1; player2.win = true; } // first column else if [board[0][0] === 'o' && board[1][0] === 'o' && board[2][0] === 'o'] { $['.header'].text['Player Two Wins!']; $['.header'].css['color', '#33DBFF']; $['.p2'].text ['Player 2: ' + p2Counter]; p2Counter += 1; player2.win = true; } // second column else if [board[0][1] === 'o' && board[1][1] === 'o' && board[2][1] === 'o'] { $['.header'].text['Player Two Wins!']; $['.header'].css['color', '#33DBFF']; $['.p2'].text ['Player 2: ' + p2Counter]; p2Counter += 1; player2.win = true; } // third column else if [board[0][2] === 'o' && board[1][2] === 'o' && board[2][2] === 'o'] { $['.header'].text['Player Two Wins!']; $['.header'].css['color', '#33DBFF']; $['.p2'].text ['Player 2: ' + p2Counter]; p2Counter += 1; player2.win = true; } // diaganol right else if [board[0][0] === 'o' && board[1][1] === 'o' && board[2][2] === 'o'] { $['.header'].text['Player Two Wins!']; $['.header'].css['color', '#33DBFF']; $['.p2'].text ['Player 2: ' + p2Counter]; p2Counter += 1; player2.win = true; } // diaganol left else if [board[0][2] === 'o' && board[1][1] === 'o' && board[2][0] === 'o'] { $['.header'].text['Player Two Wins!']; $['.header'].css['color', '#33DBFF']; $['.p2'].text ['Player 2: ' + p2Counter]; p2Counter += 1; player2.win = true; } } }]; $['.reset'].on['click', [] => { player1.isTurn = true; player2.isTurn = false; player1.win = false; player2.win = false; $['.x'].remove[]; $['.o'].remove[]; $['.header'].text['Tic Tac Toe']; board = [[1,2,3],[4,5,6],[7,8,9]]; space1.played = false; space2.played = false; space3.played = false; space4.played = false; space5.played = false; space6.played = false; space7.played = false; space8.played = false; space9.played = false; }];




Tất cả phần viết mã đã xong, bây giờ chúng ta hãy xem đầu ra cuối cùng và bên dưới tôi cũng đã đề cập đến liên kết codepen


Kết quả cuối cùng




Liên kết codepen ở đây để làm cho công việc của bạn dễ dàng hơn

Bấm vào đây để lấy mã

.

.

.

.


.

.

Cảm ơn bạn đã cuộn đến đây 😊. Nếu bạn có bất kỳ kiến ​​thức nào, hãy kiểm tra tôi tại @frontendeverything. Tôi là Piyush 🎉 Tôi cung cấp Nội dung liên quan đến lập trình, công nghệ, phát triển web  Hàng ngày

Chủ Đề