From 785b8ef65b75042eb4e7c95338d40204a5a501c5 Mon Sep 17 00:00:00 2001 From: Sanchari Chaudhuri Date: Wed, 7 Jan 2026 20:29:01 +0530 Subject: [PATCH 1/4] Brick Breaker: gated Start , tidy UI; no difficulty --- Games/Brick_Breaker/index.html | 44 ++++++++++ Games/Brick_Breaker/script.js | 151 +++++++++++++++------------------ Games/Brick_Breaker/styles.css | 79 ++++++++++++----- 3 files changed, 169 insertions(+), 105 deletions(-) diff --git a/Games/Brick_Breaker/index.html b/Games/Brick_Breaker/index.html index 7a8bfbed97..a597442902 100644 --- a/Games/Brick_Breaker/index.html +++ b/Games/Brick_Breaker/index.html @@ -1,3 +1,47 @@ + + + + + + + Brick Breaker + + + + + https://kunjgit.github.io/GameZone/ + + + +
+

Brick Breaker

+
+ + +
+ +
+ + +
+
+ Bricks Remaining: 0 +
+
+ Score: 0 +
+
+ +
+ +
+ + script.js + + + + + diff --git a/Games/Brick_Breaker/script.js b/Games/Brick_Breaker/script.js index 54001cefab..3ec75af872 100644 --- a/Games/Brick_Breaker/script.js +++ b/Games/Brick_Breaker/script.js @@ -1,7 +1,8 @@ -/**********Global Var***********/ + +/********** Global Vars ***********/ var canvas, canvasContext; -// Bricks +// Bricks (rows/cols constant so Bricks Remaining stays 70 and your score math stays intact) const BRICK_W = 80; const BRICK_H = 20; const BRICK_GAP = 2; @@ -26,17 +27,34 @@ const PADDLE_DIST_FROM_EDGE = 60; var mouseX = 0; var mouseY = 0; -/**********General GamePlay***********/ +// UI +let startBtn; +/********** General GamePlay ***********/ window.onload = function () { canvas = document.getElementById("gameCanvas"); canvasContext = canvas.getContext("2d"); + + // UI refs + startBtn = document.getElementById('startBtn'); + + // 30 FPS game loop (always running) var framesPerSecond = 30; setInterval(updateAll, 1000 / framesPerSecond); canvas.addEventListener("mousemove", updateMousePos); + + // Initial board brickReset(); ballRest(); + + // Start: reset board and ball + if (startBtn) { + startBtn.addEventListener('click', () => { + brickReset(); + ballRest(); + }); + } }; function updateAll() { @@ -53,34 +71,35 @@ function brickReset() { brickCount = 0; initializeBrickColors(); - var i; - for (var i = 0; i < 3 * BRICK_COLS; i++) { + // top 3 rows empty + let i = 0; + for (; i < 3 * BRICK_COLS; i++) { brickGrid[i] = false; } + // fill remainder for (; i < BRICK_COLS * BRICK_ROWS; i++) { - if (Math.random() < 0.5) { - brickGrid[i] = true; - } else { - brickGrid[i] = false; - } brickGrid[i] = true; brickCount++; } + + // update UI + updateScore(brickCount); // should show 70 + scoredisplay(false); // keep your original scoring behavior } function ballMove() { - // ballMovement ballX += ballSpeedX; ballY += ballSpeedY; - // ballY + + // bottom edge -> reset board if (ballY > canvas.height) { - // ballSpeedY = -ballSpeedY; ballRest(); brickReset(); - } else if (ballY < 0 && ballSpeedY > 0.0) { + } else if (ballY < 0 && ballSpeedY < 0) { ballSpeedY = -ballSpeedY; } - // ballx + + // sides if (ballX > canvas.width && ballSpeedX > 0.0) { ballSpeedX = -ballSpeedX; } else if (ballX < 0 && ballSpeedX < 0.0) { @@ -101,6 +120,7 @@ function ballBrickColl() { var ballBrickCol = Math.floor(ballX / BRICK_W); var ballBrickRow = Math.floor(ballY / BRICK_H); var brickIndexUnderBall = rowColToArrayIndex(ballBrickCol, ballBrickRow); + if ( ballBrickCol >= 0 && ballBrickCol < BRICK_COLS && @@ -138,77 +158,60 @@ function ballBrickColl() { } } } + if (brickCount === 0) { + // board cleared -> rebuild same layout and continue playing brickReset(); - updateScore(0); - scoredisplay(false); // Reset the score to zero if no bricks are remaining + ballRest(); } else { - updateScore(brickCount); // Update the score with the remaining brick count - scoredisplay(true); // Increment the score if a brick is hit - } - - // colorText(ballBrickCol+","+ballBrickRow+": "+brickIndexUnderBall, mouseX, mouseY, 'white'); - - if(brickCount=== 70){ - scoredisplay(0); + updateScore(brickCount); + scoredisplay(true); } } function updateScore(score) { var scoreElement = document.getElementById("score"); - scoreElement.textContent = "Bricks Remaining: " + score; - + if (scoreElement) scoreElement.textContent = "Bricks Remaining: " + score; } -var s = 0; // Declare the variable outside the function to store the score -var y=0; +// ===== Original scoring logic kept intact ===== +var s = 0; +var y = 0; function scoredisplay(hit) { if (hit) { - s=70-brickCount; - if(s>20){ - y=s-20; - s=s+y*4; + s = 70 - brickCount; + if (s > 20) { + y = s - 20; + s = s + y * 4; } - else if(s>10){ - y=s-10; - s=s+y; + else if (s > 10) { + y = s - 10; + s = s + y; } - - - } else if(brickCount==70){ - s = 0; // Reset the score to zero if no bricks are hit + } else if (brickCount == 70) { + s = 0; } - - - // Update the content of the HTML element with id "s" to display the score var scoredisplayElement = document.getElementById("s"); - scoredisplayElement.textContent = "Score: " + s; + if (scoredisplayElement) scoredisplayElement.textContent = "Score: " + s; } - - - function paddleMove() { - // paddle var paddleTopEdgeY = canvas.height - PADDLE_DIST_FROM_EDGE; var paddleBottomEdgeY = paddleTopEdgeY + PADDLE_THICKNESS; var paddleLeftEdgeX = paddleX; var paddleRightEdgeX = paddleX + PADDLE_WIDTH; + if ( ballY > paddleTopEdgeY && // top of paddle ballY < paddleBottomEdgeY && // bottom of paddle - ballX > paddleLeftEdgeX && // left half of paddle - ballX < paddleRightEdgeX // right half of paddle + ballX > paddleLeftEdgeX && // left half + ballX < paddleRightEdgeX // right half ) { ballSpeedY = -ballSpeedY; var paddleCenterX = paddleX + PADDLE_WIDTH / 2; var ballDistFromCenterX = ballX - paddleCenterX; ballSpeedX = ballDistFromCenterX * 0.35; - - if (brickCount == 0) { - brickReset(); - } } } @@ -226,21 +229,12 @@ function updateMousePos(evt) { mouseY = evt.clientY - rect.top - root.scrollTop; paddleX = mouseX - PADDLE_WIDTH / 2; - - // cheat to test ball in any position - // ballX = mouseX; - // ballY = mouseY; - // ballSpeedY = 4; - // ballSpeedY = -4; } -/**********GamePlay Draw functions***********/ +/********** Draw ***********/ function playArea() { - // gameCanvas colorRect(0, 0, canvas.width, canvas.height, "#222"); - // ball colorCircle(); - // paddle colorRect( paddleX, canvas.height - PADDLE_DIST_FROM_EDGE, @@ -248,7 +242,6 @@ function playArea() { PADDLE_THICKNESS, "#61dafb" ); - drawbricks(); } @@ -268,31 +261,25 @@ function rowColToArrayIndex(col, row) { var brickColors = []; -// Function to initialize the brick colors +// Initialize brick colors function initializeBrickColors() { brickColors = []; for (var i = 0; i < BRICK_ROWS * BRICK_COLS; i++) { - // Add a random color to the array brickColors.push(getRandomColor()); } } -// Function to get a random color +// Random color function getRandomColor() { - var colors = ["#f86257", "#5bb9a9", " #7d5ba6", "#0b5394", "#ec9b00"]; + var colors = ["#f86257", "#5bb9a9", "#7d5ba6", "#0b5394", "#ec9b00"]; return colors[Math.floor(Math.random() * colors.length)]; } -// Call the function to initialize brick colors once during initialization -initializeBrickColors(); - function drawbricks() { for (var eachRow = 0; eachRow < BRICK_ROWS; eachRow++) { for (var eachCol = 0; eachCol < BRICK_COLS; eachCol++) { var arrayIndex = rowColToArrayIndex(eachCol, eachRow); if (brickGrid[arrayIndex]) { - // Choose a random color from an array of colors - colorRect( BRICK_W * eachCol, BRICK_H * eachRow, @@ -300,19 +287,15 @@ function drawbricks() { BRICK_H - BRICK_GAP, brickColors[arrayIndex] ); - } // if brick - } // each brick - } // each brickrow -} // drawbricks + } + } + } +} function colorCircle() { var gradient = canvasContext.createRadialGradient( - ballX, - ballY, - 0, - ballX, - ballY, - 10 + ballX, ballY, 0, + ballX, ballY, 10 ); gradient.addColorStop(0, "#61dafb"); gradient.addColorStop(0.5, "#888"); diff --git a/Games/Brick_Breaker/styles.css b/Games/Brick_Breaker/styles.css index 7cbb899ef7..de965d8e05 100644 --- a/Games/Brick_Breaker/styles.css +++ b/Games/Brick_Breaker/styles.css @@ -1,3 +1,4 @@ + body { margin: 20px; padding: 0; @@ -5,7 +6,6 @@ body { flex-direction: column; align-items: center; justify-content: center; - /* background-color: #282c34; */ background: linear-gradient(#282c34, rgb(4, 4, 17)); color: white; font-family: 'Arial', sans-serif; @@ -14,7 +14,8 @@ body { #header-container { text-align: center; margin: 20px; - font-family: 'Lucida Sans', 'Lucida Sans Regular', 'Lucida Grande', 'Lucida Sans Unicode', Geneva, Verdana, sans-serif; + font-family: 'Lucida Sans', 'Lucida Sans Regular', 'Lucida Grande', + 'Lucida Sans Unicode', Geneva, Verdana, sans-serif; } #header-container h1 { @@ -22,42 +23,41 @@ body { color: #61dafb; margin: 0; } -.status{ + +.status { display: flex; flex-direction: row; justify-content: space-between; - width: 800px;; + width: 800px; margin-bottom: 20px; } -#score-container #score-display { +/* Style both panels */ +#score-container, +#score-display { font-size: 30px; - margin: 0px; + margin: 0; margin-bottom: 10px; - } -#score-display{ - color:rgb(233, 243, 160); +#score-display { + color: rgb(233, 243, 160); } -.status span{ +.status span { font-size: 20px; - border: 1px solid rgb(103, 101, 101) !important; - padding: 10px; + border: 1px solid rgb(103, 101, 101) !important; + padding: 10px; } -/* #canvas-container { - display: flex; - justify-content: center; - align-items: center; -} */ - #canvas-container { +#canvas-container { display: flex; justify-content: center; - align-items: flex-start !important; /* Align bricks to the top */ + align-items: flex-start !important; /* align bricks to top */ height: calc(100vh - 100px); - top:0; + top: 0; + width: 800px; + max-width: 100%; } #gameCanvas { @@ -68,8 +68,45 @@ body { .home-icon { font-size: 1.5em; position: absolute; - /* top: 20px; */ + top: 20px; left: 20px; color: #61dafb; text-decoration: none; } + +/* ==== Controls (Start only) ==== */ +.controls { + display: flex; + align-items: center; + gap: 12px; + margin: 12px 0 16px; + width: 800px; + max-width: 100%; +} + +.btn { + background: #37b8e5; + border: none; + color: #0e1a22; + padding: 8px 16px; + font-weight: 600; + border-radius: 6px; + cursor: pointer; +} + +.btn:disabled { + opacity: 0.6; + cursor: not-allowed; +} + +@media (max-width: 860px) { + .controls, + .status, + #canvas-container { + width: 100%; + } + #gameCanvas { + max-width: 100%; + height: auto; /* preserve aspect ratio via width scaling */ + } +} From 9b5384349a98279371781ac2ba3cfda45b2be0ab Mon Sep 17 00:00:00 2001 From: Sanchari Chaudhuri Date: Sat, 31 Jan 2026 10:46:58 +0530 Subject: [PATCH 2/4] Fix syntax error and update Start button logic for Brick Breaker --- Games/Brick_Breaker/index.html | 406 +++++++++++++++++++++++++++------ 1 file changed, 340 insertions(+), 66 deletions(-) diff --git a/Games/Brick_Breaker/index.html b/Games/Brick_Breaker/index.html index a597442902..4e14dbf6c5 100644 --- a/Games/Brick_Breaker/index.html +++ b/Games/Brick_Breaker/index.html @@ -1,78 +1,352 @@ - - - - Brick Breaker - - + + + Brick Breaker Pro + + + - - https://kunjgit.github.io/GameZone/ - - - -
-

Brick Breaker

-
- - -
- -
- - -
-
- Bricks Remaining: 0 + + + + + + +
+

BRICK BREAKER

+
+ + + +
+
+ +
+
+ Current Score + 0 +
+
+ Bricks Left + 0 +
+
+ Best Score + 0 +
-
- Score: 0 + +
+ + + +
+

Ready?

+

Select difficulty and smash those bricks!

+ +
-
-
- -
+ - - + // Game State + let score = 0; + let highScore = localStorage.getItem('brickBreakerHighScore') || 0; + let isGameActive = false; + let ballRadius = 8; + let ballX, ballY, ballDX, ballDY; + let paddleHeight = 12; + let paddleWidth = 100; + let paddleX; + let rightPressed = false; + let leftPressed = false; + + // Brick Config + const brickRowCount = 5; + const brickColumnCount = 9; + const brickPadding = 10; + const brickOffsetTop = 30; + const brickOffsetLeft = 35; + const brickWidth = 75; + const brickHeight = 20; + let bricks = []; + let totalBricks = 0; + // Difficulty Settings + let currentSpeed = 5; + highScoreDisplay.innerText = highScore; + function setDifficulty(level) { + if (isGameActive) return; // Prevent change mid-game + + document.querySelectorAll('.btn-difficulty').forEach(btn => btn.classList.remove('active')); + document.getElementById('btn-' + level).classList.add('active'); - - - - - - - Brick Breaker - - - - - - - -
-

