Skip to content

Commit

Permalink
develop files of tic-tac-toe b00tc4mp#264
Browse files Browse the repository at this point in the history
  • Loading branch information
tarek blkraiet committed Jul 10, 2024
1 parent ee73b9e commit 91152b5
Show file tree
Hide file tree
Showing 3 changed files with 103 additions and 0 deletions.
17 changes: 17 additions & 0 deletions staff/tarek-blkraiet/shapes/tic-tac-toe/index.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
.board {
display: grid;
width: 20vw;
height: 20vw;
background-color: lightgray;
gap: 1px;
}

.cell {
background-color: gray;
display: flex;
justify-content: center;
align-items: center;
color: white;
font-size: xx-large;

}
25 changes: 25 additions & 0 deletions staff/tarek-blkraiet/shapes/tic-tac-toe/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Tic Tac Toe</title>

<link rel="stylesheet" href="index.css">
</head>


<body>
<div id="root"></div>
<script src="https://unpkg.com/react@18/umd/react.development.js" crossorigin></script>
<script src="https://unpkg.com/react-dom@18/umd/react-dom.development.js" crossorigin></script>

<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-standalone/7.24.3/babel.min.js"
integrity="sha512-ew/qzOMK7mnWiZ395TTbZ+YVD6e7dOROUcXXzSjyxPmL9oNf5gp8DJp46uarrTKch5aUhR/NS8qtCh6hnaTMCw=="
crossorigin="anonymous" referrerpolicy="no-referrer"></script>

<script src="index.jsx" type="text/babel"></script>
</body>

</html>
61 changes: 61 additions & 0 deletions staff/tarek-blkraiet/shapes/tic-tac-toe/index.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
class App extends React.Component {
constructor() {
super()

const board = new Array(4)

for (let i = 0; i < board.length; i++)
board[i] = new Array(board.length).fill(0)

this.state = {
board,
trun: 0
}
}
getCellChar(value) {
if (value === 1) return 'X'
else if (value === 2) return '0'
else return ''
}

play(row, column) {
console.log('click')
const prevBoard = this.state.board

const board = []
for (let i = 0; i < prevBoard; i++)
board[i] = new Array(prevBoard[0].length).fill(0)

for (const i in prevBoard)
for (const j in prevBoard[i])
board[i][j] = prevBoard[i][j]

const turn = this.state.turn
if (turn % 2 === 0)
board[row][column] = 1
else
board[row][column] = 2
this.setState({ board, turn: turn + 1 })
}

render() {
const board = this.state.board

return <>
<header> Tic Tac Toe </header>

<main>
<section className="board" style={{
gridTemplateColumns: `repeat(${board.length},1fr)`,
gridTemplateColumns: `repeat(${board.length},1fr)`
}}>
{board.map((row, i) => row.map((column, j) => <div className="cell" onClick={() => this.play(i, j)} >{this.getCellChar(board[i][j])}</div>)).flat(Infinty)}
</section>
</main>

<footer></footer>
</>
}
}
const root = ReactDOM.creatRoot(document.querySelector('#root'))
root.render(<App />)

0 comments on commit 91152b5

Please sign in to comment.