Программа тренажер для курса Полиглот
История обновлений:
Upd 1
изменения
- Добавлены eat_*.xml примеры
- Добавлен love_min.xml пример
Главное изменение:
- Алгоритмы генерации упражнений вынесены во вне программы и теперь их тоже можно изменять или создавать свои новые
- Алгоритмы представляются кодом на языке C# и должны находится в папке .\algorithms
- Сейчас определен только один алгоритм - для первой лекции. Это файл Exercise1.cs.
- xml-файлы с примерами тоже слегка изменились - добавилась строка с указанием для какого он алгоритма
- Сам алгоритм [color=blue]Exercise1.cs был подправлен - теперь добавляется точка в конце утвердительных предложений.
(задача для продвинутых, хотя на мой взгляд все в рамках школьной информатики и интуиции, используются условия да циклы...).
(в отличии от файлов примеров эта папка задана жестко - ее название и размещение менять нельзя).
(это теперь обязательная строка, и я подкорректировал все xml-файлы в соответствии с этим требованием).
И исправлена ошибка, когда при запрете на отрицание для вопросительных предложений они также запрещались и для утвердительных.
Т.обр., те кто склонны к программированию, могут не ждать пока я реализую все пожелания (добавить местоимения, 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
- Добавлена возможность генерации (случайной) местоимений.
- Дабы не плодить множества файлов с примерами (_max, _min, + теперь еще опция выключения/выключения местоимений), Алгоритм Exercise1.cs был изменен таким образом, чтобы эти опции можно было тем или иным способом выбирать при старте упражнения.
- Диалог Parameters, который открывается при запуске упражнения, это один из вариантов задать параметры AllowNotInQuestion и IsPronounsAdd - вариант по умолчанию.
Для управления этой возможностью определен новый тег <IsPronounsAdd>true/false</IsPronounsAdd>
Для некоторых глаголов (например come.xml), формальное добавление местоимений производит "дзен" фразы над которыми можно долго медитировать
В этом случае добавляем тег <IsPronounsAdd>false</IsPronounsAdd>, что отключает генерацию местоимений.
И теперь тег <AllowNotInQuestion>true/false</AllowNotInQuestion> лучше вообще не использовать (удалить из xml файлов) - пусть это определяется в параметрах при запуске упражнения.
Предлагаю удалить все *_max.xml файлы. Если народ согласен, то я сделаю это.
Если же </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:
- Теперь для he-she-it, к английским глаголам типа teach, study,.... вместо "-s" добавляется "-es" - teaches, studies...
- I теперь всегда с большой буквы.
Сделано, согласно: http://usefulenglish.ru/writing/adding-endings-s-es-to-nouns-and-verbs
Стратегия развития и будущие фишки:
- файлов глаголов становится все больше и больше - и это радует!
- Сейчас упражнение работает только в рамках одного глагола. Думаю, будет интересно добавить возможность выбирать для тренировки не один глагол, а несколько (хоть все) и они бы случайным образом перемежались при показе.
- Планирую добавить, новый, очень простой алгоритм:
Однако, на мой взгляд, список "засоряют" варианты *_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.
- Теперь о блоке с sep1 разделителем:
Когда алгоритм анализирует фразу с таким блоком, он "раскрывает" блок, используя варианты в блоке для генерации новых фраз по числу вариантов в блоке.
Например фраза: {He & She & It} is преобразуется в 3 фразы:
He is
She is
It is
Этот блок случайно выбирает лишь один вариант, в примере {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" файл
Автору респект!
В начале установки выдает сообщение "Ошибка при инициализации приложения (0хс0000135). Для выхода из приложения нажмите кнопку "ОК". Подскажите, плиз, в чем проблема?
Нашел решение проблемы! Если у кого-то возникнет аналогичная проблема установите NET Framework 4 и DirectX
Всем привет.
Не называйте папку для программы русскими буквами - работать не будет.
Очень хорошая программа, спасибо автору!
Пожалуйста!
молодец! хорошо бы и для других языков или она и для них подходит? СПАСИБО!!!