Java扫雷小游戏。

ღ小样没烦恼 ღ小样没烦恼 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

未翻开的牌:(统一显示 █ )
数组的值 代表
-1 雷
0 旁边没有雷
1 旁边有一个雷 

package sushu;

import java.util.Random;
import java.util.Scanner;


    public class saolei {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            int x,y;
            int a[][]=new int[10][20];
            produce(a);
            show(a);
            while(true){
                x=scanner.nextInt();y=scanner.nextInt();
                if(x<=0||y<=0||x>10||y>20) {System.out.println("越界!!");continue;} //防止越界
                if(a[x-1][y-1]>=10) {System.out.println("已开!!!");continue;}       //防止打开重复
                if(bomb(a,x,y)) break;
                draw(a,x,y);
                show(a);
                if(All(a)){ System.out.println("你避过了所有地雷!!!");break; }
            }
        }
        public static void show(int a[][]) {
            int lie = 0,x =0,y=0;
            System.out.print("  ┃1 ");
            for (short i = 2; i <= 20; i++){
                if(i<9)System.out.print("┃"+i+" ");
                else System.out.print("┃"+i);
            }
            System.out.println();
            System.out.print("  ");
            for (short i = 0; i <= 20; i++) {    //输出第一行

                if (i == 0) System.out.print("┏─");
                else if (i == 20) System.out.println("┓");
                else System.out.print("┳─");
            }
            for (short i = 1; i < 2 * 10; i++) {
                if (i % 2 == 0) {
                    System.out.print("  ");
                    for (short j = 0; j <= 20; j++) {
                        if (j == 0) System.out.print("┣─");
                        else if (j == 20) System.out.println("┫");
                        else System.out.print("╋─");
                    }
                }
                if (i % 2 == 1) {
                    if(lie+1 >= 10) System.out.print(lie+1);else System.out.print(" " + (lie+1));lie++;
                    for (short j = 0; j <= 2*20; j++) {
                        if (j % 2 == 0) System.out.print("┃");
                        else {
                            if(a[x][y] <= 8) System.out.print("█");
                            if(a[x][y] == 9) System.out.print("?");
                            if(a[x][y] == 10) System.out.print("?");
                            if(a[x][y] == 11) System.out.print("①");
                            if(a[x][y] == 12) System.out.print("②");
                            if(a[x][y] == 13) System.out.print("③");
                            if(a[x][y] == 14) System.out.print("④");
                            if(a[x][y] == 15) System.out.print("⑤");
                            if(a[x][y] == 16) System.out.print("⑥");
                            if(a[x][y] == 17) System.out.print("⑦");
                            if(a[x][y] == 18) System.out.print("⑧");
                            y++;
                            if(y>=20){
                                x++;y =0;
                            }
                        }
                    }
                    System.out.println();
                }
            }
            System.out.print("  ");
            for (short k = 0; k <= 20; k++) {   //输出最后一行
                if (k == 0) System.out.print("┗─");
                else if (k == 20) System.out.println("┛");
                else System.out.print("┻─");
            }
        }
        public static void produce(int a[][]){
            int random[] = new int[25];        //雷
            Random random1 = new Random();
            for(short i =0;i<25;){             //雷
                short j = 0;
                int t = random1.nextInt()%200+1;
                if(t<0)t=-t;
                for(;j<25;j++){                //雷
                    if(random[j]==t)break;
                }
                if(j==25){random[i]=t;i++;}    //雷
            }
            java.util.Arrays.sort(random);
            int x = 0;
            System.out.println();
            for(int i = 0; i<10;i++){                  //地雷配置成功
                for(int j = 0 ;j<20 ;j++){
                    if(x == 25)break;         //雷
                    if((i*20)+j+1 == random[x])
                    {a[i][j]=-1;x++;}
                }
            }
            //*************设置地雷周边参数********************
            for(short i = 0;i<10;i++){
                for(short j = 0;j<20;j++){
                    if(a[i][j]==0){
                        int count=0;
                        if(i!=0&&j!=0&&a[i-1][j-1]==-1       ) count++;        //左上
                        if(i!=0&&a[i-1][j]==-1               ) count++;        //上
                        if(i!=0&&j<=18&&a[i-1][j+1]==-1      ) count++;        //右上
                        if(j!=0&&a[i][j-1]==-1               ) count++;        //左
                        if(j<=18&&a[i][j+1]==-1              ) count++;        //右
                        if(i<=8&&j!=0&&a[i+1][j-1]==-1       ) count++;        //左下
                        if(i<=8&&a[i+1][j]==-1               ) count++;        //下
                        if(i<=8&&j<=18&&a[i+1][j+1]==-1      ) count++;        //右下
                        a[i][j]=count;
                    }
                }
            }
        }
        //*******************************翻牌****************************8
        public static void draw(int a[][],int x,int y){
            a[x-1][y-1]+=10;
            if(a[x-1][y-1]==10) {
                if (x - 1 > 0 && y - 1 > 0 && a[x - 2][y - 2] < 10 && a[x - 2][y - 2] != -1) draw(a, x - 1, y - 1);  //左上
                if (x - 1 > 0 && a[x - 2][y - 1] < 10 && a[x - 2][y - 1] != -1) draw(a, x - 1, y);              //上
                if (x - 1 > 0 && y - 1 < 19 && a[x - 2][y] < 10 && a[x - 2][y] != -1) draw(a, x - 1, y + 1);  //右上

                if (y - 1 > 0 && a[x - 1][y - 2] < 10 && a[x - 1][y - 2] != -1) draw(a, x, y - 1);          //zuo
                if (y - 1 <= 18 && a[x - 1][y] < 10 && a[x - 1][y] != -1) draw(a, x, y + 1);  //you

                if (x - 1 < 9 && y - 1 > 0 && a[x][y - 2] < 10 && a[x][y - 2] != -1) draw(a, x + 1, y - 1);   //zuo xia
                if (x - 1 < 9 && a[x][y - 1] < 10 && a[x][y - 1] != -1) draw(a, x + 1, y);//xia
                if (x - 1 < 9 && y - 1 < 19 && a[x][y] < 10 && a[x][y] != -1) draw(a, x + 1, y + 1);//you xia
            }
        }
        //*******************************爆炸******************************
        public static boolean bomb(int a[][],int x ,int y){

            if(a[x-1][y-1]==-1){
                for(int i =0;i<10;i++){
                    for(int j = 0 ;j<20;j++){
                        if(a[i][j]==-1)a[i][j]+=10;
                    }
                }
                show(a);
                System.out.println("踩雷了!!!");
                return true;}else return false;
        }
        //*******************************全翻了********************
        public static boolean All(int a[][]){
            int i,j=0,t=0;
            for(i =0;i<10;i++){
                for(j = 0 ;j<20;j++){
                    if(a[i][j]<10) t++;
                    if(t>25)break;         //雷
                }
            }
            if(t==25)return true;else return false;   //雷
        }
    }


 

 

