?? blockface.java
字號(hào):
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class BlockFace extends JFrame{
private JPanel firstPanel;
private JPanel secondPanel;
private JPanel thirdPanel;
private JComboBox c1;
private Container pane=this.getContentPane();
private JTextField []secondT;
private JTextField []thirdT;
private int space;
private String []xBlock;
private String []yBlock;
private Block block;
public BlockFace(int blockNUM,Point p){
super("移動(dòng)方塊");
pane.setLayout(new BorderLayout());
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setResizable(false);
this.setLocation(p);
space=(int)(Math.random()*(blockNUM-2)+1);
initFirstPanel();
initSecondPanel(blockNUM);
initThirdPanel(blockNUM);
initXYBlock();
pane.add(firstPanel,BorderLayout.NORTH);
pane.add(secondPanel,BorderLayout.CENTER);
pane.add(thirdPanel,BorderLayout.SOUTH);
pack();
this.setVisible(true);
}
private void miss(){this.dispose();}
private void initFirstPanel(){
firstPanel=new JPanel();
firstPanel.setLayout(new BorderLayout());
JLabel l1=new JLabel("第一步:初始化方塊個(gè)數(shù)");
l1.setForeground(Color.blue);
firstPanel.add(l1,BorderLayout.NORTH);
JPanel p1=new JPanel();
p1.setLayout(new FlowLayout());
JLabel l2=new JLabel("請(qǐng)選擇方塊個(gè)數(shù):");
l2.setForeground(Color.blue);
p1.add(l2);
String []items={"3X3","4X4","5X5","6X6","7X7","8X8","9X9"};
c1=new JComboBox(items);
p1.add(c1);
JButton b1=new JButton("確定");
b1.setForeground(Color.red);
b1.addActionListener(new ChooseBlockNUM());
p1.add(b1);
firstPanel.add(p1,BorderLayout.CENTER);
}
private void initSecondPanel(int blockNUM){
secondPanel=new JPanel();
secondPanel.setLayout(new BorderLayout());
JLabel l1=new JLabel("第二步:初始化開始時(shí)方塊");
l1.setForeground(Color.blue);
secondPanel.add(l1,BorderLayout.NORTH);
JPanel p1=new JPanel();
p1.setLayout(new GridLayout((int)Math.sqrt(blockNUM),(int)Math.sqrt(blockNUM),2,2));
secondT=new JTextField[blockNUM];
if(blockNUM==9){
for(int i=0,s=1;i<blockNUM;i++){
secondT[i]=new JTextField();
secondT[i].setHorizontalAlignment(SwingConstants.CENTER);
}
secondT[0].setText("2");p1.add(secondT[0]);
secondT[1].setText("8");p1.add(secondT[1]);
secondT[2].setText("3");p1.add(secondT[2]);
secondT[3].setText("1");p1.add(secondT[3]);
secondT[4].setText("");p1.add(secondT[4]);
secondT[5].setText("4");p1.add(secondT[5]);
secondT[6].setText("7");p1.add(secondT[6]);
secondT[7].setText("6");p1.add(secondT[7]);
secondT[8].setText("5");p1.add(secondT[8]);
}
else{
for(int i=0,s=1;i<blockNUM;i++){
secondT[i]=new JTextField();
secondT[i].setHorizontalAlignment(SwingConstants.CENTER);
if(i!=space)secondT[i].setText(""+(s++));
p1.add(secondT[i]);
}
}
secondPanel.add(p1,BorderLayout.CENTER);
JPanel p2=new JPanel();
p2.setLayout(new FlowLayout());
JButton b1=new JButton("確定");
b1.setForeground(Color.red);
b1.addActionListener(new checkFirst());
p2.add(b1);
secondPanel.add(p2,BorderLayout.SOUTH);
}
private void initThirdPanel(int blockNUM){
thirdPanel=new JPanel();
thirdPanel.setLayout(new BorderLayout());
JLabel l1=new JLabel("第三步:初始化終點(diǎn)方塊");
l1.setForeground(Color.blue);
thirdPanel.add(l1,BorderLayout.NORTH);
JPanel p1=new JPanel();
p1.setLayout(new GridLayout((int)Math.sqrt(blockNUM),(int)Math.sqrt(blockNUM),2,2));
thirdT=new JTextField[blockNUM];
if(blockNUM==9){
for(int i=0,s=1;i<blockNUM;i++){
thirdT[i]=new JTextField();
thirdT[i].setHorizontalAlignment(SwingConstants.CENTER);
}
thirdT[0].setText("1");p1.add(thirdT[0]);
thirdT[1].setText("2");p1.add(thirdT[1]);
thirdT[2].setText("3");p1.add(thirdT[2]);
thirdT[3].setText("8");p1.add(thirdT[3]);
thirdT[4].setText("");p1.add(thirdT[4]);
thirdT[5].setText("4");p1.add(thirdT[5]);
thirdT[6].setText("7");p1.add(thirdT[6]);
thirdT[7].setText("6");p1.add(thirdT[7]);
thirdT[8].setText("5");p1.add(thirdT[8]);
}
else{
for(int i=0,s=1;i<blockNUM;i++){
thirdT[i]=new JTextField();
thirdT[i].setHorizontalAlignment(SwingConstants.CENTER);
if(i!=space)thirdT[i].setText(""+(s++));
p1.add(thirdT[i]);
}
}
thirdPanel.add(p1,BorderLayout.CENTER);
JPanel p2=new JPanel();
p2.setLayout(new FlowLayout());
JButton b1=new JButton("確定");
b1.setForeground(Color.red);
b1.addActionListener(new checkObject());
p2.add(b1);
thirdPanel.add(p2,BorderLayout.SOUTH);
}
private class ChooseBlockNUM implements ActionListener{
public void actionPerformed(ActionEvent e){
int blockNUM=(c1.getSelectedIndex()+3)*(c1.getSelectedIndex()+3);
Point p=gLoacation();
miss();
new BlockFace(blockNUM,p);
}
}
private Point gLoacation(){
return this.getLocation();
}
private void initXYBlock(){
xBlock=new String[secondT.length];
for(int i=0;i<xBlock.length;i++)xBlock[i]=secondT[i].getText().toString();
yBlock=new String[thirdT.length];
for(int i=0;i<yBlock.length;i++)yBlock[i]=thirdT[i].getText().toString();
}
private class checkFirst implements ActionListener{
public void actionPerformed(ActionEvent e){
xBlock=new String[secondT.length];
for(int i=0;i<xBlock.length;i++)xBlock[i]=secondT[i].getText().toString();
}
}
private class checkObject implements ActionListener{
public void actionPerformed(ActionEvent e){
yBlock=new String[thirdT.length];
int dm=5;
boolean t=false;
for(int i=0;i<yBlock.length;i++)yBlock[i]=thirdT[i].getText().toString();
block=new Block(xBlock);
System.out.println("Now the system's thinking step:"+dm);
while(!(t=block.createBlockTree(yBlock,dm))){
block=new Block(xBlock);
if(dm<30){dm+=1;System.out.println(dm);}
else if(dm<70){dm+=10;System.out.println(dm);}
else {
System.out.println("Cann't find answer!");
JOptionPane.showMessageDialog(new JFrame(),"移動(dòng)失敗!!!");
break;}
}
if(t){
block.transRoute(yBlock);
block.reverseRoute();
miss();
Point p=gLoacation();
new MoveBlock(block,p);
}
}
}
}
class test{
public static void main(String args[]){
Point p=new Point(250,200);
new BlockFace(9,p);
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -