![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
Venik |
![]() ![]()
Сообщение
#1
|
Гость ![]() |
И снова здрасьте! Вообщем, выполняется операция. Repeat...until. И мне нужно, чтобы она выполнялась до тех пор, пока пользователь не нажмёт какую-нибудь клавишу.
И что получится? Напишите плиз. Пробовал разные варианты: Repeat ... Until AnyKey; и тому подобное, но ничего не выходит. Скажите, какой код надо написать. Заранее спасибо. |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Repeat
...
Until KeyPressed;
тебе поможет... Только перед выходом не забудь очистить буфер клавиатуры: While KeyPressed Do ReadKey;
|
мисс_граффити |
![]()
Сообщение
#3
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
В модуле crt есть ф-ция KeyPressed. Думаю, она Вас и интересует...
**опоздала. а как удалить сообщение? Сообщение отредактировано: мисс_граффити - 16.04.2006 21:49 -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
Гость |
![]()
Сообщение
#4
|
Гость ![]() |
Спасибо, всё получилось!
|
Гость |
![]()
Сообщение
#5
|
Гость ![]() |
Ах, да и есшо:
Вот у меня выводится текст постепенно (тобишь медленно, по буквам). Необходимо, чтобы когда пользователь нажмёт любую клавишу, текст перестал выводится (аналог CTRL+BRAKE) и вывелся сразу весь, чтобы можно было приступить к другим операциям. Ну вот, например заставка в играх идёт, вы нажимаете Пробел, заставка выключается и появляется главное меню. Вот также, но только с текстом. Вариант увелечение вывода скорости текста (путём уменьшения Delay) не предлагать. Ну блин, вообщем выводится текст. Нажимаю пробел и выводится сразу весь текст. Разом. |
APAL |
![]()
Сообщение
#6
|
![]() Смотрю... ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 1 055 Пол: Мужской Реальное имя: Пшеничный Алексей Анатольевич Репутация: ![]() ![]() ![]() |
Пиши свою функцию/процедуру.
-------------------- |
volvo |
![]()
Сообщение
#7
|
Гость ![]() |
Цитата(Гость @ 16.04.2006 22:20) Вариант увелечение вывода скорости текста (путём уменьшения Delay) не предлагать. Но совсем без Delay ты тоже не обойдешься. Я надеюсь, объяснять, почему - не нужно? uses crt;
const
T = 50;
function get_char(var f: text): string;
var ch: char;
begin
read(f, ch);
if ch = #13 then begin
read(f, ch);
get_char := #13#10;
end
else get_char := ch;
end;
var
f: text;
ch: char;
begin
assign(f, 'aa.txt');
reset(f);
repeat
if not eof(f) then begin
write(get_char(f));
delay(T)
end;
until eof(f) or keypressed;
while keypressed do readkey;
while not eof(f) do
write(get_char(f));
close(f);
end.
В файле 'aa.txt' - текст, который будет печататься. Величину T подберешь экспериментально. |
Гость |
![]()
Сообщение
#8
|
Гость ![]() |
А попроще нельзя?
Вот код ИИ: " (Показать/Скрыть)
Строчки, после которых идёт Delay (1) - это постепенный вывод текста. Затем, где If C[ix] - это ответ на условия. Могу потом поконкретнее объяснить. Так вот. Мне нужно чтобы текст, который медленно выводится, при нажатии любой клавиши выводился сразу и у меня появлялось меню. Т.е. чтобы ты нажимаешь кнопку, текст перестаёт выводится, выводится сразу и появляется меню. Вот. |
volvo |
![]()
Сообщение
#9
|
Гость ![]() |
Цитата(Гость @ 17.04.2006 22:07) А попроще нельзя? ![]() ![]() ![]() Цитата(Гость @ 17.04.2006 22:07) Вот код ИИ: ![]() ![]() |
klem4 |
![]()
Сообщение
#10
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
извиняюсь за оффтоп ...
Это самый крутой код, который я видел в своей жизни. Долго писал ?)))) Хотя вообще-то да, искуственный интеллект - это вам не шутки ![]() ![]() ![]() ![]() -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
Lapp |
![]()
Сообщение
#11
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
В Юмор!
![]() -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
FreeMan |
![]()
Сообщение
#12
|
- ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 480 Пол: Мужской Репутация: ![]() ![]() ![]() |
Вся тайна ИИ в иероглифах. Вольво, ты не запутался в этом сложнейшем коде? ты мог ошибится в 56 строчке. Помоему, это очень оптимальный вариант, надо провети замеры скорости, часто большая программа выигрывает по скорости.
Гость, а попробуй графику рисовать, по точкам лучше всего. Не верь им, они тебя запугивают, продолжай в том же духе!!! Не используй сложных алгоритмов. -------------------- бб
|
volvo |
![]()
Сообщение
#13
|
Гость ![]() |
Цитата(FreeMan @ 18.04.2006 17:06) а попробуй графику рисовать, по точкам лучше всего. Главное - после вывода каждой точки не забыть Delay(1) поставить... ![]() |
GoodWind |
![]()
Сообщение
#14
|
![]() Автооответчик ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 1 188 Пол: Мужской Реальное имя: Александр Репутация: ![]() ![]() ![]() |
и выводить обязательно через баб-ягу - не верь что прямой вывод в видеопамять быстрее чем через прерывания.
-------------------- Неадекватная чушь может быть адекватным ответом на неадекватный вопрос. Понятно или разжевать?
|
Гость |
![]()
Сообщение
#15
|
Гость ![]() |
А чё такое-то? Я просто пишу Искуственный Интеллект.
Эта программа состоит из 3 подпрограмм: 1)Массив, в котором содержаться условия; 2)Рандомизатор условий, в последствии выводит их на эран; 3)"Отвечальщик" на условия. Ну и мелкая подподпрограмма, связывающая всё это воедино. Программа носит кодовое имя AA-v1.0FR. Принцип действия: В массиве содержаться некие условия. Рандомизатор берёт эти условия и "перемешивает" их. Далее выводит одно из них (сами понимаете, в случайном порядке) на экран. Далее, другая подпрограмма анализирует это условие и ищет его в Базе Данных ответов. Как только она находит сопоставление, ответ сразу же выводится на экран. Пример: Массив=Словарь, чтобы было понятнее. В словаре есть 3 слова: препятствие, фотоаппарат, обрыв. Эти слова перемешивается и из них выбирается любое. Выбрано препятствие. На него ищется ответ и выводится на экран. Ответом является "Обойти препятствие". Т.е. грубо говоря вся работа программы сводится в одну строчку: Условие=препятствие. Ответ на условие=обойти. Вот собственно и всё. Иероглифы-буквы. При Copy-Paste они превратились в кракозябру. Delay(1) у меня стоит, так как я задолбался по 10 раз читать одно и тоже (что занимает довольно длительное вермя при выводе), чтобы протестировать 1 функцию. Поэтому я и обратился к вам за помощью в создании своеобразного "прерывания" вывода текста и вывода его целиком - сразу после нажатия люой клавиши. Стандартное значение Delay для постепенного вывода текста - 100. Чё вы сразу налетели-то? Лучше посоветуйте, какие поправки в коде надо сделать! |
Гость |
![]()
Сообщение
#16
|
Гость ![]() |
Только без шуток!
![]() |
GoodWind |
![]()
Сообщение
#17
|
![]() Автооответчик ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 1 188 Пол: Мужской Реальное имя: Александр Репутация: ![]() ![]() ![]() |
примерно так (компилятора на работе нет):
procedure DelayedOutput(str:string; delay_value:longint);
var i:byte;
begin
repeat
write(str[i]);
inc(i);
delay(delay_value);
until (keypressed) or (i>length(str));
while i<=length(str) do
begin
write(str[i]);
inc(i);
end;
end;
end;
можно конечно и оптимизировать... Сообщение отредактировано: volvo - 2.11.2006 16:17 -------------------- Неадекватная чушь может быть адекватным ответом на неадекватный вопрос. Понятно или разжевать?
|
Гость |
![]()
Сообщение
#18
|
Гость ![]() |
А куда здесь текст вставлять?
|
GoodWind |
![]()
Сообщение
#19
|
![]() Автооответчик ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 1 188 Пол: Мужской Реальное имя: Александр Репутация: ![]() ![]() ![]() |
блин, ты процедурами пользоваться умеешь ? а типы различаешь ? вот текст - это сторока или целое число ?
DelayedOutput('Hello World!',100);
вывод строки "Hello World!" c задержкой между в 100 мс. между выводом символов. -------------------- Неадекватная чушь может быть адекватным ответом на неадекватный вопрос. Понятно или разжевать?
|
![]() ![]() |
![]() |
Текстовая версия | 24.07.2025 16:57 |