java小游戏之扫雷
package game;import java.util.Random; import java.util.Scanner;public class Minesweeper {private int[][] board; // 扫雷面板private boolean[][] revealed; // 已经翻开的方块private final int mineCount; // 总雷数private int remainingMines; // 剩余雷数private boolean gameEnd; // 游戏是否结束public Minesweeper(int rows, int cols, int mineCount) {this.board = new int[rows][cols];this.revealed = new boolean[rows][cols];this.mineCount = mineCount;this.remainingMines = mineCount;this.gameEnd = false;setMines();setNumber();}// 随机设置雷private void setMines() {Random random = new Random();int count = 0;while (count < mineCount) {int row = random.nextInt(board.length);int col = random.nextInt(board[0].length);if (board[row][col] != -1) {board[row][col] = -1;count++;}}}// 设置数字(表示周围的雷数)private void setNumber() {for (int i = 0; i < board.length; i++) {for (int j = 0; j < board[0].length; j++) {if (board[i][j] == -1) {continue;}int count = 0;for (int r = i - 1; r <= i + 1; r++) {for (int c = j - 1; c <= j + 1; c++) {if (r >= 0 && r < board.length && c >= 0 && c < board[0].length && board[r][c] == -1) {count++;}}}board[i][j] = count;}}}// 输出当前局面public void printBoard() {System.out.print(" ");for (int i = 0; i < board[0].length; i++) {System.out.print(i + " ");}System.out.println();for (int i = 0; i < board.length; i++) {System.out.print(i + " ");for (int j = 0; j < board[0].length; j++) {if (!revealed[i][j]) {System.out.print("* ");} else if (board[i][j] == -1) {System.out.print("X ");} else {System.out.print(board[i][j] + " ");}}System.out.println();}}// 翻开指定位置的方块,并判断游戏是否结束private void reveal(int row, int col) {if (revealed[row][col]) {return;}revealed[row][col] = true;if (board[row][col] == -1) {gameEnd = true;System.out.println("很遗憾,你输了!");return;}if (--remainingMines == 0) {gameEnd = true;System.out.println("恭喜你,你赢了!");return;}if (board[row][col] == 0) {for (int r = row - 1; r <= row + 1; r++) {for (int c = col - 1; c <= col + 1; c++) {if (r >= 0 && r < board.length && c >= 0 && c < board[0].length) {reveal(r, c);}}}}}// 开始游戏public void play() {Scanner scanner = new Scanner(System.in);while (!gameEnd) {System.out.println("当前雷数:" + remainingMines);printBoard();System.out.println("请输入行列坐标(用空格分隔):");int row = scanner.nextInt();int col = scanner.nextInt();if (row < 0 || row >= board.length || col < 0 || col >= board[0].length) {System.out.println("输入不合法,请重新输入!");continue;}reveal(row, col);}scanner.close();}public static void main(String[] args) {Minesweeper game = new Minesweeper(10, 10, 10);game.play();} }
java小游戏之扫雷相关推荐
- JAVA小游戏之扫雷的源代码
老师讲的扫雷小游戏,因为基础还不扎实,所以还写不出扫雷游戏,大家可以看看尝试去写写. ------------------------------------ //测试类 package com.ti ...
- 制作Java小游戏~扫雷游戏
上大学之前没必要去花钱培训哈.四年的时间足够自学了 可以参考我一下的建议: 看一些视频和书籍,注意你需要把基础打好.现在小破站上等很多第三方网站上有免费的,其实质量很不错的我把我自己整理的一些比较好的 ...
- java小游戏-扫雷游戏
java小游戏-ava小游戏-扫雷游戏 1 窗口绘制 2 雷区绘制 3 界面规划 4 底层地图 5 地雷生成 6 地雷重合 7 数字生成 8 顶层绘制 9 双缓存技术 10 鼠标事件 11 左键翻开 ...
- linux小型游戏系统设计,Linux平台下基于JAVA小游戏_设计文档.doc
Linux课程设计报告 课题名称:<Linux平台下基于java小游戏设计> 专 业:2011级计算机科学与技术 组 长:043佘清泉 组 员:007陈威达 008陈学仁 026赖华标 0 ...
- 各种经典java小游戏_Java是这个世界上最好的语言!
为什么? 请看TIOBE最新发布的编程语言排行榜: TIOBE开发语言排行榜每月更新一次,其结果可以用来检阅开发者的编程技能能否跟上趋势,或是否有必要作出战略改变,以及什么编程语言是应该及时掌握的. ...
- Java小游戏:模仿微信群发红包
Java小游戏:模仿微信群发红包 微信群主发普通红包,普通红包规则: 群主的一笔金额,从群主余额中扣除,平均分成n等分,让群员领取. 成员领取红包后,保存到余额中. 请根据规则,完成案例中所有类的定义 ...
- 《Java小游戏实现》:坦克大战
<Java小游戏实现>:坦克大战 前面写了一个简单的聊天小程序,今天开始就写一个坦克大战的游戏,算是对Java相关小知识点的一个应用. 这个游戏的完成,我们也是分步完成,逐步累加,一个一个 ...
- 【C语言小游戏】扫雷
hello,大家好,今天我们继续为大家带来一个小游戏,扫雷.相信这个游戏又是很多人的童年,那么我们今天就来实现一下这个扫雷游戏. 目录 一.游戏简介 二.游戏的基本设计 1.游戏基本思路 2.游戏基本 ...
- java小游戏-超级玛丽
java小游戏-java小游戏-超级玛丽 1 创建窗口 2 创建并完成常量类 3 创建背景类 4 绘制背景类 5 创建障碍物 6 第一关的设计 7 第二关的设计 8 第三关的设计 9 创建马里奥类 1 ...
最新文章
- 用命令行工具创建 NuGet 程序包
- java 协程 实现 Akka
- linux 系统日志路径作用 简介
- python最好的教程_喜大普奔~可能是最好的Python教程
- 改善Java应用程序性能的快速技巧
- jsp页面 如何通过el表达式获取request属性值
- .net页面生命周期
- python pandas读取文件内容_python pandas读取大型文件
- 微信小程序代码体积压缩到最小
- 如何把鼠标宏用c语言写出来,鼠标宏怎么设置,手把手教你鼠标如何设置宏
- 分布式存储问题及解决方案
- python nonetype iterable_无法解决“NoneType”对象不是iterable类型
- r语言 新增一列数字类型_R语言实战(2)——创建数据集【学习分享】
- Java web video 视频开发
- 鸿蒙华为畅享10plus,华为畅享10 Plus四配色曝光 款款都是高颜值
- 两个电阻的并联与串联
- 创意01:网上3D试衣间
- 外贸网站最好用的5大WordPress插件【必须安装】
- 10 降维算法(PCA降维/LDA分类/NMF非负矩阵)
- 第一章 Caché 函数大全 $ASCII 函数