IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Ожидание, До anykey
Venik
сообщение 16.04.2006 21:12
Сообщение #1


Гость






И снова здрасьте! Вообщем, выполняется операция. Repeat...until. И мне нужно, чтобы она выполнялась до тех пор, пока пользователь не нажмёт какую-нибудь клавишу.
И что получится? Напишите плиз. Пробовал разные варианты:
Repeat
...
Until AnyKey;
и тому подобное, но ничего не выходит. Скажите, какой код надо написать. Заранее спасибо.
 К началу страницы 
+ Ответить 
volvo
сообщение 16.04.2006 21:45
Сообщение #2


Гость






Repeat
  ...
Until KeyPressed;

тебе поможет...

Только перед выходом не забудь очистить буфер клавиатуры:
While KeyPressed Do ReadKey;
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 16.04.2006 21:48
Сообщение #3


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


В модуле crt есть ф-ция KeyPressed. Думаю, она Вас и интересует...

**опоздала. а как удалить сообщение?

Сообщение отредактировано: мисс_граффити - 16.04.2006 21:49


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Гость
сообщение 16.04.2006 22:13
Сообщение #4


Гость






Спасибо, всё получилось!
 К началу страницы 
+ Ответить 
Гость
сообщение 16.04.2006 22:20
Сообщение #5


Гость






Ах, да и есшо:
Вот у меня выводится текст постепенно (тобишь медленно, по буквам). Необходимо, чтобы когда пользователь нажмёт любую клавишу, текст перестал выводится (аналог CTRL+BRAKE) и вывелся сразу весь, чтобы можно было приступить к другим операциям.
Ну вот, например заставка в играх идёт, вы нажимаете Пробел, заставка выключается и появляется главное меню. Вот также, но только с текстом.
Вариант увелечение вывода скорости текста (путём уменьшения Delay) не предлагать.
Ну блин, вообщем выводится текст. Нажимаю пробел и выводится сразу весь текст. Разом.
 К началу страницы 
+ Ответить 
APAL
сообщение 16.04.2006 22:56
Сообщение #6


Смотрю...
*****

Группа: Модераторы
Сообщений: 1 055
Пол: Мужской
Реальное имя: Пшеничный Алексей Анатольевич

Репутация: -  6  +


Пиши свою функцию/процедуру.


--------------------
Если что-то не делает того, что вы запланировали ему делать - это еще не означает, что оно бесполезно.
--------------------
Прежде, чем задать вопрос - Правила :: FAQ :: Поиск
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 16.04.2006 23:15
Сообщение #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 подберешь экспериментально.
 К началу страницы 
+ Ответить 
Гость
сообщение 17.04.2006 22:07
Сообщение #8


Гость






А попроще нельзя?
Вот код ИИ:

" (Показать/Скрыть)

Строчки, после которых идёт Delay (1) - это постепенный вывод текста. Затем, где If C[ix] - это ответ на условия. Могу потом поконкретнее объяснить. Так вот. Мне нужно чтобы текст, который медленно выводится, при нажатии любой клавиши выводился сразу и у меня появлялось меню. Т.е. чтобы ты нажимаешь кнопку, текст перестаёт выводится, выводится сразу и появляется меню. Вот.
 К началу страницы 
+ Ответить 
volvo
сообщение 18.04.2006 0:10
Сообщение #9


Гость






Цитата(Гость @ 17.04.2006 22:07)
А попроще нельзя?

lol.gif lol.gif lol.gif Это ты меня спрашиваешь про ПОПРОЩЕ??? Я тебя должен спросить, тебе не кажется? То, что ты делаешь в сотнях строк, у меня реализовано в двух десятках...

Цитата(Гость @ 17.04.2006 22:07)
Вот код ИИ:

blink.gif Код ЧЕГО??? blink.gif Ты вообще в курсе, что такое ИИ? ЭТО по-твоему ИИ? Ну, тогда, извини, что помешал тебе создавать Искуственный Интеллект своими советами... Больше мешать не буду. Можешь продолжать спокойно.
 К началу страницы 
+ Ответить 
klem4
сообщение 18.04.2006 7:14
Сообщение #10


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


извиняюсь за оффтоп ...

Это самый крутой код, который я видел в своей жизни. Долго писал ?))))

Хотя вообще-то да, искуственный интеллект - это вам не шутки lol.gif lol.gif lol.gif
good.gif


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 18.04.2006 9:32
Сообщение #11


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


