📄 zhujiemian.java
字号:
import java.applet.Applet;
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.Label;
import java.awt.Panel;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
/*
* Created on 2005-4-16
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
/**
* @author 汪永威
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class zhujiemian extends Applet implements ActionListener
{
private Button btn1=new Button("广度优先");
Button btn2=new Button("深度优先");
Button btn3=new Button("有界深度");
Button btn4=new Button("最优搜索");
Button btn5=new Button("局部最优");
Button stand=new Button("标准");
Button random=new Button("随机");
Button next=new Button("下一步");
Button front=new Button("上一步");
Button player=new Button("播放");
Button redo=new Button("再来");
static int s[]={2,8,3,1,0,4,7,6,5};
static int end[]={1,2,3,8,0,4,7,6,5};
int start[]=new int[9];
Label labelLeft=new Label(" ");
Label labelRight=new Label(" ");
jiugongtu A=new jiugongtu();
int sort=0;
TextField[] left=new TextField[9];
TextField[] right=new TextField[9];
public void init()
{
paint();
}
public void paint()
{
setBackground(new Color(200,200,255));
BorderLayout Border=new BorderLayout();
this.setLayout(new BorderLayout());
Panel panNorth=new Panel();
Panel panSouth=new Panel();
Panel panCenter=new Panel();
Panel panCenterLeft=new Panel();
Panel panCenterMiddle=new Panel();
Panel panCenterRight=new Panel();
add("North",panNorth);
add("South",panSouth);
add("Center",panCenter);
btn1.setBackground(Color.black);
btn1.setForeground(Color.green);
btn2.setBackground(Color.black);
btn2.setForeground(Color.green);
btn3.setBackground(Color.black);
btn3.setForeground(Color.green);
btn4.setBackground(Color.black);
btn4.setForeground(Color.green);
btn5.setBackground(Color.black);
btn5.setForeground(Color.green);
panCenter.add(panCenterLeft);
panCenter.add(panCenterMiddle);
panCenter.add(panCenterRight);
panNorth.add(btn1);
panNorth.add(btn2);
panNorth.add(btn3);
panNorth.add(btn4);
panNorth.add(btn5);
GridLayout gridLeft=new GridLayout(3,3);
panCenterLeft.setLayout(gridLeft);
for(int i=0;i<9;i++)
{ left[i]=new TextField(" ");
if(start[i]!=0)
left[i].setText(" ");
panCenterLeft.add(left[i]);
}
GridLayout gridMiddle=new GridLayout(3,2);
panCenterMiddle.setLayout(gridMiddle);
panCenterMiddle.add(stand);
panCenterMiddle.add(random);
panCenterMiddle.add(next);
panCenterMiddle.add(front);
panCenterMiddle.add(player);
panCenterMiddle.add(redo);
GridLayout gridRight=new GridLayout(3,3);
panCenterRight.setLayout(gridRight);
for(int i=0;i<9;i++)
{ right[i]=new TextField(" ");
if(end[i]!=0)
right[i].setText(String.valueOf(end[i]));
else
right[i].setText(" ");
panCenterRight.add(right[i]);
}
panSouth.add(labelLeft);
panSouth.add(labelRight);
btn1.addActionListener(this);
btn2.addActionListener(this);
btn3.addActionListener(this);
btn4.addActionListener(this);
btn5.addActionListener(this);
stand.addActionListener(this);
random.addActionListener(this);
next.addActionListener(this);
front.addActionListener(this);
player.addActionListener(this);
redo.addActionListener(this);
setSize(420,200);
show();
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==stand)
{
for(int i=0;i<9;i++)
{
start[i]=s[i];
if(start[i]!=0)
left[i].setText(String.valueOf(s[i]));
else
left[i].setText(" ");
}
A.setstart(s);
repaint();
}
else if(e.getSource()==random)
{ // Random ran=new Random();
//ran.setSeed(100000);
for(int p=0;p<9;p++)
{ boolean fla=false;
int mn=0;
while(!fla)
{
int q=0;
mn=((int)(Math.random()*1000))%9;
for(q=0;q<p;q++)
{
if(start[q]==mn)
break;
continue;
}
if(q>=p) fla=true;
}
start[p]=mn;
if(start[p]!=0)
left[p].setText(String.valueOf(start[p]));
else
left[p].setText(" ");
}
A.setstart(start);
repaint();
}
else if(e.getSource()==next)
{
if(A.closed.isEmpty())
{
labelLeft.setText("尚未搜索");
}
else if(A.closed.stepnow<A.closed.stepend)
{
for(int i=0;i<9;i++)
{
start[i]=(A.closed.ElementAt(A.closed.stepnow)).fangge[i];
if(start[i]!=0)
left[i].setText(String.valueOf(start[i]));
else
left[i].setText(" ");
}
(A.closed.stepnow)++;
labelLeft.setText("这是第"+(A.closed.stepnow-1)+"步搜索");
labelRight.setText("共有"+(A.closed.stepend-1)+"步搜索");
}
else
{
}
repaint();
}
else if(e.getSource()==front)
{ //A.closed.stepnow=A.closed.stepend;
if(A.closed.isEmpty())
{
labelLeft.setText("尚未搜索");
}
else if(A.closed.stepnow>0)
{
for(int i=0;i<9;i++)
{
start[i]=(A.closed.ElementAt(A.closed.stepnow)).fangge[i];
if(start[i]!=0)
left[i].setText(String.valueOf(start[i]));
else
left[i].setText(" ");
}
(A.closed.stepnow)--;
labelLeft.setText("这是第"+A.closed.stepnow+"步搜索");
labelRight.setText("共有"+(A.closed.stepend-1)+"步搜索");
}
else
{
}
repaint();
}
else if(e.getSource()==redo)
{
// for(int i=0;i<9;i++)
// start[i]=s[i];
A.chushi();
for(int i=0;i<9;i++)
{
start[i]=0;
left[i].setText(" ");
}
labelLeft.setText(" ");
labelRight.setText(" ");
repaint();
}
else if(e.getSource()==player)
{
if(A.closed.isEmpty())
{
labelLeft.setText("尚未搜索");
}
else
{ int i=0;
while(i<A.closed.stepend)
{
A.closed.stepnow=i;
for(long q=0;q<100000000;q++)
{
int s=0;
}
for(int j=0;j<9;j++)
{
start[j]=(A.closed.ElementAt(i)).fangge[j];
if(start[j]!=0)
left[j].setText(String.valueOf(start[j]));
else
left[j].setText(" ");
}
labelLeft.setText("这是第"+i+"步搜索");
labelRight.setText("共有"+(A.closed.stepend-1)+"步搜索");
i++;
repaint();
}
}
}
else if(e.getSource()==btn1||e.getSource()==btn2||e.getSource()==btn3||e.getSource()==btn4||e.getSource()==btn5)
{
if(e.getSource()==btn1)
sort=0;
else if(e.getSource()==btn2)
sort=1;
else if(e.getSource()==btn3)
sort=2;
else if(e.getSource()==btn4)
sort=3;
else if(e.getSource()==btn5)
sort=4;
A.setstart(start);
A.setend(end);
A.operate(sort);
if(A.succeed)
{
labelLeft.setText("搜索成功");
labelRight.setText("共有"+(A.closed.stepend-1)+"步搜索");
}
else if(!A.succeed)
{
labelRight.setText("搜索失败");
labelLeft.setText("共有"+A.closed.stepend+"步搜索");
}
for(int i=0;i<9;i++)
{
A.start.fangge[i]=(A.closed.ElementAt(A.closed.stepend-1)).fangge[i];
start[i]=(A.closed.ElementAt(A.closed.stepend-1)).fangge[i];
if(start[i]!=0)
left[i].setText(String.valueOf(start[i]));
else
left[i].setText(" ");
}
repaint();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -