华容道游戏源代码,完全原创、可运行,并附送走法演示。
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.border.Border;
import javax.swing.border.EtchedBorder;
public class Hrd extends JFrame
{
private final int MaxStep=1000;
private int[][] a; //全局数组,方块映射到些数组。
private int[][] recorder; //记录走法的数组。只有当你走成功后才记录。
private int totalStep;
private boolean stop=false; // to stop the thread
private int speed=1000;
private JPanel jw = new JPanel(new GridLayout(5,1));//用于摆放LOGO标志,步数等
private Border border = new EtchedBorder(EtchedBorder.RAISED,Color.white,new Color(148,145,140));
AButton[] bt = new AButton[10];
JLabel jstep = new JLabel(" 第 0 步");
MenuBar mym=new MenuBar();
Menu play=new Menu("游戏"),
demo=new Menu("演示"),
help=new Menu("帮助");
MenuItem play_new_game=new MenuItem("重新开始"),
play_choose=new MenuItem("选择游戏"),
play_save=new MenuItem("保存游戏"),
play_import=new MenuItem("导入游戏"),
play_exit=new MenuItem("退出");
MenuItem demo_zfgo=new MenuItem("走法演示"),
demo_stop=new MenuItem("停止");
Menu demo_shudu=new Menu("速度调节");
CheckboxMenuItem[] mi_speed = new CheckboxMenuItem[4];
String s[] = {
"1","2","3","4"};
MenuItem help_topic=new MenuItem("相关主题"),
help_about=new MenuItem("关于...");
public Hrd(){
this.setSize(500,550);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
creat_menu();
Container contentPane = getContentPane();
contentPane.setBackground(Color.white );
contentPane.setLayout(null);
setTitle("标准华容道2004 ");
setResizable(false);
Toolkit kit = Toolkit.getDefaultToolkit();
Dimension screenSize = kit.getScreenSize();
setLocation((screenSize.width-getSize().width)/2,(screenSize.height-getSize() .height )/2);
bt[0] = new AButton(1,"马超",1,2,0,0);
bt[0].setBackground(Color.BLUE);
contentPane.add(bt[0]);
bt[1] = new AButton(2,"曹操",2,2,1,0);
bt[1].setBackground(Color.RED);
contentPane.add(bt[1]);
bt[2] = new AButton(3,"赵云",1,2,3,0);
bt[2].setBackground(Color.BLUE);
contentPane.add(bt[2]);
bt[3] = new AButton(4,"张飞",1,2,0,2);
bt[3].setBackground(Color.BLUE);
contentPane.add(bt[3]);
bt[4] = new AButton(5,"黄忠",1,2,3,2);
bt[4].setBackground(Color.BLUE);
contentPane.add(bt[4]);
//ID号,名称,宽,高,位置-X,Y
bt[5] = new AButton(6,"关羽",2,1,1,2);
bt[5].setBackground(Color.BLUE);
contentPane.add(bt[5]);
bt[6] = new AButton(7,"卒",1,1,0,4);
bt[6].setBackground(Color.YELLOW);
contentPane.add(bt[6]);
bt[7] = new AButton(8,"卒",1,1,1,3);
bt[7].setBackground(Color.YELLOW);
contentPane.add(bt[7]);
bt[8] = new AButton(9,"卒",1,1,2,3);
bt[8].setBackground(Color.YELLOW);
contentPane.add(bt[8]);
bt[9] = new AButton(10,"卒",1,1,3,4);
bt[9].setBackground(Color.YELLOW);
contentPane.add(bt[9]);
showMyLogo();
contentPane.add(jw);
setArr(5,4); //初始化棋盘
}
private void creat_menu(){
mym.add(play);
mym.add(demo);
mym.add(help);
play.add(play_new_game);
play.add(play_choose);
play.addSeparator() ;
play.add(play_save);
play.add