На этом уроке мы создадим аналог телеигры «Поле чудес» по правилам игры «Виселица». Нужно угадать слово за несколько попыток, с каждой ошибкой будет строиться виселица.
Дата отправки отчёта:
18 апреля 2016 г.
Задание выполнено: за
3 час. 50 мин.
Чему научился:
1) Создавать файлы ресурсов. 2) Загружать данные из файла, работать со списком строк. 3) Повторил работу с настройкой интерфейса программы.
Что было сложным:
Создать желаемый интерфейс программы.
Комментарии:
Данный урок ранее выполнял в предновогоднюю чашку кофе. Для закрепления решил создать новую программу. Написал с нуля, достаточно долго настраивал интерфейс. Целью было создать схожую внешне программу с предновогодней версией. Были проблемы с компоновкой, фоном, рамок вокруг меток. Я принципиально сделал упор на автоматическую компоновку объектов на форме, то есть, без ручного подсчета координат и размеров виджетов. Объекты сами рассчитывают свои размеры, а я лишь задаю описание, например, объект картинка "должен занимать весь левый угол формы", объект загадываемое слово "правую и верхнюю часть формы". В Windows Forms для этого используются Dock, Anchor, TableLayoutPanel. Вообще говоря, думаю следует копать в сторону максимальной изоляции кода формы от кода логики, напрягает их смешивание. На ум приходит использование декларативного описания элементов формы с помощью qml + javascript. Если не ошибаюсь, в C# для этого используется WPF.
Ты прав, для этих целей WPF подходит просто идеально. Там стандартный язык разметки XAML. Но у WPF нет части контролов которые есть в Forms. Если будешь переходить на него будь готов к этому. Например нет PictureBox (есть аналог Image, но он не совсем такой). Также у многих контролов разные названия методов. К примеру у label метод не text, а content. Но это мелочи по сравнению с преимуществами над Forms. Есть поддержка альфаканала без заморочек! Отрисовка графики через DirectX, а не через GDI/GDI+. Чекбоксу свою галочку? Легко. Кнопке скругленные углы? Легко. Один скругленный угол кнопке? Легко. Анимацию добавить? Легко, даже в код заходить не надо (XAML и это умеет).
Различия в названиях методов и контролов не критичны, важнее удобство создание интерфейса, разделение работы дизайнера и программиста. Спасибо за пояснение, Дмитрий, возьму на заметку XAML.
Научился: Повторение уже изученного ранее, еще раз попрактиковалась в динамическом создании объектов, только теперь это не лейблы, а кнопочки. Трудности: Ничего, все было понятно. Правда время заняло рисование картинок, не люблю я рисовать. Схема поэтому тоже коряво нарисована. Все понравилось, отличный урок. Спасибо.