Última actividad 1718984273

kristofer's Avatar kristofer revisó este gist 1718984273. Ir a la revisión

1 file changed, 143 insertions

Minesweeper.java(archivo creado)

@@ -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 + }
Siguiente Anterior