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); } } }

微信网友_7550620088864768 LV1
6月16日
哦哦怕怕 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日

微信网友_7550620088864768 LV1
6月16日
kewore
6月12日
暂无贡献等级
林黛玉倒拔鲁智深 LV1
4月9日
上善若水丶丶
3月31日
暂无贡献等级
dengjing LV5
2月4日
hifriend2000
1月7日
暂无贡献等级
哦哦怕怕 LV11
2024年10月25日
破剑茶寮 LV4
2024年6月26日
3334004690 LV11
2024年6月22日
谭亚朋123 LV2
2024年4月29日