Составить программу для управления размерами прямоугольника и его положением на экране.Левый верхний угол исходного прямоугольника расположен в точке (50,50), правый нижний в точке(100,100).Управление выполняется клавишами: ">"-увелич.ширину прямоугольника на 5 точек; "<"-уменьш.ширину прямоугольника на 5 точек; "+" -увелич. высоту на 5 точек; "-" уменьшает высоту на 5 точек. Клавиши управл.курсором-вызывают перемещение в соответствующем направлении. "Ввод завершает работу программы.
MAXXX
20.05.2007 15:57
Уменьшают ширину-справа, слева или все равно как?
Ilius
20.05.2007 16:07
Все равно, просто уменьшают или увеличивают.
Tan
20.05.2007 18:52
Что - то такое ?
uses crt, Graph; var x,y,x1,y1, grMode,grDriver : integer; ch : char; procedure draw; begin clrscr; rectangle (x,y,x1,y1); end; begin grDriver := detect; Initgraph (grDriver,grMode,''); x := 50; y := x; x1 := 100; y1 := x1; draw; repeat ch := readkey; case ch of #46 : begin x1 := x1 + 5; Draw; end; #44 : begin x1 := x1 - 5; Draw; end; #61 : begin y := y - 5; Draw; end; #45 : begin y := y + 5; Draw; end; #072 : begin y := y - 5; y1 := y1 - 5; Draw; end; #080: begin y := y + 5; y1 := y1 + 5; Draw; end; #077: begin x := x+ 5; x1 := x1 + 5; Draw; end; #075: begin x := x - 5; x1 := x1 - 5; Draw; end; end; until ord(ch) = 13; end.
volvo
20.05.2007 19:04
Опять ошибаемся? Не так обрабатываются расширенные клавиши... У тебя будут отрабатываться "P", и т.п. клавиши...
klem4
20.05.2007 19:05
procedure draw; begin clrscr; // <------------------- Тут надо ClearDevice; rectangle (x,y,x1,y1); end;
Tan
20.05.2007 19:09
volvo, спасибо, это моя частая ошибка, я просто только по нужным кнопком понажимал, проверил, что работает, совсем забыл про расширенные коды, klem4 а зачем ? У меня и без этого всё работает на стандартном компиляторе.
volvo
20.05.2007 19:12
Цитата
а зачем ?
А затем, что в графике надо использовать процедуры для графики, а в тексте - для текста...
Tan
20.05.2007 19:14
Просто в данном случае визуальная разница лишь в том, что с clrscr сероватый фон, а с cleardevice чёрный, но на будущее учту, спасибо!
volvo
20.05.2007 19:29
Кстати, здесь можно обойтись и вообще без постоянной очистки экрана, если воспользоваться
SetWriteMode(XORPut);
, (в случае если есть фоновое изображение, например, то постоянно его очищать и перерисовывать - с ума можно сойти...)
Ilius
20.05.2007 21:18
Почему то не работает, запускаю экрат мигнул, разглядел BGI Error: и т.д. Что это значит?
klem4
20.05.2007 22:29
InitGraph(gd, gm, 'ТУТ укажи полный пусть к папке BGI');