awacke1 commited on
Commit
4dada42
·
verified ·
1 Parent(s): 7790c5f

Update index.html

Browse files
Files changed (1) hide show
  1. index.html +46 -1
index.html CHANGED
@@ -3,7 +3,7 @@
3
  <head>
4
  <meta charset="UTF-8">
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>Tank Game</title>
7
  <style>
8
  body { margin: 0; overflow: hidden; font-family: Arial, sans-serif; }
9
  #gameArea { width: 100vw; height: 100vh; background-color: #f0f0f0; }
@@ -35,11 +35,15 @@
35
  const MAX_TANKS = 5;
36
  const MAX_TANKS_ON_SCREEN = 50;
37
  const SPAWN_DELAY = 5000; // 5 seconds in milliseconds
 
 
38
 
39
  let score = 0;
40
  let level = 1;
41
  let spawnQueue = [];
42
  let lastSpawnTime = 0;
 
 
43
 
44
  class Tank {
45
  constructor(x, y, color, isPlayer = false) {
@@ -211,6 +215,9 @@
211
 
212
  document.addEventListener('keydown', (event) => {
213
  keys[event.key.toLowerCase()] = true;
 
 
 
214
  });
215
 
216
  document.addEventListener('keyup', (event) => {
@@ -277,6 +284,40 @@
277
  }, 2000);
278
  }
279
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
280
  function gameLoop() {
281
  updatePlayerPosition();
282
  player.update();
@@ -292,6 +333,10 @@
292
  checkCollisions();
293
  spawnEnemies();
294
 
 
 
 
 
295
  if (aiTanks.length === 0 && spawnQueue.length === 0) {
296
  updateLevel();
297
  }
 
3
  <head>
4
  <meta charset="UTF-8">
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Tank Game with Shockwave</title>
7
  <style>
8
  body { margin: 0; overflow: hidden; font-family: Arial, sans-serif; }
9
  #gameArea { width: 100vw; height: 100vh; background-color: #f0f0f0; }
 
35
  const MAX_TANKS = 5;
36
  const MAX_TANKS_ON_SCREEN = 50;
37
  const SPAWN_DELAY = 5000; // 5 seconds in milliseconds
38
+ const SHOCKWAVE_RADIUS = 150;
39
+ const SHOCKWAVE_DURATION = 1000; // 1 second in milliseconds
40
 
41
  let score = 0;
42
  let level = 1;
43
  let spawnQueue = [];
44
  let lastSpawnTime = 0;
45
+ let shockwaveActive = false;
46
+ let shockwaveStartTime = 0;
47
 
48
  class Tank {
49
  constructor(x, y, color, isPlayer = false) {
 
215
 
216
  document.addEventListener('keydown', (event) => {
217
  keys[event.key.toLowerCase()] = true;
218
+ if (event.code === 'Space' && !shockwaveActive) {
219
+ activateShockwave();
220
+ }
221
  });
222
 
223
  document.addEventListener('keyup', (event) => {
 
284
  }, 2000);
285
  }
286
 
287
+ function activateShockwave() {
288
+ shockwaveActive = true;
289
+ shockwaveStartTime = Date.now();
290
+
291
+ const shockwave = document.createElementNS(svgNS, "circle");
292
+ shockwave.setAttribute("cx", player.x);
293
+ shockwave.setAttribute("cy", player.y);
294
+ shockwave.setAttribute("r", 0);
295
+ shockwave.setAttribute("fill", "none");
296
+ shockwave.setAttribute("stroke", "rgba(0, 255, 255, 0.5)");
297
+ shockwave.setAttribute("stroke-width", "5");
298
+ svg.appendChild(shockwave);
299
+
300
+ const expandShockwave = setInterval(() => {
301
+ const currentRadius = parseFloat(shockwave.getAttribute("r"));
302
+ if (currentRadius < SHOCKWAVE_RADIUS) {
303
+ shockwave.setAttribute("r", currentRadius + 5);
304
+ } else {
305
+ clearInterval(expandShockwave);
306
+ setTimeout(() => {
307
+ shockwave.remove();
308
+ }, 200);
309
+ }
310
+ }, 20);
311
+
312
+ // Check for enemy tanks within shockwave radius
313
+ aiTanks.forEach(tank => {
314
+ if (distance(player, tank) <= SHOCKWAVE_RADIUS) {
315
+ tank.explode();
316
+ updateScore(10);
317
+ }
318
+ });
319
+ }
320
+
321
  function gameLoop() {
322
  updatePlayerPosition();
323
  player.update();
 
333
  checkCollisions();
334
  spawnEnemies();
335
 
336
+ if (shockwaveActive && Date.now() - shockwaveStartTime > SHOCKWAVE_DURATION) {
337
+ shockwaveActive = false;
338
+ }
339
+
340
  if (aiTanks.length === 0 && spawnQueue.length === 0) {
341
  updateLevel();
342
  }