Skip to content

Commit

Permalink
Merge pull request #209 from praveen-p09/main
Browse files Browse the repository at this point in the history
Added minesweeper game+Bug fixes
  • Loading branch information
shrey141102 authored Jan 7, 2024
2 parents 2bccb41 + f934fe9 commit 9ba583c
Show file tree
Hide file tree
Showing 9 changed files with 171 additions and 4 deletions.
4 changes: 2 additions & 2 deletions Age-calculator/age_cal.html
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Age calculator</title>
<link rel="stylesheet" href="style.css">
<link rel="stylesheet" href="age_cal.css">
</head>
<body>
<div class="container">
Expand All @@ -17,6 +17,6 @@ <h1>Simple Javascript <br><span> age calculator</span></h1>
<p id="result"></p>
</div>
</div>
<script src="script.js"></script>
<script src="age_cal.js"></script>
</body>
</html>
2 changes: 1 addition & 1 deletion Dice-game/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ document.querySelectorAll("img")[1].setAttribute("src", randomImageSource2);

//If player 1 wins
if (randomNumber1 > randomNumber2) {
document.querySelector("h1").innerHTML = "🚩 Play 1 Wins!";
document.querySelector("h1").innerHTML = "🚩 Player 1 Wins!";
}
else if (randomNumber2 > randomNumber1) {
document.querySelector("h1").innerHTML = "Player 2 Wins! 🚩";
Expand Down
23 changes: 23 additions & 0 deletions Minesweeper/Readme.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Minesweeper

Minesweeper... yep, that old classic game you remember playing on good ol' Windows '95 back in the day (in fact it was implemented in Microsoft's software updates until Windows 8). Minesweeper has its origins in the earliest mainframe games of the 1960s and 1970s. The earliest ancestor of Minesweeper was Jerimac Ratliff's Cube. The basic gameplay style became a popular segment of the puzzle game genre during the 1980s.

Brush up on your Minesweeper history [here](https://en.wikipedia.org/wiki/Minesweeper_(video_game)).

Do you know what an actual Minesweeper is? I didn't either until I read [this](https://en.wikipedia.org/wiki/Minesweeper).

### Basic Gameplay
1. Select your difficulty level.
* Easy = 9x9, 10 mines
* Medium = 16x16, 40 mines
* Hard = 30x30, 160 mines
2. Click anywhere on the board to begin and start the timer.
*The numbers depict how many mines are adjacent to any given cell.
3. Use **"Shift + Click"** to add flags to a cell if you think it's a mine.


### Winning/Losing
* If you hit a mine... game over, homie.
* Win by uncovering all the cells without mines!

(get it... MINE... SWEEPER...?)
19 changes: 19 additions & 0 deletions Minesweeper/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Minesweeper</title>
<link rel="stylesheet" href="style.css">
</head>
<body>

<div style="display:flex; justify-content: center; align-items: center; flex-direction: column;">
<h1>Minesweeper Game</h2>
<div id="board"></div>
</div>

<script src="script.js"></script>
</body>
</html>
83 changes: 83 additions & 0 deletions Minesweeper/script.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
const boardSize = 10;
const totalMines = 20;
let mines = [];
let revealedCells = 0;

function initializeBoard() {
const board = document.getElementById('board');
for (let i = 0; i < boardSize * boardSize; i++) {
const cell = document.createElement('div');
cell.classList.add('cell');
cell.setAttribute('data-index', i);
cell.addEventListener('click', handleCellClick);
board.appendChild(cell);
}

generateMines();
}

function generateMines() {
mines = Array.from({ length: totalMines }, () => Math.floor(Math.random() * (boardSize * boardSize)));
console.log(mines);
}

function handleCellClick(event) {
const clickedIndex = parseInt(event.target.getAttribute('data-index'));
if (mines.includes(clickedIndex)) {
revealMines();
alert('Game Over! You hit a mine.');
} else {
revealCell(clickedIndex);
if (revealedCells === boardSize * boardSize - totalMines) {
alert('Congratulations! You won!');
}
}
}

function revealMines() {
mines.forEach(index => {
const cell = document.querySelector(`.cell[data-index="${index}"]`);
cell.classList.add('mine');
});
}

function revealCell(index) {
const cell = document.querySelector(`.cell[data-index="${index}"]`);
if (!cell.classList.contains('revealed')) {
cell.classList.add('revealed');
revealedCells++;

const mineCount = countAdjacentMines(index);
if (mineCount > 0) {
cell.textContent = mineCount;
} else {
const neighbors = getNeighbors(index);
neighbors.forEach(neighborIndex => revealCell(neighborIndex));
}
}
}

function countAdjacentMines(index) {
const neighbors = getNeighbors(index);
return neighbors.filter(neighborIndex => mines.includes(neighborIndex)).length;
}

function getNeighbors(index) {
const neighbors = [];
const row = Math.floor(index / boardSize);
const col = index % boardSize;

for (let i = -1; i <= 1; i++) {
for (let j = -1; j <= 1; j++) {
const neighborRow = row + i;
const neighborCol = col + j;
if (neighborRow >= 0 && neighborRow < boardSize && neighborCol >= 0 && neighborCol < boardSize) {
neighbors.push(neighborRow * boardSize + neighborCol);
}
}
}

return neighbors;
}

initializeBoard();
36 changes: 36 additions & 0 deletions Minesweeper/style.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
body {
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
margin: 0;
}

#board {
display: grid;
gap: 2px;
grid-template-columns: repeat(10, 30px);
border: 1px solid #ccc;
}

.cell {
width: 30px;
height: 30px;
background-color: #ddd;
display: flex;
justify-content: center;
align-items: center;
cursor: pointer;
font-weight: bold;
font-size: 14px;
user-select: none;
}

.cell:hover {
background-color: #eee;
}

.mine {
background-color: #f00;
color: #fff;
}
2 changes: 1 addition & 1 deletion MovieApp/Readme.md
Original file line number Diff line number Diff line change
@@ -1 +1 @@
# Movie-App
1 change: 1 addition & 0 deletions PokeDex/style.css
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ body{
background-color: white;
margin: 5px;
padding: 5px;
cursor: pointer;
}

#pokemon-info img{
Expand Down
5 changes: 5 additions & 0 deletions script.js
Original file line number Diff line number Diff line change
Expand Up @@ -382,6 +382,11 @@ const projects = [
discription: "This project can calculate factorial of the very large numbers.",
link: "Factorial-Calculator/index.html",
image: "https://github.com/shrey141102/Javascript-projects/assets/114330097/1c3e626e-40b3-4ee3-9f0c-ab92263d39c3"
},
{ title: "Minesweeper",
discription: "Simple minesweeper game made using HTML, CSS and JS.",
link: "Minesweeper/index.html",
image: "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAoHCBIREhISEhEYGBISGhgaGBgYGBgYGBESGRwZHBgYGBgdIS4mHR4rIRgYJjgmKy8xNTY1HCU7QDtAPy40NTEBDAwMEA8QGBIRGDEdGCE0MTE0MTE0MTQxNDQxMTE0NDE0MTExNDQ0NDQxMTQ0MT8xNDExNDExMT80NDQ0NDE/Mf/AABEIAM8A9AMBIgACEQEDEQH/xAAcAAEAAQUBAQAAAAAAAAAAAAAAAQIDBQYHBAj/xABAEAACAQIEBAMFBgUCBAcAAAABAgADEQQSITEFBkFRE2FxByIygZEUQlJicqEjM4KSwbGyU9Hw8RU0Q5OiwtL/xAAWAQEBAQAAAAAAAAAAAAAAAAAAAQL/xAAaEQEBAQADAQAAAAAAAAAAAAAAARExQVEC/9oADAMBAAIRAxEAPwDssREBERAREQEREBERAREQEREBERASDJkQEiIgJSYJkEyoGQZBMgmAMoMkmUkyiDKTJMgmUQZBgmRARIvEDJxETCkREBERAREQERLVGqrjMrBluRcEEXBsRcdQQRAuxEQERIgYTivHkw+JwtBgLVy2Y9aY2Q+hYEfKZucd5w4ga2Jq1E1yEZAdiKZ93X8LWv8A1GdI5Y4suKw6OGuQFBJ3ZWVWRjpuUZSbaBsw6S4jNSImA5l42MMmRD/Gce71yKdMxH1sD28oVnFqA3sQcpsbEGzaGx7GxH1k3mv8o+7RdSbsWDm+pu6qSSetyCfmZniYQJkEwTIJgCZSTBMpJlAmUkwTIJlAmUkwTIJgJSYMQESIgZWIiYUiIgIiICIkQJnM+I4+rw/H18jEI75yu6tnAckr11YjodDYidLnO/aNhrVqVS38xCvzptf9xUH9ssSts4Nx+niQo0Vz0vdW/Q3XcaGx8pmJxLCYpqZ01HUHY/8AI+Ym98C5lJUByXUdT8afq7jz89bAS35NblMTzHjjQw1R1NnICIeoqOcqkel83oDNF4h7RcXXd6fDcD7qkr41c+6SCQSqqbEdjmPpMRXrcQdlqY3FGoqhiqKFVEqHQGyqBopcAnudZFeKpa5sNNgOwGgH7TL+z/i/2dyjmy03FF79KFZy2GcnstV3S3QVr9JhBUW3xD6iefBIftg9xnoYhHo1wgvamwtmvsCDYi56S1Ha+N8WXCoDbNUe4RPxEbseyLcEnzA3IB5ria7VahZ2LMxuxP3m7+WwAHQADpMvgWo+GiYjCUmcIqu9G9B3awzN7ltSRfcSMVw/BBS9HEvTcailVXxM1twuoY9BmLkC9zEGwcAfJiq1K+gw2EceRLYlD/sWbETOLcw8fLVqFXSmzNhqbBWYqadKpnu17BgCze8QNxtOzFr6jY/uIFRMpJkEykmBJMpJgmQTKF5BMgmQTAGREiAiJEBEiIGXiU3i8wqbxeRF4EyJF4vKJvF5TeReBVeal7RqV8LTq/8ABqpfzWpenb0zVE+k2smc39oXMb1qh4Vg7Go1jiKhGZcPTuCEH5zYX7euqkaw4tPfgME+jPdV/DszD83YeW/e2x9mGwaU7E+84HxHp090bD/WRWxQBtcX9df+tZoXiwUW2A6CUHEgTw1K0sNVgZT7Qv4R9BLgrqdxMJ40uLXgZHEuQAKdszdW+FFFrsep3Gg3PUC5GMxNa91Uk7ZmO726eQ8hoIxFRiLr0uCO6m17eYsP3nlZwFuDpA1bmbFfxVA2pAH+rf8AwJ3TBV0rKa3DaoOU3qYVzlUk7hRvRfzF1Otxc5h87cQq52qN+It9Ok7W/K4qCnWw9V8Pi0VbOpsb21VxsR5GTNG4cP4hTxCsUuGQ5aiOMr0am5R16HrfUEEEEggz13miDG4h6y0sQBh+KqtqdVAPB4lRGppnMCubcqD8LajQsDicZx2q5INR2IuCGYqLjQhkWy38iJR0jE4ynT/mVEQ9mYAn0B3mHx3NuDpAnOz5dwq2t6l8o/ec3xOMyqWdgqDUgaD9tzI5P4a3FcTmqLbA4YhnUjSu+6Uz32zEdrD7wgdZ4VjvtNFK2RkWoMyK3xGmfhYjpca27Eek9kiRAmREQEiIlCIvEDJ3i8ovF5gVXkXkXkXgVXmO45xF8LSNVaJqKnxgNlKJ+K1jcDr232vPdeLyjUk58pHekR/Xf9wsuDnSmbZUU+r2/wDoZi+auUyuavg1Gpu9HQA33KHZT5HQk9NxpdN1cG26khlIIamw3VlOqkdjGDonEOaHejUXDimtZgQjs5ZabHTMQE1tuB3Amn8vcNGGp6tmrVCWqObku9zmNzqdb69ZjSSBpf0B3PYTPUxkpqt7kAC/ew1PzjAxFXpNV4vj8RhmOKoPlK1fDqCwZHU0qTpnQ6NvVFzrroRM5WeYuhhTiafF6FtVGGqp+pUYEj6ASjJ8C5q4bi7U8XQTD1WsM6hhRc98yMrof1MR5zJcx8C8BFr0gDQNgStTOFvopuQDY7fe1I1104/M7y9xHEjNh1qN9nYXdDqoykMuUH4TmC7eckGwF4FSUhSZUKcoupUkvSR75hvuQSpPrbf5yFUS4tF3+BCRexPQf8/leBb4VwPCU3VwmZlIK52LBSNiF2v5mdE4ZiM1tZoRSoh1U27jr8viA8yAJn+BY4E2vEStw4xwanj8M1F9D8SOPjo1RqroehBnIsfxB0aquKGXFUGyV+1RholZR+cWv52P3p2bh+JBAnNfbLwgK1LHoPjHg1R+IEEoT+4+kX0jnl63EMRToUhd6jZUU7Dcl28gAST0AM75y/wengcNTw1L4UGrHeo51d28yfoLDpNC9jWCo5MTXvfEKwp6gfw6JAYFf1G9z+QD16dJFIkRNBEXiAvEiICJEQPfeM0t3i8yK7yM0ovF5RVeLym8x3FsbVooGp0DU72P8vzK7sPSBkjNC514BRZlqU69Ohi6hC0y7Kort92lUUm7A7Kw1XbaW8Xx6vVurOyjqqHw7fNffH900nnaqBQVFQKatRc5A1fKCbsd2N8up7SDI8Op1S7LXotTei2V1bZnG2XuBcG/e3nMviWtp2nnwwsKa9gJXim1Mo8VVpHD8Z9nqvUCBs6Gm4JtmS+Ya9CDfp1Pyt1GnnOsDA4jgTPVdlZVpsxIGrMAelrAfvMzgcClFcqj1J3Y9zPUq2kmTBERIlBiQDbexmVGLyAKugUWHpMSwuCDsdJgeN8VqKfDAym2rfjHdfKSjNcV5n8K6qc1TtfRf1H/ABMHw3mCqrNUdrlm6AAAWGwE152l1BZQO+saOyctc1pUspazTM850hiuGYpNyEzr5MnvD/ScHw2JamwZTYidU5W5hGJwtalUPvim/wAxlMsupjVvZPxE0uIClf3MUjIR0LoC6H6Kw/qnbp808ExXgYrDVMxUU6iMSDYhAwz69PdzTttfnLA0z7vEaLqPuuGzf3oD/tPrEq1tN5E8HCeKU8XT8SmGydGKsq1NN0LAZl8575QiREBERARKYgeu8i8iRIKryLyLyIFV5F5EiB4OI8Ho1x76Lm72/cEWIO+oI87zmHOnAGatQpUXLeGzNUDsCtD4ct3A96/vWW2bS5ABBm0c1cyYikzU/Aq0qevv5WPiDuKiAqo8g2bbbUTSjxik/wD6yEDpmAA76QMnmpobsfEfpcWRP0J/k3Py0lCVy2YHpqL7lT3PUj/IngGMp9HX6iXsLVV3srA2VtjfqsCqpFNesqZdZLOo0LAHsSLwBlJlZlJgRIGtyASBuQCQPW209OAorUc5/hW2nRmOwPkLbdbiZpBYMvSxt8oGtBgdjLOIopUGV1DDsRex7jtNk5lGFwvD6derpiKrgU8vxOl/fzjqoW5v0NrbkHXHaBh8bgKNNWZKYDDqSzW9MxNpgCbzP8WrAKR3mvXkoTL8t1HFaykhSrZ7fg2NvM3t/wBpiJn+VV1rH9A/33/x9IgzWO5fweIUeF/AqqLAi5R+2dSd/wAykHqQxme5L5EwiWqYl1r1xqKdv4dPzyn+Z6nTyuJhyBLlLHtTIIqWsdLtax7g3uD5iMTXWxE0rg3PFNmWlWYO50BQh3+aLq39Iv5GbqJpVMqk2kWgIi0WgUxKrRAvRK7RaQURaV5YywKLSLS5ljLAtlb6HY/vNK9oHAMOuDrYmnhaTVaIDWKaGnmGf4SCtlJb3SDpN5yyzicKlWnUp1BenUVkYd0YFWH0JgfPfD8Fg8WrEJUoOth/DZaya/e8OplYD+tjMtwDh64apVBcOXsFbKVug1+E7Ek7X6Ca7kfh+Mq0XOtJ2R/zAGwb5ix+c2d7lQ67d5IPRjM2anTT46rqgP4VN2ZvUIrH1tMpi3VfcUAKOg2mLwNfM/iNtRRrX/4j6A38lV/7piOK8wqLrT94/i6D07yjI4nFU6RW7ABiAR69QOnn856TOfV6zVCSxLMfqfITf0+EA72F/XrEosCrilq5KGGasGGYhL5lIsp07fD9Zm/tb0aefGUXwy6gGrlGbTZQGux8rXmNo4lqTB6bsrLsymxF9JgOK8OfEVGq1MSzM25dczfW4/0ko8HMXGKnEsSDYrTAFOjT38KiNgfzHVmPfyAmaxNcIN9pjqdKlhgSPeci2Y727AdJi8ZizUPlHAoxmILtfpLESm8gXl2hWdTZahQNubkDS9r5de/1lkyCYGX4VhPtVZaXiOwILO4VitNFF2cjVio0v7onUuE+zHAIFeq7VyQDoxSmw3BAUliD+q05NwLi9bBVlr0Hy1FBG1wykglWHUGwnWuT+cKFYlVGQm7Ph9xTO7VMP+JNyybrqQLXlg3HAcNoYZctCilNeyIq39bDX5z1WlxLMAQQQQCCDcEHYg9RJyy6LOWLS9ljLGizaMsvZYyxos5Yl7LEaLuWMsvZYyyCzljLL2WMsaLOWMsvZYyxos5ZiOZOKfZqdkI8apcJf7gFs9QjqFBHqxUdbzMYmslNGqObIgJY9gPLqfKco41xN8TVdzpm0A09xBfKgt2uST1JPSwCDTubcErMK6A2Wyv1La6Ox3J11O50M27k3hwr4Wzagj6TX+I8Vo01ZDZyQQUGtwdwZk/ZVzHSp1WwdZsiVD/CZjoGOyMe56HqdO0djGc08FqUsy5n8O9wFsFY+emu00t0sbXn0rxjgy1FKst1M5bzByC4Jegf6TFnia0HCOEcORcrqOwPeZ6lxoEa6TGYvg2IpEh6baeU8BBG8cK2J+MLPBiOLM2gmLlUaKnqFtSZTErw1B6jhKa3Y/QDqSegkFomUzbcFwCkg/ie+3qQo9AN/nPZzXwfDLwyjiaNFUq06wp1GW4zIyuRmF7Xuq62vrLg0YmVYahUqOtOmjO7fCqKWZrC5sqgk6An0Etmd39l3JZwNM4rEJbFVlAVTvh6R1yns7aZu1gO94OPHl7Ggf8AlK//ALVT/wDMJwfGowYYTEKykEFaVQFSNQVIG/pPqG0Wgcs5F5sxasuHx2FrhW0Wt4FQKHJ3cBbLe+pGnXTW/TcsvWjLAs5Yyy9ljLLos5Yyy9ljLGizliXssiNFy0WlVotMqptFpXaIFFotK4gaJzniMXXb7NhcNVdUILELkR33AFR8qELfoTr5qJrFP2fcUxP86rSw9M/dRmepbzIFvoZ2KJdHOOG+yTB07GrVeo3oqg+qnMDM5W5C4a1FqJw9lYaNmYtTboyEkhCPIW7i2k2uJBoOC47X4Uy4TipLYcnLQx1rq4+6mI/A4HU72PYmbe+Ep1FDKQQwuCNQQdiCN56MVhqdVGp1EV6bizKwDKy9iDvOacw8AxXDEanwzEOcPilrKcNUYsKIFJ2ZqFQnMrWU2He1zLKmNnxvDaTEqHQttbMpPpa853zlyc2tSkmo3UCW8QFJ2Fso0tpbTpLGJ4/WwdO9OoegCN7yHyyHQD9Nj5zXQ0N0KkqwsRuD0lE6xwjhGD49QeslPwq9NglRRsHIuGU9VPnrofU4jinsxrU7lKyZfzMBJhrnpm38k8P8WnWamyvXU60b/wARqAAOdB98XLAga6DymF4hwbwDZ69MnsrZj+0xa1TTZXRyrKQVcEqysNirDUHzkHRDrqP+xleOHicNx9LqqpWX1pumf/43k8GTH4umauLwrqANMUUCeJ2FanpmFr/xFA21zG0vJh2VnouCPGSpTPn4isgIPqR8x3l3Rqns5NNeKYPxUVlZyoDC4WoVbw2A7h8tvXvPpO0+T8DizRqUqy/FSdKi/qRgw/cT6uo1A6K6m6sAQe4IuP8AWRVVpNpVEgptFpVECm0i0qtFoFNotKrRaBTaJVaIExEQEREBERAREQEREBMfxHACuEBOWxbUAE2ZHRgCdj729j173GQiBwnXKl98iX9covMAMDW4ljEwmHFzrdj8NNBbO7flGg8zYDUzYeP06i1qlCihas9V6VJFtdmzMB5AAAkk6ADWdM5G5Up8Mw+T4sRVsa1T8bdFBOuRbm3zPWatRpnEPZh9mRDh+I10RnValwLKXGUPlQr9/IDfYG9/d15tzBhK2Gr1KFSs7lDuS3vA7GxY2n0/XorUR6bC6OCrA9VYWI+hnDfarw1kelVbVxek7fjZQGRz0uysG02uR0kGrcn8F+347D4Y38N2zVCNCKSDM+vS4GW/dhPoLg/KHD8GQ1DCU1cbOQXqD0d7sPkZoPsO4Rpicaw3IoofIWeoR5ElB/SZ1yRSa5xfllKovTAUjULsoYbFD907aWKnXQElpscQPmXmjlavw9yHUtSJ918uWxOyuoJCt21Kn7pOtu5ezjH/AGjheDfqieG1970iUufUKD85neIcPpYmm1OtTV0YEEEA6HeYnlHl3/w1K1BHzUGqF6YN81NWChkJ6gFbg/mMDYYiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiBgeG8u06OKr4tverVWbIbfyabEFgvmx1J7ADob56IgJontX4T42Aq1FW70grG2pshJB+hdf6vKb3KWUEEEXB3B1BEDD8ocJ+w4HDYe3vogL+dVrs5/uYzNREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBEiLwJiReLwJiReLwJiReLwJiReLwJiReLwJiReLwJiReLwJiReLwJiREBERA//9k="
}
];

Expand Down

0 comments on commit 9ba583c

Please sign in to comment.