package com.titian.bean;

import java.awt.CardLayout;
import java.awt.Point; public class Grid {
char content;
boolean state;
Point point;
public char getContent() {
return content;
}
public void setContent(char content) {
this.content = content;
}
public boolean isState() {
return state;
}
public void setState(boolean state) {
this.state = state;
}
public Point getPoint() {
return point;
}
public void setPoint(Point point) {
this.point = point;
}
}
package com.titian.core;

import java.awt.Point;
import java.util.Random; import com.titian.bean.Grid; public class Game {
Grid[][] grid = new Grid[9][9];
int count = 10;
Random r = new Random();
public void addGrid() {
for (int i = 0; i < grid.length; i++) {
for (int j = 0; j < grid[i].length; j++) {
grid[i][j] = new Grid();
grid[i][j].setContent(' ');
grid[i][j].setState(false);
grid[i][j].setPoint(new Point(i,j));
}
}
} public void paint() {
for (int i = 0; i < grid.length; i++) {
for (int j = 0; j < grid[i].length; j++) {
if(grid[i][j].isState()) {
System.out.print(grid[i][j].getContent() + " ");
}else {
System.out.print("■ ");
}
}
System.out.println();
}
}
public void setMine() {
int i = 0;
do {
int x = r.nextInt(9);
int y = r.nextInt(9);
if(grid[x][y].getContent() != '*') {
grid[x][y].setContent('*');
i++;
}
}while(i < count);
} public Point[] getPoint(int x, int y) {
Point[] point = new Point[8];
point[0] = new Point(x - 1, y);
point[1] = new Point(x - 1, y - 1);
point[2] = new Point(x, y - 1);
point[3] = new Point(x + 1, y - 1);
point[4] = new Point(x + 1, y);
point[5] = new Point(x + 1, y + 1);
point[6] = new Point(x, y + 1);
point[7] = new Point(x - 1, y + 1);
return point;
} public void setNumber() {
for (int i = 0; i < grid.length; i++) {
for (int j = 0; j < grid[i].length; j++) {
int sum = 0;
if(grid[i][j].getContent() == '*') {
continue;
}else {
Point[] point = getPoint(i, j);
for (int k = 0; k < point.length; k++) {
Point p = point[k];
if(p.x >=0 && p.y >= 0 && p.x < 9 && p.y < 9) {
if(grid[p.x][p.y].getContent() == '*') {
sum++;
}
}
}
}
if(sum > 0) {
grid[i][j].setContent((char)(48 + sum));
}
}
}
} public void stamp(int x, int y) {
if(grid[x][y].getContent() == '*') {
System.out.println("game over");
}else {
grid[x][y].setState(true);
if(grid[x][y].getContent() == ' ') {
Point[] point = getPoint(x, y);
for (int k = 0; k < point.length; k++) {
Point p = point[k];
if(p.x >=0 && p.y >= 0 && p.x < 9 && p.y < 9) {
if(grid[p.x][p.y].getContent() == ' ' && grid[p.x][p.y].isState() == false) {
stamp(p.x,p.y);
}else if(grid[p.x][p.y].getContent() != ' ') {
grid[p.x][p.y].setState(true);
}
}
}
}
}
} }
package com.titian.test;

import java.util.Scanner;

import com.titian.core.Game;

public class Test1 {
public static void main(String[] args) {
Game g = new Game();
g.addGrid();
g.setMine();
g.setNumber(); Scanner s = new Scanner(System.in);
g.paint();
while(true) {
System.out.println("x坐标");
int x = s.nextInt();
System.out.println("y坐标");
int y = s.nextInt();
g.stamp(x, y);
g.paint();
}
}
}

