用java语言实现八数码问题--广度优先搜索

本文展示了如何使用Java实现八数码问题的广度优先搜索算法。通过创建一个主函数,定义节点类和搜索类,以及设置用户界面来输入初始和目标状态,实现了从当前状态到目标状态的搜索路径。程序还包括了用户界面,允许用户查看搜索过程和结果。
摘要由CSDN通过智能技术生成

分五个部分 我对他们打包了 可以互相调用

主函数部分:

eightnum.java文件:

package com.ai;


import java.awt.*;
import java.util.ArrayList;
import java.util.Collections;

import java.applet.*;

import javax.swing.*;

 

public class EightNum {

 int[][] current;
 int[][] target;
 private JTextField textField_18;
 private JTextField textField_17;
 private JTextField textField_16;
 private JTextField textField_15;
 private JTextField textField_14;
 private JTextField textField_13;
 private JTextField textField_12;
 private JTextField textField_11;
 private JTextField textField_10;
 private JTextField textField_9;
 private JTextField textField_8;
 private JTextField textField_7;
 private JTextField textField_6;
 private JTextField textField_5;
 private JTextField textField_4;
 private JTextField textField_3;
 private JTextField textField_2;
 private JTextField textField;
 private JFrame frame;

 public static void main(String args[]) {
  EventQueue.invokeLater(new Runnable() {
   public void run() {
    try {
     EightNum window = new EightNum();
     window.frame.setVisible(true);
    } catch (Exception e) {
     e.printStackTrace();
    }
   }
  });
 }

 /**
  * Create the application
  */
 public EightNum() {
  
  current=new int[3][3];
  target=new int[3][3];
  createContents();
  

 }

 /**
  * Initialize the contents of the frame
  */
 private void createContents() {
  
  frame = new JFrame();
  frame.getContentPane().setLayout(new BorderLayout());
  frame.setTitle("A* 解决八数码的实现");
  frame.setBounds(100, 100, 597, 460);

  final JPanel panel = new JPanel();
  panel.setName("panel");
  frame.getContentPane().add(panel);

  JPanel panel_1;
  panel_1 = new JPanel();
  panel_1.setBorder(new TitledBorder(new LineBorder(Color.black, 1, false), "当前数组", TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, null, null));

  textField = new JTextField();
  textField.setText("2");

  textField_2 = new JTextField();
  textField_2.setText("8");

  textField_3 = new JTextField();
  textField_3.setText("3");

  textField_4 = new JTextField();
  textField_4.setText("1");

  textField_5 = new JTextField();
  textField_5.setText("0");

  textField_6 = new JTextField();
  textField_6.setText("4");

  textField_7 = new JTextField();
  textField_7.setText("7");

  textField_8 = new JTextField();
  textField_8.setText("6");

  textField_9 = new JTextField();
  textField_9.setText("5");

  JPanel panel_1_1;
  panel_1_1 = new JPanel();
  panel_1_1.setBorder(new TitledBorder(new LineBorder(Color.black, 1, false), "目标数组", TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, null, null));

  textField_10 = new JTextField();
  textField_10.setText("1");

  textField_11 = new JTextField();
  textField_11.setText("2");

  textField_12 = new JTextField();
  textField_12.setText("3");

  textField_13 = new JTextField();
  textField_13.setText("8");

  textField_14 = new JTextField();
  textField_14.setText("0");

  textField_15 = new JTextField();
  textField_15.setText("4");

  textField_16 = new JTextField();
  textField_16.setText("7");

  textField_17 = new JTextField();
  textField_17.setText("6");

  textField_18 = new JTextField();
  textField_18.setText("5");

  JButton button;
  button = new JButton();
  button.addActionListener(new ActionListener() {
   pu

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值