На этом уроке мы исправим одну ошибку и добавим ещё один вариант метода GetFigureAt(string xy). Ваше задание - записать подробный отзыв об алгоритмической части проекта.
Дата отправки отчёта:
21 июля 2018 г.
Задание выполнено: за
2 час. 59 мин.
Чему научился:
Передавать данные о ходе через FEN, использовать это для расстановки фигур на доске Board. На уроке интересным образом этот FEN распарсили, там же сделали метод Init() простой, удобочитаемый, а значит понятный, тоже понравилось. Научился обратной передачи данных, как упаковать 11111111 в 8ку для генерации FEN. Познакомился с Yield. Знал о нем раньше, но не понимал как работает, разобрался. Создали вспомогательные функции DeltaXY, AbsDeltaXY, SignXY для определения правильности хода фигур. Маленькие, но очень полезные, очень легко с их помощью конструировать ходы для разных фигур. На примере движения короля, реализовал движение коня и угадал с первого раза. Следом реализовали движение дальнобойных фигур Ферзя, Ладьи (Ферзь, ограниченный по диагонали), Слона (Ферзь ограниченный по вертикали/горизонтали) не быстро, они по одной перебирают все клеточки в направлении движения, но мы и не торопимся. Отдельный урок для Пешки, сложно, много но зато теперь все ходят правильно. CanPawnJump(int stepY) можно заранее записать из условия клетку через которую мы прыгаем для "взятия на проходе" if (board.GetFigureAt(new Square( fm.from.x, fm.from.y + stepY)) == Figure.none) в какую-нибудь переменную. Научился превращать пешку в одну из четырёх фигур: Queen, Knight, Bishop и Rook. Сделали рефакторинг класса Board он стал чем-то вроде геттера, а новый класс nextBoard сеттера. Причем программа не сломалась и продолжала работать, удивительно. Реализовали "взятие на проходе" для пешки и "рокировку" для короля. В уроке "32 Зашита короля" научился делать шаг и пустой ход(это круто, для шага наоборот). На уроке "33 Шах и Мат!" научился проверять состояние игры: есть ли ШАГ, МАТ или ПАТ. Сделал проверку на НИЧЬЮ. Очень понравилось, крутые интересные алгоритмы, много интересных, оригинальных решей, один обманный ход чего стоит. Теперь в голове все разложено по полочкам (шучу), как на картинке Алисы в зазеркалье у нее были похожие шахматы, картинку прилагаю.
Что было сложным:
Critical: Не работала функция String.Replace('1', Figure.none) пришлось заменить на собираемую вручную строку из StringBuilder'a. Из-за этого на поле вместо точек были 1ки. Это не было проблемой пока не дошли до реализации хода дальнобойных фигур, они вдур стали короткобойными) Ферзь, Слон, Ладья ходили только на 1 клеточку. Решив проблему с полем из единичек, проблема с ходами отпала сама собой. <br> Minor: Вторая проблема достаточно неприятная, но не смертельная - я добавил в референсы dll'ку (а нужно было добавить солюшн с кодом дллки) из Bin\Debug и долго удивлялся почему мне сначала нужно билдить длл и только потом запускать программу чтоб она работала уже с изменениями, а на всех видео она работала сразу
Оценка видео-уроку:
Оцени работу
Сохранить страницу:
Отчёт оценивали: Посетитель+1Посетитель+117606. Виктор+1Посетитель+117535. Алексей+12773. Никита+117947. Dmitry Sinitsin+13922. Александр+1791. Валерий Жданов+113850. Владимир+17645. Александр Львович+117443. WildOrc+16452. Кирилл Шмойлов+17119. Новопашин Владимир+15394. Anton+117255. Слава+1459. Сергей Сергеевич+19014. Николай Денисов+110494. Алексей В.+116218. Дмитрий+1
Начинаем практику по языку C#
Чтобы стать хорошим программистом — нужно писать программы.
На нашем сайте очень много практических упражнений.
После заполнения формы ты будешь подписан на рассылку
«C# Вебинары и Видеоуроки»,
у тебя появится доступ к видеоурокам и консольным задачам.
Несколько раз в неделю тебе будут приходить письма —
приглашения на вебинары, информация об акциях и скидках,
полезная информация по C#.