-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
3b9fcb6
commit 2953ecb
Showing
7 changed files
with
231 additions
and
0 deletions.
There are no files selected for viewing
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
<!DOCTYPE html> | ||
<html lang="en"> | ||
<head> | ||
<meta charset="UTF-8" /> | ||
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> | ||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> | ||
<title>Tic Tac Toe</title> | ||
<link rel="stylesheet" href="style.css" /> | ||
</head> | ||
<body> | ||
<nav> | ||
<ul> | ||
<li>TicTacToe.com</li> | ||
</ul> | ||
</nav> | ||
|
||
<div class="gameContainer"> | ||
<div class="container"> | ||
<div class="line"></div> | ||
<div class="box bt-0 bl-0"><span class="boxtext"></span></div> | ||
<div class="box bt-0"><span class="boxtext"></span></div> | ||
<div class="box bt-0 br-0"><span class="boxtext"></span></div> | ||
<div class="box bl-0"><span class="boxtext"></span></div> | ||
<div class="box"><span class="boxtext"></span></div> | ||
<div class="box br-0"><span class="boxtext"></span></div> | ||
<div class="box bl-0 bb-0"><span class="boxtext"></span></div> | ||
<div class="box bb-0"><span class="boxtext"></span></div> | ||
<div class="box bb-0 br-0"><span class="boxtext"></span></div> | ||
</div> | ||
<div class="gameInfo"> | ||
<h1>Welcome to Tic tac toe</h1> | ||
<div> | ||
<span class="info">Turn for X</span> | ||
<button id="reset">Reset</button> | ||
</div> | ||
|
||
<div class="imgbox"> | ||
<img src="excited.gif" alt="" /> | ||
</div> | ||
</div> | ||
</div> | ||
|
||
<script src="script.js"></script> | ||
<h2>Developed by Aditya Prakash</h2> | ||
</body> | ||
</html> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,67 @@ | ||
console.log("Welcome to Tic Tac Toe") | ||
let music = new Audio("music.mp3") | ||
let audioTurn = new Audio("ting.mp3") | ||
let gameover = new Audio("gameover.mp3") | ||
let turn = "X" | ||
let isgameover = false; | ||
|
||
// Function to change the turn | ||
const changeTurn = ()=>{ | ||
return turn === "X"? "0": "X" | ||
} | ||
|
||
// Function to check for a win | ||
const checkWin = ()=>{ | ||
let boxtext = document.getElementsByClassName('boxtext'); | ||
let wins = [ | ||
[0, 1, 2, 5, 5, 0], | ||
[3, 4, 5, 5, 15, 0], | ||
[6, 7, 8, 5, 25, 0], | ||
[0, 3, 6, -5, 15, 90], | ||
[1, 4, 7, 5, 15, 90], | ||
[2, 5, 8, 15, 15, 90], | ||
[0, 4, 8, 5, 15, 45], | ||
[2, 4, 6, 5, 15, 135], | ||
] | ||
wins.forEach(e =>{ | ||
if((boxtext[e[0]].innerText === boxtext[e[1]].innerText) && (boxtext[e[2]].innerText === boxtext[e[1]].innerText) && (boxtext[e[0]].innerText !== "") ){ | ||
document.querySelector('.info').innerText = boxtext[e[0]].innerText + " Won" | ||
isgameover = true | ||
document.querySelector('.imgbox').getElementsByTagName('img')[0].style.width = "200px"; | ||
document.querySelector(".line").style.transform = `translate(${e[3]}vw, ${e[4]}vw) rotate(${e[5]}deg)` | ||
document.querySelector(".line").style.width = "20vw"; | ||
} | ||
}) | ||
} | ||
|
||
// Game Logic | ||
// music.play() | ||
let boxes = document.getElementsByClassName("box"); | ||
Array.from(boxes).forEach(element =>{ | ||
let boxtext = element.querySelector('.boxtext'); | ||
element.addEventListener('click', ()=>{ | ||
if(boxtext.innerText === ''){ | ||
boxtext.innerText = turn; | ||
turn = changeTurn(); | ||
audioTurn.play(); | ||
checkWin(); | ||
if (!isgameover){ | ||
document.getElementsByClassName("info")[0].innerText = "Turn for " + turn; | ||
} | ||
} | ||
}) | ||
}) | ||
|
||
// Add onclick listener to reset button | ||
reset.addEventListener('click', ()=>{ | ||
let boxtexts = document.querySelectorAll('.boxtext'); | ||
Array.from(boxtexts).forEach(element => { | ||
element.innerText = "" | ||
}); | ||
turn = "X"; | ||
isgameover = false | ||
document.querySelector(".line").style.width = "0vw"; | ||
document.getElementsByClassName("info")[0].innerText = "Turn for " + turn; | ||
document.querySelector('.imgbox').getElementsByTagName('img')[0].style.width = "0px" | ||
}) | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,118 @@ | ||
@import url('https://fonts.googleapis.com/css2?family=Baloo+Bhaina+2&family=Roboto&display=swap'); | ||
*{ | ||
margin: 0; | ||
padding: 0; | ||
} | ||
|
||
nav{ | ||
background-color: rgba(15, 171, 142, 0.601); | ||
color: rgba(255, 255, 255, 0.386); | ||
height: 65px; | ||
font-size: 27px; | ||
display: flex; | ||
align-items: center; | ||
padding: 0 12px; | ||
font-family: 'Roboto', sans-serif; | ||
} | ||
|
||
nav ul{ | ||
list-style-type: none; | ||
} | ||
|
||
.gameContainer{ | ||
display: flex; | ||
justify-content: center; | ||
margin-top: 50px; | ||
} | ||
|
||
.container{ | ||
display: grid; | ||
grid-template-rows: repeat(3, 10vw); | ||
grid-template-columns: repeat(3, 10vw); | ||
font-family: 'Roboto', sans-serif; | ||
position: relative; | ||
} | ||
|
||
.box{ | ||
border: 2px solid rgb(0, 0, 0); | ||
font-size: 8vw; | ||
cursor: pointer; | ||
display: flex; | ||
justify-content: center; | ||
align-items: center; | ||
} | ||
|
||
.box:hover{ | ||
background-color: rgba(255, 255, 255, 0.519); | ||
} | ||
|
||
.info { | ||
font-size: 22px; | ||
} | ||
|
||
.gameInfo{ | ||
padding: 0 34px; | ||
font-family: 'Baloo Bhaina 2', cursive; | ||
} | ||
|
||
.gameInfo h1{ | ||
font-size: 2.5rem; | ||
} | ||
|
||
.imgbox img{ | ||
width: 0; | ||
transition: width 1s ease-in-out; | ||
} | ||
|
||
.br-0{ | ||
border-right: 0; | ||
} | ||
|
||
.bl-0{ | ||
border-left: 0; | ||
} | ||
|
||
.bt-0{ | ||
border-top: 0; | ||
} | ||
|
||
.bb-0{ | ||
border-bottom: 0; | ||
} | ||
|
||
#reset { | ||
margin: 0 23px; | ||
padding: 1px 18px; | ||
background: #f3e7f9; | ||
border-radius: 6px; | ||
cursor: pointer; | ||
font-family: 'Baloo Bhaina 2'; | ||
font-size: 15px; | ||
font-weight: bolder; | ||
} | ||
|
||
.line{ | ||
background-color: black; | ||
height: 3px; | ||
width: 0; | ||
position: absolute; | ||
background-color: #c81010; | ||
transition: width 1s ease-in-out; | ||
} | ||
|
||
@media screen and (max-width: 950px) | ||
{ | ||
.gameContainer{ | ||
flex-wrap: wrap; | ||
} | ||
.gameInfo{ | ||
margin-top: 34px; | ||
} | ||
.gameInfo h1{ | ||
font-size: 1.5rem; | ||
} | ||
.container { | ||
grid-template-rows: repeat(3, 20vw); | ||
grid-template-columns: repeat(3, 20vw); | ||
} | ||
} |