Зациклить программу, пока не нажат пробел - PascalABC.NET
Формулировка задачи:
Не могу сообразить, как реализовать такую вещь, как ожидание нажатия клавиши, например SPACE (пробел), но не просто ожидать, но и выполнять некоторый код программы.
ну вот как-то так в самом упрощенном виде, тут должны рисоваться красные точки в случайной позиции окна, и программа останавливается при нажатии клавиши пробел.
Можно для справки вывести где-то внизу экрана инструкцию, типа Press SpaceKey For Stop Program...
Решение задачи: «Зациклить программу, пока не нажат пробел»
textual
Листинг программы
Program Line_Mirror_vals; uses GraphABC; Const WX = 800; WY = 600; var f:boolean; procedure quit (key: integer);//процедура, меняющая значение флага при нажатии begin //клавиши Space if key=VK_Space then begin f:=false;//меняем флаг SetWindowCaption('Программа завершена');///заголовок окна sleep(1000);//задержка 1 сек CloseWindow;//закрытие окна end; end; Var X11, X12, X21, X22, X31, X32, X41, X42: integer; Y11, Y12, Y21, Y22, Y31, Y32, Y41, Y42: integer; Cicle1: integer; SX1, SX2, SY1, SY2, MaxS: integer; CLine: Color; Begin Window.Title := 'Вспоминаю безмятежные годы'; Window.IsFixedSize := True; SetWindowSize(WX,WY); Window.Clear(clBlack); Window.Center; MaxS := 10; SX1 := Random (MaxS*-1, MaxS); SY1 := Random (MaxS*-1, MaxS); SX2 := Random (MaxS*-1, MaxS); SY2 := Random (MaxS*-1, MaxS); X11 := Random(1, Round(WX/2)); X12 := Random(1, Round(WX/2)); Y11 := Random(1, Round(WY/2)); Y12 := Random(1, Round(WY/2)); CLine := ClRandom; f := true; //установим флаг в true repeat //выполняем цикл, (любой) Sleep (10); SetBrushColor(CLine); X21 := WX-X11; X22 := WX-X12; Y21 := Y11; Y22 := Y12; X31 := X11; X32 := X12; Y31 := WY-Y11; Y32 := WY-Y12; X41 := WX-X11; X42 := WX-X12; Y41 := WY-Y11; Y42 := WY-Y12; Line (X11, Y11, X12, Y12, CLine); Line (X21, Y21, X22, Y22, CLine); Line (X31, Y31, X32, Y32, CLine); Line (X41, Y41, X42, Y42, CLine); X11 := X11+SX1; X12 := X12+SX2; Y11 := Y11+SY1; Y12 := Y12+SY2; If X11>WX/2 then begin CLine := ClRandom; SX1 := Random (MaxS*-1, -1); end; If X11<0 then begin CLine := ClRandom; SX1 := Random (1, MaxS); end; If X12>WX/2 then begin CLine := ClRandom; SX2 := Random (MaxS*-1, -1); end; If X12<0 then begin CLine := ClRandom; SX2 := Random (1, MaxS); end; If Y11>WY/2 then SY1 := Random (MaxS*-1, -1); If Y11<0 then SY1 := Random (1, MaxS); If Y12>WY/2 then SY2 := Random (MaxS*-1, -1); If Y12<0 then SY2 := Random (1, MaxS); Brush.Color:=clBlack; rectangle(5,WY-30,80,WY-10); Font.Color:=clWhite; TextOut(5,WY-30,'Spase = Exit'); onkeydown:=quit;//ждем нажатия Spase until not f; End.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д