...全文

相关推荐

java小游戏 扫雷 java小游戏 扫雷

java小游戏 扫雷java小游戏 扫雷java小游戏 扫雷java小游戏 扫雷java小游戏 扫雷java小游戏 扫雷java小游戏 扫雷java小游戏 扫雷java小游戏 扫雷java小游戏 扫雷

金枝玉叶9

Java实现扫雷小游戏【优化版】

游戏的设计类似windows扫雷,用户在图形化用户界面内利用鼠标监听事件标记雷区,左上角表示剩余雷的数量,右上角动态显示使用的时间。用户可选择中间组件按钮重新游戏。在使用Java编写扫雷小游戏时遇到了很多问题,在解决问题时,确实对java的面向对象编程有了更加深入的理解。虽然GUI现在并没有很大的市场,甚至好多初学者已经放弃了学习GUI,但是利用GUI编程的过程对于培养编程兴趣,深入理解Java编程有很大的作用。...

橙 子_

Java Swing实现扫雷小游戏

本文主要介绍了使用Java Swing实现扫雷小游戏的方法,涵盖了游戏的设计、实现和核心代码。游戏设计在设计扫雷小游戏时,需要考虑游戏的规则、游戏界面和游戏逻辑。

weixin_38521169

java实现简单扫雷小游戏

Java 实现简单扫雷小游戏Java 实现简单扫雷小游戏是一种交互式游戏,游戏的主要目的在于扫雷区域中找到所有的雷。

weixin_38627769

java安卓扫雷小游戏

【Java安卓扫雷小游戏】是一款基于Java语言开发的Android平台上的经典扫雷游戏,适合Java初学者进行学习和实践。

tripodzhang
评论
收藏 已收藏
分享
返回顶部