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

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

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

> Графика, отрисовка, клавиатура, Как совместить непрерывность отрисовки с управлением с клавиатуры?
Чужак
сообщение 5.01.2008 22:39
Сообщение #1


меркантильный
***

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

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


Есть программа, делающа непрерывную отрисовку
с помощью repeat. Если используется структура

....
repeat
....
until Keypressed;


на экраине идет непрерывная отрисовка,
до нажатия любой клавиши.
Но если поменять на

....
repeat
....
until Readkey='q';


Программа выходит по нажатию
клавиши q, но работает только
при нежатии любой другой клавиши(нажал и не отпускаешь).
Как совместить непрерывность отрисовки с управлением с клавиатуры?


--------------------
Смысл откроется тебе. Красками играя
Жизнь предстанет как поток без конца и края.


В этом мире порой разбиваютсямечты
Но чтобы он стал другой Вдруг в него приходишь ТЫ...

После странствий и скитаний настают другие времена.
Старая волна уходит и приходит новая волна.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Чужак
сообщение 15.01.2008 21:16
Сообщение #2


меркантильный
***

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

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


Цитата(volvo @ 15.01.2008 9:11) *

Показать кусок кода, что именно у тебя там происходит, КАК собственно меняется значение и КОГДА ты хочешь его выводить (и перестать делать заключение, что вокруг тебя находятся одни телепаты)...

Сейчас покажу. В теме "Графика. Двужущаяся точка. Точка совершает колебания" я приводил программу

program VisualSinusoid;
 Uses Crt, Graph;
 Const r = 80;
 Label 1;
 Var gd, gm: Integer; t,X,Y: Real;
Begin
  InitGraph(gd,gm,'');  t:=0;
1: X:=280;
   SetColor(15);
  Circle(120,240,r);   
  SetColor(2);
  Line(120, 240, Round(120+r*cos(t)), Round(240+r*sin(t)));
  Line(Round(120+r*cos(t)), Round(240+r*sin(t)),
  280, Round(240+r*sin(t)) );
  X:=X+1; Y:=240+r*sin(t);
  PutPixel(Round(X), Round(Y), 11);
  Delay(300);
  SetColor(0);
  Line(120, 240, Round(120+r*cos(t)), Round(240+r*sin(t)));
  Line(Round(120+r*cos(t)), Round(240+r*sin(t)),
  280, Round(240+r*sin(t)));
  t:=t+0.05;
 if X>600 then begin ClearDevice; goto 1; end
 until KeyPressed;
  CloseGraph
End. 
теперь её усложняю. Вместо

program VisualSinusoid;
 Uses Crt, Graph;
 Const r = 80;
 Label 1;
 Var gd, gm: Integer; t,X,Y: Real;
Begin
  InitGraph(gd,gm,'');  t:=0;

r становится переменной:

 program VisualSinusoid;
 Uses Crt, Graph;
 Label 1;
 Var gd, gm,r: Integer; t,X,Y: Real; 
        ch:char;
Begin
  InitGraph(gd,gm,'');  t:=0; r = 80; 

и появляется процедура:

Procedure Upravlenie;
 Begin {procedure}
 ch:=#0;
 if keypressed then begin
 ch:=readkey;
 case ch of
 'i': r:=r+1; 
 'e': r:=r-1;
....
end; {case}
 end; {if}
 End;{procedure}

она вызывается из тела программы (из цикла).
Все работает, но как выводить на экран значение r?

Сообщение отредактировано: Чужак - 15.01.2008 21:19


--------------------
Смысл откроется тебе. Красками играя
Жизнь предстанет как поток без конца и края.


В этом мире порой разбиваютсямечты
Но чтобы он стал другой Вдруг в него приходишь ТЫ...

После странствий и скитаний настают другие времена.
Старая волна уходит и приходит новая волна.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


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

 

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