Skip to content
This repository was archived by the owner on Oct 1, 2025. It is now read-only.

Commit 8d327a7

Browse files
committed
feat: Coding Challenge 1 of DOM and Events Done
1 parent 44ec5ee commit 8d327a7

File tree

3 files changed

+225
-0
lines changed

3 files changed

+225
-0
lines changed

01-guess-my-number/index.html

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
<!DOCTYPE html>
2+
<html lang="en">
3+
<head>
4+
<meta charset="UTF-8" />
5+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
6+
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
7+
<link rel="stylesheet" href="style.css" />
8+
<title>Guess My Number!</title>
9+
</head>
10+
<body>
11+
<header>
12+
<h1>Guess My Number!</h1>
13+
<p class="between">(Between 1 and 20)</p>
14+
<button class="btn again">Again!</button>
15+
<div class="number">?</div>
16+
</header>
17+
<main>
18+
<section class="left">
19+
<input type="number" class="guess" />
20+
<button class="btn check">Check!</button>
21+
</section>
22+
<section class="right">
23+
<p class="message">Start guessing...</p>
24+
<p class="label-score">💯 Score: <span class="score">20</span></p>
25+
<p class="label-highscore">
26+
🥇 Highscore: <span class="highscore">0</span>
27+
</p>
28+
</section>
29+
</main>
30+
<script src="script.js"></script>
31+
</body>
32+
</html>

01-guess-my-number/script.js

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
'use strict';
2+
3+
const domBody = document.querySelector('body');
4+
const domScore = document.querySelector('.score');
5+
const domHighscore = document.querySelector('.highscore');
6+
const domMessage = document.querySelector('.message');
7+
const domNumber = document.querySelector('.number');
8+
9+
let secretNumber = Math.trunc(Math.random() * 20) + 1;
10+
let playerWon = false;
11+
let score = 20;
12+
let highscore = 0;
13+
14+
// Function to Change Text Content from Some Element
15+
function setTextContent (element, text)
16+
{
17+
element.textContent = text;
18+
}
19+
20+
document.querySelector('.again').addEventListener('click', (event) =>
21+
{
22+
playerWon = false;
23+
24+
domBody.style.backgroundColor = '#222';
25+
domNumber.style.width = '15rem';
26+
setTextContent(domNumber, '?');
27+
28+
setTextContent(domMessage, 'Start guessing...');
29+
secretNumber = Math.trunc(Math.random() * 20) + 1;
30+
31+
score = 20;
32+
setTextContent(domScore, score);
33+
});
34+
35+
document.querySelector('.check').addEventListener('click', (event) =>
36+
{
37+
if (playerWon)
38+
return;
39+
40+
const guess = Number(document.querySelector('.guess').value);
41+
console.log(guess, typeof guess);
42+
43+
if (score == 1 && guess != secretNumber) // Player loses the game
44+
{
45+
setTextContent(domMessage, '💣 You lost the game!');
46+
score--;
47+
}
48+
else if (!guess) // No input
49+
{
50+
setTextContent(domMessage, '⛔ No number!');
51+
}
52+
else if (guess == secretNumber) // Player wins the game
53+
{
54+
setTextContent(domMessage, '🎉🎉 Correct number!');
55+
setTextContent(domNumber, secretNumber);
56+
57+
if (score > highscore)
58+
{
59+
highscore = score;
60+
setTextContent(domHighscore, highscore);
61+
}
62+
playerWon = true;
63+
64+
domBody.style.backgroundColor = '#60b347';
65+
domNumber.style.width = '30rem';
66+
}
67+
else // Guess too High or too Low
68+
{
69+
setTextContent(domMessage, (guess > secretNumber) ? '📈 Too high!' : '📉 Too low!');
70+
score--;
71+
}
72+
73+
setTextContent(domScore, score);
74+
});

01-guess-my-number/style.css

Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
@import url('https://fonts.googleapis.com/css?family=Press+Start+2P&display=swap');
2+
3+
* {
4+
margin: 0;
5+
padding: 0;
6+
box-sizing: inherit;
7+
}
8+
9+
html {
10+
font-size: 62.5%;
11+
box-sizing: border-box;
12+
}
13+
14+
body {
15+
font-family: 'Press Start 2P', sans-serif;
16+
color: #eee;
17+
background-color: #222;
18+
/* background-color: #60b347; */
19+
}
20+
21+
/* LAYOUT */
22+
header {
23+
position: relative;
24+
height: 35vh;
25+
border-bottom: 7px solid #eee;
26+
}
27+
28+
main {
29+
height: 65vh;
30+
color: #eee;
31+
display: flex;
32+
align-items: center;
33+
justify-content: space-around;
34+
}
35+
36+
.left {
37+
width: 52rem;
38+
display: flex;
39+
flex-direction: column;
40+
align-items: center;
41+
}
42+
43+
.right {
44+
width: 52rem;
45+
font-size: 2rem;
46+
}
47+
48+
/* ELEMENTS STYLE */
49+
h1 {
50+
font-size: 4rem;
51+
text-align: center;
52+
position: absolute;
53+
width: 100%;
54+
top: 52%;
55+
left: 50%;
56+
transform: translate(-50%, -50%);
57+
}
58+
59+
.number {
60+
background: #eee;
61+
color: #333;
62+
font-size: 6rem;
63+
width: 15rem;
64+
padding: 3rem 0rem;
65+
text-align: center;
66+
position: absolute;
67+
bottom: 0;
68+
left: 50%;
69+
transform: translate(-50%, 50%);
70+
}
71+
72+
.between {
73+
font-size: 1.4rem;
74+
position: absolute;
75+
top: 2rem;
76+
right: 2rem;
77+
}
78+
79+
.again {
80+
position: absolute;
81+
top: 2rem;
82+
left: 2rem;
83+
}
84+
85+
.guess {
86+
background: none;
87+
border: 4px solid #eee;
88+
font-family: inherit;
89+
color: inherit;
90+
font-size: 5rem;
91+
padding: 2.5rem;
92+
width: 25rem;
93+
text-align: center;
94+
display: block;
95+
margin-bottom: 3rem;
96+
}
97+
98+
.btn {
99+
border: none;
100+
background-color: #eee;
101+
color: #222;
102+
font-size: 2rem;
103+
font-family: inherit;
104+
padding: 2rem 3rem;
105+
cursor: pointer;
106+
}
107+
108+
.btn:hover {
109+
background-color: #ccc;
110+
}
111+
112+
.message {
113+
margin-bottom: 8rem;
114+
height: 3rem;
115+
}
116+
117+
.label-score {
118+
margin-bottom: 2rem;
119+
}

0 commit comments

Comments
 (0)