-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathscript.js
75 lines (65 loc) · 1.87 KB
/
script.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
const dino = document.querySelector(".dino");
const obstacle = document.querySelector(".obstacle");
const scoreDisplay = document.querySelector(".score");
let isJumping = false;
let score = 0;
document.addEventListener("keydown", jump);
function jump(event) {
if (event.keyCode === 32 && !isJumping) {
isJumping = true;
let jumpUp = 0;
const jumpInterval = setInterval(() => {
if (jumpUp >= 100) {
clearInterval(jumpInterval);
let fallDown = 0;
const fallInterval = setInterval(() => {
if (fallDown <= 0) {
clearInterval(fallInterval);
isJumping = false;
} else {
jumpUp -= 5;
fallDown -= 5;
dino.style.bottom = jumpUp + "px";
}
}, 20);
} else {
jumpUp += 5;
dino.style.bottom = jumpUp + "px";
}
}, 20);
}
}
function updateScore() {
score++;
scoreDisplay.textContent = score;
}
function checkCollision() {
if (score > 0) {
const dinoPosition = dino.getBoundingClientRect();
const obstaclePosition = obstacle.getBoundingClientRect();
if (
dinoPosition.left < obstaclePosition.left + obstaclePosition.width &&
dinoPosition.left + dinoPosition.width > obstaclePosition.left &&
dinoPosition.top < obstaclePosition.top + obstaclePosition.height &&
dinoPosition.top + dinoPosition.height > obstaclePosition.top
) {
alert(`Game Over! Your score: ${score}`);
location.reload(); // Reload the game
}
}
}
function moveObstacle() {
let obstaclePosition = 300;
const moveInterval = setInterval(() => {
if (obstaclePosition <= -20) {
clearInterval(moveInterval);
updateScore();
moveObstacle();
} else {
obstaclePosition -= 5;
obstacle.style.right = obstaclePosition + "px";
checkCollision();
}
}, 20);
}
moveObstacle();