Программа тренажер для курса Полиглот

3 февраля 2012 г. poliglot Просмотров: 76019 RSS 6
Софт ,

История обновлений:

Upd 1

изменения

  • Добавлены eat_*.xml примеры
  • Добавлен love_min.xml пример

Главное изменение:

  • Алгоритмы генерации упражнений вынесены во вне программы и теперь их тоже можно изменять или создавать свои новые
  • (задача для продвинутых, хотя на мой взгляд все в рамках школьной информатики и интуиции, используются условия да циклы...).

  • Алгоритмы представляются кодом на языке C# и должны находится в папке .\algorithms
  • (в отличии от файлов примеров эта папка задана жестко - ее название и размещение менять нельзя).

  • Сейчас определен только один алгоритм - для первой лекции. Это файл Exercise1.cs.
  • xml-файлы с примерами тоже слегка изменились - добавилась строка с указанием для какого он алгоритма
  • (это теперь обязательная строка, и я подкорректировал все xml-файлы в соответствии с этим требованием).

  • Сам алгоритм [color=blue]Exercise1.cs был подправлен - теперь добавляется точка в конце утвердительных предложений.
  • И исправлена ошибка, когда при запрете на отрицание для вопросительных предложений они также запрещались и для утвердительных.

Т.обр., те кто склонны к программированию, могут не ждать пока я реализую все пожелания (добавить местоимения, to be...), а сами исправить или написать новый алгоритм и примеры упражнений.

Если будет время напишу инструкцию по созданию новых алгоритмов, но в принципе, и так все должно быть интуитивно ясно (для тех кто понимает), после просмотра Exercise1.cs.

Ну а если будут вопросы - отвечу.


Upd 2

изменения

Добавлено много нового (в основном на основании обдумывания высказанных пожеланий)

  • Добавлены примеры
  • Исправлена ошибка в Exercise1.cs: вместо doesn't было does'nt и т.д...
  • Исправлена ошибка в Exercise1.cs: было некорректное построение английских предложений с отрицанием в будущем времени

Добавлена новая функциональность в саму программу:

  • Тренажер сделан "симметричным" относительно русского и английского. Для смены языка выбираем либо "ru-en" (как раньше), либо "ru-en" (новое).
  • Кликните на полосу Hint она и откроется
  • Размер открывшейся области можно регулировать "схватившись" за появившуюся над ней тонкую голубую полоску.

При открытой подсказке показ будет происходить несколько иначе (при закрытой все также как и раньше), в зависимости от параметра delay:

(параметр задается в миллисекундах: 1 секунда = 1000 миллисекунд)

  • если delay = -1, то после показа русского предложения, английская подсказка будет показана только при повторном клике (на область с русским предложением).
  • если delay = 0, то после показа русского предложения, английская подсказка будет показана сразу же (задержка нулевая)
  • если delay > 0, то появляется элемент "аркады" - показ подсказки откладывается на количество указанных миллисекунд. Человек должен успеть раньше машины составить ответ.
  • Однако до реализации этой фишки пока еще руки не дошли

    Сейчас при delay > 0 тоже самое, что и при delay = 0.

Добавлена новая функциональность в Exercise1.cs:

Теоретически эти добавления мог сделать каждый, редактируя Exercise1.cs, и если кому-то они придутся не по вкусу можно оставить старый Exercise1.cs

  • Добавлена возможность генерации (случайной) местоимений.
  • Для управления этой возможностью определен новый тег <IsPronounsAdd>true/false</IsPronounsAdd>

    Для некоторых глаголов (например come.xml), формальное добавление местоимений производит "дзен" фразы над которыми можно долго медитировать

    В этом случае добавляем тег <IsPronounsAdd>false</IsPronounsAdd>, что отключает генерацию местоимений.

  • Дабы не плодить множества файлов с примерами (_max, _min, + теперь еще опция выключения/выключения местоимений), Алгоритм Exercise1.cs был изменен таким образом, чтобы эти опции можно было тем или иным способом выбирать при старте упражнения.
  • И теперь тег <AllowNotInQuestion>true/false</AllowNotInQuestion> лучше вообще не использовать (удалить из xml файлов) - пусть это определяется в параметрах при запуске упражнения.

    Предлагаю удалить все *_max.xml файлы. Если народ согласен, то я сделаю это.

    Если же </AllowNotInQuestion> все же задан, то он имеет наивысший приоритет и переопределят одноименный параметр при запуске (также как и IsPronounsAdd, чем и воспользовался для отключения генерации местоимений в некоторых файлах примеров).

  • Диалог Parameters, который открывается при запуске упражнения, это один из вариантов задать параметры AllowNotInQuestion и IsPronounsAdd - вариант по умолчанию.
  • - Диалог несколько неказистый - но это нормально поскольку он создается "ручками" непосредственно в Exercise1.cs, и там не до изысков (желающие могут навести "блеск", изменив соответствующий фрагмент кода).

    - Значения параметров, которые показываются при открытия диалога берутся из файла exercise1_params.xml.

    Как вариант их можно поменять ручками, или изменить в диалоге и нажать на кнопку "Save..." что перезапишет exercise1_params.xml новыми значениями. (прим.: кнопка Ok ничего записывает, а только применяет параметры для текущего упражнения).

