为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

中国象棋代码

2011-07-09 50页 doc 709KB 32阅读

用户头像

is_150362

暂无简介

举报
中国象棋代码/* /* *中国象棋Java版V3.0 *作者 *源文件:Chess.java *最后修改时间:2005-8-20 *添加功能:实现了当前棋局的保存 */ import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.util.*; import java.io.*; //主类 public class Chess{ public static void main(String args[]){ new ChessMainFrame...
中国象棋代码
/* /* *中国象棋Java版V3.0 *作者 *源文件:Chess.java *最后修改时间:2005-8-20 *添加功能:实现了当前棋局的保存 */ import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.util.*; import java.io.*; //主类 public class Chess{ public static void main(String args[]){ new ChessMainFrame("中国象棋:观棋不语真君子,棋死无悔大丈夫"); } } //主框架类 class ChessMainFrame extends JFrame implements ActionListener,MouseListener,Runnable{ //玩家 JLabel play[] = new JLabel[32]; //棋盘 JLabel image; //窗格 Container con; //工具栏 JToolBar jmain; //重新开始 JButton anew; //悔棋 JButton repent; //打开 JButton showOpen; //保存 JButton showSave; //退出 JButton exit; //当前信息 JLabel text; //保存当前操作 Vector FileVar; Vector Var; //规则类对象(使于调用方法) ChessRule rule; /** ** 单击棋子 ** chessManClick = true 闪烁棋子 并给线程响应 ** chessManClick = false 吃棋子 停止闪烁 并给线程响应 */ boolean chessManClick; /** ** 控制玩家走棋 ** chessPlayClick=1 黑棋走棋 ** chessPlayClick=2 红棋走棋 默认红棋 ** chessPlayClick=3 双方都不能走棋 */ int chessPlayClick=2; //控制棋子闪烁的线程 Thread tmain; //把第一次的单击棋子给线程响应 static int Man,i; ChessMainFrame(){ new ChessMainFrame("中国象棋"); } /** ** 构造函数 ** 初始化图形用户界面 */ ChessMainFrame(String Title){ //获行客格引用 con = this.getContentPane(); con.setLayout(null); //实例化规则类 rule = new ChessRule(); FileVar = new Vector(); Var = new Vector(); //创建工具栏 jmain = new JToolBar(); text = new JLabel("欢迎使用象棋对弈系统"); //当鼠标放上显示信息 text.setToolTipText("信息提示"); anew = new JButton(" 新 游 戏 "); anew.setToolTipText("重新开始新的一局"); exit = new JButton(" 退 出 "); exit.setToolTipText("退出象棋程序程序"); repent = new JButton(" 悔 棋 "); repent.setToolTipText("返回到上次走棋的位置"); showOpen = new JButton("打开"); showOpen.setToolTipText("打开以前棋局"); showSave = new JButton("保存"); showSave.setToolTipText("保存当前棋局"); //把组件添加到工具栏 jmain.setLayout(new GridLayout(0,6)); jmain.add(anew); jmain.add(repent); jmain.add(showOpen); jmain.add(showSave); jmain.add(exit); jmain.add(text); jmain.setBounds(0,0,558,30); con.add(jmain); //添加棋子标签 drawChessMan(); //注册按扭监听 anew.addActionListener(this); repent.addActionListener(this); exit.addActionListener(this); showOpen.addActionListener(this); showSave.addActionListener(this); //注册棋子移动监听 for (int i=0;i<32;i++){ con.add(play[i]); play[i].addMouseListener(this); } //添加棋盘标签 con.add(image = new JLabel(new ImageIcon("image\\Main.GIF"))); image.setBounds(0,30,558,620); image.addMouseListener(this); //注册窗体关闭监听 this.addWindowListener( new WindowAdapter() { public void windowClosing(WindowEvent we){ System.exit(0); } } ); //窗体居中 Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); Dimension frameSize = this.getSize(); if (frameSize.height > screenSize.height){ frameSize.height = screenSize.height; } if (frameSize.width > screenSize.width){ frameSize.width = screenSize.width; } this.setLocation((screenSize.width - frameSize.width) / 2 - 280 ,(screenSize.height - frameSize.height ) / 2 - 350); //设置 this.setIconImage(new ImageIcon("image\\红将.GIF").getImage()); this.setResizable(false); this.setTitle(Title); this.setSize(558,670); this.show(); } /** ** 添加棋子方法 */ public void drawChessMan(){ //控制 int i,k; //图标 Icon in; //黑色棋子 //车 in = new ImageIcon("image\\黑车.GIF"); for (i=0,k=24;i<2;i++,k+=456){ play[i] = new JLabel(in); play[i].setBounds(k,56,55,55); play[i].setName("车1"); } //马 in = new ImageIcon("image\\黑马.GIF"); for (i=4,k=81;i<6;i++,k+=342){ play[i] = new JLabel(in); play[i].setBounds(k,56,55,55); play[i].setName("马1"); } //相 in = new ImageIcon("image\\黑象.GIF"); for (i=8,k=138;i<10;i++,k+=228){ play[i] = new JLabel(in); play[i].setBounds(k,56,55,55); play[i].setName("象1"); } //士 in = new ImageIcon("image\\黑士.GIF"); for (i=12,k=195;i<14;i++,k+=114){ play[i] = new JLabel(in); play[i].setBounds(k,56,55,55); play[i].setName("士1"); } //卒 in = new ImageIcon("image\\黑卒.GIF"); for (i=16,k=24;i<21;i++,k+=114){ play[i] = new JLabel(in); play[i].setBounds(k,227,55,55); play[i].setName("卒1" + i); } //炮 in = new ImageIcon("image\\黑炮.GIF"); for (i=26,k=81;i<28;i++,k+=342){ play[i] = new JLabel(in); play[i].setBounds(k,170,55,55); play[i].setName("炮1" + i); } //将 in = new ImageIcon("image\\黑将.GIF"); play[30] = new JLabel(in); play[30].setBounds(252,56,55,55); play[30].setName("将1"); //红色棋子 //车 in = new ImageIcon("image\\红车.GIF"); for (i=2,k=24;i<4;i++,k+=456){ play[i] = new JLabel(in); play[i].setBounds(k,569,55,55); play[i].setName("车2"); } //马 in = new ImageIcon("image\\红马.GIF"); for (i=6,k=81;i<8;i++,k+=342){ play[i] = new JLabel(in); play[i].setBounds(k,569,55,55); play[i].setName("马2"); } //相 in = new ImageIcon("image\\红象.GIF"); for (i=10,k=138;i<12;i++,k+=228){ play[i] = new JLabel(in); play[i].setBounds(k,569,55,55); play[i].setName("象2"); } //士 in = new ImageIcon("image\\红士.GIF"); for (i=14,k=195;i<16;i++,k+=114){ play[i] = new JLabel(in); play[i].setBounds(k,569,55,55); play[i].setName("士2"); } //兵 in = new ImageIcon("image\\红卒.GIF"); for (i=21,k=24;i<26;i++,k+=114){ play[i] = new JLabel(in); play[i].setBounds(k,398,55,55); play[i].setName("卒2" + i); } //炮 in = new ImageIcon("image\\红炮.GIF"); for (i=28,k=81;i<30;i++,k+=342){ play[i] = new JLabel(in); play[i].setBounds(k,455,55,55); play[i].setName("炮2" + i); } //帅 in = new ImageIcon("image\\红将.GIF"); play[31] = new JLabel(in); play[31].setBounds(252,569,55,55); play[31].setName("帅2"); } /** ** 线程方法控制棋子闪烁 */ public void run(){ while (true){ //单击棋子第一下开始闪烁 if (chessManClick){ play[Man].setVisible(false); //时间控制 try{ tmain.sleep(200); } catch(Exception e){ } play[Man].setVisible(true); } //闪烁当前提示信息 以免用户看不见 else { text.setVisible(false); //时间控制 try{ tmain.sleep(250); } catch(Exception e){ } text.setVisible(true); } try{ tmain.sleep(350); } catch (Exception e){ } } } /** ** 单击棋子方法 */ public void mouseClicked(MouseEvent me){ System.out.println("Mouse"); //当前坐标 int Ex=0,Ey=0; //启动线程 if (tmain == null){ tmain = new Thread(this); tmain.start(); } //单击棋盘(移动棋子) if (me.getSource().equals(image)){ //该红棋走棋的时候 if (chessPlayClick == 2 && play[Man].getName().charAt(1) == '2'){ Ex = play[Man].getX(); Ey = play[Man].getY(); //移动卒、兵 if (Man > 15 && Man < 26){ rule.armsRule(Man,play[Man],me); } //移动炮 else if (Man > 25 && Man < 30){ rule.cannonRule(play[Man],play,me); } //移动车 else if (Man >=0 && Man < 4){ rule.cannonRule(play[Man],play,me); } //移动马 else if (Man > 3 && Man < 8){ rule.horseRule(play[Man],play,me); } //移动相、象 else if (Man > 7 && Man < 12){ rule.elephantRule(Man,play[Man],play,me); } //移动仕、士 else if (Man > 11 && Man < 16){ rule.chapRule(Man,play[Man],play,me); } //移动将、帅 else if (Man == 30 || Man == 31){ rule.willRule(Man,play[Man],play,me); } //是否走棋错误(是否在原地没有动) if (Ex == play[Man].getX() && Ey == play[Man].getY()){ text.setText(" 红棋走棋"); chessPlayClick=2; } else { text.setText(" 黑棋走棋"); chessPlayClick=1; } }//if //该黑棋走棋的时候 else if (chessPlayClick == 1 && play[Man].getName().charAt(1) == '1'){ Ex = play[Man].getX(); Ey = play[Man].getY(); //移动卒、兵 if (Man > 15 && Man < 26){ rule.armsRule(Man,play[Man],me); } //移动炮 else if (Man > 25 && Man < 30){ rule.cannonRule(play[Man],play,me); } //移动车 else if (Man >=0 && Man < 4){ rule.cannonRule(play[Man],play,me); } //移动马 else if (Man > 3 && Man < 8){ rule.horseRule(play[Man],play,me); } //移动相、象 else if (Man > 7 && Man < 12){ rule.elephantRule(Man,play[Man],play,me); } //移动仕、士 else if (Man > 11 && Man < 16){ rule.chapRule(Man,play[Man],play,me); } //移动将、帅 else if (Man == 30 || Man == 31){ rule.willRule(Man,play[Man],play,me); } //是否走棋错误(是否在原地没有动) if (Ex == play[Man].getX() && Ey == play[Man].getY()){ text.setText(" 黑棋走棋"); chessPlayClick=1; } else { text.setText(" 红棋走棋"); chessPlayClick=2; } }//else if //当前没有操作(停止闪烁) chessManClick=false; }//if //单击棋子 else{ //第一次单击棋子(闪烁棋子) if (!chessManClick){ for (int i=0;i<32;i++){ //被单击的棋子 if (me.getSource().equals(play[i])){ //告诉线程让该棋子闪烁 Man=i; //开始闪烁 chessManClick=true; break; } }//for }//if //第二次单击棋子(吃棋子) else if (chessManClick){ //当前没有操作(停止闪烁) chessManClick=false; for (i=0;i<32;i++){ //找到被吃的棋子 if (me.getSource().equals(play[i])){ //该红棋吃棋的时候 if (chessPlayClick == 2 && play[Man].getName().charAt(1) == '2'){ Ex = play[Man].getX(); Ey = play[Man].getY(); //卒、兵吃规则 if (Man > 15 && Man < 26){ rule.armsRule(play[Man],play[i]); } //炮吃规则 else if (Man > 25 && Man < 30){ rule.cannonRule(0,play[Man],play[i],play,me); } //车吃规则 else if (Man >=0 && Man < 4){ rule.cannonRule(1,play[Man],play[i],play,me); } //马吃规则 else if (Man > 3 && Man < 8){ rule.horseRule(play[Man],play[i],play,me); } //相、象吃规则 else if (Man > 7 && Man < 12){ rule.elephantRule(play[Man],play[i],play); } //士、仕吃棋规则 else if (Man > 11 && Man < 16){ rule.chapRule(Man,play[Man],play[i],play); } //将、帅吃棋规则 else if (Man == 30 || Man == 31){ rule.willRule(Man,play[Man],play[i],play); play[Man].setVisible(true); } //是否走棋错误(是否在原地没有动) if (Ex == play[Man].getX() && Ey == play[Man].getY()){ text.setText(" 红棋走棋"); chessPlayClick=2; break; } else{ text.setText(" 黑棋走棋"); chessPlayClick=1; break; } }//if //该黑棋吃棋的时候 else if (chessPlayClick == 1 && play[Man].getName().charAt(1) == '1'){ Ex = play[Man].getX(); Ey = play[Man].getY(); //卒吃规则 if (Man > 15 && Man < 26){ rule.armsRule(play[Man],play[i]); } //炮吃规则 else if (Man > 25 && Man < 30){ rule.cannonRule(0,play[Man],play[i],play,me); } //车吃规则 else if (Man >=0 && Man < 4){ rule.cannonRule(1,play[Man],play[i],play,me); } //马吃规则 else if (Man > 3 && Man < 8){ rule.horseRule(play[Man],play[i],play,me); } //相、象吃规则 else if (Man > 7 && Man < 12){ rule.elephantRule(play[Man],play[i],play); } //士、仕吃棋规则 else if (Man > 11 && Man < 16){ rule.chapRule(Man,play[Man],play[i],play); } //将、帅吃棋规则 else if (Man == 30 || Man == 31){ rule.willRule(Man,play[Man],play[i],play); play[Man].setVisible(true); } //是否走棋错误(是否在原地没有动) if (Ex == play[Man].getX() && Ey == play[Man].getY()){ text.setText(" 黑棋走棋"); chessPlayClick=1; break; } else { text.setText(" 红棋走棋"); chessPlayClick=2; break; } }//else if }//if }//for //是否胜利 if (!play[31].isVisible()){ JOptionPane.showConfirmDialog( this,"黑棋胜利","玩家一胜利", JOptionPane.DEFAULT_OPTION,JOptionPane.WARNING_MESSAGE); //双方都不可以在走棋了 chessPlayClick=3; text.setText(" 黑棋胜利"); }//if else if (!play[30].isVisible()){ JOptionPane.showConfirmDialog( this,"红棋胜利","玩家二胜利", JOptionPane.DEFAULT_OPTION,JOptionPane.WARNING_MESSAGE); chessPlayClick=3; text.setText(" 红棋胜利"); }//else if }//else }//else } public void mousePressed(MouseEvent me){ } public void mouseReleased(MouseEvent me){ } public void mouseEntered(MouseEvent me){ } public void mouseExited(MouseEvent me){ } /** ** 定义按钮的事件响应 */ public void actionPerformed(ActionEvent ae) { //重新开始按钮 if (ae.getSource().equals(anew)){ int i,k; //重新排列每个棋子的位置 //黑色棋子 //车 for (i=0,k=24;i<2;i++,k+=456){ play[i].setBounds(k,56,55,55); } //马 for (i=4,k=81;i<6;i++,k+=342){ play[i].setBounds(k,56,55,55); } //相 for (i=8,k=138;i<10;i++,k+=228){ play[i].setBounds(k,56,55,55); } //士 for (i=12,k=195;i<14;i++,k+=114){ play[i].setBounds(k,56,55,55); } //卒 for (i=16,k=24;i<21;i++,k+=114){ play[i].setBounds(k,227,55,55); } //炮 for (i=26,k=81;i<28;i++,k+=342){ play[i].setBounds(k,170,55,55); } //将 play[30].setBounds(252,56,55,55); //红色棋子 //车 for (i=2,k=24;i<4;i++,k+=456){ play[i].setBounds(k,569,55,55); } //马 for (i=6,k=81;i<8;i++,k+=342){ play[i].setBounds(k,569,55,55); } //相 for (i=10,k=138;i<12;i++,k+=228){ play[i].setBounds(k,569,55,55); } //士 for (i=14,k=195;i<16;i++,k+=114){ play[i].setBounds(k,569,55,55); } //兵 for (i=21,k=24;i<26;i++,k+=114){ play[i].setBounds(k,398,55,55); } //炮 for (i=28,k=81;i<30;i++,k+=342){ play[i].setBounds(k,455,55,55); } //帅 play[31].setBounds(252,569,55,55); chessPlayClick = 2; text.setText(" 红棋走棋"); for (i=0;i<32;i++){ play[i].setVisible(true); } //清除Vector中的内容 Var.clear(); } //悔棋按钮 else if (ae.getSource().equals(repent)){ try{ //获得setVisible属性值 String S = (String)Var.get(Var.size()-4); //获得X坐标 int x = Integer.parseInt((String)Var.get(Var.size()-3)); //获得Y坐标 int y = Integer.parseInt((String)Var.get(Var.size()-2)); //获得索引 int M = Integer.parseInt((String)Var.get(Var.size()-1)); //赋给棋子 play[M].setVisible(true); play[M].setBounds(x,y,55,55); if (play[M].getName().charAt(1) == '1'){ text.setText(" 黑棋走棋"); chessPlayClick = 1; } else{ text.setText(" 红棋走棋"); chessPlayClick = 2; } //删除用过的坐标 Var.remove(Var.size()-4); Var.remove(Var.size()-3); Var.remove(Var.size()-2); Var.remove(Var.size()-1); //停止旗子闪烁 chessManClick=false; } catch(Exception e){ } } //打开棋局 else if (ae.getSource().equals(showOpen)) { try { //打开对话框 JFileChooser jfcOpen = new JFileChooser("打开棋局"); int v=jfcOpen.showOpenDialog(this); if (v != JFileChooser.CANCEL_OPTION) { //删除集合所有信息 Var.removeAllElements(); FileVar.removeAllElements(); //打开文件获得所有数据 FileInputStream fileIn = new FileInputStream(jfcOpen.getSelectedFile()); ObjectInputStream objIn = new ObjectInputStream(fileIn); FileVar = (Vector)objIn.readObject(); fileIn.close(); objIn.close(); //集合内容对应棋子坐标 int k=0; for (int i=0;i<32;i++) { play[i].setBounds(((Integer)FileVar.get(k)).intValue(),((Integer)FileVar.get(k+1)).intValue(),55,55); //被吃掉的棋子不显示 if (!((Boolean)FileVar.elementAt(k+2)).booleanValue()) { play[i].setVisible(false); } k+=3; } //当前该哪方棋子走棋 if (((String)FileVar.lastElement()).toString().equals(" 红棋走棋")) { text.setText(((String)FileVar.lastElement()).toString()); chessPlayClick = 2; } else if (((String)FileVar.lastElement()).toString().equals(" 黑棋走棋")) { text.setText(((String)FileVar.lastElement()).toString()); chessPlayClick = 1; } else if (((String)FileVar.lastElement()).toString().substring(5).equals("利")) { text.setText(((String)FileVar.lastElement()).toString()); chessPlayClick = 3; } } } catch(Exception e) { System.out.println("ERROR ShowOpen"); } } //保存当前棋局 else if (ae.getSource().equals(showSave)) { try { //保存对话框 JFileChooser jfcSave = new JFileChooser("保存当前棋局"); int v=jfcSave.showSaveDialog(this); if (v != JFileChooser.CANCEL_OPTION) { FileVar.removeAllElements(); //保存所有棋子的坐标和是否可见 for (int i=0;i<32;i++) { FileVar.addElement(new Integer(play[i].getX())); FileVar.addElement(new Integer(play[i].getY())); FileVar.addElement(new Boolean(play[i].isVisible())); } //保存当前该哪方吃棋 FileVar.add(text.getText()); //保存到文件 FileOutputStream fileOut = new FileOutputStream(jfcSave.getSelectedFile()); ObjectOutputStream objOut = new ObjectOutputStream(fileOut); objOut.writeObject(FileVar); objOut.close(); fileOut.close(); } } catch(Exception e) { System.out.println("ERROR ShowSave"); } } //退出 else if (ae.getSource().equals(exit)){ int j=JOptionPane.showConfirmDialog( this,"真的要退出吗?","退出", JOptionPane.YES_OPTION,JOptionPane.QUESTION_MESSAGE); if (j == JOptionPane.YES_OPTION){ System.exit(0); } } } /*定义中国象棋规则的类*/ class ChessRule { /**卒子的移动规则*/ public void armsRule(int Man,JLabel play,MouseEvent me){ //黑卒向下 if (Man < 21){ //向下移动、得到终点的坐标模糊成合法的坐标 if ((me.getY()-play.getY()) > 27 && (me.getY()-play.getY()) < 86 && (me.getX()-play.getX()) < 55 && (me.getX()-play.getX()) > 0){ //当前记录添加到集合(用于悔棋) Var.add(String.valueOf(play.isVisible())); Var.add(String.valueOf(play.getX())); Var.add(String.valueOf(play.getY())); Var.add(String.valueOf(Man)); play.setBounds(play.getX(),play.getY()+57,55,55); } //向右移动、得到终点的坐标模糊成合法的坐标、必须过河 else if (play.getY() > 284 && (me.getX() - play.getX()) >= 57 && (me.getX() - play.getX()) <= 112){ play.setBounds(play.getX()+57,play.getY(),55,55); } //向左移动、得到终点的坐标模糊成合法的坐标、必须过河 else if (play.getY() > 284 && (play.getX() - me.getX()) >= 2 && (play.getX() - me.getX()) <=58){ //模糊坐标 play.setBounds(play.getX()-57,play.getY(),55,55); } } //红卒向上 else{ //当前记录添加到集合(用于悔棋) Var.add(String.valueOf(play.isVisible())); Var.add(String.valueOf(play.getX())); Var.add(String.valueOf(play.getY())); Var.add(String.valueOf(Man)); //向上移动、得到终点的坐标模糊成合法的坐标 if ((me.getX()-play.getX()) >= 0 && (me.getX()-play.getX()) <= 55 && (play.getY()-me.getY()) >27 && play.getY()-me.getY() < 86){ play.setBounds(play.getX(),play.getY()-57,55,55); } //向右移动、得到终点的坐标模糊成合法的坐标、必须过河 else if (play.getY() <= 341 && (me.getX() - play.getX()) >= 57 && (me.getX() - play.getX()) <= 112){ play.setBounds(play.getX()+57,play.getY(),55,55); } //向左移动、得到终点的坐标模糊成合法的坐标、必须过河 else if (play.getY() <= 341 && (play.getX() - me.getX()) >= 3 && (play.getX() - me.getX()) <=58){ play.setBounds(play.getX()-57,play.getY(),55,55); } } }//卒移动结束 /**卒吃棋规则*/ public void armsRule(JLabel play1,JLabel play2){ //向右走 if ((play2.getX() - play1.getX()) <= 112 && (play2.getX() - play1.getX()) >= 57 && (play1.getY() - play2.getY()) < 22 && (play1.getY() - play2.getY()) > -22 && play2.isVisible() && play1.getName().charAt(1)!=play2.getName().charAt(1)){ //黑棋要过河才能右吃棋 if (play1.getName().charAt(1) == '1' && play1.getY() > 284 && play1.getName().charAt(1) != play2.getName().charAt(1)){ play2.setVisible(false); //把对方的位置给自己 play1.setBounds(play2.getX(),play2.getY(),55,55); } //红棋要过河才左能吃棋 else if (play1.getName().charAt(1) == '2' && play1.getY() < 341 && play1.getName().charAt(1) != play2.getName().charAt(1)){ play2.setVisible(false); //把对方的位置给自己 play1.setBounds(play2.getX(),play2.getY(),55,55); } } //向左走 else if ((play1.getX() - play2.getX()) <= 112 && (play1.getX() - play2.getX()) >= 57 && (play1.getY() - play2.getY()) < 22 && (play1.getY() - play2.getY()) > -22 && play2.isVisible() && play1.getName().charAt(1)!=play2.getName().charAt(1)){ //黑棋要过河才能左吃棋 if (play1.getName().charAt(1) == '1' && play1.getY() > 284 && play1.getName().charAt(1) != play2.getName().charAt(1)){ play2.setVisible(false); //把对方的位置给自己 play1.setBounds(play2.getX(),play2.getY(),55,55); } //红棋要过河才能右吃棋 else if (play1.getName().charAt(1) == '2' && play1.getY() < 341 && play1.getName().charAt(1) != play2.getName().charAt(1)){ play2.setVisible(false); //把对方的位置给自己 play1.setBounds(play2.getX(),play2.getY(),55,55); } } //向上走 else if (play1.getX() - play2.getX() >= -22 && play1.getX() - play2.getX() <= 22 && play1.getY() - play2.getY() >= -112 && play1.getY() - play2.getY() <= 112){ //黑棋不能向上吃棋 if (play1.getName().charAt(1) == '1' && play1.getY() < play2.getY() && play1.getName().charAt(1) != play2.getName().charAt(1)){ play2.setVisible(false); //把对方的位置给自己 play1.setBounds(play2.getX(),play2.getY(),55,55); } //红棋不能向下吃棋 else if (play1.getName().charAt(1) == '2' && play1.getY() > play2.getY() && play1.getName().charAt(1) != play2.getName().charAt(1)){ play2.setVisible(false); //把对方的位置给自己 play1.setBounds(play2.getX(),play2.getY(),55,55); } } //当前记录添加到集合(用于悔棋) Var.add(String.valueOf(play1.isVisible())); Var.add(String.valueOf(play1.getX())); Var.add(String.valueOf(play1.getY())); Var.add(String.valueOf(Man)); //当前记录添加到集合(用于悔棋) Var.add(String.valueOf(play2.isVisible())); Var.add(String.valueOf(play2.getX())); Var.add(String.valueOf(play2.getY())); Var.add(String.valueOf(i)); }//卒吃结束 /**炮、车移动规则*/ public void cannonRule(JLabel play,JLabel playQ[],MouseEvent me){ //起点和终点之间是否有棋子 int Count = 0; //上、下移动 if (play.getX() - me.getX() <= 0 && play.getX() - me.getX() >= -55){ //指定所有模糊Y坐标 for (int i=56;i<=571;i+=57){ //移动的Y坐标是否有指定坐标相近的 if (i - me.getY() >= -27 && i - me.getY() <= 27){ //所有的棋子 for (int j=0;j<32;j++){ //找出在同一条竖线的所有棋子、并不包括自己 if (playQ[j].getX() - play.getX() >= -27 && playQ[j].getX() - play.getX() <= 27 && playQ[j].getName()!=play.getName() && playQ[j].isVisible()){ //从起点到终点(从左到右) for (int k=play.getY()+57;k play.getY()){ //中间有一个棋子就不可以从这条竖线过去 Count++; break; } }//for //从起点到终点(从右到左) for (int k=i+57;k i){ Count++; break; } }//for }//if }//for //起点和终点没有棋子就可以移动了 if (Count == 0){ //当前记录添加到集合(用于悔棋) Var.add(String.valueOf(play.isVisible())); Var.add(String.valueOf(play.getX())); Var.add(String.valueOf(play.getY())); Var.add(String.valueOf(Man)); play.setBounds(play.getX(),i,55,55); break; } }//if }//for }//if //左、右移动 else if (play.getY() - me.getY() >=-27 && play.getY() - me.getY() <= 27){ //指定所有模糊X坐标 for (int i=24;i<=480;i+=57){ //移动的X坐标是否有指定坐标相近的 if (i - me.getX() >= -55 && i-me.getX() <= 0){ //所有的棋子 for (int j=0;j<32;j++){ //找出在同一条横线的所有棋子、并不包括自己 if (playQ[j].getY() - play.getY() >= -27 && playQ[j].getY() - play.getY() <= 27 && playQ[j].getName()!=play.getName() && playQ[j].isVisible()){ //从起点到终点(从上到下) for (int k=play.getX()+57;k
/
本文档为【中国象棋代码】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索