huangrongdao.java 共1818行
//Note: 本程序代码无版权限制,仅用于研究,但因为使用不当等原因 _
// 对你或社会造成伤害,作者概不负责。
// ╭═══════════════════╮
// ║ 〖胡一刀 〗 ║
// ║ ║
// ║ ----------------------------- ║
// ┤ CodeName:huangrongdao.java ├
// ║ FirstBuind:2005-6-4 ║
// ║ Copyright:Freeware ║
// ║ Email:hlq83@126.com ║
// ╰═══════════════════╯
//Last Modify:2005-6-7:添加背景音乐和棋子走步声
package huanrongdao;
import javax.swing.*;
import java.awt.event.WindowEvent;
import java.awt.event.WindowAdapter;
import java.awt.*;
import sun.audio.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseAdapter;
import java.io.*;
import java.awt.event.MouseMotionAdapter;
import javax.swing.border.TitledBorder;
import javax.sound.midi.*;
/**
*
Title: 华容道
Description: 期末作业
Copyright: Copyright (c) 2005
Company: bnu
public static void main(String[] args) {
huangrongdao huangrongdao = new huangrongdao();
huangrongdao.setSize(500,500);
huangrongdao.centerWindow(huangrongdao);
huangrongdao.show();
}
private void jbInit() throws Exception {
this.getContentPane().setLayout(null);
this.setResizable(false);
this.setTitle("华容道游戏");
this.addWindowListener(new huangrongdao_this_windowAdapter(this));
jPanel1.setBackground(Color.white);
jPanel1.setBorder(BorderFactory.createEtchedBorder());
jPanel1.setBounds(new Rectangle(100, 18, 280, 350));
jPanel1.addMouseListener(new huangrongdao_jPanel1_mouseAdapter(this));
jPanel1.setLayout(null);
jButton2.setBounds(new Rectangle(385, 79, 101, 43));
jButton2.setText("重新开始");
jButton2.addActionListener(new huangrongdao_jButton2_actionAdapter(this));
jButton1.setBounds(new Rectangle(385, 23, 98, 43));
jButton1.setText("开始游戏");
jButton1.addActionListener(new huangrongdao_jButton1_actionAdapter(this));
jButton3.setBounds(new Rectangle(385, 129, 101, 43));
jButton3.setText("悔棋");
jButton3.addActionListener(new huangrongdao_jButton3_actionAdapter(this));
jButton4.setBounds(new Rectangle(387, 276, 100, 43));
jButton4.setText("退出程序");
jButton4.addActionListener(new huangrongdao_jButton4_actionAdapter(this));
caocao.addActionListener(new huangrongdao_caocao_actionAdapter(this));
guanyu.addActionListener(new huangrongdao_guanyu_actionAdapter(this));
zhangfei.addActionListener(new huangrongdao_zhangfei_actionAdapter(this));
zhaoyun.addActionListener(new huangrongdao_zhaoyun_actionAdapter(this));
huangzhong.addActionListener(new huangrongdao_huangzhong_actionAdapter(this));
machao.addActionListener(new huangrongdao_machao_actionAdapter(this));
zu1.addActionListener(new huangrongdao_zu1_actionAdapter(this));
zu2.addActionListener(new huangrongdao_zu2_actionAdapter(this));
zu3.addActionListener(new huangrongdao_zu3_actionAdapter(this));
zu4.addActionListener(new huangrongdao_zu4_actionAdapter(this));
jLabel1.setBackground(Color.green);
jLabel1.setFont(new java.awt.Font("宋体", Font.BOLD, 20));
jLabel1.setBounds(new Rectangle(126, 403, 221, 37));
jButton6.setBounds(new Rectangle(12, 33, 85, 43));
jButton6.setText("设置棋局");
jButton6.addActionListener(new huangrongdao_jButton6_actionAdapter(this));
jButton7.setBounds(new Rectangle(12, 138, 86, 43));
jButton7.setText("打开存盘");
jButton7.addActionListener(new huangrongdao_jButton7_actionAdapter(this));
jButton8.setBounds(new Rectangle(13, 187, 86, 43));
jButton8.setText("游戏存盘");
jButton8.addActionListener(new huangrongdao_jButton8_actionAdapter(this));
jButton9.setBounds(new Rectangle(13, 88, 85, 43));
jButton9.setText("打开棋局");
jButton9.addActionListener(new huangrongdao_jButton9_actionAdapter(this));
jButton10.setBounds(new Rectangle(15, 234, 86, 43));
jButton10.setText("游戏规则");
jButton10.addActionListener(new huangrongdao_jButton10_actionAdapter(this));
jButton11.setBounds(new Rectangle(387, 177, 102, 43));
jButton11.setText("软件说明");
jButton11.addActionListener(new huangrongdao_jButton11_actionAdapter(this));
jFileChooser1.setBounds(new Rectangle(45, 397, 14, 21));
caocao.addMouseMotionListener(new huangrongdao_caocao_mouseMotionAdapter(this));
caocao.addMouseListener(new huangrongdao_caocao_mouseAdapter(this));
guanyu.addMouseMotionListener(new huangrongdao_guanyu_mouseMotionAdapter(this));
guanyu.addMouseListener(new huangrongdao_guanyu_mouseAdapter(this));
jLabel2.setBounds(new Rectangle(380, 298, 70, 140));
jLabel2.addMouseListener(new huangrongdao_jLabel2_mouseAdapter(this));
jLabel2.addMouseMotionListener(new huangrongdao_jLabel2_mouseMotionAdapter(this));
jLabel2.setVisible(false);
jPanel2.setBackground(Color.white);
jPanel2.setBounds(new Rectangle(170,368, 140, 25));
jButton5.setBounds(new Rectangle(14, 285, 86, 43));
jButton5.setText("关闭棋声");
jButton5.addActionListener(new huangrongdao_jButton5_actionAdapter(this));
jButton12.setBounds(new Rectangle(387, 227, 100, 43));
jButton12.setText("开启背景音乐");
jButton12.addActionListener(new huangrongdao_jButton12_actionAdapter(this));
this.getContentPane().add(jPanel1);
jPanel1.add(caocao);
jPanel1.add(guanyu);
jPanel1.add(huangzhong);
jPanel1.add(zhaoyun);
jPanel1.add(machao);
jPanel1.add(zu1);
jPanel1.add(zu2);
jPanel1.add(zu4);
jPanel1.add(zu3);
jPanel1.add(zhangfei);
this.getContentPane().add(jButton3);
this.getContentPane().add(jButton2);
this.getContentPane().add(jButton1);
this.getContentPane().add(jFileChooser1);
this.getContentPane().add(jLabel2);
this.getContentPane().add(jLabel1);
this.getContentPane().add(jPanel2);
this.getContentPane().add(jButton11);
this.getContentPane().add(jButton7);
this.getContentPane().add(jButton8);
this.getContentPane().add(jButton9);
this.getContentPane().add(jButton6);
this.getContentPane().add(jButton5);
this.getContentPane().add(jButton10);
this.getContentPane().add(jButton12);
this.getContentPane().add(jButton4);
initgame();
}
public void this_windowClosing(WindowEvent e) {
System.exit(0);
}
/*让窗口或控件(Component)处于屏幕中央*/
public void centerWindow(Component component)
{
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Dimension componentSize = component.getSize();
if (componentSize.height > screenSize.height) {
componentSize.height = screenSize.height;
}
if (componentSize.width > screenSize.width) {
componentSize.width = screenSize.width;
}
component.setLocation((screenSize.width - componentSize.width) / 2, (screenSize.height - componentSize.height) / 2);
//component.setVisible(true);
}
public void initgame(){
jButton1.setEnabled(true);
jButton2.setEnabled(false);
jButton3.setEnabled(false);
jButton6.setEnabled(true);
jButton7.setEnabled(true);
jButton8.setEnabled(false);
jButton9.setEnabled(true);
activenum = -1;
huangzhong.setText("");
zhaoyun.setText("");
zu1.setText("");
zu4.setText("");
zu2.setText("");
zhangfei.setText("");
//初始化图片到按钮中
//曹操
ImageIcon imageIconSource = new ImageIcon("caocao.jpg");
Image image = imageIconSource.getImage();
Image tempImage = image.getScaledInstance(125,126,Image.SCALE_DEFAULT);
ImageIcon imageIcon = new ImageIcon(tempImage);
caocao.setIcon(imageIcon);
//关羽
imageIconSource= new ImageIcon("guanyu.jpg");
image = imageIconSource.getImage();
tempImage = image.getScaledInstance(125,56,Image.SCALE_DEFAULT);
imageIcon = new ImageIcon(tempImage);
guanyu.setIcon(imageIcon);
//马超
imageIconSource= new ImageIcon("machao.jpg");
image = imageIconSource.getImage();
tempImage = image.getScaledInstance(57,125,Image.SCALE_DEFAULT);
imageIcon = new ImageIcon(tempImage);
machao.setIcon(imageIcon);
//赵云
imageIconSource= new ImageIcon("zhaoyun.jpg");
image = imageIconSource.getImage();
tempImage = image.getScaledInstance(57,129,Image.SCALE_DEFAULT);
imageIcon = new ImageIcon(tempImage);
zhaoyun.setIcon(imageIcon);
//黄忠
imageIconSource= new ImageIcon("huangzhong.jpg");
image = imageIconSource.getImage();
tempImage = image.getScaledInstance(56,125,Image.SCALE_DEFAULT);
imageIcon = new ImageIcon(tempImage);
huangzhong.setIcon(imageIcon);
//张飞
imageIconSource= new ImageIcon("zhangfei.jpg");
image = imageIconSource.getImage();
tempImage = image.getScaledInstance(126,57,Image.SCALE_DEFAULT);
imageIcon = new ImageIcon(tempImage);
zhangfei.setIcon(imageIcon);
//卒
imageIconSource= new ImageIcon("zu.jpg");
image = imageIconSource.getImage();
tempImage = image.getScaledInstance(57,58,Image.SCALE_DEFAULT);
imageIcon = new ImageIcon(tempImage);
zu1.setIcon(imageIcon);
zu2.setIcon(imageIcon);
zu3.setIcon(imageIcon);
zu4.setIcon(imageIcon);
//初始化person【10】依次为:曹操,关羽,张飞,赵云,黄忠,马超,张云,卒1,卒2,卒3,卒4
person[0] = new person();
person[0].setP_name( new String("曹操"));
person[0].setP_width(2);
person[0].setP_height(2);
person[0].setP_positionX(1);
person[0].setP_positionY(1);
person[0].setP_active(false);
person[1] = new person();
person[1].setP_name( new String("关羽"));
person[1].setP_width(2);
person[1].setP_height(1);
person[1].setP_positionX(3);
person[1].setP_positionY(1);
person[1].setP_active(false);
person[2] = new person();
person[2].setP_name( new String("张飞"));
person[2].setP_width(2);
person[2].setP_height(1);
person[2].setP_positionX(2);
person[2].setP_positionY(5);
person[2].setP_active(false);
person[3] = new person();
person[3].setP_name( new String("赵云"));
person[3].setP_width(1);
person[3].setP_height(2);
person[3].setP_positionX(1);
person[3].setP_positionY(3);
person[3].setP_active(false);
person[4] = new person();
person[4].setP_name( new String("黄忠"));
person[4].setP_width(1);
person[4].setP_height(2);
person[4].setP_positionX(2);
person[4].setP_positionY(3);
person[4].setP_active(false);
person[5] = new person();
person[5].setP_name( new String("马超"));
person[5].setP_width(1);
person[5].setP_height(2);
person[5].setP_positionX(3);
person[5].setP_positionY(2);
person[5].setP_active(false);
person[6] = new person();
person[6].setP_name( new String("卒"));
person[6].setP_width(1);
person[6].setP_height(1);
person[6].setP_positionX(4);
person[6].setP_positionY(2);
person[6].setP_active(false);
person[7] = new person();
person[7].setP_name( new String("卒"));
person[7].setP_width(1);
person[7].setP_height(1);
person[7].setP_positionX(4);
person[7].setP_positionY(3);
person[7].setP_active(false);
person[8] = new person();
person[8].setP_name( new String("卒"));
person[8].setP_width(1);
person[8].setP_height(1);
person[8].setP_positionX(4);
person[8].setP_positionY(4);
person[8].setP_active(false);
person[9] = new person();
person[9].setP_name( new String("卒"));
person[9].setP_width(1);
person[9].setP_height(1);
person[9].setP_positionX(3);
person[9].setP_positionY(4);
person[9].setP_active(false);
IsStart = false;//是否开始下棋,默认为false
space1X = 4;
space1Y = 5;
space2X = 1;
space2Y = 5;
for(int i=0;i<10;i++) Move(i);
jLabel1.setText("走了0步");
movenum = 0;//初始化移动步子为0
huiqi = "";//初始化没有任何以前走动的步伐信息!
}
JPanel jPanel1 = new JPanel();
JButton caocao = new JButton();
JButton guanyu = new JButton();
JButton machao = new JButton();
JButton huangzhong = new JButton();
JButton zhaoyun = new JButton();
JButton zu1 = new JButton();
JButton zu3 = new JButton();
JButton zu4 = new JButton();
JButton zu2 = new JButton();
JButton zhangfei = new JButton();
person person[] = new person[10];
boolean IsStart = false;//是否开始下棋,默认为false
Sequencer ser;//背景音乐
int space1X;//空闲棋子1的X坐标
int space1Y;//空闲棋子1的Y坐标
int space2X;//空闲棋子2的X坐标
int space2Y;//空闲棋子2的Y坐标
int activenum;//激活棋子对应编号
int movenum;//记录移动的步子
String huiqi = new String();//保存以前走动的步子,格式为ID0X0Y0ID1X1Y1ID2X2Y2...(ID0,X0,Y0都为一位数)
JButton jButton2 = new JButton();
JButton jButton1 = new JButton();
JButton jButton3 = new JButton();
JButton jButton4 = new JButton();
JLabel jLabel1 = new JLabel();
JButton jButton6 = new JButton();
JButton jButton7 = new JButton();
JButton jButton8 = new JButton();
JButton jButton9 = new JButton();
JButton jButton10 = new JButton();
JButton jButton11 = new JButton();
JFileChooser jFileChooser1 = new JFileChooser();
JLabel jLabel2 = new JLabel();
TitledBorder titledBorder1 = new TitledBorder("");
JPanel jPanel2 = new JPanel();
JButton jButton5 = new JButton();
JButton jButton12 = new JButton();
public void jButton1_actionPerformed(ActionEvent e) {//点击游戏开始
IsStart = true;
jButton1.setEnabled(false);
jButton2.setEnabled(true);
jButton3.setEnabled(true);
jButton6.setEnabled(false);
jButton7.setEnabled(false);
jButton8.setEnabled(true);
jButton9.setEnabled(false);
}
public void jButton2_actionPerformed(ActionEvent e) {//点击重新开始按钮
this.initgame();
}
public void jButton3_actionPerformed(ActionEvent e) {//点击悔棋按钮
int tempn,tempx,tempy;
if(movenum>0){//移动了步子,方可谈得上悔棋
movenum = movenum-2;//主要是此处下面用到了Move()函数加了一个1,所以要减2
tempn = new Integer(huiqi.substring(huiqi.length()-3,huiqi.length()-2)).intValue();
tempx = new Integer(huiqi.substring(huiqi.length()-2,huiqi.length()-1)).intValue();
tempy = new Integer(huiqi.substring(huiqi.length()-1,huiqi.length())).intValue();
huiqi = huiqi.substring(0,huiqi.length()-3);
person[tempn].setP_positionX(tempx);
person[tempn].setP_positionY(tempy);
this.activenum = tempn;
Move(activenum);
}
}
public void jButton4_actionPerformed(ActionEvent e) {//点击退出程序按钮
System.exit(0);
}
public void caocao_actionPerformed(ActionEvent e) {//激活曹操
caocao.setBorder(BorderFactory.createLineBorder(Color.RED));
guanyu.setBorder(BorderFactory.createEmptyBorder());
zhangfei.setBorder(BorderFactory.createEmptyBorder());
zhaoyun.setBorder(BorderFactory.createEmptyBorder());
huangzhong.setBorder(BorderFactory.createEmptyBorder());
machao.setBorder(BorderFactory.createEmptyBorder());
zu1.setBorder(BorderFactory.createEmptyBorder());
zu2.setBorder(BorderFactory.createEmptyBorder());
zu3.setBorder(BorderFactory.createEmptyBorder());
zu4.setBorder(BorderFactory.createEmptyBorder());
if(IsStart){
try{
for(int i=0;i<10;i++) person[i].setP_active(false);
person[0].setP_active(true);
activenum = 0;
}
catch(java.lang.NullPointerException e2)
{
}
}
}
public void guanyu_actionPerformed(ActionEvent e) {//激活关羽
guanyu.setBorder(BorderFactory.createLineBorder(Color.RED));
caocao.setBorder(BorderFactory.createEmptyBorder());
zhangfei.setBorder(BorderFactory.createEmptyBorder());
zhaoyun.setBorder(BorderFactory.createEmptyBorder());
huangzhong.setBorder(BorderFactory.createEmptyBorder());
machao.setBorder(BorderFactory.createEmptyBorder());
zu1.setBorder(BorderFactory.createEmptyBorder());
zu2.setBorder(BorderFactory.createEmptyBorder());
zu3.setBorder(BorderFactory.createEmptyBorder());
zu4.setBorder(BorderFactory.createEmptyBorder());
if(IsStart){
for(int i=0;i<10;i++) person[i].setP_active(false);
person[1].setP_active(true);
activenum = 1;
}
}
public void zhangfei_actionPerformed(ActionEvent e) {//激活张飞
zhangfei.setBorder(BorderFactory.createLineBorder(Color.RED));
caocao.setBorder(BorderFactory.createEmptyBorder());
guanyu.setBorder(BorderFactory.createEmptyBorder());
zhaoyun.setBorder(BorderFactory.createEmptyBorder());
huangzhong.setBorder(BorderFactory.createEmptyBorder());
machao.setBorder(BorderFactory.createEmptyBorder());
zu1.setBorder(BorderFactory.createEmptyBorder());
zu2.setBorder(BorderFactory.createEmptyBorder());
zu3.setBorder(BorderFactory.createEmptyBorder());
zu4.setBorder(BorderFactory.createEmptyBorder());
if(IsStart){
for(int i=0;i<10;i++) person[i].setP_active(false);
person[2].setP_active(true);
activenum = 2;
}
}
public void zhaoyun_actionPerformed(ActionEvent e) {//激活赵云
zhaoyun.setBorder(BorderFactory.createLineBorder(Color.RED));
caocao.setBorder(BorderFactory.createEmptyBorder());
guanyu.setBorder(BorderFactory.createEmptyBorder());
zhangfei.setBorder(BorderFactory.createEmptyBorder());
huangzhong.setBorder(BorderFactory.createEmptyBorder());
machao.setBorder(BorderFactory.createEmptyBorder());
zu1.setBorder(BorderFactory.createEmptyBorder());
zu2.setBorder(BorderFactory.createEmptyBorder());
zu3.setBorder(BorderFactory.createEmptyBorder());
zu4.setBorder(BorderFactory.createEmptyBorder());
if(IsStart){
for(int i=0;i<10;i++) person[i].setP_active(false);
person[3].setP_active(true);
activenum = 3;
}
}
public void huangzhong_actionPerformed(ActionEvent e) {//激活黄忠
huangzhong.setBorder(BorderFactory.createLineBorder(Color.RED));
caocao.setBorder(BorderFactory.createEmptyBorder());
guanyu.setBorder(BorderFactory.createEmptyBorder());
zhangfei.setBorder(BorderFactory.createEmptyBorder());
zhaoyun.setBorder(BorderFactory.createEmptyBorder());
machao.setBorder(BorderFactory.createEmptyBorder());
zu1.setBorder(BorderFactory.createEmptyBorder());
zu2.setBorder(BorderFactory.createEmptyBorder());
zu3.setBorder(BorderFactory.createEmptyBorder());
zu4.setBorder(BorderFactory.createEmptyBorder());
if(IsStart){
for(int i=0;i<10;i++) person[i].setP_active(false);
person[4].setP_active(true);
activenum = 4;
}
}
public void machao_actionPerformed(ActionEvent e) {//激活马超
machao.setBorder(BorderFactory.createLineBorder(Color.RED));
caocao.setBorder(BorderFactory.createEmptyBorder());
guanyu.setBorder(BorderFactory.createEmptyBorder());
zhangfei.setBorder(BorderFactory.createEmptyBorder());
zhaoyun.setBorder(BorderFactory.createEmptyBorder());
huangzhong.setBorder(BorderFactory.createEmptyBorder());
zu1.setBorder(BorderFactory.createEmptyBorder());
zu2.setBorder(BorderFactory.createEmptyBorder());
zu3.setBorder(BorderFactory.createEmptyBorder());
zu4.setBorder(BorderFactory.createEmptyBorder());
if(IsStart){
for(int i=0;i<10;i++) person[i].setP_active(false);
person[5].setP_active(true);
activenum = 5;
}
}
public void zu1_actionPerformed(ActionEvent e) {//激活卒1
zu1.setBorder(BorderFactory.createLineBorder(Color.RED));
caocao.setBorder(BorderFactory.createEmptyBorder());
guanyu.setBorder(BorderFactory.createEmptyBorder());
zhangfei.setBorder(BorderFactory.createEmptyBorder());
zhaoyun.setBorder(BorderFactory.createEmptyBorder());
huangzhong.setBorder(BorderFactory.createEmptyBorder());
machao.setBorder(BorderFactory.createEmptyBorder());
zu2.setBorder(BorderFactory.createEmptyBorder());
zu3.setBorder(BorderFactory.createEmptyBorder());
zu4.setBorder(BorderFactory.createEmptyBorder());
if(IsStart){
for(int i=0;i<10;i++) person[i].setP_active(false);
person[6].setP_active(true);
activenum = 6;
}
}
public void zu2_actionPerformed(ActionEvent e) {//激活卒2
zu2.setBorder(BorderFactory.createLineBorder(Color.RED));
caocao.setBorder(BorderFactory.createEmptyBorder());
guanyu.setBorder(BorderFactory.createEmptyBorder());
zhangfei.setBorder(BorderFactory.createEmptyBorder());
zhaoyun.setBorder(BorderFactory.createEmptyBorder());
huangzhong.setBorder(BorderFactory.createEmptyBorder());
machao.setBorder(BorderFactory.createEmptyBorder());
zu1.setBorder(BorderFactory.createEmptyBorder());
zu3.setBorder(BorderFactory.createEmptyBorder());
zu4.setBorder(BorderFactory.createEmptyBorder());
if(IsStart){
for(int i=0;i<10;i++) person[i].setP_active(false);
person[7].setP_active(true);
activenum = 7;
}
}
public void zu3_actionPerformed(ActionEvent e) {//激活卒3
zu3.setBorder(BorderFactory.createLineBorder(Color.RED));
caocao.setBorder(BorderFactory.createEmptyBorder());
guanyu.setBorder(BorderFactory.createEmptyBorder());
zhangfei.setBorder(BorderFactory.createEmptyBorder());
zhaoyun.setBorder(BorderFactory.createEmptyBorder());
huangzhong.setBorder(BorderFactory.createEmptyBorder());
machao.setBorder(BorderFactory.createEmptyBorder());
zu1.setBorder(BorderFactory.createEmptyBorder());
zu2.setBorder(BorderFactory.createEmptyBorder());
zu4.setBorder(BorderFactory.createEmptyBorder());
if(IsStart){
for(int i=0;i<10;i++) person[i].setP_active(false);
person[8].setP_active(true);
activenum = 8;
}
}
public void zu4_actionPerformed(ActionEvent e) {//激活卒4
zu4.setBorder(BorderFactory.createLineBorder(Color.RED));
caocao.setBorder(BorderFactory.createEmptyBorder());
guanyu.setBorder(BorderFactory.createEmptyBorder());
zhangfei.setBorder(BorderFactory.createEmptyBorder());
zhaoyun.setBorder(BorderFactory.createEmptyBorder());
huangzhong.setBorder(BorderFactory.createEmptyBorder());
machao.setBorder(BorderFactory.createEmptyBorder());
zu1.setBorder(BorderFactory.createEmptyBorder());
zu2.setBorder(BorderFactory.createEmptyBorder());
zu3.setBorder(BorderFactory.createEmptyBorder());
if(IsStart){
for(int i=0;i<10;i++) person[i].setP_active(false);
person[9].setP_active(true);
activenum = 9;
}
}
public void Move(int n){//n:第n个棋子
//移动步子加1
movenum = movenum+1;
jLabel1.setText("走了"+new Integer(movenum).toString()+"步");
if(n==0){//曹操
caocao.setBounds(70*(person[n].getP_positionX()-1),70*(person[n].getP_positionY()-1),70*person[n].getP_width
(),70*person[n].getP_height());
if(person[n].getP_positionX()==2 && person[n].getP_positionY()==4) {
JOptionPane.showConfirmDialog(null,"祝贺你胜利了^_^,用了"+new Integer(movenum).toString()+"步","成功",
JOptionPane.DEFAULT_OPTION,JOptionPane.WARNING_MESSAGE);
this.initgame();
}
}
else if(n==1){//关羽
guanyu.setBounds(70*(person[n].getP_positionX()-1),70*(person[n].getP_positionY()-1),70*person[n].getP_width
(),70*person[n].getP_height());
}
else if(n==2){//张飞
zhangfei.setBounds(70*(person[n].getP_positionX()-1),70*(person[n].getP_positionY()-1),70*person[n].getP_width
(),70*person[n].getP_height());
}
else if(n==3){//赵云
zhaoyun.setBounds(70*(person[n].getP_positionX()-1),70*(person[n].getP_positionY()-1),70*person[n].getP_width
(),70*person[n].getP_height());
}
else if(n==4){//黄忠
huangzhong.setBounds(70*(person[n].getP_positionX()-1),70*(person[n].getP_positionY()-1),70*person[n].getP_width
(),70*person[n].getP_height());
}
else if(n==5){//马超
machao.setBounds(70*(person[n].getP_positionX()-1),70*(person[n].getP_positionY()-1),70*person[n].getP_width
(),70*person[n].getP_height());
}
else if(n==6){//卒1
zu1.setBounds(70*(person[n].getP_positionX()-1),70*(person[n].getP_positionY()-1),70*person[n].getP_width(),70*person
[n].getP_height());
}
else if(n==7){//卒2
zu2.setBounds(70*(person[n].getP_positionX()-1),70*(person[n].getP_positionY()-1),70*person[n].getP_width(),70*person
[n].getP_height());
}
else if(n==8){//卒3
zu3.setBounds(70*(person[n].getP_positionX()-1),70*(person[n].getP_positionY()-1),70*person[n].getP_width(),70*person
[n].getP_height());
}
else{//卒4
zu4.setBounds(70*(person[n].getP_positionX()-1),70*(person[n].getP_positionY()-1),70*person[n].getP_width(),70*person
[n].getP_height());
}
}
public void jPanel1_mouseClicked(MouseEvent e) {//开始走动棋子
int tempx,tempy,temp;
if(IsStart){
tempx = e.getX();
tempy = e.getY();
//JOptionPane.showConfirmDialog(null,new Integer(tempx).toString(),new Integer(tempy).toString(),
//JOptionPane.YES_NO_OPTION,JOptionPane.WARNING_MESSAGE);
tempx = tempx/70+1;
if(tempx>4) tempx = 4;
tempy = tempy/70+1;
if(tempy>5) tempy = 5;
//下面判断是否可走
if(activenum==-1) JOptionPane.showConfirmDialog(null,"请先选中你要移动的棋子!","移动棋子",
JOptionPane.DEFAULT_OPTION,JOptionPane.WARNING_MESSAGE);
else{
if(((tempx-person[activenum].getP_positionX())!=person[activenum].getP_width()&&(tempx-person
[activenum].getP_positionX())!=-1)&&
((tempy-person[activenum].getP_positionY())!=person[activenum].getP_height()&&(tempy-person
[activenum].getP_positionY())!=-1)){
//相差太远了不可走,在此列出便于代码的阅读
}
else if(((tempx-person[activenum].getP_positionX())==person[activenum].getP_width()||(tempx-person
[activenum].getP_positionX())==-1)&&
(tempy-person[activenum].getP_positionY())
if(person[activenum].getP_height()==1){//可走person[activenum]与tempx交换
temp = person[activenum].getP_positionX();
person[activenum].setP_positionX(temp-(temp-tempx)/java.lang.Math.abs(temp-tempx));
if(tempx==space1X) space1X = space1X+person[activenum].getP_width()*(temp-tempx)/java.lang.Math.abs(temp-
tempx);
else space2X = space2X+person[activenum].getP_width()*(temp-tempx)/java.lang.Math.abs(temp-tempx);
//保存此部走法
huiqi = huiqi+new Integer(activenum).toString()+new Integer(temp).toString()+new Integer(person
[activenum].getP_positionY()).toString();
if(jButton5.getText().equals(new String("关闭棋声"))) new SoundMove();
Move(activenum);
}
else{//高度为2
if(((person[activenum].getP_positionY()-space1Y)==0||(person[activenum].getP_positionY()-space1Y)==-1)
&& space1X==space2X){
temp = person[activenum].getP_positionX();
person[activenum].setP_positionX(temp-(temp-tempx)/java.lang.Math.abs(temp-tempx));
space1X = space1X+person[activenum].getP_width()*(temp-tempx)/java.lang.Math.abs(temp-tempx);
space2X = space2X+person[activenum].getP_width()*(temp-tempx)/java.lang.Math.abs(temp-tempx);
//保存此部走法
huiqi = huiqi+new Integer(activenum).toString()+new Integer(temp).toString()+new Integer(person
[activenum].getP_positionY()).toString();
if(jButton5.getText().equals(new String("关闭棋声"))) new SoundMove();
Move(activenum);
}
}
}
else if(((tempy-person[activenum].getP_positionY())==person[activenum].getP_height()||(tempy-person
[activenum].getP_positionY())==-1) &&
(tempx-person[activenum].getP_positionX())
if(person[activenum].getP_width()==1){//可走person[activenum]与tempy交换
temp = person[activenum].getP_positionY();
person[activenum].setP_positionY(temp-(temp-tempy)/java.lang.Math.abs(temp-tempy));
if(tempy==space1Y) space1Y = space1Y+person[activenum].getP_height()*(temp-tempy)/java.lang.Math.abs(temp-
tempy);
else space2Y = space2Y+person[activenum].getP_height()*(temp-tempy)/java.lang.Math.abs(temp-tempy);
//保存此部走法
huiqi = huiqi+new Integer(activenum).toString()+new Integer(person[activenum].getP_positionX()).toString()
+new Integer(temp).toString();
if(jButton5.getText().equals(new String("关闭棋声"))) new SoundMove();
Move(activenum);
}
else{//宽度为2
if(((person[activenum].getP_positionX()-space1X)==0||(person[activenum].getP_positionX()-space1X)==-1)&&
((person[activenum].getP_positionX()-space2X)==0||(person[activenum].getP_positionX()-space2X)==-1)
&& space1Y==space2Y){
temp = person[activenum].getP_positionY();
person[activenum].setP_positionY(temp-(temp-tempy)/java.lang.Math.abs(temp-tempy));
space1Y = space1Y+person[activenum].getP_height()*(temp-tempy)/java.lang.Math.abs(temp-tempy);
space2Y = space2Y+person[activenum].getP_height()*(temp-tempy)/java.lang.Math.abs(temp-tempy);
//保存此部走法
huiqi = huiqi+new Integer(activenum).toString()+new Integer(person[activenum].getP_positionX()).toString()
+new Integer(temp).toString();
if(jButton5.getText().equals(new String("关闭棋声"))) new SoundMove();
Move(activenum);
}
}
}
}
}
}
public void jButton5_actionPerformed(ActionEvent e) {//开启或关闭棋声
if(jButton5.getText().equals(new String("开启棋声"))) jButton5.setText("关闭棋声");
else jButton5.setText("开启棋声");
}
public void jButton8_actionPerformed(ActionEvent e) {//游戏存盘,存盘格式ID0X0Y0ID1X1Y1ID2X2Y2。。。
String savecontent = new String();
String filepath = new String();
String filename = new String();
if(activenum==-1) activenum=0;
if(IsStart){
//保存棋盘棋子信息
for(int i=0;i<10;i++){
savecontent = savecontent+new Integer(person[i].getP_positionX()).toString()+new Integer(person[i].getP_positionY
()).toString();
}
//保存空闲地方信息
savecontent = savecontent+new Integer(space1X).toString()+new Integer(space1Y).toString()+new Integer(space2X).toString
()+new Integer(space2Y).toString();
//保存激活棋子ID
savecontent = savecontent+new Integer(activenum).toString();
//保存已走步子信息
savecontent = savecontent+new Integer(movenum).toString();
//保存悔棋步子
savecontent = savecontent+"\n"+huiqi;
int val;
do{
jFileChooser1.removeAll();
jFileChooser1 = new JFileChooser();
jFileChooser1.setCurrentDirectory(new File("."));
jFileChooser1.resetChoosableFileFilters();
jFileChooser1.setMultiSelectionEnabled(false);
jFileChooser1.setFileFilter(new MyFilter());
jFileChooser1.setAcceptAllFileFilterUsed(false);
val = jFileChooser1.showSaveDialog(this);
if(val!=JFileChooser.APPROVE_OPTION) break;
filepath = jFileChooser1.getSelectedFile().getPath();
filename = jFileChooser1.getSelectedFile().getName();
if(filename.length()<10||(!filename.substring(filename.length()-9,filename.length()).equals(new String(".huyidaoh"))))
filepath = filepath+".huyidaoh";
jFileChooser1.setSelectedFile(new File(filepath));
if(jFileChooser1.getSelectedFile().exists()){
int SaveFile_reply = JOptionPane.showConfirmDialog(null,filepath+" 存盘文件已经存在\n想要替换它吗","保存存盘文件",
JOptionPane.YES_NO_OPTION,JOptionPane.WARNING_MESSAGE);
if (SaveFile_reply == JOptionPane.YES_OPTION) break;
}
}
while(jFileChooser1.getSelectedFile().exists()); //文件已经存在
if(val==JFileChooser.APPROVE_OPTION) {
filepath = jFileChooser1.getSelectedFile().getPath();
filename = jFileChooser1.getSelectedFile().getName();
try{
if(filename.length()<10||(!filename.substring(filename.length()-9,filename.length()).equals(new String
(".huyidaoh")))) filepath = filepath+".huyidaoh";
File file = new File(filepath);
FileWriter outText = new FileWriter(file);
outText.write(savecontent);
outText.close();
//先提取
}
catch(IOException ioe){
JOptionPane.showConfirmDialog(null,"保存存盘文件失败!","保存存盘文件",
JOptionPane.DEFAULT_OPTION,JOptionPane.WARNING_MESSAGE);
}
}
}
}
你可以使用这个链接引用该篇文章 http://publishblog.blogchina.com/blog/tb.b?diaryID=1883939