首页>代码>分享网上找到的一个中国象棋源码>/中国象棋/src/com/yaoyun/chess/entity/ChessBoard.java
package com.yaoyun.chess.entity;

import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Stroke;

import com.yaoyun.chess.util.FontUtil;

public class ChessBoard {

	/*
	 * 功能: 画出象棋的棋盘
	 */
	public void drawChess(Graphics g) {
		// 转成2D模式
		Graphics2D g2d = (Graphics2D) g;

		// 得到当前的画刷
		Stroke stroke = g2d.getStroke();
		g2d.setColor(Color.BLACK);

		// 设置新的画刷
		g2d.setStroke(new BasicStroke(4));
		g2d.drawRect(49, 49, 501, 561);

		g2d.setStroke(new BasicStroke(2));
		g2d.drawLine(60, 60, 540, 60);
		g2d.drawLine(60, 300, 540, 300);
		g2d.drawLine(60, 360, 540, 360);
		g2d.drawLine(60, 600, 540, 600);
		g2d.drawLine(60, 60, 60, 600);
		g2d.drawLine(540, 60, 540, 600);

		// 画黑炮的位置
		drawFlag(g2d, true, true, 120, 180);
		drawFlag(g2d, true, true, 480, 180);

		// 画红炮的位置
		drawFlag(g2d, true, true, 120, 480);
		drawFlag(g2d, true, true, 480, 480);

		// 画兵的位置
		drawFlag(g2d, false, true, 60, 240);
		for (int x = 180; x <= 480; x += 120) {
			drawFlag(g2d, true, true, x, 240);
		}
		drawFlag(g2d, true, false, 540, 240);

		// 画卒的位置
		drawFlag(g2d, false, true, 60, 420);
		for (int x = 180; x <= 480; x += 120) {
			drawFlag(g2d, true, true, x, 420);
		}
		drawFlag(g2d, true, false, 540, 420);

		// 将画刷复原
		g2d.setStroke(stroke);

		// 画棋盘格子
		g.setColor(Color.BLACK);
		for (int i = 1; i <= 10; i++) {
			if (i <= 9) {
				g.drawLine(60 * i, 60, 60 * i, 600);
			}
			g.drawLine(60, 60 * i, 540, 60 * i);
		}

		// 画河界
		g.setColor(new Color(216, 196, 160));
		g2d.fillRect(61, 301, 478, 58);
		g2d.setColor(Color.BLACK);
		g2d.setFont(FontUtil.myFont2);
		g2d.drawString("河", 135, 340);
		g2d.drawString("界", 435, 340);

		// 画交叉线
		g2d.drawLine(240, 60, 360, 180);
		g2d.drawLine(240, 180, 360, 60);
		g2d.drawLine(240, 480, 360, 600);
		g2d.drawLine(240, 600, 360, 480);
	}

	/*
	 * 功能:绘制指定棋子位置的边框 
	 * 参数leftFlag:是否绘制左边图形 
	 * 参数rightFlag:是否绘制右边图形 
	 * 参数x,y:表示绘制图形的中心坐标
	 */
	private void drawFlag(Graphics2D g2d, boolean leftFlag, boolean rightFlag,
			int x, int y) {
		if (leftFlag) {
			g2d.drawLine(x - 5, y - 20, x - 5, y - 5);
			g2d.drawLine(x - 5, y + 20, x - 5, y + 5);
			g2d.drawLine(x - 20, y - 5, x - 5, y - 5);
			g2d.drawLine(x - 20, y + 5, x - 5, y + 5);
		}
		if (rightFlag) {
			g2d.drawLine(x + 5, y - 20, x + 5, y - 5);
			g2d.drawLine(x + 5, y + 20, x + 5, y + 5);
			g2d.drawLine(x + 5, y + 5, x + 20, y + 5);
			g2d.drawLine(x + 5, y - 5, x + 20, y - 5);
		}
	}

}
最近下载更多
哦哦怕怕  LV11 2024年10月25日
gaotieyou  LV5 2024年3月4日
HattaDeer  LV1 2023年11月19日
syh1234569  LV1 2023年7月11日
555555556  LV1 2023年6月7日
紫罗兰的花语  LV2 2023年6月6日
微信网友_6444139264921600  LV8 2023年4月27日
象棋选手  LV1 2023年4月24日
123324df  LV1 2023年4月11日
177771717717  LV1 2023年3月8日
最近浏览更多
上善若水丶丶 3月31日
暂无贡献等级
dengjing  LV5 2月4日
hifriend2000 1月7日
暂无贡献等级
哦哦怕怕  LV11 2024年10月25日
破剑茶寮  LV4 2024年6月26日
3334004690  LV10 2024年6月22日
谭亚朋123  LV2 2024年4月29日
69hertz  LV1 2024年4月27日
暂无贡献等级
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友