Сравнение ANSI-цветных строк в Java - PullRequest
0 голосов
/ 06 января 2020

Сейчас я делаю линкор

Это изображение игрового поля:

enter image description here

Для испытаний мы глядя на плитку (1,1). Это синяя плитка solid в правом верхнем углу. Solid Синий имеет одинаковый цвет фона и переднего плана, содержит скрытую «~», другой тип плитки содержит тот же цвет фона, но другой цвет переднего плана, все еще содержащий «~».

I нужен метод, чтобы определить погоду или нет, выбранный тайл содержит тильду или нет, например: если игрок поражает вражеский корабль, этот тайл может быть изначально помечен буквой «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");
    }
}

}

[Вывод: Некорректное]

1 Ответ

0 голосов
/ 06 января 2020

Честно говоря, я не слишком уверен в себе. Но, вероятно, вы ищете «содержит» метод? Как:

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

Однако, если эта игра не является простой «песочницей», я действительно рекомендую подумать над комментарием @ MadProgrammer.

...