⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 analyseframe.java

📁 九宫问题(八数码)的一个小软件
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
        curp=status;
        jl1.setText(String.valueOf(status[0]));
        jl2.setText(String.valueOf(status[1]));
        jl3.setText(String.valueOf(status[2]));
        jl4.setText(String.valueOf(status[3]));
        jl5.setText(String.valueOf(status[4]));
        jl6.setText(String.valueOf(status[5]));
        jl7.setText(String.valueOf(status[6]));
        jl8.setText(String.valueOf(status[7]));
        jl9.setText(String.valueOf(status[8]));
    }
    
    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton2ActionPerformed
        for(EightAnalyse i:ea){
            i.clear();
        }
        stStatus.setText("{}");
        edStatus.setText("{}");
        a1tn.setText("0");
        a1tu.setText("0");
        a1mu.setText("0");
        a2tn.setText("0");
        a2tu.setText("0");
        a2mu.setText("0");
        a3tn.setText("0");
        a3tu.setText("0");
        a3mu.setText("0");
    }//GEN-LAST:event_jButton2ActionPerformed
    
    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
        EightAnalyse i=ea.get(0);
        i.search();
        EightBFS t=(EightBFS)i;
        String ss="{ ";
        int[] s=t.getStart();
        for(int j=0;j<9;j++){
            ss+=s[j]+" ";
        }
        stStatus.setText(ss+" }");
        setPane(s);
        ss="{ ";
        s=t.end;
        for(int j=0;j<9;j++){
            ss+=s[j]+" ";
        }
        edStatus.setText(ss+" }");
        
        a1tn.setText(String.valueOf(i.getTraveledNodes()));
        a1tu.setText(String.valueOf(i.getTimeUsed()));
        a1mu.setText(String.valueOf(i.getMemoryUsed()/1024));
        i=ea.get(1);
        i.search();
        a2tn.setText(String.valueOf(i.getTraveledNodes()));
        a2tu.setText(String.valueOf(i.getTimeUsed()));
        a2mu.setText(String.valueOf(i.getMemoryUsed()/1024));
        i=ea.get(2);
        i.search();
        a3tn.setText(String.valueOf(i.getTraveledNodes()));
        a3tu.setText(String.valueOf(i.getTimeUsed()));
        a3mu.setText(String.valueOf(i.getMemoryUsed()/1024));
    }//GEN-LAST:event_jButton1ActionPerformed
    
    public void generateTree(final Hashtable<Status,Operation> tree,Status st,final Status ed,final Status meet,int len,final int idx){
        if(treeImage[idx]==null){
            treeImage[idx]=new BufferedImage(treePane.getWidth(),treePane.getHeight(),BufferedImage.TYPE_INT_RGB);
            final int h=(int)(treePane.getSize().getHeight()-20)/len;
            int x=(int)(treePane.getSize().getWidth())/2;
            Graphics g=treeImage[idx].getGraphics();
            g.setColor(Color.white);
            g.fillRect(0,0,treePane.getWidth(),treePane.getHeight());
            
            class Node{
                int lx,ly,yr;
                Status t;
                
                Node(int x,int y,int r,Status v){
                    lx=x;ly=y;t=v;yr=r;
                }
                
                void expand(Stack<Node> nodes,Graphics g,Node light,boolean oren){
                    int[] status=t.value;
                    int lev=t.level,num=1;
                    Status[] temp=new Status[4];
                    if(status[9]>3){
                        temp[0]=new Status(AbstractEightAnalyse.move(status,'u'),lev+1);
                        if(!(tree.containsKey(temp[0]) && tree.get(temp[0]).op=='u')){
                            temp[0]=null;
                        }else{
                            tree.remove(temp[0]);
                            num++;
                        }
                    }
                    if(status[9]<7){
                        temp[1]=new Status(AbstractEightAnalyse.move(status,'d'),lev+1);
                        if(!(tree.containsKey(temp[1]) && tree.get(temp[1]).op=='d' )){
                            temp[1]=null;
                        }else{
                            tree.remove(temp[1]);
                            num++;
                        }
                    }
                    if(status[9]%3!=0){
                        temp[2]=new Status(AbstractEightAnalyse.move(status,'r'),lev+1);
                        if(!(tree.containsKey(temp[2]) && tree.get(temp[2]).op=='r')){
                            temp[2]=null;
                        }else{
                            tree.remove(temp[2]);
                            num++;
                        }
                    }
                    if(status[9]%3!=1){
                        temp[3]=new Status(AbstractEightAnalyse.move(status,'l'),lev+1);
                        if(!(tree.containsKey(temp[3]) && tree.get(temp[3]).op=='l')){
                            temp[3]=null;
                        }else{
                            tree.remove(temp[3]);
                            num++;
                        }
                    }
                    int div=(2*yr)/num;
                    int pt=lx-yr+div;
                    int dy;
                    for(int i=0;i<4;i++){
                        if(temp[i]!=null){
                            dy=oren?ly+h:ly-h;
                            if((temp[i].equals(ed))||(idx==2 && temp[i].equals(meet))){
                                light.lx=pt;
                                light.ly=dy;
                            }
                            nodes.push(new Node(pt,dy,div,temp[i]));
                            g.drawLine(lx,ly,pt,dy);
                            g.fillOval(pt-2,dy,4,4);
                            pt+=div;
                        }
                    }
                }
            }
            g.setColor(Color.red);
            g.fillOval(x-5,5,10,10);
            g.setColor(Color.black);
            tree.remove(st);
            Stack<Node> treelist=new Stack<Node>();
            treelist.push(new Node(x,10,x,st));
            Node node,light=new Node(0,0,0,null);
            while(treelist.size()>0){
                node=treelist.pop();
                node.expand(treelist,g,light,true);
            }
            if(idx==2){
                g.setColor(Color.red);
                g.fillOval(x-5,treePane.getHeight()-20,10,10);
                g.setColor(Color.black);
                tree.remove(ed);
                treelist.push(new Node(x,treePane.getHeight()-20,x,ed));
                while(treelist.size()>0){
                    node=treelist.pop();
                    node.expand(treelist,g,light,false);
                }
            }
            g.setColor(Color.red);
            g.fillOval(light.lx-5,light.ly-5,10,10);
            g.setColor(Color.black);
        }
    }
    
    public void setAnalyse(int i,EightAnalyse ea){
        this.ea.add(i,ea);
    }
    
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JLabel a1mu;
    private javax.swing.JLabel a1tn;
    private javax.swing.JLabel a1tu;
    private javax.swing.JLabel a2mu;
    private javax.swing.JLabel a2tn;
    private javax.swing.JLabel a2tu;
    private javax.swing.JLabel a3mu;
    private javax.swing.JLabel a3tn;
    private javax.swing.JLabel a3tu;
    private javax.swing.JButton backward;
    private javax.swing.JLabel edStatus;
    private javax.swing.JButton forward;
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JComboBox jComboBox1;
    private javax.swing.JComboBox jComboBox2;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel10;
    private javax.swing.JLabel jLabel11;
    private javax.swing.JLabel jLabel12;
    private javax.swing.JLabel jLabel13;
    private javax.swing.JLabel jLabel14;
    private javax.swing.JLabel jLabel15;
    private javax.swing.JLabel jLabel16;
    private javax.swing.JLabel jLabel24;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JLabel jLabel6;
    private javax.swing.JLabel jLabel7;
    private javax.swing.JLabel jLabel8;
    private javax.swing.JLabel jLabel9;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JPanel jPanel3;
    private javax.swing.JSeparator jSeparator1;
    private javax.swing.JSeparator jSeparator2;
    private javax.swing.JSeparator jSeparator3;
    private javax.swing.JTabbedPane jTabbedPane1;
    private javax.swing.JLabel jl1;
    private javax.swing.JLabel jl2;
    private javax.swing.JLabel jl3;
    private javax.swing.JLabel jl4;
    private javax.swing.JLabel jl5;
    private javax.swing.JLabel jl6;
    private javax.swing.JLabel jl7;
    private javax.swing.JLabel jl8;
    private javax.swing.JLabel jl9;
    private javax.swing.JToggleButton run;
    private javax.swing.JSlider slider;
    private javax.swing.JLabel stStatus;
    private javax.swing.JButton stop;
    private javax.swing.JPanel treePane;
    // End of variables declaration//GEN-END:variables
    
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -