Задачи
August 29, 2023

Design Bitmap game

Данный алгоритм использует многострочную строку в качестве битовой карты - двумерного изображения с двумя возможными цветами для каждого пикселя - для определения того, как она должна отображать сообщение пользователя.

В этом растровом изображении символы пробела представляют собой пустое пространство, а все остальные символы заменяются символами сообщения пользователя.

Попробуйте поэкспериментировать с различными сообщениями, чтобы увидеть, как выглядят результаты!

Реализация

internal class Bitmap
{
        private const string Map =
@"
....................................................................
   **************   *  *** **  *      ******************************
  ********************* ** ** *  * ****************************** *
 **      *****************       ******************************
          *************          **  * **** ** ************** *
           *********            *******   **************** * *
            ********           ***************************  *
   *        * **** ***         *************** ******  ** *
               ****  *         ***************   *** ***  *
                 ******         *************    **   **  *
                 ********        *************    *  ** ***
                   ********         ********          * *** ****
                   *********         ******  *        **** ** * **
                   *********         ****** * *           *** *   *
                     ******          ***** **             *****   *
                     *****            **** *            ********
                    *****             ****              *********
                    ****              **                 *******   *
                    ***                                       *    *
                    **     *                    *
....................................................................
";

        public const string Name = "BitMap";
        public const string Description = "BitMap Game";

        public void Play()
        {
            Console.WriteLine(Name);
            Console.WriteLine(Description);

            while (true)
            {
                Console.WriteLine("\nWanna play?! Let's play !");
                Console.WriteLine("Enter the message to display with the bitmap.");

                string message = Console.ReadLine();
                if (!string.IsNullOrEmpty(message))
                {
                    for (int i = 0; i < Map.Length; i++)
                    {
                        if (Map[i] != '*')
                        {
                            Console.Write(Map[i]);
                        }
                        else
                        {
                            Console.Write(message[i % message.Length]);
                        }
                    }
                }

                Console.WriteLine("Wanna play again?!");
                var answer = Console.ReadLine();
                if (answer == null || !answer.Contains("y", StringComparison.OrdinalIgnoreCase))
                {
                    break;
                }
            }

            Console.WriteLine("Thanks for this game!");
        }
 }

https://github.com/unilecs/ugames/blob/main/games/Bitmap.cs

Play-test

https://dotnetfiddle.net/CQ70vY