Java扫雷小游戏

本文介绍了使用Java开发扫雷小游戏的过程,涉及GridLayout和BorderLayout布局管理器的应用,以及游戏界面的设计。在开发过程中遇到重新开始游戏的功能问题,通过调试发现并解决了因未调用方法导致的错误,强调了编程时的细心和代码注释的重要性。扫雷游戏包括按钮、计时、数字块等功能,并详细列举了各个关键功能点。
摘要由CSDN通过智能技术生成

【尚学堂】Java300集零基础适合初学者视频教程_Java300集零基础教程_Java初学入门视频基础巩固教程_Java语言入门到精通_哔哩哔哩_bilibiliJava扫雷小游戏 需要做到判断以当前坐标(x,y)为中心

去判断周围的八个格子的参数

使用双层for循环遍历  

i-1,j-1     i,j-1      i+1,j-1

i-1,j      i,j         i+1,j

i-1,j+1     i,j+1     i+1,j+1

需要用到GridLayout 网格布局和BorderLayout 边框布局

通过这两个布局管理器形成扫雷的界面 然后进行页面布局的编辑

通过网上下载一些素材图片然后加入进去形成一个完整的游戏界面 

前期做完了检查发现 竟然不能实现重新游戏 本来定义的从新游戏的方法是直接重置一些按钮复位等等 

但是怎么改就是不能重新开始  编译器也没有报错  

多次测试发现竟然是粗心没有调用方法 导致耽误了那么长时间去增删改查

这次教训明白了做什么不能粗心大意 小问题大毛病 以后做好没一点的注释 规范代码书写格式 让自己的代码可读性更高

扫雷需要完成的基本功能:

1.按钮

2.计时

3.数字块

4.空块

以下是简单的 Java 扫雷小游戏源代码: ``` import java.util.Random; import java.util.Scanner; public class Minesweeper { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); Random random = new Random(); int rows, columns, bombs; System.out.print("Enter number of rows: "); rows = scanner.nextInt(); System.out.print("Enter number of columns: "); columns = scanner.nextInt(); System.out.print("Enter number of bombs: "); bombs = scanner.nextInt(); boolean[][] board = new boolean[rows][columns]; int[][] counts = new int[rows][columns]; // randomly place bombs for (int i = 0; i < bombs; i++) { int row, column; do { row = random.nextInt(rows); column = random.nextInt(columns); } while (board[row][column]); board[row][column] = true; for (int dr = -1; dr <= 1; dr++) { for (int dc = -1; dc <= 1; dc++) { if (dr != 0 || dc != 0) { int r = row + dr; int c = column + dc; if (r >= 0 && r < rows && c >= 0 && c < columns) { counts[r][c]++; } } } } } boolean[][] revealed = new boolean[rows][columns]; int remaining = rows * columns - bombs; while (remaining > 0) { // print the board for (int c = 0; c < columns; c++) { System.out.print(" " + c); } System.out.println(); for (int r = 0; r < rows; r++) { System.out.print(r); for (int c = 0; c < columns; c++) { if (revealed[r][c]) { if (board[r][c]) { System.out.print("* "); } else { System.out.print(counts[r][c] + " "); } } else { System.out.print(". "); } } System.out.println(); } // ask for the next move int row, column; do { System.out.print("Enter row and column: "); row = scanner.nextInt(); column = scanner.nextInt(); } while (row < 0 || row >= rows || column < 0 || column >= columns || revealed[row][column]); revealed[row][column] = true; remaining--; // handle the move if (board[row][column]) { System.out.println("Boom! Game over."); break; } else if (counts[row][column] == 0) { // reveal all neighbors for (int dr = -1; dr <= 1; dr++) { for (int dc = -1; dc <= 1; dc++) { if (dr != 0 || dc != 0) { int r = row + dr; int c = column + dc; if (r >= 0 && r < rows && c >= 0 && c < columns && !revealed[r][c]) { revealed[r][c] = true; remaining--; } } } } } } if (remaining == 0) { System.out.println("Congratulations! You win!"); } scanner.close(); } } ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值