Консольное приложение, которое рисует сердечко на C#

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Пролог

Данный код не является оптимизированным или идеализированным, он очень простой и будет понятен новичкам(кем я и являюсь), потому надеюсь на понимание). Ну и еще это приложение было создано скорей смеха ради.

Вот, что в результате получилось у меня:

СЕРДЕЧКО СО СЛОВОМ "LOVE"
СЕРДЕЧКО СО СЛОВОМ "LOVE"
ПОРВАНОЕ СЕРДЕЧКО ИЗ СИМВОЛОВ
ПОРВАНОЕ СЕРДЕЧКО ИЗ СИМВОЛОВ
ГИПЕРБОЛА С ОСЯМИ ИЗ ТОЧЕК
ГИПЕРБОЛА С ОСЯМИ ИЗ ТОЧЕК
КРУГ ИЗ ТОЧЕК
КРУГ ИЗ ТОЧЕК

Суть работы

У нас есть массив(экран) так же такой массив называют экранный буффер, который выводит на экран пиксели(символы) в определенном порядке. По-сути мы делаем программу которая рисует графики функций(сердечко это тоже просто график функции), минусом такого приложения же будет то, что графики будут крайне не точны, потому что содержат в себе только целые числа, но для вывода фигур по-типу круга, сердца вполне подходит, чем больше масштаб - тем точнее будет.

Создание

В самой консоле лучше выбрать шрифт "Raster Fonts 8x8" дабы ширина символа = высоте, чтоб в дальнейшем не делить высоту на два.

Console.Title = "HABR @Frog_cry_too"; //TITTLE КОНСОЛИ
Console.ForegroundColor = ConsoleColor.Red; //ЦВЕТ ТЕКСТА В КОНСОЛЕ

//ИНИЦИАЛИЗИРУЕМ МАССИВ
int height = 100, width = 100;
char[,] buffer = new char[height, width];

//ЗАДАЕМ РАЗМЕРЫ КОНСОЛИ(РАЗМЕРЫ ТУТ ОПРЕДЕЛЯЮТСЯ ПО-СИМВОЛЬНО, ТОЕСТЬ 'СИМВОЛ' = 1)
Console.SetWindowSize(width, height);
Console.SetBufferSize(width, height);

//ЗАПОЛНЯЕМ МАССИВ
for(int i = 0; i < height; i++)
{
    for(int j = 0; j < width; j++)
    {
        //ВЫВОДИМ ТОЧКУ В ЦЕНТР БУФФЕРА
        int x = j - width / 2;
        int y = -1 * (i - height / 2); //ПО-СКОЛЬКУ РЯДЫ МАССИВА БУДУТ ИНИЦИАЛИЗИРОВАТЬСЯ СВЕРХУ ВНИЗ (ОТ 0 ДО 100), НАМ НАДО ДОМНОЖИТЬ НА -1

         //ЗАДАЕМ УСЛОВИЕ ОТБОРА(ПИШЕМ ФУНКЦИИ ПО КОТОРОЙ БУДЕТ РИСОВАТЬСЯ ГРАФИК)
         //ПО-СКОЛЬКУ ФУНКЦИЯ БОЛЬШАЯ, Я ДЕЛЮ ЕЕ НА ДВЕ ЧАСТИ
         int firstPart = x * x;
         int secondPart = (int)((y - Math.Sqrt(Math.Abs(x))) * (y - Math.Abs(x)));

          int heartSize = 500; //РАЗМЕР СЕРДЦА

          if (firstPart + secondPart <= heartSize)
          {
              buffer[i, j] = '♥'; //ЗАПОЛНЯЕМ СЕРДЦЕ СИМВОЛОМ КОТОРЫМ ХОТИМ
          }
          else
          {
              buffer[i, j] = ' '; //ЗАПОЛНЯЕМ НЕ НУЖНУЮ НАМ ЧАСТЬ БУФФЕРА СИМВОЛОМ КОТОРЫМ ХОТИМ
          }
     }        
}

//ВЫВОДИМ МАССИВ
for(int i = 0; i < height; i++)
{
    for(int j = 0; j < width; j++)
    {
        Console.Write(buffer[i, j]);
    }
    Console.WriteLine();
}

//ЧТОБ НЕ ВЫВОДИЛСЯ ТЕКСТ ЗАВЕРШЕНИЯ ПРОГРАММЫ
Console.ReadLine();
/*РЕЗУЛЬТАТ
ПРАВДА ТУТ ОН ВЫТЯНУТЫЙ, ИБО ШРИФТ ДРУГОЙ), ЧТОБ ОН СТАЛ МЕНЬШЕ ПО
ВЫСОТЕ, ДОСТАТОЧНО X ПОДЕЛИТЬ НА НУЖНЫЙ КООФИЦИЕНТ, НУ ЭТО ПОНЯТНО ИЗ ОСНОВНЫХ
ПОНЯТИЯХ ПО ФУНКЦИЯМ*/


                                    ♥♥♥♥                     ♥♥♥♥
                                ♥♥♥♥♥♥♥♥♥♥♥♥             ♥♥♥♥♥♥♥♥♥♥♥♥
                               ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥       ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥
                             ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥   ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥
                             ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥ ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥
                            ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥
                           ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥
                           ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥
                           ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥
                          ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥
                          ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥
                          ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥
                          ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥
                          ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥
                          ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥
                          ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥
                          ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥
                           ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥
                           ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥
                           ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥
                           ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥
                            ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥
                            ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥
                            ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥
                             ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥
                             ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥
                              ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥
                              ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥
                               ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥
                               ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥
                                ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥
                                 ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥
                                 ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥
                                  ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥
                                   ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥
                                   ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥
                                    ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥
                                     ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥
                                      ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥
                                       ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥
                                        ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥
                                         ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥
                                          ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥
                                           ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥
                                            ♥♥♥♥♥♥♥♥♥♥♥♥♥
                                             ♥♥♥♥♥♥♥♥♥♥♥
                                              ♥♥♥♥♥♥♥♥♥
                                                ♥♥♥♥♥
                                                 ♥♥♥
                                                  ♥

ЭПИЛОГ

В моем коде я сделал методы вызова разных графиков - для легкого использования (ну и убрал их в отдельный класс). Возможно сделаю вторую часть где покажу код с отдельными методами и возможными вариациями закраски (ну и покажу их принцип).

Источник: https://habr.com/ru/post/585948/


Интересные статьи

Интересные статьи

Пока Рогозин отжигал мемчиками в соцсетях на тему американцев, которые обнаружили жизнь на Марсе в виде Рогозина, в это время самый большой и современный американский мар...
Как быстро определить, что на отдельно взятый сайт забили, и им никто не занимается? Если в подвале главной страницы в копирайте стоит не текущий год, а старый, то именно в этом году опека над са...
Периодически мне в разных вариантах задают вопрос, который «в среднем» звучит так: «что лучше: заказать интернет-магазин на бесплатной CMS или купить готовое решение на 1С-Битрикс и сделать магазин на...
Несмотря на то, что “в коробке” с Битриксом уже идут модули как для SOAP (модуль “Веб сервисы” в редакции “Бизнес” и старше), так и для REST (модуль “Rest API” во всех редакциях, начиная с...
От скорости сайта зависит многое: количество отказов, брошенных корзин. Согласно исследованию Google, большинство посетителей не ждёт загрузки больше 3 секунд и уходит к конкурентам. Бывает, что сайт ...