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日
最近浏览更多
微信网友_6925124216311808
3月27日
暂无贡献等级
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日