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

📄 zhujiemian.java

📁 本程序代码是人工智能中九宫搜索的解决 采用Java语言
💻 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 + -