Spaces:
Running
Running
cutechicken
commited on
Commit
โข
85cd92f
1
Parent(s):
c8819a3
Update game.js
Browse files
game.js
CHANGED
@@ -2150,25 +2150,26 @@ class Game {
|
|
2150 |
}
|
2151 |
|
2152 |
startGameTimer() {
|
2153 |
-
|
2154 |
-
|
2155 |
-
|
2156 |
-
|
2157 |
-
|
2158 |
-
|
2159 |
-
|
2160 |
-
|
2161 |
-
|
2162 |
-
|
2163 |
-
|
2164 |
-
|
2165 |
-
|
2166 |
-
|
2167 |
-
|
2168 |
-
|
2169 |
-
|
2170 |
-
|
2171 |
-
|
|
|
2172 |
|
2173 |
spawnEnemies() {
|
2174 |
const spawnEnemy = () => {
|
@@ -2445,33 +2446,49 @@ this.enemies.forEach(enemy => {
|
|
2445 |
// ์ด์ ์์น ์ ์ฅ
|
2446 |
this.previousTankPosition.copy(this.tank.body.position);
|
2447 |
}
|
2448 |
-
endGame() {
|
2449 |
if (this.isGameOver) return;
|
2450 |
-
|
2451 |
this.isGameOver = true;
|
2452 |
-
|
|
|
2453 |
if (this.bgm) {
|
2454 |
this.bgm.pause();
|
2455 |
this.bgm = null;
|
2456 |
this.bgmPlaying = false;
|
2457 |
}
|
2458 |
-
|
2459 |
-
|
2460 |
-
|
2461 |
-
|
2462 |
-
|
2463 |
-
|
2464 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2465 |
if (this.gameTimer) {
|
2466 |
clearInterval(this.gameTimer);
|
2467 |
}
|
2468 |
-
|
2469 |
if (this.animationFrameId) {
|
2470 |
cancelAnimationFrame(this.animationFrameId);
|
2471 |
}
|
2472 |
|
2473 |
document.exitPointerLock();
|
2474 |
|
|
|
2475 |
const gameOverDiv = document.createElement('div');
|
2476 |
gameOverDiv.style.position = 'absolute';
|
2477 |
gameOverDiv.style.top = '50%';
|
@@ -2484,7 +2501,7 @@ this.enemies.forEach(enemy => {
|
|
2484 |
gameOverDiv.style.borderRadius = '10px';
|
2485 |
gameOverDiv.style.textAlign = 'center';
|
2486 |
gameOverDiv.innerHTML = `
|
2487 |
-
Game Over<br>
|
2488 |
Score: ${this.score}<br>
|
2489 |
Time Survived: ${GAME_DURATION - this.gameTime}s<br>
|
2490 |
<button onclick="location.reload()"
|
@@ -2497,6 +2514,7 @@ this.enemies.forEach(enemy => {
|
|
2497 |
document.body.appendChild(gameOverDiv);
|
2498 |
}
|
2499 |
|
|
|
2500 |
updateUI() {
|
2501 |
if (!this.isGameOver) {
|
2502 |
const healthBar = document.getElementById('health');
|
|
|
2150 |
}
|
2151 |
|
2152 |
startGameTimer() {
|
2153 |
+
if (this.gameTimer) {
|
2154 |
+
clearInterval(this.gameTimer);
|
2155 |
+
}
|
2156 |
+
|
2157 |
+
this.gameTimer = setInterval(() => {
|
2158 |
+
if (this.isLoading || this.isGameOver) {
|
2159 |
+
clearInterval(this.gameTimer);
|
2160 |
+
return;
|
2161 |
+
}
|
2162 |
+
|
2163 |
+
this.gameTime--;
|
2164 |
+
document.getElementById('time').textContent = `Time: ${this.gameTime}s`;
|
2165 |
+
|
2166 |
+
if (this.gameTime <= 0) {
|
2167 |
+
clearInterval(this.gameTimer);
|
2168 |
+
this.endGame(true); // ์น๋ฆฌ ์กฐ๊ฑด์ผ๋ก endGame ํธ์ถ
|
2169 |
+
}
|
2170 |
+
}, 1000);
|
2171 |
+
}
|
2172 |
+
|
2173 |
|
2174 |
spawnEnemies() {
|
2175 |
const spawnEnemy = () => {
|
|
|
2446 |
// ์ด์ ์์น ์ ์ฅ
|
2447 |
this.previousTankPosition.copy(this.tank.body.position);
|
2448 |
}
|
2449 |
+
endGame(isVictory = false) {
|
2450 |
if (this.isGameOver) return;
|
2451 |
+
|
2452 |
this.isGameOver = true;
|
2453 |
+
|
2454 |
+
// ๋ชจ๋ ์๋ฆฌ ์ ์ง
|
2455 |
if (this.bgm) {
|
2456 |
this.bgm.pause();
|
2457 |
this.bgm = null;
|
2458 |
this.bgmPlaying = false;
|
2459 |
}
|
2460 |
+
if (this.engineSound) {
|
2461 |
+
this.engineSound.pause();
|
2462 |
+
this.engineSound = null;
|
2463 |
+
}
|
2464 |
+
if (this.engineStopSound) {
|
2465 |
+
this.engineStopSound.pause();
|
2466 |
+
this.engineStopSound = null;
|
2467 |
+
}
|
2468 |
+
|
2469 |
+
// ์น๋ฆฌ/ํจ๋ฐฐ ์ฌ์ด๋ ์ฌ์
|
2470 |
+
if (isVictory) {
|
2471 |
+
const victoryAudio = new Audio('sounds/victory.ogg');
|
2472 |
+
victoryAudio.volume = 0.5;
|
2473 |
+
victoryAudio.play();
|
2474 |
+
} else {
|
2475 |
+
const deathSounds = ['sounds/death1.ogg', 'sounds/death2.ogg'];
|
2476 |
+
const randomDeathSound = deathSounds[Math.floor(Math.random() * deathSounds.length)];
|
2477 |
+
const deathAudio = new Audio(randomDeathSound);
|
2478 |
+
deathAudio.play();
|
2479 |
+
}
|
2480 |
+
|
2481 |
+
// ๊ฒ์ ํ์ด๋จธ ๋ฐ ์ ๋๋ฉ์ด์
์ ์ง
|
2482 |
if (this.gameTimer) {
|
2483 |
clearInterval(this.gameTimer);
|
2484 |
}
|
|
|
2485 |
if (this.animationFrameId) {
|
2486 |
cancelAnimationFrame(this.animationFrameId);
|
2487 |
}
|
2488 |
|
2489 |
document.exitPointerLock();
|
2490 |
|
2491 |
+
// ๊ฒฐ๊ณผ ํ๋ฉด ํ์
|
2492 |
const gameOverDiv = document.createElement('div');
|
2493 |
gameOverDiv.style.position = 'absolute';
|
2494 |
gameOverDiv.style.top = '50%';
|
|
|
2501 |
gameOverDiv.style.borderRadius = '10px';
|
2502 |
gameOverDiv.style.textAlign = 'center';
|
2503 |
gameOverDiv.innerHTML = `
|
2504 |
+
${isVictory ? 'Victory!' : 'Game Over'}<br>
|
2505 |
Score: ${this.score}<br>
|
2506 |
Time Survived: ${GAME_DURATION - this.gameTime}s<br>
|
2507 |
<button onclick="location.reload()"
|
|
|
2514 |
document.body.appendChild(gameOverDiv);
|
2515 |
}
|
2516 |
|
2517 |
+
|
2518 |
updateUI() {
|
2519 |
if (!this.isGameOver) {
|
2520 |
const healthBar = document.getElementById('health');
|