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

Формула программиста
основатель — Волосатов Евгений Витольдович
Шаблоны Проектирования / Java

Демо игры / VIP. Устный счёт

  • На этом уроке мы напишем программу для тренировки устного счёта.

    Задание:
    Сделать тренажёр устного счёта по основным арифметическим операциям.
  • Дата отправки отчёта: 6 декабря 2015 г.
  • Задание выполнено: за 3 час. 15 мин.
  • Чему научился: То что высота компонента TextBox зависит только от размера выводимого шрифта.
  • Что было сложным: Проблем как таковых по уроку не было, я их сам себе создал, когда решил добавить абстракцию выбранной операции(сложение, вычитание и т.д.) Достаточно долгое время работал над интерфейсом программы.
  • Комментарии: В уроке понравился способ генерации чисел для операции деления, где a = random.Next(1, 10); b = random.Next(1, 10); first_arg = a * b; second_arg = b; В итоге получаем, что результат деления всегда получается целый.

    От себя добавил, хм, много чего. Изменил интерфейс, освежил в памяти свои давние знания по GroupBox, RadioButton. Добавил операцию "остаток от деления". Заменил текстовое поле диапазона генерируемых чисел на три RadioButton (уровни сложности). Добавил таймер обратного отсчета, дифференцировал результат сдачи теста по оценкам (учитывая затраченное время на прохождение). Кроме того, при запуске теста "наглым образом" уменьшаю высоту окна, чтобы скрыть настройки и добавить сверху информационные поля (см. на скриншотах). Добавил кнопку отмены теста, поработал с выводом MessageBox при различных результатах работы программы: тест успешно пройден на оценки 5, 4, 3, тест не пройден (по ошибке), тест не пройден (время истекло). В целом, чудненько, работа с интерфейсом затягивает, хочется добавить что-нибудь эдакое)

    По коду. В принципе, модификаций не очень много. Решил поиграться, выделить операцию в отдельную абстракцию - BinaryFunction. Сделал ее в виде абстрактного класса, от которого наследовал классы Plus, Minus, Mult, Div, Modulo.  Для управления всем этим добром, и с учетом необходимости постоянной генерации случайных аргументов функции, добавил "драйвер" - класс BinaryCalculation. Этот класс создает нужный экземпляр класса BinaryFunction в момент нажатия на кнопку "Начать тест" и затем каждый раз обращается за результатом работы функции в момент нажатия пользователем кнопки Enter на поле ввода ответа.

    Хотел абстрагироваться еще дальше, добавить класс UnaryFunction (например для вычисления факториала), потом TernaryFunction, а потом вообще замахнулся на вычисление сложных, вложенных выражений. Задумался, а зачем? Программа создается с целью проверки устного счета, поэтому остановился на одном классе BinaryFunction.

    В целом, здорово позанимался, я доволен. Спасибо, Евгений Витольдович)
  • Оценка видео-уроку:
Отчёт от 7276 за Демо игры / VIP. Устный счёт


Отчёт от 7276 за Демо игры / VIP. Устный счёт




Оцени работу

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

7276. Ильшат
Ильшат
ответить
→  Оля  # Наноигры / Устный счёт / 2015-12-07 00:54

Спасибо, Оля)


7276. Ильшат
Ильшат
ответить
→  Lik_Kirill  # Наноигры / Устный счёт / 2015-12-07 00:53

В одном из методов класса формы, в обработчике нажатия на кнопку "Начать тест" выполнил команду Height = 250. А после завершения теста вернул старое значение Height = 520. Таким "наглым образом" сжимал окно, скрывал настройки) Height это и есть высота окна, одно из его свойств. Его как и многие другие можно найти во вкладке Properties в настройках формы.


24. Оля
Оля
ответить
→  Ильшат  # Наноигры / Устный счёт / 2015-12-06 21:31

Ильшат, замечательная работа, какой же ты Молодец! :)


6452. Lik_Kirill
Lik_Kirill
ответить
→  Ильшат  # Наноигры / Устный счёт / 2015-12-06 17:51

А как ты сделал что форма поменяла размер? В начале была с настройками, а потом маленькая, где только поле проверочное


6452. Lik_Kirill
Lik_Kirill
ответить
→  Ильшат  # Наноигры / Устный счёт / 2015-12-06 17:49

Красиво!


  • Отчёт оценивали:
    5263Павел+1   6925Артём+1   6958Кирилл+1   7448Sergey Shumskiy+1   459Сергей Сергеевич+1   6080annaka+1   6452Lik_Kirill+1   6391Владимир+1   2327FonKessel0   2639Морозов Юрий Александрович+1   3747Сергей+1   24Оля+1   429Максим Базуев+1   2146Иван+1   2633Андрей+1   7645Александр Львович+1   689Igorenzia+1   6458Илья+1   7292Tomara0   4395Денис+1   5219Nromik+1   8118Юрий +1  

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




Чтобы стать хорошим программистом — нужно писать программы. На нашем сайте очень много практических упражнений.

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

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

Ты в любой момент сможешь отписаться от рассылки.
Научился: Написание законченного приложения "Устный счет" для проверки и тренировки знаний разного возраста, т.к в меню можно выбирать сложность примеров, в зависимости от подготовки испытуемого.
Трудности: Найти после 13 часов на работе время на выполнения задания. И как всегда думаешь, что на 20 минут, а тут затянуло.
Урок очень интересен. Вроде бы простая программа, но очень интересно реализовывать. Жалко что много времени упустил, не занимался на сайте около года(. Но теперь проблемы решены. Вперед к знаниям)
Трудности: Обратная польская нотация и алгоритм её работы - до конца не понял, т.к. мало знаком со стеком (у себя использовал готовый найденный на хабрахабре класс.
При выполнении прошлого задания Евгений написал что следующим этапом будет является самостоятельное выполнение задания не глядя вебинар. В этот раз я так и сделал. Результатом честно говоря очень доволен, хотя времени потратил целый вагон. В настоящее время я ещё так и не посмотрел вебинар, но думаю все таки сделать это, вдруг там будет что то новое. По моей программе: В зависимости от выбранного уровня сложности открываются новые операции, количество цифр в примере и активируется таймер с возможностью установки времени. После выбора опции формируется функция - как это происходит видно на втором скриншоте. Результат отправляется в интерфейс и в класс RPN , отвечающий за преобразование строки в обратную польскую нотацию и получение правильного ответа.