欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    JAVA中国象棋程序源代码.doc

    • 资源ID:2386821       资源大小:194.50KB        全文页数:98页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    JAVA中国象棋程序源代码.doc

    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 ChineseChesspublic static void main(String args) new ChessMainFrame("中国象棋");class ChessMainFrame extends JFrame implements ActionListener,MouseListener,Runnable MusicDemo t = new MusicDemo(); /玩家 JLabel play = new JLabel32;/棋盘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(playi);playi.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)playi = new JLabel(in);playi.setBounds(k,10,40,40);playi.setName("车1");/马in = new ImageIcon("马1.GIF");for (i=4,k=60;i<6;i+,k+=285)playi = new JLabel(in);playi.setBounds(k,10,40,40);playi.setName("马1");/相in = new ImageIcon("相1.GIF");for (i=8,k=105;i<10;i+,k+=195)playi = new JLabel(in);playi.setBounds(k,10,40,40);playi.setName("相1");/士in = new ImageIcon("士1.GIF");for (i=12,k=155;i<14;i+,k+=95)playi = new JLabel(in);playi.setBounds(k,10,40,40);playi.setName("士1");/卒in = new ImageIcon("卒1.GIF");for (i=16,k=10;i<21;i+,k+=96.5)playi = new JLabel(in);playi.setBounds(k,160,40,40);playi.setName("卒1" + i);/炮in = new ImageIcon("炮1.GIF");for (i=26,k=60;i<28;i+,k+=289)playi = new JLabel(in);playi.setBounds(k,110,40,40);playi.setName("炮1" + i);/将in = new ImageIcon("将1.GIF");play30 = new JLabel(in);play30.setBounds(205,10,40,40);play30.setName("将1");/红色棋子/车in = new ImageIcon("车2.GIF");for (i=2,k=10;i<4;i+,k+=385)playi = new JLabel(in);playi.setBounds(k,450,40,40);playi.setName("车2");/马in = new ImageIcon("马2.GIF");for (i=6,k=60;i<8;i+,k+=285)playi = new JLabel(in);playi.setBounds(k,450,40,40);playi.setName("马2");/相in = new ImageIcon("相2.GIF");for (i=10,k=105;i<12;i+,k+=195)playi = new JLabel(in);playi.setBounds(k,450,40,40);playi.setName("相2");/士in = new ImageIcon("士2.GIF");for (i=14,k=155;i<16;i+,k+=95)playi = new JLabel(in);playi.setBounds(k,450,40,40);playi.setName("士2");/兵in = new ImageIcon("兵2.GIF");for (i=21,k=10;i<26;i+,k+=96.5)playi = new JLabel(in);playi.setBounds(k,300,40,40);playi.setName("兵2" + i);/炮in = new ImageIcon("炮2.GIF");for (i=28,k=60;i<30;i+,k+=289)playi = new JLabel(in);playi.setBounds(k,350,40,40);playi.setName("炮2" + i);/帅in = new ImageIcon("帅2.GIF");play31 = new JLabel(in);play31.setBounds(205,450,40,40);play31.setName("帅2");/*线程方法控制棋子闪烁*/public void run()while (true)/单击棋子第一下开始闪烁if (chessManClick)playMan.setVisible(false);/时间控制trytmain.sleep(500);catch(Exception e)playMan.setVisible(true);/闪烁当前提示信息 以免用户看不见else text.setVisible(false);/时间控制trytmain.sleep(500);catch(Exception e)text.setVisible(true);trytmain.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 && playMan.getName().charAt(1) = '2')Ex = playMan.getX();Ey = playMan.getY();/移动卒、兵if (Man > 15 && Man < 26)rule.armsRule(Man,playMan,me);/移动炮else if (Man > 25 && Man < 30)rule.cannonRule(playMan,play,me);/移动车else if (Man >=0 && Man < 4)rule.cannonRule(playMan,play,me);/移动马else if (Man > 3 && Man < 8)rule.horseRule(playMan,play,me);/移动相、象else if (Man > 7 && Man < 12)rule.elephantRule(Man,playMan,play,me);/移动仕、士else if (Man > 11 && Man < 16)rule.chapRule(Man,playMan,play,me);/移动将、帅else if (Man = 30 | Man = 31)rule.willRule(Man,playMan,play,me);/是否走棋错误(是否在原地没有动)if (Ex = playMan.getX() && Ey = playMan.getY()text.setText(" 红棋走棋");chessPlayClick=2;else text.setText(" 黑棋走棋");chessPlayClick=1;/if/该黑棋走棋的时候else if (chessPlayClick = 1 && playMan.getName().charAt(1) = '1')Ex = playMan.getX();Ey = playMan.getY();/移动卒、兵if (Man > 15 && Man < 26)rule.armsRule(Man,playMan,me);/移动炮else if (Man > 25 && Man < 30)rule.cannonRule(playMan,play,me);/移动车else if (Man >=0 && Man < 4)rule.cannonRule(playMan,play,me);/移动马else if (Man > 3 && Man < 8)rule.horseRule(playMan,play,me);/移动相、象else if (Man > 7 && Man < 12)rule.elephantRule(Man,playMan,play,me);/移动仕、士else if (Man > 11 && Man < 16)rule.chapRule(Man,playMan,play,me);/移动将、帅else if (Man = 30 | Man = 31)rule.willRule(Man,playMan,play,me);/是否走棋错误(是否在原地没有动)if (Ex = playMan.getX() && Ey = playMan.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(playi)/告诉线程让该棋子闪烁Man=i;/开始闪烁chessManClick=true;break;/for/if/第二次单击棋子(吃棋子)else if (chessManClick)/当前没有操作(停止闪烁)chessManClick=false;for (i=0;i<32;i+)/找到被吃的棋子if (me.getSource().equals(playi)/该红棋吃棋的时候if (chessPlayClick = 2 && playMan.getName().charAt(1) = '2')Ex = playMan.getX();Ey = playMan.getY();/卒、兵吃规则if (Man > 15 && Man < 26)rule.armsRule(playMan,playi);/炮吃规则else if (Man > 25 && Man < 30)rule.cannonRule(0,playMan,playi,play,me);/车吃规则else if (Man >=0 && Man < 4)rule.cannonRule(1,playMan,playi,play,me);/马吃规则else if (Man > 3 && Man < 8)rule.horseRule(playMan,playi,play,me);/相、象吃规则else if (Man > 7 && Man < 12)rule.elephantRule(playMan,playi,play);/士、仕吃棋规则else if (Man > 11 && Man < 16)rule.chapRule(Man,playMan,playi,play);/将、帅吃棋规则else if (Man = 30 | Man = 31)rule.willRule(Man,playMan,playi,play);playMan.setVisible(true);/是否走棋错误(是否在原地没有动)if (Ex = playMan.getX() && Ey = playMan.getY()text.setText(" 红棋走棋");chessPlayClick=2;break;elsetext.setText(" 黑棋走棋");chessPlayClick=1;break;/if/该黑棋吃棋的时候else if (chessPlayClick = 1 && playMan.getName().charAt(1) = '1')Ex = playMan.getX();Ey = playMan.getY();/卒、兵吃规则if (Man > 15 && Man < 26)rule.armsRule(playMan,playi);/炮吃规则else if (Man > 25 && Man < 30)rule.cannonRule(0,playMan,playi,play,me);/车吃规则else if (Man >=0 && Man < 4)rule.cannonRule(1,playMan,playi,play,me);/马吃规则else if (Man > 3 && Man < 8)rule.horseRule(playMan,playi,play,me);/相、象吃规则else if (Man > 7 && Man < 12)rule.elephantRule(playMan,playi,play);/士、仕吃棋规则else if (Man > 11 && Man < 16)rule.chapRule(Man,playMan,playi,play);/将、帅吃棋规则else if (Man = 30 | Man = 31)rule.willRule(Man,playMan,playi,play);playMan.setVisible(true);/是否走棋错误(是否在原地没有动)if (Ex = playMan.getX() && Ey = playMan.getY()text.setText(" 黑棋走棋");chessPlayClick=1;break;else text.setText(" 红棋走棋");chessPlayClick=2;break;/else if /if/for/是否胜利if (!play31.isVisible()JOptionPane.showConfirmDialog(this,"恭喜黑方获胜","玩家一胜利",JOptionPane.DEFAULT_OPTION,JOptionPane.WARNING_MESSAGE);/双方都不可以在走棋了chessPlayClick=3;text.setText(" 恭喜黑方获胜");/if else if (!play30.isVisible()JOptionPane.showConfirmDialog(this,"恭喜红方获胜","玩家二胜利",JOptionPane.DEFAULT_OPTION,JOptionPane.WARNING_MESSAGE);chessPlayClick=3;text.setText(" 恭喜红方获胜");/else if/else/elsepublic 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)playi.setBounds(k,10,40,40);/马for (i=4,k=60;i<6;i+,k+=285)playi.setBounds(k,10,40,40);/相for (i=8,k=105;i<10;i+,k+=195)playi.setBounds(k,10,40,40);/士for (i=12,k=155;i<14;i+,k+=95)playi.setBounds(k,10,40,40);/卒for (i=16,k=10;i<21;i+,k+=96.5)playi.setBounds(k,160,40,40);/炮for (i=26,k=60;i<28;i+,k+=289)playi.setBounds(k,110,40,40);/将play30.setBounds(205,10,40,40);/红色棋子/车for (i=2,k=10;i<4;i+,k+=385)playi.setBounds(k,450,40,40);/马for (i=6,k=60;i<8;i+,k+=285)playi.setBounds(k,450,40,40);/相f

    注意事项

    本文(JAVA中国象棋程序源代码.doc)为本站会员(文库蛋蛋多)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开