Brick Breaker

-
-
- - -
- Bricks Remaining: 0 -
-
- Score: 0 -
- -
-
- -
- + switch(level) { + case 'easy': + currentSpeed = 4; + paddleWidth = 120; + break; + case 'medium': + currentSpeed = 6; + paddleWidth = 100; + break; + case 'hard': + currentSpeed = 8; + paddleWidth = 70; + break; + } + initGame(); + } + + function initBricks() { + bricks = []; + totalBricks = 0; + for (let c = 0; c < brickColumnCount; c++) { + bricks[c] = []; + for (let r = 0; r < brickRowCount; r++) { + bricks[c][r] = { x: 0, y: 0, status: 1 }; + totalBricks++; + } + } + bricksDisplay.innerText = totalBricks; + } + + function initGame() { + ballX = canvas.width / 2; + ballY = canvas.height - 30; + ballDX = currentSpeed; + ballDY = -currentSpeed; + paddleX = (canvas.width - paddleWidth) / 2; + score = 0; + scoreDisplay.innerText = score; + initBricks(); + draw(); + } + + // Controls + document.addEventListener("keydown", keyDownHandler, false); + document.addEventListener("keyup", keyUpHandler, false); + document.addEventListener("mousemove", mouseMoveHandler, false); + + function keyDownHandler(e) { + if (e.key === "Right" || e.key === "ArrowRight") rightPressed = true; + else if (e.key === "Left" || e.key === "ArrowLeft") leftPressed = true; + } + + function keyUpHandler(e) { + if (e.key === "Right" || e.key === "ArrowRight") rightPressed = false; + else if (e.key === "Left" || e.key === "ArrowLeft") leftPressed = false; + } + + function mouseMoveHandler(e) { + const relativeX = e.clientX - canvas.offsetLeft; + if (relativeX > 0 && relativeX < canvas.width) { + paddleX = relativeX - paddleWidth / 2; + } + } + + function collisionDetection() { + for (let c = 0; c < brickColumnCount; c++) { + for (let r = 0; r < brickRowCount; r++) { + const b = bricks[c][r]; + if (b.status === 1) { + if (ballX > b.x && ballX < b.x + brickWidth && ballY > b.y && ballY < b.y + brickHeight) { + ballDY = -ballDY; + b.status = 0; + score++; + totalBricks--; + scoreDisplay.innerText = score; + bricksDisplay.innerText = totalBricks; + + if (totalBricks === 0) { + endGame(true); + } + } + } + } + } + } + + function drawBall() { + ctx.beginPath(); + ctx.arc(ballX, ballY, ballRadius, 0, Math.PI * 2); + ctx.fillStyle = "#f97316"; + ctx.fill(); + ctx.closePath(); + } + + function drawPaddle() { + ctx.beginPath(); + ctx.rect(paddleX, canvas.height - paddleHeight, paddleWidth, paddleHeight); + ctx.fillStyle = "#fff"; + ctx.fill(); + ctx.closePath(); + } + + function drawBricks() { + for (let c = 0; c < brickColumnCount; c++) { + for (let r = 0; r < brickRowCount; r++) { + if (bricks[c][r].status === 1) { + const brickX = c * (brickWidth + brickPadding) + brickOffsetLeft; + const brickY = r * (brickHeight + brickPadding) + brickOffsetTop; + bricks[c][r].x = brickX; + bricks[c][r].y = brickY; + + // Gradient bricks + ctx.beginPath(); + ctx.rect(brickX, brickY, brickWidth, brickHeight); + ctx.fillStyle = `hsl(${200 + r * 15}, 70%, 50%)`; + ctx.fill(); + ctx.closePath(); + } + } + } + } + + function endGame(victory) { + isGameActive = false; + gameOverlay.style.display = "block"; + overlayTitle.innerText = victory ? "YOU WIN!" : "GAME OVER"; + overlayTitle.className = victory ? "text-3xl font-bold mb-4 text-green-500" : "text-3xl font-bold mb-4 text-red-500"; + overlayText.innerText = `Final Score: ${score}`; + startBtn.innerText = "TRY AGAIN"; + + if (score > highScore) { + highScore = score; + localStorage.setItem('brickBreakerHighScore', highScore); + highScoreDisplay.innerText = highScore; + } + } + + startBtn.onclick = () => { + gameOverlay.style.display = "none"; + isGameActive = true; + initGame(); + }; + + function draw() { + if (!isGameActive) { + // Background render only + ctx.clearRect(0, 0, canvas.width, canvas.height); + drawBricks(); + drawPaddle(); + return; + } + + ctx.clearRect(0, 0, canvas.width, canvas.height); + drawBricks(); + drawBall(); + drawPaddle(); + collisionDetection(); + + // Wall collision + if (ballX + ballDX > canvas.width - ballRadius || ballX + ballDX < ballRadius) { + ballDX = -ballDX; + } + if (ballY + ballDY < ballRadius) { + ballDY = -ballDY; + } else if (ballY + ballDY > canvas.height - ballRadius) { + if (ballX > paddleX && ballX < paddleX + paddleWidth) { + // Adjust angle based on where it hits paddle + let hitPos = (ballX - (paddleX + paddleWidth / 2)) / (paddleWidth / 2); + ballDX = currentSpeed * hitPos; + ballDY = -ballDY; + } else { + endGame(false); + return; + } + } + + if (rightPressed && paddleX < canvas.width - paddleWidth) { + paddleX += 7; + } else if (leftPressed && paddleX > 0) { + paddleX -= 7; + } + + ballX += ballDX; + ballY += ballDY; + requestAnimationFrame(draw); + } + + // Initial render + initGame(); + - + \ No newline at end of file From c5040cb059695ee5309381800d22d7a77a9c95ef Mon Sep 17 00:00:00 2001 From: Sanchari Chaudhuri Date: Sat, 31 Jan 2026 11:37:12 +0530 Subject: [PATCH 3/4] Update README with scoring logic and project details --- Games/Brick_Breaker/README.md | 28 ++++++++++++------ .../Brick_Breaker/assets/img/brickBreaker.png | Bin 0 -> 50414 bytes 2 files changed, 19 insertions(+), 9 deletions(-) create mode 100644 Games/Brick_Breaker/assets/img/brickBreaker.png diff --git a/Games/Brick_Breaker/README.md b/Games/Brick_Breaker/README.md index 9058a3e049..43962e6d0d 100644 --- a/Games/Brick_Breaker/README.md +++ b/Games/Brick_Breaker/README.md @@ -5,29 +5,39 @@
## **Description 📃** -- This is a classic Brick Breaking Game made using HTML & CSS only that we all know and love! +- Brick Breaker Pro is a classic arcade-style game built with modern web technologies. Challenge your reflexes and strategy as you clear waves of bricks with increasing rewards ## **functionalities 🎮** -- Features of a classic Brick Breaking Game -- Shows Remaining number of bricks on the top +- Start Logic: The game remains paused until you are ready. Click "Start Game" to begin. + +- Dynamic Difficulty: Choose between Easy, Medium, and Hard modes to adjust ball speed and paddle size. + +- High Score Tracking: Your personal best is saved to your browser's local storage. + +- Real-time Stats: Track remaining bricks and current score dynamically at the top of the screen
## **How to play? đŸ•šī¸** -- Simply moving the mouse moves the paddle with which u can bounce the ball and destroy the bricks. +- Mouse: Simply moving the mouse moves the paddle automatically. + +- Keyboard: Use the Left and Right Arrow Keys to control the paddle. + +- Goal: Bounce the ball to destroy all bricks without letting it fall below the paddle
## **Scores:** -- +1 for each brick broken till number of bricks is greater than or equal to 60. -- +2 for each brick broken till number of bricks is less than 60 and greater than or equal to 50. -- +5 for each brick broken if number of bricks is less than 50; +- +1 Point: Each brick broken while the remaining bricks are 60 or more. + +- +2 Points: Each brick broken while remaining bricks are less than 60 but 50 or more. + +- +5 Points: Each brick broken while remaining bricks are less than 50.; ## **Screenshots 📸**
- + -
## **Working video 📹** diff --git a/Games/Brick_Breaker/assets/img/brickBreaker.png b/Games/Brick_Breaker/assets/img/brickBreaker.png new file mode 100644 index 0000000000000000000000000000000000000000..62165a23e561bfb75740247d87088a2d33157387 GIT binary patch literal 50414 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 tgiy%2Hjs8AUH>&#{r}s49G~r Date: Sat, 31 Jan 2026 12:00:58 +0530 Subject: [PATCH 4/4] added changes to the game for better visuals --- Games/Planet_Defense/index.html | 572 +++++++++++++++++++++++++++++++- 1 file changed, 563 insertions(+), 9 deletions(-) diff --git a/Games/Planet_Defense/index.html b/Games/Planet_Defense/index.html index 9fd77a9977..e1fac3d768 100644 --- a/Games/Planet_Defense/index.html +++ b/Games/Planet_Defense/index.html @@ -1,12 +1,566 @@ + + - - + + + Planet Defense: Space Guardian + + + - -
- - + + + +
+ + +
+ + + + +
+ + + + + + + + + +
+ + + + + \ No newline at end of file