Тех кого раздражает открытие диалога Parameters каждый раз при запуске, могут его отключить. Это можно сделать следующим образом:

(объяснение, для не-программистов, для них и так все очевидно)

  • открываем Exercise1.cs
  • находим строку Exercise1Parameters p = Exercise1Parameters.GetFromUser();
  • ставим // (две косые черты) в начале этой строки, т.е. должно получится:
  • //Exercise1Parameters p = Exercise1Parameters.GetFromUser();

  • убираем // из начала следующей строки так что следующая строка должна получиться такая:
  • Exercise1Parameters p = System.IO.File.Exists(@".\exercise1_params.xml") ? ... и т.д.

Примечание: // (две косые черты) играют такую же роль как и <!--...--> в xml файле

После этого, как можно понять по тексту, параметры будут сразу читаться из файла exercise1_params.xml, который при необходимости можно открыть и отредактировать.

И последнее:

У меня на всех компах стоит только Window 7, и поэтому нет простой возможности посмотреть как программа выглядит в Window XP.

Раньше это не беспокоило, поскольку прога была простой и был уверен, что все в порядке.

Сейчас же интерфейс усложнился и поэтому в Window XP возможны какие-то "перекосы" (один элемент интерфейса наезжает на другой или еще какие-нибудь дефекты внешнего вида). В XP такое бывает.

Так что просьба к владельцам Window XP сообщить если у них есть какие-то искажения.


Upd 3

изменения

  • Добавлены примеры

Добавлена новая функциональность в саму программу:

  • реализован обещанный вариант для delay > 0.
  • исправлена пара мелких ошибок и сделаны некоторые переименования.

Добавлена новая функциональность в Exercise1.cs:

