Курсы по программированию

Формула программиста

основатель — Волосатов Евгений Витольдович
Поздравляю с 1 сентября! Система начисления Байтов работает.

Шахматы по сети / Классы. Консольная доска

  • Мы приступаем к написанию тестов для нашей библиотеки.
    На этом уроке мы создадим функционал для отображения доски
    и исправим старую ошибку копипаста.
  • Дата отправки отчёта: 8 мая 2018 г.
  • Задание выполнено: за 2 час. 16 мин.
  • Чему научился: Думаю, что сложнее всего программировать пешку из-за учёта возможности первого хода на 2 клетки, превращения в фигуру и взятия на проходе, ещё сложными должны быть короли и ладьи из-за учёта рокировки, а король ещё и из-за расчёта шаха и мата.
    Далее по сложности идёт конь из-за возможности перепрыгивания фигур и ферзь из-за большого числа направлений движения.
    А самым простым, по моему мнению, должен быть слон.

    А по части текущего урока я решил развить тему украшательства и сделал отображение цвета клеток :)
    Возможно есть более элегантный вариант расчёта цвета для точки, но для данной строки я лучше не придумал :(
    Чтобы не писать всё время Console.ReadLine()/WriteLine() и т.д. я вначале в списке ссылок на используемые namespace добавляю using static System.Console;
    Привожу метод Print() вместе с методом ChessToAscii(), так как отображение цвета точек зависит от чётности индекса знака в строке:

            static string ChessToAscii(Chess chess)
            {
                StringBuilder sb = new StringBuilder();
                sb.AppendLine("    a b c d e f g h  ");
                sb.AppendLine("  +-----------------+");
                for (int y = 7; y >= 0; y--)
                {
                    sb.Append(y + 1);
                    sb.Append(" | ");
                    for (int x = 0; x < 8; x++) sb.Append(chess.GetFigureAt(x, y) + " ");
                    sb.AppendLine("| " + (y + 1));
                }
                sb.AppendLine("  +-----------------+");
                sb.AppendLine("    A B C D E F G H  ");
                return sb.ToString();
            }

            static void Print(string text)
            {
                ConsoleColor old = ForegroundColor;
                int c = 0;
                for (int i = 0; i< text.Length; i++, c++)
                {
                    if (text[i] == ' ') c--;
                    if (text[i] >= 'a' && text[i] <= 'z') ForegroundColor = ConsoleColor.Red;
                    else if (text[i] >= 'A' && text[i] <= 'Z') ForegroundColor = ConsoleColor.White;
                    else if (text[i] == '.') ForegroundColor = ((i + c) % 2 == 0) ? ConsoleColor.Red : ConsoleColor.White;
                    else ForegroundColor = ConsoleColor.Cyan;
                    Write(text[i]);
                }
                ForegroundColor = old;
            }
  • Оценка видео-уроку:
Отчёт от 10080 за Шахматы по сети / Классы. Консольная доска




Оцени работу

 
Сохранить страницу:

1. --
Евгений Волосатов
Евгений Волосатов
ответить
→  FireWolf  # Шахматы по сети / Классы. Консольная доска / 2018-05-08 14:56

Красивое решение.
А я как-то и не задумывался, что можно "Console" вынести в using и не писать его постоянно...


9752. --
chokayes
chokayes
ответить
→  Евгений Волосатов  # Шахматы по сети / Классы. Консольная доска / 2018-05-08 18:18

эта фишка появилась в C# 6.0


10558. --
Иван Воронин
Иван Воронин
ответить
→  FireWolf  # Шахматы по сети / Классы. Консольная доска / 2018-05-09 01:11

Конь самый простой, так как он перепрыгивает фигуры и ему только нужно проверить, можно ли приземлиться туда, куда он хочет прыгнуть, тот же слон ещё проверяет препятствия на пути следования до цели. По поводу украшательств, цветные клетки реализовали через BackgroundColor, намного веселее выглядит, чем маленькие точки.


9980. --
Timoha
Timoha
ответить
→  FireWolf  # Шахматы по сети / Классы. Консольная доска / 2018-05-10 07:57

Насчет рефакторинга с Console, ну ты прям гений! Спасибо!


10080. --
FireWolf
FireWolf
ответить
→  Timoha  # Шахматы по сети / Классы. Консольная доска / 2018-05-10 11:42

Эта возможность ставить "using static" появилась, по-моему, только в C# 7.0. Я про неё прочитал в блоге с обзором нововведений. Очень удобно!


  • Отчёт оценивали:
    17947Dmitry Sinitsin+1   16533Андрей Шевченко+1   1Евгений Волосатов+1   17443WildOrc+1   3922Александр+1   2146Иван+1   17425ser2018+1   162Андрей+1   3850Григорий+1   5502Антон Кравченко0   4988Александр+1   18392Programmist0   791Валерий Жданов+1   17022Константин Мельников+1   9752chokayes+1   4814Дмитрий+1   10558Иван Воронин+1   17606Виктор+1   3747Сергей+1   4395Денис+1   16066Bodrik_torf+1   9980Timoha+1   16218Дмитрий+1   5394Anton+1   459Сергей Сергеевич+1   6452Кирилл Шмойлов+1   10895Danil42Russia+1   17255Слава+1   10494Алексей В.+1   18249Александр+1   Посетитель+1   Посетитель+1   10717OloloCode+1  

Начинаем практику по языку C#





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

После заполнения формы ты будешь подписан на рассылку «C# Вебинары и Видеоуроки», у тебя появится доступ к видеоурокам и консольным задачам.

Несколько раз в неделю тебе будут приходить письма — приглашения на вебинары, информация об акциях и скидках, полезная информация по C#.

Ты в любой момент сможешь отписаться от рассылки.


Научился: Выводить цветные буквы в консоли
Трудности: Новая студия просто супер.. У меня была ошибка.... И новая студия показала мне - где! (ну + мозги конечно) Ваще супер! Какую фигуру сложнее всего? Пешку. Из-за взятия на проходе. Какую проще всего? Все остальные. PS Цветная доска... У-и-и-и-и-и!!!



Научился: Пропустил в классе инициализацию, искал ошибку
Трудности: Наверное программировать коня сложнее