最近也是学完了Java基础部分,想找点项目练练,结果发现什么都不会,什么都做不出来,和朋友聊天聊到这方面,听他的建议可以写个扫雷,虽然只是在控制台实现,但是好歹也是能运行出来的。
首先编写一个地图类:Junior

class Junior{int i, j, x;//i,j皆为数组坐标,x为地雷计数器//生成初级地图(8*8,10)public void junior(String[][] mines,int[][] site) {//在地图中随机生成 10个地雷for (x = 0; x < 10; x++) {i = (int) (Math.random() * 8 + 1);j = (int) (Math.random() * 8 + 1);//避免重复,在未赋值的区域放置地雷if (mines[i][j] == null){//原本是检验地雷是否正确生成,检验后即可注释
//              mines[i][j] = "+";//将地雷坐标存入另一个数组,放边后面判断site[x][0] = i;site[x][1] = j;}else {x--;}}for (int k = 0; k < mines.length; k++) {//将所有区域用 * 覆盖for (int l = 0; l < mines.length; l++) {mines[k][l] = "*";}//留两条边作为坐标指示器mines[0][k] = String.valueOf(k);mines[k][0] = String.valueOf(k);}//输出地雷数组,检验用for (int[] date : site){System.out.println(Arrays.toString(date));}}
}

本来写了一个view类用来显示,后来嫌麻烦,有兴趣的朋友后期可以自己实现一下,也只是一些方法的调用

写了一个工具类,后面嫌麻烦索性就干脆在工具类里面显示

public class Util {@Testpublic void test1(){Util.input();}//创建地雷图//初级难度//交互public static void input(){Scanner sc = new Scanner(System.in);Junior junior = new Junior();String[][] mines = new String[9][9];//生成地雷地图int[][] site = new int[10][2];//存放地雷位置int conut = 0;//计数器//调用Junior类初始化地图junior.junior(mines,site);boolean a = false;do {int num = 0;//记当前所探区域周围的地雷的个数//因为地图设置为8*8,10个雷,所以当conut = 8*8-10时即为通过if (conut == 54){System.out.println("恭喜,你通关了!");break;}//输出地图for (String[] date : mines){System.out.println(Arrays.toString(date));}System.out.println("请依次输入x,y坐标:");int x_axis = sc.nextInt();//给输入的数字进行判断,防止空指针异常或指针越界while (true){if (x_axis >= mines.length || x_axis < 1){System.out.println("请输入1~8以内的数");x_axis = sc.nextInt();}else break;}int y_axis = sc.nextInt();while (true){if (y_axis >= mines.length || y_axis < 1){System.out.println("请输入1~8以内的数");y_axis = sc.nextInt();}else break;}for (int[] ints : site) {//将输入的x,y坐标与之前存储的地雷坐标相比较if (x_axis == ints[0] && y_axis == ints[1]) {a = true;break;}//通过8轮比较判断当前区域的旁边8个格子地雷的个数if (ints[0] == x_axis && ints[1] == y_axis - 1) num++;if (ints[0] == x_axis && ints[1] == y_axis + 1) num++;if (ints[0] == x_axis - 1 && ints[1] == y_axis) num++;if (ints[0] == x_axis + 1 && ints[1] == y_axis) num++;if (ints[0] == x_axis - 1 && ints[1] == y_axis - 1) num++;if (ints[0] == x_axis - 1 && ints[1] == y_axis + 1) num++;if (ints[0] == x_axis + 1 && ints[1] == y_axis - 1) num++;if (ints[0] == x_axis + 1 && ints[1] == y_axis + 1) num++;}if (a) System.out.println("你踩到雷了,游戏结束!");//踩中雷游戏结束,否则将num的值给输入坐标所在区域else {mines[x_axis][y_axis] = String.valueOf(num);conut++;System.out.println("请继续: ");}} while (!a);}
}




做完这个游戏我想的就是不要怕。没有什么做不出来的,只要认真去想,刚开始完全没头绪,不知道怎么创建地图,怎么判断地雷,还想用throw抛出异常,但实际上是没必要的。这只是用最基本的语法来写一个小游戏,没有涉及到什么难的知识,toString方法也可以自己写一个遍历方法什么的。
也是因为自己懒少写了很多输出界面,不然可以更加美观,但是因为这只是拿来练手的,所以没有想把输出写的多漂亮。
先就这样吧。我知道这个游戏还有很多写的不好的地方,还望大佬多多指点。

