zoukankan      html  css  js  c++  java
  • Java 16 方格游戏

    import javax.swing.JFrame;
    import javax.swing.JButton;
    import javax.swing.JOptionPane;

    import java.awt.GridLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.util.*;
    public class MyJava {

        /**
         * @param args
         * make by chensirui
         */
        private JFrame f;
        private JButton[] btn=new JButton[16];
        MyJava()
        {
            madeFrame();
        }
        public void madeFrame()
        {
            f=new JFrame("16方格");
            f.setLayout(new GridLayout(4,4));
            f.setSize(500,500);
            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            
            for(int i=0;i<=15;i++)
            {
                String temp="";
                if(i!=15)
                {
                    temp=(i+1)+"";
                    btn[i]=new JButton(temp);
                }
                else btn[i]=new JButton(temp);
                
                f.add(btn[i]);
                myevent(i);
            }
            
            fRandom();
            f.setVisible(true);
        }
        public boolean JudgeUnOrder()//判断逆序
        {
            int j=0;
            int[] a=new int[16];
            for(int i=0;i<=15;i++)
            {
                String temp1=btn[i].getText();
                if(temp1!="")
                {
                    int x=Integer.parseInt(temp1);
                    a[j++]=x;
                }
                else a[j++]=0;
            }
            j=0;
            for(int i=1;i<=15;i++)
            {
                if(a[i]-a[i-1]==-1)j++;
                    
            }
            if(j==14)return true;
            else return false;
        }
        public boolean JudgeOrder()//判断顺序
        {
            int j=0;
            int[] a=new int[16];
            for(int i=0;i<=15;i++)
            {
                String temp1=btn[i].getText();
                if(temp1!="")
                {
                    int x=Integer.parseInt(temp1);
                    a[j++]=x;
                }
                else a[j++]=0;
            }
            j=0;
            for(int i=1;i<=15;i++)
            {
                if(a[i]-a[i-1]==1)
                {
                    j++;
                }
            }
            if(j==14)return true;
            else return false;
        }
        public void fRandom()//产生随机布局
        {
            Random rd = new Random();
            int[] a={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
            for (int i = 0; i < a.length; i++) {   
                int j=i+rd.nextInt(a.length - i);
                String temp=btn[j].getText();
                   btn[j].setText(btn[i].getText());
                   btn[i].setText(temp);
               }
        }
        public boolean Judge(int i)//方格的边角不能置换
        {
            if(i==3||i==7||i==11)return false;
            else return true;
        }
        public void myevent(final int i)//按钮事件
        {
            btn[i].addActionListener(new ActionListener()
            {
                 public void actionPerformed(ActionEvent e)
                 {
                     if(i+4<=15)
                     {
                         if(btn[i+4].getText()=="")
                         {    
                         String temp=btn[i+4].getText();
                         //System.out.println(temp);
                         btn[i+4].setText(btn[i].getText());
                         btn[i].setText(temp);
                         if(JudgeUnOrder()||JudgeOrder())
                         {
                             JOptionPane.showMessageDialog(null, "成功");
                             fRandom();
                         }
                         return;
                         }
                     }
                     if(i-4>=0)
                     {
                         if(btn[i-4].getText()=="")
                         {    
                         String temp=btn[i-4].getText();
                         //System.out.println(temp);
                         btn[i-4].setText(btn[i].getText());
                         btn[i].setText(temp);
                         if(JudgeUnOrder()||JudgeOrder())
                         {
                             JOptionPane.showMessageDialog(null, "成功");
                             fRandom();
                         }
                         return;
                         }
                     }
                     if(i+1<=15)
                     {
                         if(btn[i+1].getText()=="")
                         {    
                         String temp=btn[i+1].getText();
                         //System.out.println(temp);
                         btn[i+1].setText(btn[i].getText());
                         btn[i].setText(temp);
                         if(JudgeUnOrder()||JudgeOrder())
                         {
                             JOptionPane.showMessageDialog(null, "成功");
                             fRandom();
                         }
                         return;
                         }
                     }
                      if(i-1>=0)
                     {
                         if(btn[i-1].getText()==""&&Judge(i-1))
                         {
                         String temp=btn[i-1].getText();
                        // System.out.println(temp);
                         btn[i-1].setText(btn[i].getText());
                         btn[i].setText(temp);
                         if(JudgeUnOrder()||JudgeOrder())
                         {
                             JOptionPane.showMessageDialog(null, "成功");
                             fRandom();
                         }
                         return;
                         }
                     }
                 }
             });
        }
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            MyJava java=new MyJava();
        }
    }

    注:如有发现BUG欢迎批评指正。

  • 相关阅读:
    前后端分离开发中动态菜单的两种实现方案
    Spring Security 前后端分离登录,非法请求直接返回 JSON
    Spring Boot2 系列教程(九)Spring Boot 整合 Thymeleaf
    原创的离线版 Redis 教程,给力!
    Spring Boot2 系列教程(八)Spring Boot 中配置 Https
    Anaconda创建环境、删除环境、激活环境、退出环境
    开源一个功能完整的SpringBoot项目框架
    Spring Boot和Spring Cloud学习资源推荐
    Ubuntu 18.04下安装Steam顶级在线游戏平台
    终极手撕之架构大全:分布式+开源框架+微服务+性能优化,够不够?
  • 原文地址:https://www.cnblogs.com/eeason/p/3667506.html
Copyright © 2011-2022 走看看