You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java 2D绘制双陆棋棋盘:仅用drawLine实现网格的难题

问题:单循环结合drawLine绘制双陆棋棋盘网格

需要仅通过drawLine方法绘制双陆棋的9×9网格,要求避免分开处理水平/垂直线时的坐标变量干扰,且不能使用矩形绘制。当前代码通过两个独立循环分别绘制水平线和竖直线,期望实现边长160px、单元格20px的网格。

现有代码:

int x = 25;
int y = 25;

for (int i = 0; i <=8; i++) {
    g2d.drawLine(x, y, x+160, y);
    y+=20;
}

x = 25;
y = 25;

for (int i = 0; i <=8; i++) {
    g2d.drawLine(x, y, x, y+160);
    x+=20;
}

解决方案

Java的drawLine每次只能绘制单条直线,因此必须多次调用,但可以将水平和垂直线的绘制合并到同一个循环中,避免重复初始化坐标变量,消除坐标干扰问题:

int startX = 25;
int startY = 25;
final int CELL_SIZE = 20;
final int GRID_LENGTH = 160; // 8个单元格 × 20px

for (int i = 0; i <= 8; i++) {
    // 绘制第i条水平线
    g2d.drawLine(startX, startY + i * CELL_SIZE, startX + GRID_LENGTH, startY + i * CELL_SIZE);
    // 绘制第i条垂直线
    g2d.drawLine(startX + i * CELL_SIZE, startY, startX + i * CELL_SIZE, startY + GRID_LENGTH);
}

说明

  • 借助循环变量i计算每条线的偏移量,无需手动维护x/y变量的递增,避免了变量重置和干扰问题
  • 用常量定义单元格大小和网格长度,代码更易读、易维护
  • 单个循环完成所有网格线的绘制,逻辑更紧凑

内容的提问来源于stack exchange,提问作者Muhammed Argun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 07:08:14