1. Заголовок темы должен быть информативным. В противном случае тема удаляется ... 2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения. 3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали! 4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора). 5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM! 6. Одна тема - один вопрос (задача) 7.Проверяйте программы перед тем, как разместить их на форуме!!! 8.Спрашивайте и отвечайте четко и по существу!!!
Графика, отрисовка, клавиатура, Как совместить непрерывность отрисовки с управлением с клавиатуры?
Есть программа, делающа непрерывную отрисовку с помощью repeat. Если используется структура
.... repeat .... until Keypressed;
на экраине идет непрерывная отрисовка, до нажатия любой клавиши. Но если поменять на
.... repeat .... until Readkey='q';
Программа выходит по нажатию клавиши q, но работает только при нежатии любой другой клавиши(нажал и не отпускаешь). Как совместить непрерывность отрисовки с управлением с клавиатуры?
--------------------
Смысл откроется тебе. Красками играя Жизнь предстанет как поток без конца и края.
В этом мире поройразбиваютсямечты Но чтобы он стал другойВдруг в него приходишь ТЫ...
После странствий и скитаний настают другие времена. Старая волна уходит и приходит новая волна.
Показать кусок кода, что именно у тебя там происходит, КАК собственно меняется значение и КОГДА ты хочешь его выводить (и перестать делать заключение, что вокруг тебя находятся одни телепаты)...
Сейчас покажу. В теме "Графика. Двужущаяся точка. Точка совершает колебания" я приводил программу
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?
Сообщение отредактировано: Чужак -
--------------------
Смысл откроется тебе. Красками играя Жизнь предстанет как поток без конца и края.
В этом мире поройразбиваютсямечты Но чтобы он стал другойВдруг в него приходишь ТЫ...
После странствий и скитаний настают другие времена. Старая волна уходит и приходит новая волна.