• 黄鸿智
    了解作者
  • Java
    开发工具
  • 9.8MB
    文件大小
  • zip
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 0
    下载次数
  • 2020-03-15 17:40
    上传日期
FansChineseChess1.0的升级版,功能比1.0的更多,并对1.0的进行了优化
FansChineseChess.zip
内容介绍
/** * 项目名称: FansChineseChess * 版本号:2.0 * 名字:雷文 * 博客: http://FansUnion.cn * CSDN:http://blog.csdn.net/FansUnion * 邮箱: leiwen@FansUnion.cn * QQ:240-370-818 * 版权所有: 2011-2013,leiwen */ package cn.fansunion.chinesechess.core; import java.awt.BasicStroke; import java.awt.Color; import java.awt.Cursor; import java.awt.Dimension; import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Image; import java.awt.Point; import java.awt.event.MouseAdapter; import java.util.ArrayList; import javax.swing.JPanel; import cn.fansunion.chinesechess.ChessUtil; import cn.fansunion.chinesechess.ColorUtil; import cn.fansunion.chinesechess.config.NAME; import cn.fansunion.chinesechess.config.PropertyReader; import cn.fansunion.chinesechess.core.ChessPiece.PieceCategory; import cn.fansunion.chinesechess.core.ChessPiece.PieceId; /** * * 楚汉棋兵__抽象棋盘类 * * 用到了模版方法设计模式 * * 子类如果需要更改竖线标记的画法,需要覆盖drawShuXianFlag方法 * * 子类如果需要绘制棋盘的背景图片,需要覆盖getBackgroundImage方法。 * * 子类必须实现getMouseAdapter、getBoardType、getBackgroundColor方法 * * * 职责:绘制棋盘 * * @author leiwen@fansunion.cn,http://FansUnion.cn, * http://blog.csdn.net/FansUnion * @since 1.0 * @see NetworkBoard */ public abstract class ChessBoard extends JPanel implements NAME, Runnable { private static final long serialVersionUID = 1L; // 棋盘的水平方向可容纳棋子的点的个数 public static final int X = 9; // 棋盘的垂直方向可容纳棋子的点的个数 public static final int Y = 10; // 棋盘单元格的宽度和高度 public static int UNIT_WIDTH = ChessPiece.UNIT_WIDTH; public static int UNIT_HEIGHT = ChessPiece.UNIT_HEIGHT; public static int PIECE_WIDTH = ChessPiece.PIECE_WIDTH; public static int PIECE_HEIGHT = ChessPiece.PIECE_HEIGHT; /** * 棋盘的类型 * * @author 雷文 * */ public enum BoardType { printWhole, printPartial, network, manMachine, eightEmpress, horseMaze } // 卒、兵和炮的位置的标记 protected ArrayList<Point> sidePoints = new ArrayList<Point>(14); // 当前棋子的可选走法 protected ArrayList<Point> tipPoints = new ArrayList<Point>(); // 棋子点,共90个,横9*纵10 public ChessPoint chessPoints[][]; // 移动棋子时是否需要提示 protected boolean moveFlag = false; // 移动棋子提示的2个点,可以简化为MoveStep public Point[] movePoints = new Point[] { new Point(), new Point() }; // 红方16个棋子 public ChessPiece 红車1, 红車2, 红馬1, 红馬2, 红相1, 红相2, 红帥, 红仕1, 红仕2, 红兵1, 红兵2, 红兵3, 红兵4, 红兵5, 红炮1, 红炮2; // 黑方16个棋子 public ChessPiece 黑車1, 黑車2, 黑馬1, 黑馬2, 黑象1, 黑象2, 黑將, 黑士1, 黑士2, 黑卒1, 黑卒2, 黑卒3, 黑卒4, 黑卒5, 黑炮1, 黑炮2; // 手形光标 public static Cursor handCursor = new Cursor(Cursor.HAND_CURSOR); // 默认光标 public static Cursor defaultCursor = new Cursor(Cursor.DEFAULT_CURSOR); // 闪烁的棋子 protected ChessPiece winkPiece; // 默认没有选中棋子 protected boolean isSelected = false; // 是否需要闪烁 protected boolean needWink = false; // 是否可以移动棋子 protected boolean move = false; // 闪烁的线程 protected Thread winkThread; // 闪烁棋子的坐标 protected int startI, startJ; public ChessManual chessManual = null; // 战斗方的名字,红方or黑方 protected String playerName; /** * 构造函数 * */ public ChessBoard() { super(); setLayout(null);// 不可忽视 setBackground(getBackgroundColor());// 设置棋盘的背景色 addMouseListener(getMouseAdapter());// 鼠标适配器 // 初始化棋子点 chessPoints = new ChessPoint[X + 1][Y + 1]; for (int i = 1; i <= X; i++) { for (int j = 1; j <= Y; j++) { chessPoints[i][j] = new ChessPoint(i * UNIT_WIDTH, j * UNIT_HEIGHT); } } // 为32个棋子分配空间 init32Pieces(); // 初始化32个棋子的工具提示 init32PiecesTooltip(); // 棋谱类 chessManual = new ChessManual(this); // 初始化炮和兵的位置,以便画出标记 initPBFlag(); winkThread = new Thread(this); winkThread.start(); } // 默认使用默认背景色 protected Color getBackgroundColor() { return ColorUtil.getDefaultBgcolor(); } /** * 初始化32个棋子的工具提示 * */ private void init32PiecesTooltip() { 红車1.setToolTipText(PropertyReader.get("JU_TOOLTIP")); 红車2.setToolTipText(PropertyReader.get("JU_TOOLTIP")); 黑車1.setToolTipText(PropertyReader.get("JU_TOOLTIP")); 黑車2.setToolTipText(PropertyReader.get("JU_TOOLTIP")); 红炮1.setToolTipText(PropertyReader.get("PAO_TOOLTIP")); 红炮2.setToolTipText(PropertyReader.get("PAO_TOOLTIP")); 黑炮1.setToolTipText(PropertyReader.get("PAO_TOOLTIP")); 黑炮2.setToolTipText(PropertyReader.get("PAO_TOOLTIP")); 红馬1.setToolTipText(PropertyReader.get("MA_TOOLTIP")); 红馬2.setToolTipText(PropertyReader.get("MA_TOOLTIP")); 黑馬1.setToolTipText(PropertyReader.get("MA_TOOLTIP")); 黑馬2.setToolTipText(PropertyReader.get("MA_TOOLTIP")); 红兵1.setToolTipText(PropertyReader.get("BING_TOOLTIP")); 红兵2.setToolTipText(PropertyReader.get("BING_TOOLTIP")); 红兵3.setToolTipText(PropertyReader.get("BING_TOOLTIP")); 红兵4.setToolTipText(PropertyReader.get("BING_TOOLTIP")); 红兵5.setToolTipText(PropertyReader.get("BING_TOOLTIP")); 黑卒1.setToolTipText(PropertyReader.get("ZU_TOOLTIP")); 黑卒2.setToolTipText(PropertyReader.get("ZU_TOOLTIP")); 黑卒3.setToolTipText(PropertyReader.get("ZU_TOOLTIP")); 黑卒4.setToolTipText(PropertyReader.get("ZU_TOOLTIP")); 黑卒5.setToolTipText(PropertyReader.get("ZU_TOOLTIP")); 红仕1.setToolTipText(PropertyReader.get("HONGSHI_TOOLTIP")); 红仕2.setToolTipText(PropertyReader.get("HONGSHI_TOOLTIP")); 黑士1.setToolTipText(PropertyReader.get("HEISHI_TOOLTIP")); 黑士2.setToolTipText(PropertyReader.get("HEISHI_TOOLTIP")); 黑象1.setToolTipText(PropertyReader.get("HEIXIANG_TOOLTIP")); 黑象2.setToolTipText(PropertyReader.get("HEIXIANG_TOOLTIP")); 红相1.setToolTipText(PropertyReader.get("HONGXIANG_TOOLTIP")); 红相2.setToolTipText(PropertyReader.get("HONGXIANG_TOOLTIP")); 红帥.setToolTipText(PropertyReader.get("SHUAI_TOOLTIP")); 黑將.setToolTipText(PropertyReader.get("JIANG_TOOLTIP")); } /** * 无论是对战棋盘还是打谱棋盘,都需要初始化32颗棋子, * * 初始化32个棋子 * */ private void init32Pieces() { 红車1 = PieceUtil.createPiece(PieceId.HONGJU1); 红車2 = PieceUtil.createPiece(PieceId.HONGJU2); 红馬1 = PieceUtil.createPiece(PieceId.HONGMA1); 红馬2 = PieceUtil.createPiece(PieceId.HONGMA2); 红炮1 = PieceUtil.createPiece(PieceId.HONGPAO1); 红炮2 = PieceUtil.createPiece(PieceId.HONGPAO2); 红相1 = PieceUtil.createPiece(PieceId.HONGXIANG1); 红相2 = PieceUtil.createPiece(PieceId.HONGXIANG2); 红仕1 = PieceUtil.createPiece(PieceId.HONGSHI1); 红仕2 = PieceUtil.createPiece(PieceId.HONGSHI2); 红帥 = PieceUtil.createPiece(PieceId.SHUAI); 红兵1 = PieceUtil.createPiece(PieceId.BING1); 红兵2 = PieceUtil.createPiece(PieceId.BING2); 红兵3 = PieceUtil.createPiece(PieceId.BING3); 红兵4 = PieceUtil.createPiece(PieceId.BING4); 红兵5 = PieceUtil.createPiece(PieceId.BING5); 黑將 = PieceUtil.createPiece(PieceId.JIANG); 黑士1 = PieceUtil.createPiece(PieceId.HEISHI1); 黑士2 = PieceUtil.createPiece(PieceId.HEISHI2); 黑車1 = PieceUtil.createPiece(PieceId.HEIJU1); 黑車2 = PieceUtil.createPiece(PieceId.HEIJU2); 黑炮1 = PieceUtil.createPiece(PieceId.HEIPAO1); 黑炮2 = PieceUtil.createPiece(PieceId.HEIPAO2); 黑象1 = PieceUtil.createPiece(PieceId.HEIXIANG1); 黑象2 = PieceUtil.createPiece(PieceId.HEIXIANG2); 黑馬1 = PieceUtil.createPiece(PieceId.HEIMA1); 黑馬2 = PieceUtil.createPiece(PieceId.HEIMA2); 黑卒1 = PieceUtil.createPiece(PieceId.ZU1); 黑卒2 = PieceUtil.createPiece(PieceId.ZU2); 黑卒3 = PieceUtil.createPiece(PieceId.ZU3)
评论
    相关推荐
    • snowglobe-src-viewer-2.0.0-r0.tar.gz
      国外的开源游戏引擎,能够承载上千人,属于社交类的游戏
    • 彩球射手.rar
      该游戏适合于平时娱乐之用,娱乐时只需将大于等于三个的连在一块就得分,直到最地层触底为止.
    • 是男人就下一百层SHY.rar
      制作的第一款休闲类的手机游戏,适合初学者参考
    • Java拼图游戏源码.rar
      Java拼图游戏源码,挺经典是一个源码,内附解压密码
    • UnrealEngine3.tar.gz
      虚幻引擎3(UnrealEngine3)源代码,包含编辑器和引擎部分的源代码。比较完整。
    • Sudoku.zip
      数独题集 分上下册,上册为120道数独题,下册为答案 提高智力的最简单方式
    • Engine_v0.2.tar.gz
      一个巨cool的3D游戏引擎源代码。其0.3版本开始收费,卖10000美金,其功能有bsp/portal,particle system,physics,skelet-animation,energe unit,lod.四叉树/八叉树,shaders(glsl/hlsl)
    • tiaoqi.zip
      跳棋游戏
    • com_comprofiler.zip
      最受欢迎的Joomla社区用户管理收费插件 - Commnity Builder 1.2 RC2。 Community Builder suite (CB) extends the Joomla! user management system. Key features: extra fields in profile, enhanced registration workflows, user lists, connection paths between users, admin defined tabs and user profiles, image upload, front-end workflow management, integration with other components, like PMS, Newsletter, Forum, Galleries. Release 1.1 is compatible with all Joomla! 1.0.x (including 1.0.15) and Mambo 4.5.2-4.6.4. New CB version 1.2 RC brings Joomla 1.5 native compatibility (and keeping Joomla 1.0.x and Mambo 4.5.2-4.6.4 native compatibility), multi-criteria user searches, full field controls of core fields, ajax email and username checkers, new lost username/password form and many more features and fixes. Please see announcement on our homepage.
    • fchess_src.zip
      供两个人网上对弈的网络五子棋源码