Java---扫雷程序

说明

  • 导入Scanner包。

代码

import java.util.Scanner;

public class Minesweeper {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int row = 9, col = 9;
        int[][] field = new int[row][col];
        int[][] mine = new int[row][col];
        for (int i = 0; i < row; i++) {
            for (int j = 0; j < col; j++) {
                mine[i][j] = (int)(Math.random() * 2);
                field[i][j] = -1;
            }
        }
        System.out.println("Welcome to Minesweeper!\n"
                         + "You have to uncover all the cells without hitting a mine.\n"
                         + "Enter the row and column to uncover a cell.");
        boolean gameover = false;
        int remaining = row * col - countMines(mine);
        while (!gameover) {
            System.out.println("Enter row (1-" + row + ") and column (1-" + col + "):");
            int r = scan.nextInt() - 1;
            int c = scan.nextInt() - 1;
            if (r >= 0 && r < row && c >= 0 && c < col && field[r][c] == -1) {
                if (mine[r][c] == 1) {
                    System.out.println("BOOM! You hit a mine. Game over.");
                    gameover = true;
                } else {
                    int mines = countAdjacentMines(mine, r, c);
                    field[r][c] = mines;
                    if (mines == 0) {
                        uncoverAdjacent(field, mine, r, c);
                    }
                    remaining--;
                }
            } else {
                System.out.println("Invalid input. Try again.");
            }
            printField(field);
            if (remaining == 0) {
                System.out.println("Congratulations! You won the game.");
                gameover = true;
            }
        }
    }

    private static int countMines(int[][] mine) {
        int count = 0;
        for (int i = 0; i < mine.length; i++) {
            for (int j = 0; j < mine[0].length; j++) {
                count += mine[i][j];
            }
        }
        return count;
    }

    private static int countAdjacentMines(int[][] mine, int r, int c) {
        int count = 0;
        for (int i = Math.max(0, r - 1); i <= Math.min(mine.length - 1, r + 1); i++) {
            for (int j = Math.max(0, c - 1); j <= Math.min(mine[0].length - 1, c + 1); j++) {
                count += mine[i][j];
            }
        }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值