简介:
中国象棋是起源于中国的一种棋,属于二人对抗性游戏的一种,在中国有着悠久的历史。由于用具简单,趣味性强,成为流行极为广泛的棋艺活动。
中国象棋是中国棋文化,也是中华民族的文化瑰宝,它源远流长,趣味浓厚,基本规则简明易懂。中国象棋在中国的群众基础远远超过围棋,是普及最广的棋类项目,中国象棋已流传到十几个国家和地区。
中国象棋使用方形格状棋盘,圆形棋子共有32个,红黑二色各有16个棋子,摆放和活动在交叉点上。双方交替行棋,先把对方的将(帅)“将死”的一方获胜。
主要需求
按照中国象棋的规则,实现红黑棋对战,两个玩家自己玩。
实现棋盘
项目目录结构
部分实现代码
画图类:
/**
* @author gjt
* @version 1.0.0
* @description 画图类
*/
public class Canvas extends JPanel {
public static final int ROW_COUNT = 10;//棋盘行数
public static final int COLUMN_COUNT = 9;//棋盘列数
private int[][] map = new int[ROW_COUNT][COLUMN_COUNT];
private Font font;
public static final int BLACK = 1000;
public static final int WHITE = 0;
private boolean isBlack = false; //当前是谁下子
private int selectColumn = -1;
private int selectRow = -1;
private ChessManager manager = new ChessManager();
private Image mainGif;
public Canvas(){
//棋盘为10行9列,默认就好,不用改
font = new Font("宋体",Font.BOLD,30);
initMap();
addMouseListener(new MouseAdapter(){
@Override
public void mouseClicked(MouseEvent e){
//super.mouseClicked(e);
//System.out.println(e.getButton());
if(e.getButton()==MouseEvent.BUTTON1){
int x = e.getX();
int y = e.getY();
//System.out.println(e.getX()+","+e.getY()+"["+x+","+y+"]");
int r = (y - 25) /58;
int c = (x - 25) /58;
//System.out.println("r = "+r+", c = "+c);
//选子
if(selectColumn == -1&&map[r][c]!=0){
if(RangeChecker.selectInRange(map,r,c,isBlack)){
//isBlack 是 红方
selectColumn = c;
selectRow = r;
repaint();
}
else{
showFail("请选择己方棋子");
}