java版扫雷
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版扫雷的更多相关文章
- wpf版扫雷游戏
近来觉得wpf做出来的界面很拉风,自己也很喜欢搞些小游戏,感觉这做出来的会很炫,很装逼,(满足自己的一点小小的虚荣心)于是就去自学,发现感觉很不错,可是属性N多,太多了,而且质料也少,很多不会用,只会 ...
- js版扫雷(可直接运行试玩)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- ArcGIS Server 10 Java 版的Rest服务手动配置方法
Java版的Manager中发布的服务默认只发布了该服务的SOAP接口,而REST接口需要用户在信息服务器,如Tomcat. Apache.WebLogic等中手工配置.由于在Java版的Server ...
- PetaPojo —— JAVA版的PetaPoco
背景 由于工作的一些原因,需要从C#转成JAVA.之前PetaPoco用得真是非常舒服,在学习JAVA的过程中熟悉了一下JAVA的数据组件: MyBatis 非常流行,代码生成也很成熟,性能也很好.但 ...
- C+命令行+方向键=简易版扫雷
前言: 想起来做这个是因为那时候某天知道了原来黑框框里面的光标是可以控制的,而且又经常听人说起这个,就锻炼一下好了. 之前就完成了那1.0的版本,现在想放上来分享却发现有蛮多问题的,而且最重要的是没什 ...
- 【转载】java版打字练习软件
网上找到一个java版的打字的游戏 import java.applet.Applet; import java.applet.AudioClip; import java.awt.Dimension ...
- 微博地址url(id)与mid的相互转换 Java版
原理: 新浪微博的URL都是如:http://weibo.com/2480531040/z8ElgBLeQ这样三部分. 第一部分(绿色部分)为新浪微博的域名,第二部分(红色部分)为博主Uid,第三部分 ...
- JCEF3——谷歌浏览器内核Java版实现(一):使用jawt获取窗体句柄
前言 最近一段时间研究谷歌浏览器内核.谷歌浏览器内核一直开源,并维护更新,它的开源项目中内核更新速度和Chrome浏览器版本更新进度一样!而且它不同于WebKit(值得一题的是谷歌浏览器已不使用Web ...
- Selenium关键字驱动测试框架Demo(Java版)
Selenium关键字驱动测试框架Demo(Java版)http://www.docin.com/p-803493675.html
随机推荐
- centos7下安装storm步骤
前言 真是后知后觉,最近忙也要学习,把以前丢的都要拾起来.原理懂不懂也把环境搭起来学习. 环境 centos7 jdk 1.8 zookeeper 3.4.13 storm 1.2.2 安装 ...
- 【MySQL】selectKey获取insert后的自动主键
<insert id="insert" parameterType="cc.mrbird.febs.energy.domain.ChatGroup"> ...
- S1 Python 基础
定义规范 声明变量 name = "Alex Li" 变量定义规则 变量名只能是 字母.数字或下划线的任意组合 变量名的第一个字符不能是数字 以下关键字不能声明为变量名['and' ...
- delphi 异形窗体可半透明
unit xDrawForm; interface uses Windows, Messages, SysUtils, Classes, Controls, Forms, Menus, Graphic ...
- Luogu P1478 陶陶摘苹果
Luogu P1478 陶陶摘苹果(升级版) 题目描述 又是一年秋季时,陶陶家的苹果树结了n个果子.陶陶又跑去摘苹果,这次她有一个a公分的椅子.当他手够不着时,他会站到椅子上再试试. 这次与NOIp2 ...
- [CSP-S模拟测试]:Read(数学)
题目描述 热爱看书的你有$N$本书,第$i$本书的种类为$A[i]$.你希望每天能够看一本书,但是不希望连续两天看种类相同的书.为了达成这个条件,你需要选择一些书不看,作为一个好学生,你希望不看的书尽 ...
- python中递归函数
python中的 递归函数,是指的是函数在函数内部调用自己的函数 需要满足两个条件,一,需要有一个明确的终止条件 二,需要函数自己在内部调用自己
- Understanding identities in IIS
Understanding identities in IIS https://support.microsoft.com/en-my/help/4466942/understanding-ident ...
- centos查看磁盘空间大小
查看磁盘空间大小 df -h 查看当前文件夹所有文件大小 du -sh 查看指定文件夹大小 du -h /data 查看指定文件夹下所有文件的大小 du -h /data/ 查看指定文件大小 du - ...
- 动态创建类/ swizzle class
动态创建类 Class subclass = objc_allocateClassPair(baseClass, subclassName, );//生成,指定父类 //添加方法,变量...一些操作 ...