![]() |
|
||||||||||
|
|||||
|
Есть предложение, состоящее из слов, абсолютно любое предложение.
Надо сделать так, чтобы показалось это предложение с пропущенным определенным словом, и чтобы пользователь мог взть кликнуть на пропущенном слове и ввести туда слово, которое как он считает там должно быть, затем по нажатию на Enter должна всплыть окошко сообщающее правильно ли он ввел или нет. Каким способом это можно сделать? Пример: "Оператор delete уничтожает объектную ссылку указанную параметром reference и возвращает true если ссылка успешно удалена." Должно отобразиться: "Оператор ... уничтожает объектную ссылку указанную параметром reference и возвращает true если ссылка успешно удалена." И надо дать возможность ввести слово на место ... Причем надо, чтобы код работал для любых предложений и пропущенных слов. Т.е. есть исходное предложение и пропущенное слово, а дальше дело прогаи. |
|
|||||
|
Регистрация: Sep 2005
Адрес: SPb
Сообщений: 852
|
Я думаю здесь поможет самое простое определение "слова".
Слово - это текст между двумя пробелами, так что и отталкивайся от этого определения, единственное за что здесь можно зацепиться, так это за пробелы. Нужно парсить всё предложение, и определять сколько в нём пробелов, затем записывать в массив данные, какие по счёту пробелы ограничивают слова, а дальше дело техники. Было бы время, написал, честное слово, но на это нужно достаточно времени.. |
|
|||||
|
Регистрация: Mar 2001
Сообщений: 1,147
|
только не надо всё усложнять
для начала надо определиться, откуда берутся данные (предложения). затем имеет смысл продумать формат этих данных. я бы сделал примерно такой:Оператор delete уничожает трам-пам-пам|1 Модератор testin' пиво и возвращает true на запрос пользователя|2 Т.е. сначала предложение, а затем номер слова, которое должны пропускать. Загрузил бы этот txt и воспользовался String.split сначала по "/r/n" (чтобы разбить на отдельные вопросы), затем по "|", ну а предложение естественно по " ". Ну и показывал бы вопросы, состоящие из динамических текстовых полей, одно из которых есть input. При нажатии на кнопочку "проверка" сверял бы с "эталоном" (все слова-то в массиве, номер "неизвестного" известен ).
__________________
Кто говорит, тот не знает. Кто знает, тот не говорит. |
|
|||||
|
Регистрация: Dec 2005
Сообщений: 316
|
у меня есть похожий проект.
http://puzzlepak.com/cp/scripts/new/show.php?id=64 за небольшую сумму его можно адаптировать под ваши требования. если интересно, пишите на email (в профиле) Последний раз редактировалось AlexSol; 13.11.2006 в 11:42. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Ммм, почему бы не заюзать asfunction? Только, придётся показывать окошко для ввода слова…
|
|
|||||
|
Я дошел до того, что у меня есть массив левых частей предложения, массив пропущенных слов и массив правых частей предложения.
Пр: "Мама "+"мыла"+" раму." Теперь надо вывести это предложение так чтобы вместо пропущенной части была строка для ввода. И вот с этим пока проблема, может надо разбить предложения на буквы и выводить по одной, если буква не влезает, то переход на новую строку, если доходим до пропущенного слова, то вставляем пустой TEXTFIELD. Но думается это очень сложновато. Цитата:
2AlexSol спасибо, но хочется самому разобраться. |
|
|||||
|
Регистрация: Dec 2005
Сообщений: 316
|
я бы выложил исходник, тока он писался "для себя", тоесть ничего в нем не понять... (а за небольшую сумму я бы его привел в порядок) ну да ладно...
условия: используется "Courier New" - чтобы зная ширину буквы рассчитать необходимые места переносов на новую строку, и потом определить координаты точек для текстовых полей; если идет два одинаковых слова, то прячется только первое. 1. слова храняться в массиве 2. слова находяться и заменяются некой условленной последовательностью (слово_один #1######## слово2 #2####) - количество символов в слове == количество символов в последовательности 3. разбиваем впедложение на слова и составляем новые строки. 4. ищем последовательности #1######## ... #2#### и рисуем на их месте текстовые поля. |
|
|||||
|
Регистрация: Mar 2001
Сообщений: 1,147
|
да ну вас, ребята. работы на 5 минут. исходник "причёсывать" лень, но основная мысль д.б. понятна.
__________________
Кто говорит, тот не знает. Кто знает, тот не говорит. |
|
|||||
|
Регистрация: Dec 2005
Сообщений: 316
|
вы сильно упростили задачу. попробуйте изменить так, чтобы отображалось несколько строк текста и заранее не было известно в какой строке расположено слово,которе нужно прятать.
|
|
|||||
|
Регистрация: Mar 2001
Сообщений: 1,147
|
украшательств можно придумать массу. именно это реализовать - ещё 5 минут работы. На каждое слово из массива аттачить новый TextField и "приклеивать" его к предыдущему. Если правая сторона очередного TextField-а "вылезает" за допустимую границу, то позиционировать его по иксу к левой границе, по игреку - под предыдущим tf. Вместо искомого слова ставить input. В чём проблема-то? Зачем надо курьер жёстко ставить и буквы считать. К чему лишние проблемы?
Я бы вообще заменил искомое слово на "???" и ниже вопроса оставил поле для ввода ответа. Тут функционал важен, а не великолепие.
__________________
Кто говорит, тот не знает. Кто знает, тот не говорит. |
![]() |
![]() |
Часовой пояс GMT +4, время: 09:41. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|