黑马程序员技术交流社区

标题: 自己写的扫雷游戏,分享下源码 [打印本页]

作者: 梦魇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