Generation

generate functionMon, 02 Dec 2024

haz un código en java que replique el juego del buscaminas

Aquí te dejo un ejemplo de cómo podrías implementar el juego del Buscaminas en Java: ```java import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.util.Random; public class Buscaminas extends JPanel { private int filas, columnas, minas; private int[][] tablero; private boolean[][] descubierto; private boolean[][] marcado; private int puntaje; public Buscaminas(int filas, int columnas, int minas) { this.filas = filas; this.columnas = columnas; this.minas = minas; this.tablero = new int[filas][columnas]; this.descubierto = new boolean[filas][columnas]; this.marcado = new boolean[filas][columnas]; this.puntaje = 0; // Inicializar el tablero con minas Random random = new Random(); for (int i = 0; i < minas; i++) { int fila = random.nextInt(filas); int columna = random.nextInt(columnas); tablero[fila][columna] = -1; } // Inicializar el tablero con valores for (int i = 0; i < filas; i++) { for (int j = 0; j < columnas; j++) { if (tablero[i][j] == -1) { continue; } int minasAdyacentes = 0; for (int x = -1; x <= 1; x++) { for (int y = -1; y <= 1; y++) { int filaActual = i + x; int columnaActual = j + y; if (filaActual >= 0 && filaActual < filas && columnaActual >= 0 && columnaActual < columnas && tablero[filaActual][columnaActual] == -1) { minasAdyacentes++; } } } tablero[i][j] = minasAdyacentes; } } // Establecer el tamaño del panel setPreferredSize(new Dimension(columnas * 30, filas * 30)); setBackground(Color.WHITE); // Agregar evento de clic addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { int fila = e.getY() / 30; int columna = e.getX() / 30; if (e.getButton() == MouseEvent.BUTTON1) { // Clic izquierdo descubierto[fila][columna] = true; pintar(); if (tablero[fila][columna] == -1) { JOptionPane.showMessageDialog(Buscaminas.this, "¡Has perdido!"); System.exit(0); } else if (tablero[fila][columna] == 0) { descubierto[fila][columna] = true; for (int x = -1; x <= 1; x++) { for (int y = -1; y <= 1; y++) { int filaActual = fila + x; int columnaActual = columna + y; if (filaActual >= 0 && filaActual < filas && columnaActual >= 0 && columnaActual < columnas && !descubierto[filaActual][columnaActual]) { descubierto[filaActual][columnaActual] = true; pintar(); } } } } } else if (e.getButton() == MouseEvent.BUTTON3) { // Clic derecho marcado[fila][columna] = !marcado[fila][columna]; pintar(); } } }); } private void pintar() { repaint(); } @Override public void paintComponent(Graphics g) { super.paintComponent(g); for (int i = 0; i < filas; i++) { for (int j = 0; j < columnas; j++) { if (descubierto[i][j]) { if (tablero[i][j] == -1) { g.setColor(Color.RED); g.fillRect(j * 30, i * 30, 30, 30); } else if (tablero[i][j] == 0) { g.setColor(Color.LIGHT_GRAY); g.fillRect(j * 30, i * 30, 30, 30); } else { g.setColor(Color.BLACK); g.drawString(String.valueOf(tablero[i][j]), j * 30 + 10, i * 30 + 20); } } else if (marcado[i][j]) { g.setColor(Color.YELLOW); g.fillRect(j * 30, i * 30, 30, 30); } } } } public static void main(String[] args) { JFrame frame = new JFrame("Buscaminas"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.add(new Buscaminas(10, 10, 10)); frame.pack(); frame.setVisible(true); } } ``` Este código crea un panel que representa el tablero del juego del Buscaminas. El jugador puede clicar en las celdas para descubrirlas o marcarlas con un clic derecho. Si el jugador encuentra una mina, el juego termina y se muestra un mensaje de diálogo. Si el jugador descubre todas las celdas sin encontrar minas, el juego termina y se muestra un mensaje de diálogo.

Questions about programming?Chat with your personal AI assistant