Если есть файл из 27000 слов, то с его помощью можно сделать очень много интересного. На уроке мы ищем палиндромы, детские слова и анаграммы. Хорошее подспорье для игры Эрудит.
Дата отправки отчёта:
24 декабря 2015 г.
Задание выполнено: за
5 час. 59 мин.
Чему научился:
Если честно - то многому. 1)Программу делал не пошагово по видеокурсу, а самостоятельно после просмотра курса. Так что пришлось подумать, и в ходе написания алгоритмов нашёл много нового для себя. ")Было добавлено открытие файла со словарём. Теперь можно в любой момент загрузить другой словарь. Слова обрабатываются независимо от регистра. 3)В "Городах" окончания на Ь Ы Ъ игнорируются, берётся предыдущая буква. Й считается за И. При каждом старте первое слово выбирается рандомно. 4) Сложный эрудит так же доработан. Теперь он составляет все возможные слова из набора букв, а не только те что состоят из того же количества букв.
Что было сложным:
Сначала, чтобы не захламлять тело класса формы, решил методы-обработчики вынести в отдельный класс и уже потом их от туда вызывать. Но столкнулся с проблемой - элементы формы в классе не видны. 1) Было принято решение унаследовать класс от Form. В итоге ни к чему хорошему это не привело. Пришлось переписывать проект. 2)Далее было решено создать экземпляр класса Form1 в классе с методами. Элементы формы стали доступны и работа пошла веселее :). Но появилась другая проблема - доступ к методам класса из Form1. Так как родительский класс не статический - статический вызов обломался. 3) И опять в голову приходит "Гениальное решение" создать экземпляр класса с методами в Form1. Барабанная дробь .... и БИНГО!!!!! Доступ есть. И опять радость моя была не долгой. При запуске студия покрутила мне пальцем у виска и объяснила что я замутил бесконечный рекурсивный вызов из класса в класс. ********* Танцы с бубном ни чего не дали. И вернулся я к тому с чего начал - захламлению класса формы.
Комментарии:
1) На уроке не рассмотрена вероятность того что буквы в словах могут оказаться разного регистра. 2)Палиндромы проще обработать реверсом, всего две строки кода (в принципе даже одна). А в общем - урок отличный!!!
Архив проекта:Ссылка доступна после самостоятельного выполнения этого урока
Тоже думал о том, чтобы решать задачи не параллельно с видео, а самостоятельно, после просмотра видео. Так и с пути не собъешься, и придется самому код попридумывать. Хорошая идея.
Так как там одинаковые конструкции обработки слов у первых 3 кнопок, я вынес это все в функцию и передавал делегат. На мой взгляд это рациональнее. В целом, спасибо за урок)
Трудности: Для возможности записи в файл новых слов и считывания их сразу пришлось открывать и записывать Stream потоком. Задал полный путь к файлу. Есть ли возможность задавать относительный путь? А лучше зашивать в ресурсы? Добавлена возможность выборки слов для игры эрудит. (кнопка для Танюши. Учитывается количество одинаковых букв.)
Добавлена возможность добавления слов в файл во время работы программы.