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日

林黛玉倒拔鲁智深 LV1
4月9日
上善若水丶丶
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日
微信网友_6925124216311808
2024年3月27日
暂无贡献等级