比较 Java 中的 ANSI 彩色字符串

Comparing ANSI-Colored Strings in Java

我正在制作战舰

这是游戏板的图片:

对于测试,我们正在查看图块 (1,1),它是右上角的实心蓝色图块。 Solid Blue 的背景色和前景色相同,包含一个隐藏的“~”,另一种类型的图块包含相同的背景色,但前景色不同,仍然包含“~”。

我需要一种方法来确定所选方块是否包含波浪号的天气,例如:如果玩家击中敌方船只,该方块最初可能在另一端标记为 "S" ,所以计算机会知道被撞的是船而不是水。但是,我找不到一种方法来查看两个彩色字符串是否相等。

下面是一组示例代码,它创建了两个完全相同(具有不同颜色)但无法识别的图块:

class Test{
public static void main(String[] args){
    String Blank_Tile_Color = (char)27+"[34;44m";
    String Tile_Color = (char)27+"[36;44m";
    String Clear = (char)27+"[0m";

    String Tile1 = Tile_Color+"~";
    String Tile2 = Blank_Tile_Color+"~";

    System.out.println(Tile1);
    System.out.println(Tile2);


    if (Tile1.equals(Tile2)){
        System.out.println(Clear+"Correct");
    }
    else{
        System.out.println(Clear+"Incorrect");
    }
}

}

[输出:不正确]

老实说,我不太自信。但可能您正在寻找 "contains" 方法? 喜欢:

String blankTileColor = (char) 27 + "[34;44m";
String tileColor = (char) 27 + "[36;44m";
String clear = (char) 27 + "[0m";

String tile1 = tileColor + "~";
String tile2 = blankTileColor + "~";
String tile3 = clear;

System.out.println(tile1.contains("~")); // true
System.out.println(tile2.contains("~")); // true
System.out.println(tile3.contains("~")); // false

但是,如果这个游戏不是简单的"sandbox",我真的建议您考虑一下@MadProgrammer 的评论。