Мы приступаем к написанию тестов для нашей библиотеки. На этом уроке мы создадим функционал для отображения доски и исправим старую ошибку копипаста.
Дата отправки отчёта:
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; }
Конь самый простой, так как он перепрыгивает фигуры и ему только нужно проверить, можно ли приземлиться туда, куда он хочет прыгнуть, тот же слон ещё проверяет препятствия на пути следования до цели. По поводу украшательств, цветные клетки реализовали через BackgroundColor, намного веселее выглядит, чем маленькие точки.
Научился: Выводить цветные буквы в консоли Трудности: Новая студия просто супер.. У меня была ошибка.... И новая студия показала мне - где! (ну + мозги конечно) Ваще супер!
Какую фигуру сложнее всего? Пешку. Из-за взятия на проходе. Какую проще всего? Все остальные.
PS Цветная доска... У-и-и-и-и-и!!!