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

Java中国象棋程序源代码

2011-07-31 50页 doc 329KB 321阅读

用户头像

is_168936

暂无简介

举报
Java中国象棋程序源代码import java.io.*; import java.applet.Applet; import java.applet.AudioClip; import javax.swing.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.util.*; import java.io.*; //主类 //主框架类 public class ChineseChess { public static void main(S...
Java中国象棋程序源代码
import java.io.*; import java.applet.Applet; import java.applet.AudioClip; import javax.swing.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.util.*; import java.io.*; //主类 //主框架类 public class ChineseChess { public static void main(String args[]) { new ChessMainFrame("中国象棋"); } } class ChessMainFrame extends JFrame implements ActionListener,MouseListener,Runnable { MusicDemo t = new MusicDemo(); //玩家 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(){} 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,500,450,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("CChess.GIF"))); image.setBounds(0,0,446,497); 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 - 200 ,(screenSize.height - frameSize.height ) / 2 - 290); this.setIconImage(new ImageIcon("车1.gif").getImage()); this.setResizable(false); this.setTitle(Title); this.setSize(450,550); this.show(); } /*添加棋子方法************/ public void drawChessMan() { //流程控制 int i,k; //图标 Icon in; //黑色棋子 //车 in = new ImageIcon("车1.GIF"); for (i=0,k=10;i<2;i++,k+=385) { play[i] = new JLabel(in); play[i].setBounds(k,10,40,40); play[i].setName("车1"); } //马 in = new ImageIcon("马1.GIF"); for (i=4,k=60;i<6;i++,k+=285) { play[i] = new JLabel(in); play[i].setBounds(k,10,40,40); play[i].setName("马1"); } //相 in = new ImageIcon("相1.GIF"); for (i=8,k=105;i<10;i++,k+=195) { play[i] = new JLabel(in); play[i].setBounds(k,10,40,40); play[i].setName("相1"); } //士 in = new ImageIcon("士1.GIF"); for (i=12,k=155;i<14;i++,k+=95) { play[i] = new JLabel(in); play[i].setBounds(k,10,40,40); play[i].setName("士1"); } //卒 in = new ImageIcon("卒1.GIF"); for (i=16,k=10;i<21;i++,k+=96.5) { play[i] = new JLabel(in); play[i].setBounds(k,160,40,40); play[i].setName("卒1" + i); } //炮 in = new ImageIcon("炮1.GIF"); for (i=26,k=60;i<28;i++,k+=289) { play[i] = new JLabel(in); play[i].setBounds(k,110,40,40); play[i].setName("炮1" + i); } //将 in = new ImageIcon("将1.GIF"); play[30] = new JLabel(in); play[30].setBounds(205,10,40,40); play[30].setName("将1"); //红色棋子 //车 in = new ImageIcon("车2.GIF"); for (i=2,k=10;i<4;i++,k+=385) { play[i] = new JLabel(in); play[i].setBounds(k,450,40,40); play[i].setName("车2"); } //马 in = new ImageIcon("马2.GIF"); for (i=6,k=60;i<8;i++,k+=285) { play[i] = new JLabel(in); play[i].setBounds(k,450,40,40); play[i].setName("马2"); } //相 in = new ImageIcon("相2.GIF"); for (i=10,k=105;i<12;i++,k+=195) { play[i] = new JLabel(in); play[i].setBounds(k,450,40,40); play[i].setName("相2"); } //士 in = new ImageIcon("士2.GIF"); for (i=14,k=155;i<16;i++,k+=95) { play[i] = new JLabel(in); play[i].setBounds(k,450,40,40); play[i].setName("士2"); } //兵 in = new ImageIcon("兵2.GIF"); for (i=21,k=10;i<26;i++,k+=96.5) { play[i] = new JLabel(in); play[i].setBounds(k,300,40,40); play[i].setName("兵2" + i); } //炮 in = new ImageIcon("炮2.GIF"); for (i=28,k=60;i<30;i++,k+=289) { play[i] = new JLabel(in); play[i].setBounds(k,350,40,40); play[i].setName("炮2" + i); } //帅 in = new ImageIcon("帅2.GIF"); play[31] = new JLabel(in); play[31].setBounds(205,450,40,40); play[31].setName("帅2"); } /*线程方法控制棋子闪烁*/ public void run() { while (true) { //单击棋子第一下开始闪烁 if (chessManClick) { play[Man].setVisible(false); //时间控制 try { tmain.sleep(500); } catch(Exception e){} play[Man].setVisible(true); } //闪烁当前提示信息 以免用户看不见 else { text.setVisible(false); //时间控制 try { tmain.sleep(500); } catch(Exception e){} text.setVisible(true); } try { tmain.sleep(500); } catch (Exception e){} } } /*单击棋子方法************************/ public void mouseClicked(MouseEvent me) { MusicDemo1 t = new MusicDemo1(); //当前坐标 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=10;i<2;i++,k+=385) { play[i].setBounds(k,10,40,40); } //马 for (i=4,k=60;i<6;i++,k+=285) { play[i].setBounds(k,10,40,40); } //相 for (i=8,k=105;i<10;i++,k+=195) { play[i].setBounds(k,10,40,40); } //士 for (i=12,k=155;i<14;i++,k+=95) { play[i].setBounds(k,10,40,40); } //卒 for (i=16,k=10;i<21;i++,k+=96.5) { play[i].setBounds(k,160,40,40); } //炮 for (i=26,k=60;i<28;i++,k+=289) { play[i].setBounds(k,110,40,40); } //将 play[30].setBounds(205,10,40,40); //红色棋子 //车 for (i=2,k=10;i<4;i++,k+=385) { play[i].setBounds(k,450,40,40); } //马 for (i=6,k=60;i<8;i++,k+=285) { play[i].setBounds(k,450,40,40); } //相 for (i=10,k=105;i<12;i++,k+=195) { play[i].setBounds(k,450,40,40); } //士 for (i=14,k=155;i<16;i++,k+=95) { play[i].setBounds(k,450,40,40); } //兵 for (i=21,k=10;i<26;i++,k+=96.5) { play[i].setBounds(k,300,40,40); } //炮 for (i=28,k=60;i<30;i++,k+=289) { play[i].setBounds(k,350,40,40); } //帅 play[31].setBounds(205,450,40,40); chessPlayClick = 2; text.setText(" 红棋走棋"); for (i=0;i<32;i++) { play[i].setVisible(true); } for (i=0;i内容
对应棋子坐标 int k=0; for (int i=0;i<32;i++) { play[i].setBounds(((Integer)FileVar.get(k)).intValue(),((Integer)FileVar.get(k+1)).intValue(),40,40); //被吃掉的棋子不显示 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()) > 40 && (me.getY()-play.getY()) < 80 && (me.getX()-play.getX()) < 30 && (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()+45,40,40); } //向右移动、得到终点的坐标模糊成合法的坐标、必须过河 else if (play.getY() >= 250 && (me.getX() - play.getX()) >= 30 && (me.getX() - play.getX()) <= 90) { play.setBounds(play.getX()+48,play.getY(),40,40); } //向左移动、得到终点的坐标模糊成合法的坐标、必须过河 else if (play.getY() >= 250 && (play.getX() - me.getX()) >= 20 && (play.getX() - me.getX()) <=90) { //模糊坐标 play.setBounds(play.getX()-48,play.getY(),40,40); } } //红卒向上 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()) < 30 && (play.getY()-me.getY()) >20 && play.getY()-me.getY() < 70) { play.setBounds(play.getX(),play.getY()-48,40,40); } //向右移动、得到终点的坐标模糊成合法的坐标、必须过河 else if (play.getY() <= 210 && (me.getX() - play.getX()) >= 30 && (me.getX() - play.getX()) <= 90) { play.setBounds(play.getX()+50,play.getY(),40,40); } //向左移动、得到终点的坐标模糊成合法的坐标、必须过河 else if (play.getY() <= 210 && (play.getX() - me.getX()) >= 20 && (play.getX() - me.getX()) <=60) { play.setBounds(play.getX()-52,play.getY(),40,40); } } }//卒移动结束 /*卒吃棋规则**********************************/ public void armsRule(JLabel play1,JLabel play2) { //向右走 if ((play2.getX() - play1.getX()) <= 60 && (play2.getX() - play1.getX()) >= 40 && (play1.getY() - play2.getY()) < 10 && (play1.getY() - play2.getY()) > -10 && play2.isVisible() && play1.getName().charAt(1)!=play2.getName().charAt(1)) { //黑棋要过河才能右吃棋 if (play1.getName().charAt(1) == '1' && play1.getY() >= 250 && play1.getName().charAt(1) != play2.getName().charAt(1)) { play2.setVisible(false); //把对方的位置给自己 play1.setBounds(play2.getX(),play2.getY(),40,40); } //红棋要过河才左能吃棋 else if (play1.getName().charAt(1) == '2' && play1.getY() <= 210 && play1.getName().charAt(1) != play2.getName().charAt(1)) { play2.setVisible(false); //把对方的位置给自己 play1.setBounds(play2.getX(),play2.getY(),40,40); } } //向左走 else if ((play1.getX() - play2.getX()) <= 60 && (play1.getX() - play2.getX()) >= 40 && (play1.getY() - play2.getY()) < 10 && (play1.getY() - play2.getY()) > -10 && play2.isVisible() && play1.getName().charAt(1)!=play2.getName().charAt(1)) { //黑棋要过河才能左吃棋 if (play1.getName().charAt(1) == '1' && play1.getY() >= 250 && play1.getName().charAt(1) != play2.getName().charAt(1)) { play2.setVisible(false); //把对方的位置给自己 play1.setBounds(play2.getX(),play2.getY(),40,40); } //红棋要过河才能右吃棋 else if (play1.getName().charAt(1) == '2' && play1.getY() <= 210 && play1.getName().charAt(1) != play2.getName().charAt(1)) { play2.setVisible(false); //把对方的位置给自己 play1.setBounds(play2.getX(),play2.getY(),40,40); } } //向上走 else if (play1.getX() - play2.getX() >= -10 && play1.getX() - play2.getX() <= 10 && play1.getY() - play2.getY() >= -70 && play1.getY() - play2.getY() <= 70) { //黑棋不能向上吃棋 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(),40,40); } //红棋不能向下吃棋 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(),40,40); } } //当前记录添加到集合(用于悔棋) 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() <= 10 && play.getX() - me.getX() >= -30) { //指定所有模糊Y坐标 for (int i=30;i<=462;i+=48) { //移动的Y坐标是否有指定坐标相近的 if (i - me.getY() >= -10 && i - me.getY() <= 30) { //所有的棋子 for (int j=0;j<32;j++) { //找出在同一条竖线的所有棋子、并不包括自己 if (playQ[j].getX() - play.getX() >= -10 && playQ[j].getX() - play.getX() <= 10 && playQ[j].getName()!=play.getName() && playQ[j].isVisible()) { //从起点到终点(从左到右) for (int k=play.getY()+50;k play.getY()) { //中间有一个棋子就不可以从这条竖线过去 Count++; break; } }//for //从起点到终点(从右到左) for (int k=i+50;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-17,40,40); break; } }//if }//for }//if //左、右移动 else if (play.getY() - me.getY() >=-35 && play.getY() - me.getY() <= 10) { //指定所有模糊X坐标 for (int i=30;i<=420;i+=48) { //移动的X坐标是否有指定坐标相近的 if (i - me.getX() >= -35 && i-me.getX() <= 10) { //所有的棋子 for (int j=0;j<32;j++) { //找出在同一条横线的所有棋子、并不包括自己 if (playQ[j].getY() - play.getY() >= -10 && pla
/
本文档为【Java中国象棋程序源代码】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索