-
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
Showing
3 changed files
with
313 additions
and
0 deletions.
There are no files selected for viewing
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,80 @@ | ||
const screens = document.querySelectorAll(".screen"); | ||
const choose_insect_btns = document.querySelectorAll(".choose-insect-btn"); | ||
const start_btn = document.getElementById("start-btn"); | ||
const game_container = document.getElementById("game-container"); | ||
const timeEl = document.getElementById("time"); | ||
const scoreEl = document.getElementById("score"); | ||
const message = document.getElementById("message"); | ||
let seconds = 0; | ||
let score = 0; | ||
let selected_insect = {}; | ||
|
||
start_btn.addEventListener("click", () => screens[0].classList.add("up")); | ||
|
||
choose_insect_btns.forEach((btn) => { | ||
btn.addEventListener("click", () => { | ||
const img = btn.querySelector("img"); | ||
const src = img.getAttribute("src"); | ||
const alt = img.getAttribute("alt"); | ||
selected_insect = { src, alt }; | ||
screens[1].classList.add("up"); | ||
setTimeout(createInsect, 1000); | ||
startGame(); | ||
}); | ||
}); | ||
|
||
function startGame() { | ||
setInterval(increaseTime, 1000); | ||
} | ||
|
||
function increaseTime() { | ||
let m = Math.floor(seconds / 60); | ||
let s = seconds % 60; | ||
m = m < 10 ? `0${m}` : m; | ||
s = s < 10 ? `0${s}` : s; | ||
timeEl.innerHTML = `Time: ${m}:${s}`; | ||
seconds++; | ||
} | ||
|
||
function createInsect() { | ||
const insect = document.createElement("div"); | ||
insect.classList.add("insect"); | ||
const { x, y } = getRandomLocation(); | ||
insect.style.top = `${y}px`; | ||
insect.style.left = `${x}px`; | ||
insect.innerHTML = `<img src="${selected_insect.src}" alt="${ | ||
selected_insect.alt | ||
}" style="transform: rotate(${Math.random() * 360}deg)" />`; | ||
|
||
insect.addEventListener("click", catchInsect); | ||
|
||
game_container.appendChild(insect); | ||
} | ||
|
||
function getRandomLocation() { | ||
const width = window.innerWidth; | ||
const height = window.innerHeight; | ||
const x = Math.random() * (width - 200) + 100; | ||
const y = Math.random() * (height - 200) + 100; | ||
return { x, y }; | ||
} | ||
|
||
function catchInsect() { | ||
increaseScore(); | ||
this.classList.add("caught"); | ||
setTimeout(() => this.remove(), 2000); | ||
addInsects(); | ||
} | ||
|
||
function addInsects() { | ||
setTimeout(createInsect, 1000); | ||
setTimeout(createInsect, 1500); | ||
} | ||
|
||
function increaseScore() { | ||
score++; | ||
if (score > 19) { | ||
message.classList.add("visible"); | ||
} | ||
scoreEl.innerHTML = `Score: ${score}`; | ||
} |
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,80 @@ | ||
<!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" /> | ||
<link | ||
href="https://fonts.googleapis.com/css2?family=Press+Start+2P&display=swap" | ||
rel="stylesheet" | ||
/> | ||
<link rel="stylesheet" href="./style.css" /> | ||
<title>Insert Catch game</title> | ||
</head> | ||
<body> | ||
<div class="screen"> | ||
<h1>Catch The Insert</h1> | ||
<button class="btn" id="start-btn">Play Game</button> | ||
</div> | ||
|
||
<div class="screen"> | ||
<h1>What is your "favorite" insect?</h1> | ||
<ul class="insects-list"> | ||
<li> | ||
<button class="choose-insect-btn"> | ||
<p>Fly</p> | ||
<img | ||
src="http://pngimg.com/uploads/fly/fly_PNG3946.png" | ||
alt="fly" | ||
/> | ||
</button> | ||
</li> | ||
|
||
<li> | ||
<button class="choose-insect-btn"> | ||
<p>Mosquito</p> | ||
<img | ||
src="http://pngimg.com/uploads/mosquito/mosquito_PNG18175.png" | ||
alt="mosquito" | ||
/> | ||
</button> | ||
</li> | ||
|
||
<li> | ||
<button class="choose-insect-btn"> | ||
<p>Spider</p> | ||
<img | ||
src="http://pngimg.com/uploads/spider/spider_PNG12.png" | ||
alt="spider" | ||
/> | ||
</button> | ||
</li> | ||
|
||
<li> | ||
<button class="choose-insect-btn"> | ||
<p>Roach</p> | ||
<img | ||
src="http://pngimg.com/uploads/roach/roach_PNG12163.png" | ||
alt="roach" | ||
/> | ||
</button> | ||
</li> | ||
</ul> | ||
</div> | ||
|
||
<div class="screen game-container" id="game-container"> | ||
<h3 id="time" class="time">Time: 00:00</h3> | ||
<h3 id="score" class="score">Score: 0</h3> | ||
<h5 id="message" class="message"> | ||
Are you annnoyed yet? <br /> | ||
You are playing a impossible game!! | ||
</h5> | ||
|
||
<!-- <div class="insect"> | ||
<img src="http://pngimg.com/uploads/fly/fly_PNG3946.png" alt="" /> | ||
</div> --> | ||
</div> | ||
|
||
<script src="./app.js"></script> | ||
</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,153 @@ | ||
*::after, | ||
*::before { | ||
box-sizing: border-box; | ||
margin: 0; | ||
padding: 0; | ||
} | ||
|
||
body { | ||
background-color: #516dff; | ||
color: #fff; | ||
font-family: "Press Start 2P", sans-serif; | ||
height: 100vh; | ||
overflow: hidden; | ||
text-align: center; | ||
margin: 0; | ||
} | ||
|
||
a { | ||
color: #fff; | ||
} | ||
|
||
h1 { | ||
line-height: 1.4; | ||
} | ||
|
||
.btn { | ||
border: 0; | ||
background-color: #fff; | ||
color: #516dff; | ||
padding: 15px 20px; | ||
font-family: inherit; | ||
cursor: pointer; | ||
} | ||
|
||
.btn:hover { | ||
opacity: 0.7; | ||
} | ||
|
||
.screen { | ||
display: flex; | ||
flex-direction: column; | ||
align-items: center; | ||
justify-content: center; | ||
height: 100vh; | ||
width: 100vw; | ||
transition: margin 0.5s ease-out; | ||
} | ||
|
||
.screen.up { | ||
margin-top: -100vh; | ||
} | ||
|
||
.insects-list { | ||
display: flex; | ||
flex-wrap: wrap; | ||
justify-content: center; | ||
list-style-type: none; | ||
padding: 0; | ||
} | ||
|
||
.insects-list li { | ||
margin: 10px; | ||
} | ||
|
||
.choose-insect-btn { | ||
background-color: transparent; | ||
border: 2px solid #fff; | ||
color: #fff; | ||
cursor: pointer; | ||
font-family: inherit; | ||
width: 150px; | ||
height: 150px; | ||
} | ||
|
||
.choose-insect-btn:hover { | ||
background-color: #fff; | ||
color: #516dff; | ||
} | ||
|
||
.choose-insect-btn:active { | ||
background-color: rgba(255, 255, 255, 0.7); | ||
} | ||
|
||
.choose-insect-btn img { | ||
width: 100px; | ||
height: 100px; | ||
object-fit: contain; | ||
} | ||
|
||
.game-container { | ||
position: relative; | ||
} | ||
|
||
.time, | ||
.score { | ||
position: absolute; | ||
top: 20px; | ||
} | ||
|
||
.time { | ||
left: 20px; | ||
} | ||
|
||
.score { | ||
right: 20px; | ||
} | ||
|
||
.message { | ||
position: absolute; | ||
line-height: 1.7; | ||
background-color: rgba(0, 0, 0, 0.5); | ||
width: 100%; | ||
padding: 20px; | ||
z-index: 100; | ||
text-align: center; | ||
top: 0; | ||
left: 50%; | ||
transform: translate(-50%, -150%); | ||
transition: transform 0.4s ease-in; | ||
opacity: 0; | ||
} | ||
|
||
.message.visible { | ||
transform: translate(-50%, 150%); | ||
opacity: 1; | ||
} | ||
|
||
.insect { | ||
cursor: pointer; | ||
display: flex; | ||
align-items: center; | ||
justify-content: center; | ||
width: 100px; | ||
height: 100px; | ||
position: absolute; | ||
transform: translate(-50%, -50%) scale(1); | ||
transition: transform 0.3s ease-in-out; | ||
} | ||
|
||
.insect.caught { | ||
transform: translate(-50%, -50%) scale(0); | ||
} | ||
|
||
.insect img { | ||
width: 100px; | ||
height: 100px; | ||
} | ||
|
||
@media (max-width: 768px) { | ||
h1 { | ||
font-size: 1.5rem; | ||
} | ||
} |