В Юмор! lol.gif


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
FreeMan
сообщение 18.04.2006 17:06
Сообщение #12


-
****

Группа: Пользователи
Сообщений: 480
Пол: Мужской

Репутация: -  4  +


Вся тайна ИИ в иероглифах. Вольво, ты не запутался в этом сложнейшем коде? ты мог ошибится в 56 строчке. Помоему, это очень оптимальный вариант, надо провети замеры скорости, часто большая программа выигрывает по скорости.
Гость, а попробуй графику рисовать, по точкам лучше всего. Не верь им, они тебя запугивают, продолжай в том же духе!!! Не используй сложных алгоритмов.


--------------------
бб
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 18.04.2006 17:10
Сообщение #13


Гость






Цитата(FreeMan @ 18.04.2006 17:06)
а попробуй графику рисовать, по точкам лучше всего.
Главное - после вывода каждой точки не забыть Delay(1) поставить... rolleyes.gif
 К началу страницы 
+ Ответить 
GoodWind
сообщение 18.04.2006 17:36
Сообщение #14


Автооответчик
*****

Группа: Модераторы
Сообщений: 1 188
Пол: Мужской
Реальное имя: Александр

Репутация: -  16  +


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


--------------------
Неадекватная чушь может быть адекватным ответом на неадекватный вопрос. Понятно или разжевать?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Гость
сообщение 18.04.2006 20:58
Сообщение #15


Гость






А чё такое-то? Я просто пишу Искуственный Интеллект.
Эта программа состоит из 3 подпрограмм:
1)Массив, в котором содержаться условия;
2)Рандомизатор условий, в последствии выводит их на эран;
3)"Отвечальщик" на условия.
Ну и мелкая подподпрограмма, связывающая всё это воедино. Программа носит кодовое имя AA-v1.0FR. Принцип действия:
В массиве содержаться некие условия. Рандомизатор берёт эти условия и "перемешивает" их. Далее выводит одно из них (сами понимаете, в случайном порядке) на экран. Далее, другая подпрограмма анализирует это условие и ищет его в Базе Данных ответов. Как только она находит сопоставление, ответ сразу же выводится на экран. Пример:
Массив=Словарь, чтобы было понятнее.
В словаре есть 3 слова: препятствие, фотоаппарат, обрыв. Эти слова перемешивается и из них выбирается любое. Выбрано препятствие. На него ищется ответ и выводится на экран. Ответом является "Обойти препятствие". Т.е. грубо говоря вся работа программы сводится в одну строчку:
Условие=препятствие. Ответ на условие=обойти.
Вот собственно и всё.
Иероглифы-буквы. При Copy-Paste они превратились в кракозябру.
Delay(1) у меня стоит, так как я задолбался по 10 раз читать одно и тоже (что занимает довольно длительное вермя при выводе), чтобы протестировать 1 функцию. Поэтому я и обратился к вам за помощью в создании своеобразного "прерывания" вывода текста и вывода его целиком - сразу после нажатия люой клавиши. Стандартное значение Delay для постепенного вывода текста - 100. Чё вы сразу налетели-то?
Лучше посоветуйте, какие поправки в коде надо сделать!
 К началу страницы 
+ Ответить 
Гость
сообщение 18.04.2006 20:58
Сообщение #16


Гость






Только без шуток! sad.gif
 К началу страницы 
+ Ответить 
GoodWind
сообщение 19.04.2006 6:32
Сообщение #17


Автооответчик
*****

Группа: Модераторы
Сообщений: 1 188
Пол: Мужской
Реальное имя: Александр

Репутация: -  16  +


примерно так (компилятора на работе нет):
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


--------------------
Неадекватная чушь может быть адекватным ответом на неадекватный вопрос. Понятно или разжевать?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Гость
сообщение 19.04.2006 17:44
Сообщение #18


Гость






А куда здесь текст вставлять?
 К началу страницы 
+ Ответить 
GoodWind
сообщение 20.04.2006 6:25
Сообщение #19


Автооответчик
*****

Группа: Модераторы
Сообщений: 1 188
Пол: Мужской
Реальное имя: Александр

Репутация: -  16  +


блин, ты процедурами пользоваться умеешь ? а типы различаешь ? вот текст - это сторока или целое число ?
DelayedOutput('Hello World!',100);

вывод строки "Hello World!" c задержкой между в 100 мс. между выводом символов.


--------------------
Неадекватная чушь может быть адекватным ответом на неадекватный вопрос. Понятно или разжевать?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия 24.07.2025 16:57
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"