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

如何用Java组合2D图形在控制台打印伪3D长方体

控制台伪3D长方体实现方案(解决侧边连接问题)

要搞定控制台伪3D长方体的侧边连接,核心是把前后两个面的顶点按透视规则对应起来,逐行计算每行需要输出的空格、边框字符,而不是单独打印两个分离的图形。以下是具体实现思路和Java代码:

核心逻辑

伪3D效果依赖透视偏移:假设深度方向(z轴)每一层偏移2个空格(可调整),前端面(矩形)和远端面(平行四边形)的对应顶点通过斜线(/或\)连接,侧边的垂直部分用|填充,确保所有部分对齐。

完整实现代码

public class Console3DBox {
    public static void main(String[] args) {
        // 长方体参数:前端面宽度、前端面高度、前后深度、透视偏移步长
        int faceWidth = 10;
        int faceHeight = 5;
        int depth = 4;
        int offsetStep = 2;

        // 1. 打印顶部远端面(平行四边形)
        for (int z = 0; z < depth; z++) {
            printSpaces(z * offsetStep);
            if (z == 0) {
                // 远端面的上边框
                System.out.print("+");
                printChars("-", faceWidth);
                System.out.println("+");
            } else {
                // 远端面的侧边斜线
                System.out.print("/");
                printChars(" ", faceWidth);
                System.out.println("\\");
            }
        }

        // 2. 打印中间侧边连接 + 前端面主体
        for (int y = 0; y < faceHeight; y++) {
            // 先打印远端面的侧边竖线和内部空格
            printSpaces((depth - 1) * offsetStep);
            System.out.print("|");
            printChars(" ", faceWidth);
            System.out.print("|");

            // 打印连接前后端面的斜线/竖线
            if (y == 0) {
                // 顶部连接斜线
                for (int z = 0; z < depth; z++) {
                    System.out.print("/ ");
                }
            } else if (y == faceHeight - 1) {
                // 底部连接斜线
                for (int z = 0; z < depth; z++) {
                    System.out.print("\\ ");
                }
            } else {
                // 中间侧边的竖线
                for (int z = 0; z < depth; z++) {
                    System.out.print("| ");
                }
            }
            System.out.println();
        }

        // 3. 打印前端面下边框 + 底部连接斜线
        printSpaces((depth - 1) * offsetStep);
        System.out.print("+");
        printChars("-", faceWidth);
        System.out.print("+");
        for (int z = 0; z < depth; z++) {
            System.out.print("\\ ");
        }
        System.out.println();

        // 4. 打印底部远端面(平行四边形)
        for (int z = depth - 1; z > 0; z--) {
            printSpaces((z - 1) * offsetStep);
            System.out.print("\\");
            printChars(" ", faceWidth);
            System.out.println("/");
        }
    }

    // 打印指定数量的空格
    private static void printSpaces(int count) {
        for (int i = 0; i < count; i++) {
            System.out.print(" ");
        }
    }

    // 打印指定数量的目标字符
    private static void printChars(String c, int count) {
        for (int i = 0; i < count; i++) {
            System.out.print(c);
        }
    }
}

关键细节说明

  • 透视偏移:用offsetStep控制每一层深度的空格偏移,数值越大3D效果越明显,可根据控制台宽度调整。
  • 侧边连接:
    • 顶部和底部的连接用/和\斜线,精准对应前后端面的上下顶点;
    • 中间行的连接用|竖线,模拟长方体的垂直侧边;
  • 逐行对齐:整个图形按行输出,每一行都提前计算好远端面的偏移、侧边连接字符、前端面的位置,确保所有部分无缝衔接。

你可以调整faceWidth、faceHeight、depth和offsetStep参数,生成不同大小和透视效果的长方体。

内容的提问来源于stack exchange,提问作者Completely Zero.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 15:53:08