Стратегия развития и будущие фишки:

  • файлов глаголов становится все больше и больше - и это радует!
  • Однако, на мой взгляд, список "засоряют" варианты *_min.xml / *_max.xml.

    Поэтому сейчас думаю, как бы уйти от них, и вынести всякие вариации в параметры запуска упражнения.

    Следуя этой стратегии, параметр - AllowNotInQuestion, был удален из всех xml файлов (как старых так и вновь присланных), поскольку его можно выбирать при запуске упражнения. Поэтому просьба больше его не использовать при составлении новых xml файлов.

  • Сейчас упражнение работает только в рамках одного глагола. Думаю, будет интересно добавить возможность выбирать для тренировки не один глагол, а несколько (хоть все) и они бы случайным образом перемежались при показе.
  • Планирую добавить, новый, очень простой алгоритм:
  • в файле (пусть это будет теперь не xml, а txt файл) в каждой строчке будет идти сначала русское предложение, а потом его английский эквивалент. Пусть разделитель между ними будет ';'. Таким образом можно будет составлять практически любой тренинг. Правда при составлении такого файла придется много поработать ручками.

    Но надеюсь это несколько снимет напряженность для тех кто хочет новых тренингов.

    (сам я посмотрел пока что только 2 с половиной выпуска и не в курсе что там дальше в курсе


Upd 4

EnLearn 1.5 (2012.01.29)

изменения

Функциональность с выбором нескольких упражнений пока в процессе реализации, но часть интерфейса для нее уже можно видеть в этом релизе. Пока за этим интерфейсом ничего нет, так что это не ошибка


Однако если будут предложения по этому интерфейсу, то высказывайтесь.


[color=red]Внимание, для тех кто пишет свои алгоритмы - изменена сигнатура метода CreateClauses, так что неоходимо подправить ее ваших алгоритмах. Изменение сигнатуры сделано с целью подготовки функциональности с выбором нескольких упражнений.


Добавлена новая функциональность в саму программу:

  • Как уже было сказано начата реализация Функциональности с выбором нескольких упражнений.
  • Посмотреть пока только интерфейс (вернее его часть), можно кликнув на левой боковой панели exercises.

    Потом, когда все будет реализовано, выпадающий список с примерами и кнопка "..." в красной рамке "Parameters", будут удалены.

  • Высплывающая подсказка (тултип) теперь пояляется выше курсора.

Добавлен новый алгоритм Universal.cs:

Упражнение для него задается txt файлом, где, в самом простом варианте, в каждой строчке сначала идет русское предложение, а потом его английский эквивалент. Разделитель между ними по умолчанию ';'. Таким образом можно будет при желании составлять практически любой тренинг.

Надеюсь это несколько снимет напряженность для тех кто хочет новых тренингов.

(сам я посмотрел пока что только 3 выпуска и не в курсе что там дальше в курсе)хикъ

На основе Universal.cs алгоритма создан to be тренинг - см. .\exercises_uni\to be.txt файл.

Теперь подробнее об Universal.cs алгоритме.

Откройте для наглядности, например, .\exercises_uni\to be.txt файл:

  • Как можно догадаться, строки начинающиеся с // (две косые черты) игнорируются.
  • Однако, строки начинающиеся с //!param: используются для задания параметров алгоритма.

Таких параметра 3:

  • sepRE - задает разделитель (separator) между русской и английской фразой. В качестве разделителя может быть любое число символов.
  • sep1 - разделитель для вариантов случайного выбора. Должен быть только 1 символ.
  • sepN - разделитель для вариантов перебора. Также должен быть только 1 символ.

О назначении sep1 и sepN расскажу в следующем пункте. Здесь же замечу, что если какой либо из параметров опущен (или даже все), то по умолчанию будет:

sepRE = ;

sep1 = |

sepN = &

  • Простейшее перечисление пар русско-английских фраз при составлении тренинга может быть довольно трудоемким.
  • Поэтому для облегчения и автоматизации построения таких пар был придуман специальный механизм "вариантных блоков".

    Каждый блок заключается в фигурные скобки: { тело блока }. В скобках идет перечисление вариантов.

    Блоки бывают бывают 2-х типов. Соответственно для первого типа - разделитель sep1, а для второго - sepN.

  • Начну с sepN.
  • Когда алгоритм анализирует фразу с таким блоком, он "раскрывает" блок, используя варианты в блоке для генерации новых фраз по числу вариантов в блоке.

    Например фраза: {He & She & It} is преобразуется в 3 фразы:

    He is

    She is

    It is

  • Теперь о блоке с sep1 разделителем:
  • Этот блок случайно выбирает лишь один вариант, в примере {He | She | It} is, при "раскрытии" этого блока мы случайный образом получим только одну фразу:

    либо He is либо She is либо It is

Число блоков в фразе и их глубина вложенности может быть произвольной!

Важно лишь чтобы структуры блоков в русской и английской фразе были одинаковые.

Если в качестве варианта (не важно в каком типе блока) используется "ничего" (или пробелы), то это тоже вариант, например для {He & She & } is, получим:

He is

She is

is

Файл expand_test.txt - это просто тест, который использовал при отладки алгоритма.

И еще, может быть кому будет полезно при составлении тренингов посмотреть во что разворачиваются блоки, это можно увидеть если в Universal.cs алгоритме разкомментировать строку

//System.IO.File.WriteAllLines("universal_expand_test.txt" ... и т.д., т.е. убрать ведущие //, соответственно получим

System.IO.File.WriteAllLines("universal_expand_test.txt" ... и т.д.

Тогда при запуске тренинга развернутые фразы запишутся в "universal_expand_test.txt" файл

Комментариев: 6
  1. Автору респект!

  2. Сергей | 2012-02-06 в 19:37:13

    В начале установки выдает сообщение "Ошибка при инициализации приложения (0хс0000135). Для выхода из приложения нажмите кнопку "ОК". Подскажите, плиз, в чем проблема?

  3. Сергей | 2012-02-06 в 21:05:32

    Нашел решение проблемы! Если у кого-то возникнет аналогичная проблема установите NET Framework 4 и DirectX wink

  4. Всем привет.

    Не называйте папку для программы русскими буквами - работать не будет.

    Очень хорошая программа, спасибо автору! smile

  5. doctorvlad: Очень хорошая программа, спасибо автору!

    Пожалуйста!

  6. молодец! хорошо бы и для других языков или она и для них подходит? СПАСИБО!!!

Оставляйте комментарии не будьте равнодушными!

grin LOL cheese smile wink smirk rolleyes confused surprised big surprise tongue laugh tongue rolleye tongue wink raspberry blank stare long face ohh grrr gulp oh oh downer red face sick shut eye hmmm mad angry zipper kiss shock cool smile cool smirk cool grin cool hmm cool mad cool cheese vampire snake excaim question

Используйте нормальные имена. Ваш комментарий будет опубликован после проверки.

Имя и сайт используются только при регистрации

Если вы уже зарегистрированы как комментатор или хотите зарегистрироваться, укажите пароль и свой действующий email. При регистрации на указанный адрес придет письмо с кодом активации и ссылкой на ваш персональный аккаунт, где вы сможете изменить свои данные, включая адрес сайта, ник, описание, контакты и т.д., а также подписку на новые комментарии.

(обязательно)