象棋.zip

  • PUDN用户
    了解作者
  • Java
    开发工具
  • 8KB
    文件大小
  • zip
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 0
    下载次数
  • 2020-09-05 07:41
    上传日期
那个连连看是我一个月前写的,这个我昨天晚上刚写完,不知道行不行。
象棋.zip
  • 象棋
  • chess.java
    61.6KB
内容介绍
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 exit; //当前信息 JLabel text; //保存当前操作 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){ //改变系统默认字体 Font font = new Font("Dialog", Font.PLAIN, 12); java.util.Enumeration keys = UIManager.getDefaults().keys(); while (keys.hasMoreElements()) { Object key = keys.nextElement(); Object value = UIManager.get(key); if (value instanceof javax.swing.plaf.FontUIResource) { UIManager.put(key, font); } } //获行客格引用 con = this.getContentPane(); con.setLayout(null); //实例化规则类 rule = new ChessRule(); 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("返回到上次走棋的位置"); //把组件添加到工具栏 jmain.setLayout(new GridLayout(0,4)); jmain.add(anew); jmain.add(repent); 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); //注册棋子移动监听 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); }
评论
    相关推荐
    • 国际象棋
      国际象棋象棋查看器上 概括 该项目是作为Golem Hackathon 12/2020的条目而创建的。 目的是表明可以在Golem Network中运行任何基于状态的游戏/问题,并可以通过提供程序节点以交互方式解决该问题。 这个特定示例...
    • 国际象棋
      国际象棋迷你最大 具有使用minimax算法实现的AI的国际象棋游戏。
    • android 象棋
      自己写的,android,实现在手进入象棋游戏,感觉还不错
    • 国际象棋
      象棋X 本地设置 安装MongoDB并运行() 安装并运行redis( $ redis-server & ) $ npm install $ npm run watch 在单独的选项卡中,运行$ gulp 贡献 叉它 创建功能分支( git checkout -b my-new-feature ) ...
    • JavaScript象棋
      “楚汉相争,鸿沟为界”,这句话里诠释着中国象棋博大文化精髓,象棋是由两人轮流走子,以将死或困毙对方将(帅)为胜。以其精妙的布局,灵动的走法,在国内深受群众喜爱,现在有JavaScript象棋游戏源码,分享给大家
    • 国际象棋
      国际象棋 一个相当简单的象棋程序,在Unity游戏引擎中用C#实现。
    • 象棋
      3D国际象棋(Bevy) 使用Bevy在Rust中创建3D国际象棋游戏的。 归因 代码: 由创建,并根据获得。 :( )制作的由许可。
    • 象棋.zip
      java象棋源码,适合初学java者使用和参考
    • 中国象棋.zip
      PVP中国象棋,实现在局域网中分别输入目标IP来完成联机对弈。
    • BBS_system_on_java.rar
      BBS论坛系统由JAVA和JSP实现,开发中涉及JavaBean,JSP和服务器Tomcat5.0.7的设置,数据库用SQL2000。有注册登陆,浏览,发帖 回帖,帖子管理,论坛设置,管理版块,用户管理等模块。