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

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

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

Шахматы по сети / Алгоритмы. Генератор ходов

  • Мы продолжаем написание шахматных алгоритмов.
    На этом уроке мы начинаем реализацию проверок
    можно ли пойти с одной клетки на другую.
  • Дата отправки отчёта: 11 мая 2018 г.
  • Задание выполнено: за 1 час. 18 мин.
  • Чему научился: Попрактиковался в использовании yield. В общих чертах представляю, что это и как это работает (что-то вроде синтаксического сахара для автогенерации Observer/Observable (?)), но всегда сложно понять, где именно это стоит применить.

    Ещё довёл до ума красивое отображение шахматного поля! :)

    Если интересно, то я его вывожу вот так (ещё я тут использую нововведение в C# 7.0 - вложенные функции):

            static string ChessToAscii(Chess chess)
            {
                var sb = new StringBuilder();
                sb.AppendLine("    a b c d e f g h  ");
                sb.AppendLine("  +----------------+");
                for (int y = 7; y >= 0; y--)
                {
                    sb.Append(" ");
                    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)
            {
                OutputEncoding = Encoding.Unicode;
                ConsoleColor fcOld = ForegroundColor;
                ConsoleColor bcOld = BackgroundColor;
                int c = 0;
                for (int i = 0; i < text.Length; i++, c++)
                {
                    if (text[i] >= 'a' && text[i] <= 'z')
                    {
                        ForegroundColor = ConsoleColor.Red;
                    }
                    else if (text[i] >= 'A' && text[i] <= 'Z')
                    {
                        ForegroundColor = ConsoleColor.DarkYellow;
                    }
                    else ForegroundColor = ConsoleColor.Cyan;
                   
                    PrintChar(text[i], i);
                }

                ForegroundColor = fcOld;
                BackgroundColor = bcOld;

                void PrintChar(char f, int i)
                {
                    if (i > 49 && i < 209)
                    switch (f)
                    {
                        case 'K' : SetBGColor(); Write('\u2654'); break;
                        case 'Q' : SetBGColor(); Write('\u2655'); break;
                        case 'R' : SetBGColor(); Write('\u2656'); break;
                        case 'B' : SetBGColor(); Write('\u2657'); break;
                        case 'N' : SetBGColor(); Write('\u2658'); break;
                        case 'P' : SetBGColor(); Write('\u2659'); break;
                        case 'k' : SetBGColor(); Write('\u265A'); break;
                        case 'q' : SetBGColor(); Write('\u265B'); break;
                        case 'r' : SetBGColor(); Write('\u265C'); break;
                        case 'b' : SetBGColor(); Write('\u265D'); break;
                        case 'n' : SetBGColor(); Write('\u265E'); break;
                        case 'p' : SetBGColor(); Write('\u265F'); break;
                        case '.' : SetBGColor(); Write("  "); break;
                        default: Write(f); break;
                    }
                    else Write(f);
                    BackgroundColor = bcOld;

                    void SetBGColor()
                    {
                        BackgroundColor = (i % 2 == 0) ? ConsoleColor.Gray : ConsoleColor.DarkGray;
                    }
                }
            }
  • Что было сложным: Доделать красивый вывод шахматного поля.
  • Оценка видео-уроку:
Отчёт от 10080 за Шахматы по сети / Алгоритмы. Генератор ходов


Отчёт от 10080 за Шахматы по сети / Алгоритмы. Генератор ходов




Оцени работу

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

1. --
Евгений Волосатов
Евгений Волосатов
ответить
→  FireWolf  # Шахматы по сети / Алгоритмы. Генератор ходов / 2018-05-11 21:27

рекомендую обратить внимание на курс "Итератор", он 100 рублей стоит.


  • Отчёт оценивали:
    17947Dmitry Sinitsin+1   5394Anton+1   791Валерий Жданов+1   17606Виктор+1   1Евгений Волосатов+1   17443WildOrc+1   3747Сергей+1   3922Александр+1   6452Кирилл Шмойлов+1   10895Danil42Russia+1   11582Родион+1   1570Сарапульцев Константин+1   8275Tekashnik+1   10936Сергей+1   14008Сергей +1   17255Слава+1   10494Алексей В.+1   9980Timoha+1   4395Денис+1   18249Александр+1   16218Дмитрий+1   16066Bodrik_torf+1   459Сергей Сергеевич+1   9971Юрий+1   3850Григорий+1  

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





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

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

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

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


Научился: Хочу выразить благодарность Евгению Витольдовичу ! Отличный курс, отличный метод преподавания !



Научился: Сделал функцию Chess().YieldValidMoves(); Добавил статичную функцию Square().YieldBoardSquares(), функцию Board().YieldMyFigureOnSquares(); Переопределил функцию FigureMoving().ToString(); Протестировал работу добавленного функционала.