有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在Java中相邻打印ASCII行?

我不知道这是否是ASCII本身,但我真的想不出更好的术语

所以我为字母表的每个字母都有一个字符串,作为它的样式化版本

String asciiA = """
       █████████ \r
      ███░░░░░███\r
     ░███    ░███\r
     ░███████████\r
     ░███░░░░░███\r
     ░███    ░███\r
     █████   █████\r
    ░░░░░   ░░░░░\r
                 \r
                 \r
                 \r""";
String asciiB = """
     ███████████\r
    ░░███░░░░░███\r
     ░███    ░███\r
     ░██████████\r
     ░███░░░░░███\r
     ░███    ░███\r
     ███████████\r
    ░░░░░░░░░░░ \r
                \r
                \r
                \r""";

像这样

我这样做是为了当玩家按下AB键时,这些字母的样式化版本会显示在屏幕上。但问题是,即使我对字符使用System.out.print();和\r,它们也不会显示在同一行上。我想这是因为这些是特殊的角色。有人知道吗


共 (1) 个答案

  1. # 1 楼答案

    这是因为当你想写你的AB风格化版本时,你需要先打印A的“第一行”,然后是B的“第一行”,然后是秒,等等

    因此,最好是(正如@johnny所建议的)为你的角色设置一系列“行”。比如:

    String []asciiB = {
        " ███████████ ",
        "░░███░░░░░███", 
        ...
    };
    

    然后,如果要打印AB以并行地逐行遍历这两个数组:

    for (int i=0; i<asciiA.length; i++)
        System.out.println(asciiA[i]+" "+asciiB[i]);
    

    通过从字符到打印再到行数组的映射,对其进行了概括:

    Map<Character,String[]> ascii = new HashMap<>();
    ascii.put('A',asciiA);
    ...
    
    String s = "ABCD";
    for (int i=0; i<numberOfLinesPerChar; i++)
        for (char c: s) {
            System.out.print(ascii.get(c)[i]);
            System.out.print(' '); // separator
        }
        System.out.println(); // end of line
    }