java版扫雷的更多相关文章

  1. wpf版扫雷游戏

    近来觉得wpf做出来的界面很拉风,自己也很喜欢搞些小游戏,感觉这做出来的会很炫,很装逼,(满足自己的一点小小的虚荣心)于是就去自学,发现感觉很不错,可是属性N多,太多了,而且质料也少,很多不会用,只会 ...

  2. js版扫雷(可直接运行试玩)

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  3. ArcGIS Server 10 Java 版的Rest服务手动配置方法

    Java版的Manager中发布的服务默认只发布了该服务的SOAP接口,而REST接口需要用户在信息服务器,如Tomcat. Apache.WebLogic等中手工配置.由于在Java版的Server ...

  4. PetaPojo —— JAVA版的PetaPoco

    背景 由于工作的一些原因,需要从C#转成JAVA.之前PetaPoco用得真是非常舒服,在学习JAVA的过程中熟悉了一下JAVA的数据组件: MyBatis 非常流行,代码生成也很成熟,性能也很好.但 ...

  5. C+命令行+方向键=简易版扫雷

    前言: 想起来做这个是因为那时候某天知道了原来黑框框里面的光标是可以控制的,而且又经常听人说起这个,就锻炼一下好了. 之前就完成了那1.0的版本,现在想放上来分享却发现有蛮多问题的,而且最重要的是没什 ...

  6. 【转载】java版打字练习软件

    网上找到一个java版的打字的游戏 import java.applet.Applet; import java.applet.AudioClip; import java.awt.Dimension ...

  7. 微博地址url(id)与mid的相互转换 Java版

    原理: 新浪微博的URL都是如:http://weibo.com/2480531040/z8ElgBLeQ这样三部分. 第一部分(绿色部分)为新浪微博的域名,第二部分(红色部分)为博主Uid,第三部分 ...

  8. JCEF3——谷歌浏览器内核Java版实现(一):使用jawt获取窗体句柄

    前言 最近一段时间研究谷歌浏览器内核.谷歌浏览器内核一直开源,并维护更新,它的开源项目中内核更新速度和Chrome浏览器版本更新进度一样!而且它不同于WebKit(值得一题的是谷歌浏览器已不使用Web ...

  9. Selenium关键字驱动测试框架Demo(Java版)

    Selenium关键字驱动测试框架Demo(Java版)http://www.docin.com/p-803493675.html

随机推荐

  1. tarjan-LCA模板

    洛谷P3379 #include <cstdio> using namespace std; ; struct etype{ int t,next; }; struct qtype{ in ...

  2. AcWing 252. 树 (点分治)打卡

    题目:https://www.acwing.com/problem/content/254/ 题意:求一棵树上,路径<=k的有多少条 思路:点分治,我们用两个指针算solve函数,首先对算出来的 ...

  3. vue和php-前后台交互

    vue和php-前后台交互 前端主要代码: <template> <div class="main-member-info"> <form @subm ...

  4. 北风设计模式课程---20、UML类图介绍

    北风设计模式课程---20.UML类图介绍 一.总结 一句话总结: 不仅要通过视频学,还要看别的博客里面的介绍,搜讲解,搜作用,搜实例 设计模式都是对生活的抽象,比如用户获得装备,我可以先装备工厂先生 ...

  5. 大数据给IT企业带来攫金市场新机遇

    大数据给IT企业带来攫金市场新机遇 大数据,一个时髦的名词,也是当下热门的业务领域.大数据诱人的利益诉求点之一,即通过大数据能更好地提高效率,更好地有的放矢.一方面,大数据让公司内部更有效地运作:另一 ...

  6. App知识点(持续更新......)

    1.app的性能测试,即专项测试,需要重点关注那些方面? 内存.cpu占用.耗电量.流量.流畅度等 2.什么是activity?它的生命周期? Activity是一个Android的应用组件,它提供屏 ...

  7. Codeforces #576 Rectangle Painting 1 | div1D | div2F | DP | Rustlang

    原题链接 大意 n*n正方形 有黑有白 每次可以选择一个 矩形把它全变成白色,代价是max(长,宽) 求吧 整个正方形 全变白 的最小代价 数据范围 n <= 50 题解 首先如果 我们刷了两个 ...

  8. 【刷题笔记】LeetCode 48. Rotate Image

    题意 原地顺时针翻转一个 n*n 的矩阵 图解 下面例子中用 5*5 矩阵做示例,如下图,我们要把该矩阵顺时针翻转90度,并且不能使用另外的矩阵空间来暂存数据,而是原地改变矩阵中数值. 我的想法是这样 ...

  9. VB - 修改注册表

    Vbs中修改注册表的语句主要有: 1.读注册表的关键词和值: 可以通过把关键词的完整路径传递给wshshell对象的regread方法.例如: set ws=wscript.createobject( ...

  10. Jmeter接口测试加解密及Bean Shell使用案例

    Jmeter接口测试加解密及Bean Shell使用案例 https://blog.csdn.net/russ44/article/details/56009084 本文以base64加解密为例: 一 ...