首页>代码>分享网上找到的一个中国象棋源码>/中国象棋/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);
		}
	}

}
最近下载更多
gaotieyou  LV5 3月4日
HattaDeer  LV1 2023年11月19日
syh1234569  LV1 2023年7月11日
555555556  LV1 2023年6月7日
紫罗兰的花语  LV2 2023年6月6日
微信网友_6444139264921600  LV6 2023年4月27日
象棋选手  LV1 2023年4月24日
123324df  LV1 2023年4月11日
177771717717  LV1 2023年3月8日
快乐的程序员  LV25 2023年1月21日
最近浏览更多
暂无贡献等级
xiaozhi丶  LV14 3月24日
gaotieyou  LV5 3月4日
吃茶去  LV1 2月29日
ClydeSon  LV5 2023年12月28日
HattaDeer  LV1 2023年11月19日
微信网友_6736227375157248  LV1 2023年11月15日
hmx1688 2023年10月12日
暂无贡献等级
iloveyou66  LV2 2023年9月1日
liuxijun  LV2 2023年8月2日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友