用java在控制台实现扫雷相关推荐

  1. 利用java开发简易版扫雷游戏

    1.简介 学了几周的Java,闲来无事,写个乞丐版的扫雷,加强一下Java基础知识. 2.编写过程 编写这个游戏,一共经历了三个阶段,编写了三个版本的游戏代码. 第一版:完成了扫雷游戏的基本雏形,实现 ...

  2. java 读取控制台_Java从控制台读入数据的几种方法总结

    这里记录Java中从控制台读入信息的几种方式,已备后查! (1)JDK 1.4(JDK 1.5和JDK 1.6也都兼容这种方法) public class TestConsole1 { public ...

  3. java从控制台读取字符串_从控制台读取Java字符串

    java从控制台读取字符串 Today we will look into different ways to read string from console in java. 今天,我们将研究从J ...

  4. (万年历一)JAVA在控制台输出万年历(1900年起)

    用Java实现在控制台输出指定年月的日历 纯算法写太麻烦?Calender对象写可香了: (万年历二)JAVA在控制台输出万年历(Calendar版) 控制台打印太难看?已更新js控制页面的啦版: ( ...

  5. Java语言实现的扫雷游戏(一)

    Java类库中提供了用于GUI的swing开发工具包,我们可以利用swing设计出一些简单的经典小游戏,如扫雷,推箱子,俄罗斯方块等.接下来我就简单分享一下用Java设计扫雷游戏的思路与过程. 首先, ...

  6. 基于Java+Swing实现《扫雷》游戏

    基于Java+Swing实现<扫雷>游戏 一.系统介绍 二.功能展示 三.其他系统 四.获取源码 一.系统介绍 windows自带的游戏<扫雷>是陪伴了无数人的经典游戏,本程序 ...

  7. Java笔记——控制台模拟“双色球”福利彩票游戏

    Java笔记--控制台模拟"双色球"福利彩票游戏 说明:本打算重新巩固java知识并重新记录笔记,但是现在对于一个20多年的语言而言,鄙人的能力实在是提炼不出来什么精华,直接上练手 ...

  8. java 清空控制台_利用原生库和JNI(Java原生接口)实现H2数据库漏洞利用

    在H2数据库引擎中获取代码执行权限的技术早已是众所周知,但有个要求就是H2能够动态编译Java代码.而本文将向大家展示以前没有公开过的利用H2的方法,并且无需使用Java编译器,即通过原生库和JNI( ...

  9. java清除控制台_Java:清除控制台

    问题 请问任何正文可以告诉我在Java中使用什么代码来清除屏幕?例如在C中 system("CLS"); Java用于清晰屏幕的代码是什么? 谢谢! #1 热门回答(87 赞) 由 ...

最新文章

  1. 跟小博老师一起学习数据库 ——SELECT
  2. aspose html转pdf_PDF如何转HTML?办公党必备
  3. python和java一样吗-Java与Python到底有什么区别和共同点详细对比
  4. Java桌面程序打包成exe可执行文件
  5. 备忘:C++基础 -- 数据类型的学习总结
  6. this.$modal.confirm 自定义按钮关闭_Excel迫使人类基因重命名?用VBA给科学家们支一招!—— 怎样快速定制工具栏按钮...
  7. Java下的可视化开发工具使用 WindowBuilder Pro
  8. Ubuntu学习日记--Lesson3:vim编辑器使用和常用命令
  9. jQuery调用WebService ( 同源调用)
  10. 关于数据库“事务”“索引”“实例”的含义
  11. 大家一起来谈论C#的前途
  12. JSON应用场景与实战
  13. tensor数据类型,数据转换和新建数据操作
  14. 【中南林业科技大学】【陈】第十周作业sqi成绩管理系统
  15. 设计模式——策略模式
  16. 用C语言做一个迷宫小游戏
  17. IMX6 / IMX8 系列芯片简单对比
  18. 网页中怎么屏蔽鼠标右键和部分按键功能
  19. PDF怎么编辑,如何去除PDF水印
  20. PAT 乙级 1010 C语言

热门文章

  1. Windows XP仿苹果工具栏—RocketDock
  2. firefox用12306Helper 0.2结合ie tab+自动订火车票和完成支付全攻略
  3. 人工智能在药物研发和生物技术中的应用:回顾与展望
  4. MQ消息队列消息过期失效
  5. 学生管理系统JAVA-面向过程
  6. 娶个什么样的女人做老婆
  7. [人工智能学习日志]kaggle机器学习实战案例学习1
  8. C51单片机寻址方式
  9. 关于频谱分析中两个重要指标:频率分辨率和时间分辨率的理解及计算
  10. UltraEdit专业文本十六进制编辑器IDM UltraEdit v24.10.0.24 中文注册版 免费下载