Skip to content

Commit 721b2ec

Browse files
committed
Added mineswepper game
1 parent 27fe9db commit 721b2ec

File tree

1 file changed

+143
-0
lines changed

1 file changed

+143
-0
lines changed

mineswepper game.java

Lines changed: 143 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,143 @@
1+
import java.util.Random;
2+
import java.util.Scanner;
3+
4+
public class Minesweeper {
5+
private static final int SIZE = 10;
6+
private static final int MINES = 15;
7+
8+
private char[][] board;
9+
private boolean[][] mines;
10+
private boolean[][] revealed;
11+
private boolean gameOver;
12+
13+
public Minesweeper() {
14+
board = new char[SIZE][SIZE];
15+
mines = new boolean[SIZE][SIZE];
16+
revealed = new boolean[SIZE][SIZE];
17+
gameOver = false;
18+
}
19+
20+
public void initialize() {
21+
// Initialize the board and randomly place mines
22+
for (int i = 0; i < SIZE; i++) {
23+
for (int j = 0; j < SIZE; j++) {
24+
board[i][j] = ' ';
25+
mines[i][j] = false;
26+
revealed[i][j] = false;
27+
}
28+
}
29+
placeMines();
30+
}
31+
32+
public void placeMines() {
33+
Random random = new Random();
34+
int minesPlaced = 0;
35+
36+
while (minesPlaced < MINES) {
37+
int x = random.nextInt(SIZE);
38+
int y = random.nextInt(SIZE);
39+
40+
if (!mines[x][y]) {
41+
mines[x][y] = true;
42+
minesPlaced++;
43+
}
44+
}
45+
}
46+
47+
public void printBoard() {
48+
System.out.println("Minesweeper");
49+
System.out.print(" ");
50+
for (int i = 0; i < SIZE; i++) {
51+
System.out.print(i + " ");
52+
}
53+
System.out.println();
54+
55+
for (int i = 0; i < SIZE; i++) {
56+
System.out.print(i + ": ");
57+
for (int j = 0; j < SIZE; j++) {
58+
char cell = revealed[i][j] ? board[i][j] : ' ';
59+
System.out.print(cell + " ");
60+
}
61+
System.out.println();
62+
}
63+
}
64+
65+
public void revealCell(int x, int y) {
66+
if (x < 0 || x >= SIZE || y < 0 || y >= SIZE || revealed[x][y] || gameOver) {
67+
return;
68+
}
69+
70+
if (mines[x][y]) {
71+
gameOver = true;
72+
return;
73+
}
74+
75+
revealed[x][y] = true;
76+
int count = countMinesAround(x, y);
77+
if (count > 0) {
78+
board[x][y] = (char) (count + '0');
79+
} else {
80+
for (int i = -1; i <= 1; i++) {
81+
for (int j = -1; j <= 1; j++) {
82+
revealCell(x + i, y + j);
83+
}
84+
}
85+
}
86+
}
87+
88+
public int countMinesAround(int x, int y) {
89+
int count = 0;
90+
91+
for (int i = -1; i <= 1; i++) {
92+
for (int j = -1; j <= 1; j++) {
93+
int nx = x + i;
94+
int ny = y + j;
95+
if (nx >= 0 && nx < SIZE && ny >= 0 && ny < SIZE && mines[nx][ny]) {
96+
count++;
97+
}
98+
}
99+
}
100+
101+
return count;
102+
}
103+
104+
public boolean isGameOver() {
105+
return gameOver;
106+
}
107+
108+
public boolean isGameWon() {
109+
int unrevealedCells = 0;
110+
for (int i = 0; i < SIZE; i++) {
111+
for (int j = 0; j < SIZE; j++) {
112+
if (!revealed[i][j]) {
113+
unrevealedCells++;
114+
}
115+
}
116+
}
117+
return unrevealedCells == MINES;
118+
}
119+
120+
public static void main(String[] args) {
121+
Minesweeper game = new Minesweeper();
122+
game.initialize();
123+
124+
Scanner scanner = new Scanner(System.in);
125+
126+
while (!game.isGameOver() && !game.isGameWon()) {
127+
game.printBoard();
128+
System.out.print("Enter row and column (e.g., '1 2'): ");
129+
int x = scanner.nextInt();
130+
int y = scanner.nextInt();
131+
game.revealCell(x, y);
132+
}
133+
134+
game.printBoard();
135+
if (game.isGameWon()) {
136+
System.out.println("You won! Congratulations!");
137+
} else {
138+
System.out.println("Game over! You hit a mine!");
139+
}
140+
141+
scanner.close();
142+
}
143+
}

0 commit comments

Comments
 (0)