黑马程序员技术交流社区
标题:
自己写的扫雷游戏,分享下源码
[打印本页]
作者:
梦魇0023
时间:
2016-10-6 23:05
标题:
自己写的扫雷游戏,分享下源码
楼下来贴出, 有个功能没实现。 就是选中了空白区域 然后把周围空白区域全部显示出来。
还有不能标记地雷
作者:
梦魇0023
时间:
2016-10-6 23:06
import java.util.Scanner;
class Main {
public static void main (String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("\t欢迎进入扫雷游戏v1.0");
System.out.println("\t\t\t作者:木 木");
System.out.println();
//Map.start();
int step = 0;
while (Map.isGameOn) {
System.out.println("请输入要查看的行数和列数,还剩"+(61-step)+"安全");
int a = sc.nextInt();
if(a==100) {
Map.fun();
break;
}
int b = a%10;
a = a/10;
Map.upMap(a,b);
step++;
if (step>60) {
System.out.println("你赢了!你居然赢了!你一定是作弊了!");
break;
}
}
if (!Map.isGameOn) {
step--;
System.out.println("你踩到地雷了!");
}
System.out.println("获得分数:"+step);
}
}
-----------------------------------------------------------------------
class Map {
private static int[][] map =new int[10][10];
static boolean isGameOn = true;
static {
bitMap();
boom();
showMap();
}
private static void bitMap(){
map[0][0] = 0;
for (int i = 1;i<10 ;i++ ) {
map[0][i] = i;
map[i][0] = i;
}
}
private static void boom() {
int n = 0;
int p = 0;
int q = 0;
while (n<20) {
p = (int)(Math.random()*10);
q = (int)(Math.random()*10);
if (p!=0&&q!=0&&map[p][q]!= -2) {
map[p][q] = -2;
n++;
} else {
continue;
}
}
}
private static void showMap() {
for (int i = 0;i<10 ;i++ ) {
for (int j = 0;j<10 ;j++ ) {
if (i==0&&j==0) {
System.out.print(" ");
} else if(map[i][j]==0||map[i][j]==-2) {
System.out.print("囧 ");
} else if (map[i][j]==-1) {
System.out.print(" ");
} else if (map[i][j]==-3) {
System.out.println("X ");
} else {
System.out.print(map[i][j]+" ");
}
}
System.out.println();
System.out.println();
}
}
static void upMap(int a,int b) {
if (a>0&&a<10&&b>0&&b<10) {
if (map[a][b]==-2) {
map[a][b] = -3;
isGameOn = false;
return;
}
map[a][b] = check(a,b);
if (map[a][b]==0) {
map[a][b]=-1;
}
} else {
System.out.println("你只能在这控制选择");
}
showMap();
}
public static void fun(){
for (int i=0;i<10 ;i++ ) {
for (int j=0;j<10 ;j++ ) {
if (map[i][j]!=-2) {
upMap(i,j);
}
}
}
}
private static int check(int a,int b) {
int n = 0;
if (map[a-1][b]==-2) {
n++;
}
if (map[a][b-1]==-2) {
n++;
}
if (a+1<10&&map[a+1][b]==-2) {
n++;
}
if (b+1<10&&map[a][b+1]==-2) {
n++;
}
if (map[a-1][b-1]==-2) {
n++;
}
if (b+1<10&&map[a-1][b+1]==-2) {
n++;
}
if (a+1<10&&b+1<10&&map[a+1][b+1]==-2) {
n++;
}
if (a+1<10&&map[a+1][b-1]==-2) {
n++;
}
return n;
}
}
作者:
zhaokun
时间:
2016-10-6 23:10
66666666666666
作者:
飞舞的指尖
时间:
2016-10-6 23:23
毕业班?还是基础班?
作者:
我心过往
时间:
2016-10-6 23:23
可以的,大神啊!
作者:
煤男纸
时间:
2016-10-6 23:37
66666666
作者:
周军福
时间:
2016-10-6 23:43
不错呦!!
作者:
梦魇0023
时间:
2016-10-7 10:30
飞舞的指尖 发表于 2016-10-6 23:23
毕业班?还是基础班?
基础班啊,不过我大学学的软件基础班不吃力
作者:
万物皆数
时间:
2016-10-7 15:26
我就看看不说话
作者:
寒冰夜
时间:
2016-10-7 18:23
感觉很好玩啊 支持支持
作者:
稻香灬
时间:
2016-10-7 18:56
大神,大神,
作者:
Kevin_Ye
时间:
2016-10-7 19:21
楼主,厉害
作者:
梦想工程师
时间:
2016-10-7 19:40
有没有打包好的?
作者:
Zzh94520
时间:
2016-10-7 21:52
............................
作者:
HermitXU
时间:
2016-10-7 21:54
dddddddddddd
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2