Печать ascii art отразилась по горизонтали с помощью c # - PullRequest
0 голосов
/ 24 ноября 2018

Я пытаюсь напечатать ASCII-арт для проекта.Вот как это выглядит:

var array = new string[]
        {
                @"   ```````     `..`.``            ``.``.`         ",
                @"   +ooooo-     -ooooo+            :ooooo/         ",
                @"   +ooooo-     -ooooo+            :oooso:         ",
                @"   +ooooo-     .+oo++/            :++oo+:         ",
                @"   +ooooo-     `......```..```.```......`         ",
                @"   +ooooo-     `.`......`..``..``.....`.`         ",
                @"   +ooooo-     `.........`....`.........`         ",
                @"   +ooooo-     /mmmmmmmmmmmmmmmmmm+.....`         ",
                @"   +ooooo-     /MMMMMMMMMMMMMMMMMM+`....`         ",
                @"   +ooooo-     /MMMMMMMMMMMMMMMMMM+.....`         ",
                @"   +ooooo-     .+++++oMMMMMMo++//+-`....`         ",
                @"   +ooooo-     ``...`-MMMMMM-....`......`         ",
                @"   +ooooo-     ``...`-MMMMMM-...........`         ",
                @"   ::::::.``````......ssssss/::::::::::::----:-   ",
                @"   `....................`...+ooooooooooooooooo+   ",
                @"   `...............`........ooooooo+oooooooooo+   ",
                @"   `````````````............+ooooo+/////+ooooo+   ",
                @"               `.....`.....`+oooo+:.`...:ooooo+   ",
                @"               `............+ooooo:````.:ooooo+   ",
                @"               ``....`..`...+ooooo:.....:ooooo+   ",
                @"               `....``...`..+ooooooooooooooooo+   ",
                @"               `............oooooooooooooooooo+   ",
                @"               `......````..++++++oooooo++oo++/   ",
                @"               `...```      ```````.....``````    ",
                @"               `.....`            `....``         ",
                @"               `.....`            `.``.``         "
        };
foreach (string line in arr)
    Console.WriteLine(line);

Пока это работает, но я хотел иметь возможность печатать его зеркально по горизонтали, например:

Зеркальное изображение:

Я не могу найти способ сделать это.Я пробовал Array.Reverse, но он печатает изображение вверх ногами.

Ответы [ 2 ]

0 голосов
/ 24 ноября 2018

Создайте для себя метод расширения, чтобы перевернуть строку, чтобы вы могли перебирать массив и переворачивать каждую строку отдельно

public static class Extensions
{
    public static string Reverse(this string s)
    {
        var charArray = s.ToCharArray();
        Array.Reverse(charArray);
        return new string (charArray);
    }
}

Использование

foreach (string line in array)
    Console.WriteLine(line.Reverse());

Выход

         `.``.``            ``.`..`     ```````   
         /ooooo:            +ooooo-     -ooooo+   
         :osooo:            +ooooo-     -ooooo+   
         :+oo++:            /++oo+.     -ooooo+   
         `......```.```..```......`     -ooooo+   
         `.`.....``..``..`......`.`     -ooooo+   
         `.........`....`.........`     -ooooo+   
         `.....+mmmmmmmmmmmmmmmmmm/     -ooooo+   
         `....`+MMMMMMMMMMMMMMMMMM/     -ooooo+   
         `.....+MMMMMMMMMMMMMMMMMM/     -ooooo+   
         `....`-+//++oMMMMMMo+++++.     -ooooo+   
         `......`....-MMMMMM-`...``     -ooooo+   
         `...........-MMMMMM-`...``     -ooooo+   
   -:----::::::::::::/ssssss......``````.::::::   
   +ooooooooooooooooo+...`....................`   
   +oooooooooo+ooooooo........`...............`   
   +ooooo+/////+ooooo+............`````````````   
   +ooooo:...`.:+oooo+`.....`.....`               
   +ooooo:.````:ooooo+............`               
   +ooooo:.....:ooooo+...`..`....``               
   +ooooooooooooooooo+..`...``....`               
   +oooooooooooooooooo............`               
   /++oo++oooooo++++++..````......`               
    ``````.....```````      ```...`               
         ``....`            `.....`               
         ``.``.`            `.....`

Полная демонстрация здесь

0 голосов
/ 24 ноября 2018

Array.Reverse не делает ваш массив обращенным, но вместо этого возвращает обратную версию вашего массива.Так что просто установите его в качестве новой переменной и напечатайте:

foreach (string line in arr.Reverse())
    Console.WriteLine(line);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...