java简单版扫雷实现
java简单版扫雷实现
- 实现原理
- 直接贴代码
- 成果展示
实现原理
扫雷实现第一步就是生成棋盘,第二步就要生成每个棋子,定义棋子属性是否是地雷,第三部就是给不是地雷的棋子赋值(附近多少地雷)。
直接贴代码
/*** 扫雷棋盘*/
public class DemoTest {public static void main(String[] args) {int[][] arrs = generate();print(arrs);}private static void print(int[][] arrs) {if (arrs == null || arrs.length == 0) {return;}for (int i = 0; i < arrs.length; i++) {for (int j = 0; j < arrs[i].length; j++) {if (arrs[i][j] == -2) {System.out.print("P ");}else {System.out.print(arrs[i][j] + " ");}}//换行打印System.out.println();}}private static int[][] generate() {Scanner in =new Scanner(System.in);//设置棋盘的大小System.out.println("请输入棋盘大小:");int a = in.nextInt();if (a <= 0) {System.out.println("棋盘大小必须大于0");return null;}//设置地雷的个数System.out.println("请设置地雷的个数:");int b = in.nextInt();if (b < 0) {System.out.println("地雷个数必须大于0");return null;}else if (b > a*a) {System.out.println("地雷个数必须小于" + a*a);return null;}int[][] arrs = new int[a][a];//地雷标记位-2,其它标记为-1Random r = new Random();for (int i = 0; i < arrs.length; i++) {for (int j = 0; j < arrs[i].length; j++) {if (b > 0) {boolean flag = r.nextBoolean();if (flag) {arrs[i][j] = -2;b --;}else {arrs[i][j] = -1;}}else {arrs[i][j] = -1;}}}for (int i = 0; i < arrs.length; i++) {for (int j = 0; j < arrs[i].length; j++) {if (i == 0) {if (j == 0) {if (arrs[i][j] == -1) {int count = 0;if (arrs[i+1][j] == -2) {count ++;}if (arrs[i+1][j+1] == -2) {count ++;}if (arrs[i][j+1] == -2) {count ++;}arrs[i][j] = count;}}else if(j == arrs[i].length -1){if (arrs[i][j] == -1) {int count = 0;if (arrs[i][j-1] == -2) {count ++;}if (arrs[i+1][j-1] == -2) {count ++;}if (arrs[i+1][j] == -2) {count ++;}arrs[i][j] = count;}}else{if (arrs[i][j] == -1) {int count = 0;if (arrs[i][j-1] == -2) {count ++;}if (arrs[i+1][j-1] == -2) {count ++;}if (arrs[i+1][j] == -2) {count ++;}if (arrs[i+1][j+1] == -2) {count ++;}if (arrs[i][j+1] == -2) {count ++;}arrs[i][j] = count;}}}else if (i == arrs.length -1){if (j == 0) {if (arrs[i][j] == -1) {int count = 0;if (arrs[i-1][j] == -2) {count ++;}if (arrs[i-1][j+1] == -2) {count ++;}if (arrs[i][j+1] == -2) {count ++;}arrs[i][j] = count;}}else if(j == arrs[i].length -1){if (arrs[i][j] == -1) {int count = 0;if (arrs[i][j-1] == -2) {count ++;}if (arrs[i-1][j-1] == -2) {count ++;}if (arrs[i-1][j] == -2) {count ++;}arrs[i][j] = count;}}else{if (arrs[i][j] == -1) {int count = 0;if (arrs[i][j-1] == -2) {count ++;}if (arrs[i-1][j-1] == -2) {count ++;}if (arrs[i-1][j] == -2) {count ++;}if (arrs[i-1][j+1] == -2) {count ++;}if (arrs[i][j+1] == -2) {count ++;}arrs[i][j] = count;}}}else {if (j == 0) {if (arrs[i][j] == -1) {int count = 0;if (arrs[i-1][j] == -2) {count ++;}if (arrs[i-1][j+1] == -2) {count ++;}if (arrs[i][j+1] == -2) {count ++;}if (arrs[i+1][j+1] == -2) {count ++;}if (arrs[i+1][j] == -2) {count ++;}arrs[i][j] = count;}}else if(j == arrs[i].length -1){if (arrs[i][j] == -1) {int count = 0;if (arrs[i-1][j] == -2) {count ++;}if (arrs[i-1][j-1] == -2) {count ++;}if (arrs[i][j-1] == -2) {count ++;}if (arrs[i+1][j-1] == -2) {count ++;}if (arrs[i+1][j] == -2) {count ++;}arrs[i][j] = count;}}else{if (arrs[i][j] == -1) {int count = 0;if (arrs[i][j-1] == -2) {count ++;}if (arrs[i-1][j-1] == -2) {count ++;}if (arrs[i-1][j] == -2) {count ++;}if (arrs[i-1][j+1] == -2) {count ++;}if (arrs[i][j+1] == -2) {count ++;}if (arrs[i+1][j+1] == -2) {count ++;}if (arrs[i+1][j] == -2) {count ++;}if (arrs[i+1][j-1] == -2) {count ++;}arrs[i][j] = count;}}}}}return arrs;}
}
成果展示
java简单版扫雷实现相关推荐
- JAVA简单实现扫雷小游戏
JAVA简单实现扫雷小游戏 这两天学校外面来人教java基础,学习一下,自己试着做了一个扫雷小游戏,记录一下子学习过程.(我觉得自己不是很懂类和对象,基础没怎么看),敲出来的代码结构混乱,希望路过的大 ...
- 收银系统(Java简单版)
源代码: import java.util.*;public class shopping{public static void main(String[] args){Good good=new G ...
- 简单版扫雷游戏的设计与代码
文件和三子棋一样 思想 1.要用两个棋盘,一个用来布置雷,一个用来存储排查雷的信息 2.考虑到一开始的排查雷的棋盘界面要用字符'*'显示,所以统一用字符数组来储存数据 3.布置雷的棋盘用字符'1'来表 ...
- java扫雷设计_毕业设计Java版扫雷的设计与实现介绍
毕业设计Java版扫雷的设计与实现介绍 java语言eclipse环境 源码+精品文档 价格98元 扫雷是一款玩法相当简单的大众化的小游戏,游戏的胜利条件是在最短的时间内根据点击格子出现的数字找出所有 ...
- linux控制台单人五子棋简书,Java控制台版五子棋的简单实现方法
这篇文章主要给大家介绍了关于Java控制台版五子棋的简单实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 设计一个10*1 ...
- JAVA小游戏之打字母(简单版和升级版)
简单版: 规则:没有时间限制,点对加十分,出界抠十分 import javax.swing.*; import java.awt.*;/*** 原理:* 1.生成字母 (绘制字母)* 2. 生成坐标系 ...
- java飞鸽传书_java简单版飞鸽传书
[实例简介] 使用java实现的简单版飞鸽传书,可以单聊.群聊.发送文件,使用UPD获取在线用户及聊天,使用TCP发送文件.代码比较简洁,界面工整,学习使用. [实例截图] [核心代码] simple ...
- 利用java开发简易版扫雷游戏
1.简介 学了几周的Java,闲来无事,写个乞丐版的扫雷,加强一下Java基础知识. 2.编写过程 编写这个游戏,一共经历了三个阶段,编写了三个版本的游戏代码. 第一版:完成了扫雷游戏的基本雏形,实现 ...
- java随机yujie_植物大战僵尸简单版教程java版
作者:叁念 1.闲来无事,做了个简单版的植物大战僵尸,不多说直接看效果图: 2.程序的项目结构如下: 3.先上素材 图片素材 链接:https://pan.baidu.com/s/1dGqqIkx 密 ...
最新文章
- OpenCV 实现多张图像拼接
- [cocoapods]cocoapods问题解决
- springCloud的注册中心Eureka和Zookeper的区别
- python 小例子 源码 莫凡_100 个 Python 小例子(一)
- 微信分享无响应的解决
- C++ 写时拷贝 2
- centos6.5装mysql好难_CentOS6.5 下MySQL傻瓜式安装
- 自己动手、丰衣足食!面试表
- 如何用 200 行 JavaScript 代码实现人脸检测?
- Java开发知识之Java的包装类
- MV从命令行同时移动多种文件类型的小技巧
- LayaAir UI 组件 # HSlider,VSlider(水平/垂直滑动条)
- pil对图像加透明 python_分享一个骚操作,用 Python 来 P 图
- 必读开发规范之阿里巴巴开发手册(个人整理版)
- 华为、拼多多上线新应用功能,多厂商蓝牙存在漏洞
- 加入AI考拉大家庭,是一种怎样的体验?--来自考拉码农的心声
- 一年前,月薪两万被人叫老总,如今35岁在美团送外卖
- 今日头条最新signature
- 设置win服务器代理
- 四川省眉山市2021年高考成绩查询,四川眉山中学2021年排名
热门文章
- 响应式的车牌登记页面
- 静态代码分析工具列表--常用静态代码分析工具介绍
- 吴恩达深度学习 | (18) 卷积神经网络专项课程第二周学习笔记
- 创业十诫之一:过早迈出创业第一步
- DICOM-RT:放疗系统的坐标系统DICOM-RT Coordinate System
- c++Date(日期)类方法实现日期计算器
- 内存检测工具BoundsChecker使用详述
- Rootkit 之 adore-ng 模拟木马病毒
- 数据库--商品 表的设计
- access to vhost 'next' refused for user 'admin': vhost 'next' is down 解决方案