华容道java版- -| 回首页 | 2005年索引 | - -华容道Java版程序清单(二)

华容道java版程序清单(一)- -

                                      

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


 *
 * @author 胡一刀
 * @version 1.0
 */
public class huangrongdao
    extends JFrame {
  public huangrongdao() {
    try {
      jbInit();
    }
    catch (Exception ex) {
      ex.printStackTrace();
    }
  }

  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())             && (tempy-person[activenum].getP_positionY())>-1){//左右移动
           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())            && (tempx-person[activenum].getP_positionX())>-1){//上下移动
          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);
            }
    }
  }
}

 

- 作者: hlq83 2005年06月11日, 星期六 16:13 加入博采

Trackback

你可以使用这个链接引用该篇文章 http://publishblog.blogchina.com/blog/tb.b?diaryID=1883939

回复

评论内容: