Merge pull request 'Some minor changes' (#17) from sageTheDm/pages:main into main
Reviewed-on: https://interstellardevelopment.org/code/code/interstellar_development/interstellar_website/pulls/17
This commit is contained in:
		
						commit
						d42d1b039b
					
				
					 7 changed files with 204 additions and 25 deletions
				
			
		|  | @ -38,7 +38,7 @@ class Footer extends HTMLElement { | ||||||
| 
 | 
 | ||||||
|     // Add event listener for button click
 |     // Add event listener for button click
 | ||||||
|     this.querySelector('.secret-button').addEventListener('click', () => { |     this.querySelector('.secret-button').addEventListener('click', () => { | ||||||
|       window.location.href = 'secret/secret.html'; // Open the secret.html file
 |       window.location.href = 'secret/explenation.html'; // Open the secret.html file
 | ||||||
|     }); |     }); | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  |  | ||||||
							
								
								
									
										26
									
								
								secret/explenation.html
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								secret/explenation.html
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,26 @@ | ||||||
|  | <!DOCTYPE html> | ||||||
|  | <html lang="en"> | ||||||
|  | <head> | ||||||
|  |   <meta charset="UTF-8"> | ||||||
|  |   <meta name="viewport" content="width=device-width, initial-scale=1.0"> | ||||||
|  |   <title>Game Landing Page</title> | ||||||
|  |   <link rel="stylesheet" href="styles.css"> | ||||||
|  | </head> | ||||||
|  | <body> | ||||||
|  |   <div class="landing-page"> | ||||||
|  |     <div class="game-background"> | ||||||
|  |       <!-- Game is embedded or shown as background --> | ||||||
|  |       <canvas id="gameCanvas"></canvas> | ||||||
|  |     </div> | ||||||
|  | 
 | ||||||
|  |     <div class="content"> | ||||||
|  |       <h1>Welcome to the Asteroid Game!</h1> | ||||||
|  |       <p>In this game, you control a spaceship that shoots at asteroids to avoid destruction and collect items for power-ups.</p> | ||||||
|  |       <p>Your goal is to survive as long as possible while scoring points!</p> | ||||||
|  |       <button onclick="window.location.href='secret.html'">Play Game</button> | ||||||
|  |     </div> | ||||||
|  |   </div> | ||||||
|  | 
 | ||||||
|  |   <script src="app.js"></script> | ||||||
|  | </body> | ||||||
|  | </html> | ||||||
|  | @ -1,3 +1,4 @@ | ||||||
|  | "use strict"; | ||||||
| // Canvas setup
 | // Canvas setup
 | ||||||
| const canvas = document.getElementById('gameCanvas'); | const canvas = document.getElementById('gameCanvas'); | ||||||
| const ctx = canvas.getContext('2d'); | const ctx = canvas.getContext('2d'); | ||||||
|  | @ -45,7 +46,36 @@ let rainbowSphereCooldown = 0; | ||||||
| // Sphere types
 | // Sphere types
 | ||||||
| const sphereTypes = ['blue', 'yellow', 'green', 'rainbow']; | const sphereTypes = ['blue', 'yellow', 'green', 'rainbow']; | ||||||
| 
 | 
 | ||||||
| // Controls
 | /// Control for left button press and release
 | ||||||
|  | function btnMoveLeft(isPressed) { | ||||||
|  |   if (isPressed) { | ||||||
|  |     player.dx = -player.speed;  // Start moving left
 | ||||||
|  |   } else { | ||||||
|  |     player.dx = 0;  // Stop moving when button is released
 | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // Control for shoot button click (simulates spacebar press)
 | ||||||
|  | function btnShoot() { | ||||||
|  |   if (canShoot && !isGameOver) { | ||||||
|  |     shootBullet(); | ||||||
|  |     canShoot = false; // Prevent shooting until the button is "released"
 | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // Control for right button press and release
 | ||||||
|  | function btnMoveRight(isPressed) { | ||||||
|  |   if (isPressed) { | ||||||
|  |     player.dx = player.speed;  // Start moving right
 | ||||||
|  |   } else { | ||||||
|  |     player.dx = 0;  // Stop moving when button is released
 | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | document.getElementById('shootBtn').addEventListener('mouseup', () => { | ||||||
|  |   canShoot = true; // Allow shooting again when button is released
 | ||||||
|  | }); | ||||||
|  | 
 | ||||||
| window.addEventListener('keydown', (e) => { | window.addEventListener('keydown', (e) => { | ||||||
|   if (e.key === 'ArrowLeft' || e.key === 'a') player.dx = -player.speed; |   if (e.key === 'ArrowLeft' || e.key === 'a') player.dx = -player.speed; | ||||||
|   if (e.key === 'ArrowRight' || e.key === 'd') player.dx = player.speed; |   if (e.key === 'ArrowRight' || e.key === 'd') player.dx = player.speed; | ||||||
|  | @ -79,6 +109,8 @@ function shootBullet() { | ||||||
|   lastBulletTime = now; |   lastBulletTime = now; | ||||||
|   ammo--; // Decrease ammo
 |   ammo--; // Decrease ammo
 | ||||||
| 
 | 
 | ||||||
|  |   totalBulletsFired++; // Increment total bullets fired
 | ||||||
|  | 
 | ||||||
|   if (rapidFireActive) { |   if (rapidFireActive) { | ||||||
|     // If rapid fire is active, fire bullets continuously with a short delay
 |     // If rapid fire is active, fire bullets continuously with a short delay
 | ||||||
|     for (let i = 0; i < 3; i++) { |     for (let i = 0; i < 3; i++) { | ||||||
|  | @ -193,6 +225,7 @@ function updateItems() { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| function applyItemEffect(type) { | function applyItemEffect(type) { | ||||||
|  |   let points = Math.floor(Math.random() * 5) + 1; // Random points between 1 and 5
 | ||||||
|   if (type === 'blue') { |   if (type === 'blue') { | ||||||
|     rapidFireActive = true; |     rapidFireActive = true; | ||||||
|     setTimeout(() => rapidFireActive = false, 15000); // 15 seconds of rapid fire
 |     setTimeout(() => rapidFireActive = false, 15000); // 15 seconds of rapid fire
 | ||||||
|  | @ -209,6 +242,7 @@ function applyItemEffect(type) { | ||||||
|       shotgunActive = false; |       shotgunActive = false; | ||||||
|     }, 15000); // 15 seconds with all effects
 |     }, 15000); // 15 seconds with all effects
 | ||||||
|   } |   } | ||||||
|  |   score += points; // Add points when an item is collected
 | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // Collision detection
 | // Collision detection
 | ||||||
|  | @ -223,7 +257,9 @@ function checkCollisions() { | ||||||
|       ) { |       ) { | ||||||
|         bullets.splice(bIndex, 1); |         bullets.splice(bIndex, 1); | ||||||
|         asteroids.splice(aIndex, 1); |         asteroids.splice(aIndex, 1); | ||||||
|         score++; |         score += Math.floor(Math.random() * 5) + 1; // Add points when an asteroid is destroyed
 | ||||||
|  |         // Visual feedback for destroyed asteroid
 | ||||||
|  |         createExplosion(asteroid.x, asteroid.y); | ||||||
|       } |       } | ||||||
|     }); |     }); | ||||||
|   }); |   }); | ||||||
|  | @ -240,6 +276,15 @@ function checkCollisions() { | ||||||
|   }); |   }); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | // Explosion effect
 | ||||||
|  | function createExplosion(x, y) { | ||||||
|  |   ctx.fillStyle = 'yellow'; | ||||||
|  |   ctx.beginPath(); | ||||||
|  |   ctx.arc(x, y, 20, 0, Math.PI * 2); | ||||||
|  |   ctx.fill(); | ||||||
|  |   setTimeout(() => ctx.clearRect(x - 20, y - 20, 40, 40), 200); // Clear explosion after 200ms
 | ||||||
|  | } | ||||||
|  | 
 | ||||||
| // Draw elements
 | // Draw elements
 | ||||||
| function drawPlayer() { | function drawPlayer() { | ||||||
|   ctx.fillStyle = player.color; |   ctx.fillStyle = player.color; | ||||||
|  | @ -320,23 +365,12 @@ function gameLoop() { | ||||||
|   drawGameOver(); |   drawGameOver(); | ||||||
| 
 | 
 | ||||||
|   if (!isGameOver) { |   if (!isGameOver) { | ||||||
|     if (Math.random() < 0.02) { |     if (Math.random() < 0.01) createAsteroid(); // 1% chance every frame to spawn an asteroid
 | ||||||
|       createAsteroid(); |     if (Math.random() < 0.005) createItem(); // 0.5% chance to spawn an item
 | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     if (Math.random() < 0.02) { |  | ||||||
|       createItem(); |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
| 
 |  | ||||||
|   // Difficulty increase over time
 |  | ||||||
|   if (score > 0 && score % 50 === 0) { |  | ||||||
|     asteroidSpawnInterval -= difficultyIncreaseRate; // Increase spawn rate (faster asteroids)
 |  | ||||||
|     asteroidSpeedMultiplier += difficultyIncreaseRate; // Increase speed multiplier
 |  | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   requestAnimationFrame(gameLoop); |   requestAnimationFrame(gameLoop); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // Start the game
 | // Start game loop
 | ||||||
| gameLoop(); | gameLoop(); | ||||||
|  |  | ||||||
|  | @ -8,6 +8,14 @@ | ||||||
| </head> | </head> | ||||||
| <body> | <body> | ||||||
|   <canvas id="gameCanvas"></canvas> |   <canvas id="gameCanvas"></canvas> | ||||||
|  | 
 | ||||||
|  |   <!-- Virtual buttons for mobile --> | ||||||
|  |   <div class="controls"> | ||||||
|  |     <button id="leftBtn" class="control-btn" onmousedown="btnMoveLeft(true)" onmouseup="btnMoveLeft(false)">Left</button> | ||||||
|  |     <button id="shootBtn" class="control-btn" onclick="btnShoot()">Shoot</button> | ||||||
|  |     <button id="rightBtn" class="control-btn" onmousedown="btnMoveRight(true)" onmouseup="btnMoveRight(false)">Right</button> | ||||||
|  |   </div> | ||||||
|  | 
 | ||||||
|   <script src="game.js"></script> |   <script src="game.js"></script> | ||||||
| </body> | </body> | ||||||
| </html> | </html> | ||||||
|  |  | ||||||
|  | @ -1,10 +1,43 @@ | ||||||
| body { | body { | ||||||
|     margin: 0; |   margin: 0; | ||||||
|     overflow: hidden; |   overflow: hidden; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | canvas { | ||||||
|  |   display: block; | ||||||
|  |   background: black; | ||||||
|  |   width: 100%; | ||||||
|  |   height: 100%; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .controls { | ||||||
|  |   display: none; | ||||||
|  |   position: absolute; | ||||||
|  |   bottom: 20px; | ||||||
|  |   left: 50%; | ||||||
|  |   transform: translateX(-50%); | ||||||
|  |   display: flex; | ||||||
|  |   justify-content: space-between; | ||||||
|  |   width: 80%; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .control-btn { | ||||||
|  |   display: none; | ||||||
|  |   padding: 10px; | ||||||
|  |   font-size: 18px; | ||||||
|  |   background-color: rgba(0, 0, 0, 0.6); | ||||||
|  |   color: white; | ||||||
|  |   border: 1px solid #fff; | ||||||
|  |   border-radius: 5px; | ||||||
|  |   cursor: pointer; | ||||||
|  |   flex-grow: 1; | ||||||
|  |   margin: 0 5px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | @media (max-width: 600px) { | ||||||
|  |   .control-btn { | ||||||
|  |       display: block; | ||||||
|  |       font-size: 16px; | ||||||
|  |       padding: 12px; | ||||||
|   } |   } | ||||||
|    | } | ||||||
|   canvas { |  | ||||||
|     display: block; |  | ||||||
|     background: black; |  | ||||||
|   } |  | ||||||
|    |  | ||||||
|  |  | ||||||
							
								
								
									
										74
									
								
								secret/styles.css
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										74
									
								
								secret/styles.css
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,74 @@ | ||||||
|  | * { | ||||||
|  |     margin: 0; | ||||||
|  |     padding: 0; | ||||||
|  |     box-sizing: border-box; | ||||||
|  |   } | ||||||
|  |    | ||||||
|  |   body, html { | ||||||
|  |     height: 100%; | ||||||
|  |     font-family: Arial, sans-serif; | ||||||
|  |     display: flex; | ||||||
|  |     justify-content: center; | ||||||
|  |     align-items: center; | ||||||
|  |     background-color: #000; | ||||||
|  |     color: white; | ||||||
|  |     overflow: hidden; | ||||||
|  |   } | ||||||
|  |    | ||||||
|  |   .landing-page { | ||||||
|  |     position: relative; | ||||||
|  |     width: 100%; | ||||||
|  |     height: 100%; | ||||||
|  |     display: flex; | ||||||
|  |     justify-content: center; | ||||||
|  |     align-items: center; | ||||||
|  |   } | ||||||
|  |    | ||||||
|  |   .game-background { | ||||||
|  |     position: absolute; | ||||||
|  |     top: 0; | ||||||
|  |     left: 0; | ||||||
|  |     width: 100%; | ||||||
|  |     height: 100%; | ||||||
|  |     background-color: rgba(0, 0, 0, 0.7); /* Dark overlay */ | ||||||
|  |     backdrop-filter: blur(8px); /* Apply blur effect to the background */ | ||||||
|  |     z-index: -1; /* Ensures it's in the background */ | ||||||
|  |     pointer-events: none; /* Prevent interaction with the blurred background */ | ||||||
|  |   } | ||||||
|  |    | ||||||
|  |   .content { | ||||||
|  |     text-align: center; | ||||||
|  |     z-index: 1; /* Ensure content appears above the game background */ | ||||||
|  |     padding: 20px; | ||||||
|  |     max-width: 600px; /* Limit the width of the content */ | ||||||
|  |     position: relative; | ||||||
|  |     color: white; | ||||||
|  |     backdrop-filter: blur(8px); /* Ensure content has some blur as well for contrast */ | ||||||
|  |   } | ||||||
|  |    | ||||||
|  |   h1 { | ||||||
|  |     font-size: 2rem; | ||||||
|  |     margin-bottom: 20px; | ||||||
|  |   } | ||||||
|  |    | ||||||
|  |   p { | ||||||
|  |     font-size: 1.2rem; | ||||||
|  |     margin-bottom: 30px; | ||||||
|  |   } | ||||||
|  |    | ||||||
|  |   button { | ||||||
|  |     padding: 12px 24px; | ||||||
|  |     background-color: #ffcc00; | ||||||
|  |     color: black; | ||||||
|  |     border: none; | ||||||
|  |     font-size: 18px; | ||||||
|  |     cursor: pointer; | ||||||
|  |     border-radius: 5px; | ||||||
|  |     text-transform: uppercase; | ||||||
|  |     transition: background-color 0.3s ease; | ||||||
|  |   } | ||||||
|  |    | ||||||
|  |   button:hover { | ||||||
|  |     background-color: #ff9900; | ||||||
|  |   } | ||||||
|  |    | ||||||
|  | @ -410,4 +410,8 @@ footer { | ||||||
|     height: 60px; |     height: 60px; | ||||||
|     width: 60px; |     width: 60px; | ||||||
|   } |   } | ||||||
|  | 
 | ||||||
|  |   .project-name{ | ||||||
|  |     font-size: 1.3em; | ||||||
|  |   } | ||||||
| } | } | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue