Rooni commited on
Commit
04d16fc
·
verified ·
1 Parent(s): 467d6a4

Update script.js

Browse files
Files changed (1) hide show
  1. script.js +27 -10
script.js CHANGED
@@ -3,6 +3,8 @@ const scoreDisplay = document.getElementById('score');
3
  const gameArea = document.getElementById('game-area');
4
  const gameOverDisplay = document.getElementById('game-over');
5
  const pauseButton = document.getElementById('pause-button');
 
 
6
  let score = 0;
7
  let gameOver = false;
8
  let isPaused = false;
@@ -20,21 +22,16 @@ document.addEventListener('mousemove', (e) => {
20
  player.style.left = `${mouseX}px`;
21
  });
22
 
23
- // Pause on Esc key or if mouse leaves the game area
24
  document.addEventListener('keydown', (e) => {
25
  if (e.key === 'Escape') {
26
  togglePause();
27
  }
28
  });
29
 
30
- document.addEventListener('mouseleave', () => {
31
- if (!gameOver) {
32
- togglePause();
33
- }
34
- });
35
-
36
  window.addEventListener('blur', () => {
37
- if (!gameOver) {
38
  togglePause();
39
  }
40
  });
@@ -67,8 +64,14 @@ pauseButton.addEventListener('click', () => {
67
  togglePause();
68
  });
69
 
 
 
 
 
 
70
  // Create orbs
71
  function createOrb() {
 
72
  const orb = document.createElement('div');
73
  orb.classList.add('orb');
74
  orb.style.backgroundColor = `rgb(${Math.random() * 255}, ${Math.random() * 255}, ${Math.random() * 255})`;
@@ -85,6 +88,10 @@ function createOrb() {
85
  gameArea.appendChild(trail);
86
 
87
  let interval = setInterval(() => {
 
 
 
 
88
  let orbTop = parseFloat(getComputedStyle(orb).getPropertyValue('top'));
89
  orb.style.top = `${orbTop + orbSpeed}px`;
90
  if (orbTop > gameArea.offsetHeight) {
@@ -107,6 +114,7 @@ function createOrb() {
107
 
108
  // Create bonuses
109
  function createBonus() {
 
110
  const bonus = document.createElement('div');
111
  bonus.classList.add('bonus');
112
  bonus.style.left = `${Math.random() * (gameArea.offsetWidth - 30)}px`;
@@ -122,6 +130,10 @@ function createBonus() {
122
  gameArea.appendChild(trail);
123
 
124
  let interval = setInterval(() => {
 
 
 
 
125
  let bonusTop = parseFloat(getComputedStyle(bonus).getPropertyValue('top'));
126
  bonus.style.top = `${bonusTop + bonusSpeed}px`;
127
  if (bonusTop > gameArea.offsetHeight) {
@@ -166,7 +178,9 @@ function togglePause() {
166
  isPaused = !isPaused;
167
  if (isPaused) {
168
  clearInterval(intervalId);
169
- pauseButton.textContent = 'Resume';
 
 
170
  } else {
171
  intervalId = setInterval(() => {
172
  createOrb();
@@ -174,7 +188,8 @@ function togglePause() {
174
  createBonus();
175
  }
176
  }, 500);
177
- pauseButton.textContent = 'Pause';
 
178
  }
179
  }
180
 
@@ -185,6 +200,7 @@ function endGame() {
185
  gameOverDisplay.style.display = 'block';
186
  isPaused = true;
187
  pauseButton.style.display = 'none';
 
188
  }
189
 
190
  // Start game
@@ -197,6 +213,7 @@ function startGame() {
197
  gameOver = false;
198
  isPaused = false;
199
  pauseButton.style.display = 'none';
 
200
 
201
  intervalId = setInterval(() => {
202
  createOrb();
 
3
  const gameArea = document.getElementById('game-area');
4
  const gameOverDisplay = document.getElementById('game-over');
5
  const pauseButton = document.getElementById('pause-button');
6
+ const pauseMenu = document.getElementById('pause-menu');
7
+ const resumeButton = document.getElementById('resume-button');
8
  let score = 0;
9
  let gameOver = false;
10
  let isPaused = false;
 
22
  player.style.left = `${mouseX}px`;
23
  });
24
 
25
+ // Pause on Esc key
26
  document.addEventListener('keydown', (e) => {
27
  if (e.key === 'Escape') {
28
  togglePause();
29
  }
30
  });
31
 
32
+ // Pause on window blur
 
 
 
 
 
33
  window.addEventListener('blur', () => {
34
+ if (!gameOver && !isPaused) {
35
  togglePause();
36
  }
37
  });
 
64
  togglePause();
65
  });
66
 
67
+ // Resume button
68
+ resumeButton.addEventListener('click', () => {
69
+ togglePause();
70
+ });
71
+
72
  // Create orbs
73
  function createOrb() {
74
+ if (isPaused || gameOver) return;
75
  const orb = document.createElement('div');
76
  orb.classList.add('orb');
77
  orb.style.backgroundColor = `rgb(${Math.random() * 255}, ${Math.random() * 255}, ${Math.random() * 255})`;
 
88
  gameArea.appendChild(trail);
89
 
90
  let interval = setInterval(() => {
91
+ if (isPaused || gameOver) {
92
+ clearInterval(interval);
93
+ return;
94
+ }
95
  let orbTop = parseFloat(getComputedStyle(orb).getPropertyValue('top'));
96
  orb.style.top = `${orbTop + orbSpeed}px`;
97
  if (orbTop > gameArea.offsetHeight) {
 
114
 
115
  // Create bonuses
116
  function createBonus() {
117
+ if (isPaused || gameOver) return;
118
  const bonus = document.createElement('div');
119
  bonus.classList.add('bonus');
120
  bonus.style.left = `${Math.random() * (gameArea.offsetWidth - 30)}px`;
 
130
  gameArea.appendChild(trail);
131
 
132
  let interval = setInterval(() => {
133
+ if (isPaused || gameOver) {
134
+ clearInterval(interval);
135
+ return;
136
+ }
137
  let bonusTop = parseFloat(getComputedStyle(bonus).getPropertyValue('top'));
138
  bonus.style.top = `${bonusTop + bonusSpeed}px`;
139
  if (bonusTop > gameArea.offsetHeight) {
 
178
  isPaused = !isPaused;
179
  if (isPaused) {
180
  clearInterval(intervalId);
181
+ pauseButton.textContent = 'Pause';
182
+ pauseMenu.style.display = 'block';
183
+ pauseButton.style.display = 'none';
184
  } else {
185
  intervalId = setInterval(() => {
186
  createOrb();
 
188
  createBonus();
189
  }
190
  }, 500);
191
+ pauseMenu.style.display = 'none';
192
+ pauseButton.style.display = 'block';
193
  }
194
  }
195
 
 
200
  gameOverDisplay.style.display = 'block';
201
  isPaused = true;
202
  pauseButton.style.display = 'none';
203
+ pauseMenu.style.display = 'none';
204
  }
205
 
206
  // Start game
 
213
  gameOver = false;
214
  isPaused = false;
215
  pauseButton.style.display = 'none';
216
+ pauseMenu.style.display = 'none';
217
 
218
  intervalId = setInterval(() => {
219
  createOrb();