Compare commits
No commits in common. "d42d1b039bb629c198b8b462dfec6d8251d398dd" and "da69cc33e7c3c288262293cf91f9d8308ff5a857" have entirely different histories.
d42d1b039b
...
da69cc33e7
7 changed files with 25 additions and 204 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/explenation.html'; // Open the secret.html file
|
window.location.href = 'secret/secret.html'; // Open the secret.html file
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,26 +0,0 @@
|
||||||
<!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,4 +1,3 @@
|
||||||
"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');
|
||||||
|
@ -46,36 +45,7 @@ let rainbowSphereCooldown = 0;
|
||||||
// Sphere types
|
// Sphere types
|
||||||
const sphereTypes = ['blue', 'yellow', 'green', 'rainbow'];
|
const sphereTypes = ['blue', 'yellow', 'green', 'rainbow'];
|
||||||
|
|
||||||
/// Control for left button press and release
|
// Controls
|
||||||
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;
|
||||||
|
@ -109,8 +79,6 @@ 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++) {
|
||||||
|
@ -225,7 +193,6 @@ 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
|
||||||
|
@ -242,7 +209,6 @@ 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
|
||||||
|
@ -257,9 +223,7 @@ function checkCollisions() {
|
||||||
) {
|
) {
|
||||||
bullets.splice(bIndex, 1);
|
bullets.splice(bIndex, 1);
|
||||||
asteroids.splice(aIndex, 1);
|
asteroids.splice(aIndex, 1);
|
||||||
score += Math.floor(Math.random() * 5) + 1; // Add points when an asteroid is destroyed
|
score++;
|
||||||
// Visual feedback for destroyed asteroid
|
|
||||||
createExplosion(asteroid.x, asteroid.y);
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -276,15 +240,6 @@ 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;
|
||||||
|
@ -365,12 +320,23 @@ function gameLoop() {
|
||||||
drawGameOver();
|
drawGameOver();
|
||||||
|
|
||||||
if (!isGameOver) {
|
if (!isGameOver) {
|
||||||
if (Math.random() < 0.01) createAsteroid(); // 1% chance every frame to spawn an asteroid
|
if (Math.random() < 0.02) {
|
||||||
if (Math.random() < 0.005) createItem(); // 0.5% chance to spawn an item
|
createAsteroid();
|
||||||
|
}
|
||||||
|
|
||||||
|
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 game loop
|
// Start the game
|
||||||
gameLoop();
|
gameLoop();
|
||||||
|
|
|
@ -8,14 +8,6 @@
|
||||||
</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,43 +1,10 @@
|
||||||
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;
|
||||||
|
}
|
||||||
|
|
|
@ -1,74 +0,0 @@
|
||||||
* {
|
|
||||||
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,8 +410,4 @@ footer {
|
||||||
height: 60px;
|
height: 60px;
|
||||||
width: 60px;
|
width: 60px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.project-name{
|
|
||||||
font-size: 1.3em;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue