Skip to content

Commit 87db774

Browse files
very simple X's and O's with html/css/js
Does not check for winner. Does check if square used. Includes play again button.
1 parent 4db21af commit 87db774

File tree

5 files changed

+106
-1
lines changed

5 files changed

+106
-1
lines changed
2.11 KB
Loading
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
<!DOCTYPE html>
2+
<html lang="en">
3+
4+
<head>
5+
<title>X's and O's</title>
6+
<link rel="icon" href="./Red_TicTacToe_Icon.svg.png">
7+
<meta charset="UTF-8">
8+
<meta name="viewport" content="width=device-width, initial-scale=1">
9+
<link href="./style.css" rel="stylesheet">
10+
</head>
11+
12+
<body>
13+
<h1>Play X's and O's</h1>
14+
15+
<button onclick="window.location.reload(true)">Play again</button>
16+
17+
<div class="game-board">
18+
<!--First row-->
19+
<div id="1" class="grid-square"></div>
20+
<div id="2" class="grid-square"></div>
21+
<div id="3" class="grid-square"></div>
22+
<!--Second row-->
23+
<div id="4" class="grid-square"></div>
24+
<div id="5" class="grid-square"></div>
25+
<div id="6" class="grid-square"></div>
26+
<!--Third row-->
27+
<div id="7" class="grid-square"></div>
28+
<div id="8" class="grid-square"></div>
29+
<div id="9" class="grid-square"></div>
30+
</div>
31+
32+
<!--Load javascript after loading website html!-->
33+
<script src="./script.js"></script>
34+
</body>
35+
36+
</html>

classes/noughts-and-crosses/script.js

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
// use to track if placing an X or an O next
2+
let placeX = true;
3+
4+
// function to add X or O to our grid square
5+
function squareClicked(square) {
6+
if (square.innerText != "") {
7+
return; // square is already used so do nothing
8+
}
9+
10+
if (placeX) {
11+
square.innerText = "X"; // takes our empty <div></div> and makes it <div>X</div>
12+
} else {
13+
square.innerText = "0";
14+
}
15+
// placeX = not placeX (not true = false)
16+
placeX = !placeX;
17+
}
18+
19+
// select elements in DOM using javascript
20+
// first row
21+
let square1 = document.getElementById("1"); // this is why we have id set in the html
22+
let square2 = document.getElementById("2");
23+
let square3 = document.getElementById("3");
24+
25+
// second row
26+
let square4 = document.getElementById("4");
27+
let square5 = document.getElementById("5");
28+
let square6 = document.getElementById("6");
29+
30+
// third row
31+
let square7 = document.getElementById("7");
32+
let square8 = document.getElementById("8");
33+
let square9 = document.getElementById("9");
34+
35+
// add onclick handlers to each square
36+
// first row
37+
square1.onclick = () => squareClicked(square1); // what happens if no "() => " before squareClicked?
38+
square2.onclick = () => squareClicked(square2);
39+
square3.onclick = () => squareClicked(square3);
40+
// second row
41+
square4.onclick = () => squareClicked(square4);
42+
square5.onclick = () => squareClicked(square5);
43+
square6.onclick = () => squareClicked(square6);
44+
// third row
45+
square7.onclick = () => squareClicked(square7);
46+
square8.onclick = () => squareClicked(square8);
47+
square9.onclick = () => squareClicked(square9);

classes/noughts-and-crosses/style.css

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
.game-board {
2+
height: min(90vh, 90vw);
3+
width: min(90vh, 90vw);
4+
margin: auto;
5+
6+
display: grid;
7+
grid-template-rows: 1fr 1fr 1fr;
8+
grid-template-columns: 1fr 1fr 1fr;
9+
gap: 2px;
10+
background-color: black;
11+
border: 2px solid black;
12+
}
13+
14+
.grid-square {
15+
height: 100%;
16+
width: 100%;
17+
background-color: white;
18+
font-size: 28vh;
19+
text-align: center;
20+
}
21+

index.html

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,10 @@ <h1>IBM CoderDojo webpages</h1>
1515
<nav>
1616
<h2>Navigation links</h2>
1717
<ul>
18+
<li><a href="./personal-websites/">Member websites</a></p>
1819
<li><a href="./classes/birds-with-hands">Birds with hands</a></li>
1920
<li><a href="./classes/coder-dojo-homepage">CoderDojo homepage</a></li>
20-
<li><a href="./personal-websites/">Member websites</a></p>
21+
<li><a href="./classes/noughts-and-crosses/">X's and O's game</a></li>
2122
</ul>
2223
</nav>
2324

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy