![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
Ilius |
![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 27 Пол: Мужской Реальное имя: Игорь Репутация: ![]() ![]() ![]() |
Составить программу для управления размерами прямоугольника и его положением на экране.Левый верхний угол исходного прямоугольника расположен в точке (50,50), правый нижний в точке(100,100).Управление выполняется клавишами:
">"-увелич.ширину прямоугольника на 5 точек; "<"-уменьш.ширину прямоугольника на 5 точек; "+" -увелич. высоту на 5 точек; "-" уменьшает высоту на 5 точек. Клавиши управл.курсором-вызывают перемещение в соответствующем направлении. "Ввод завершает работу программы. |
![]() ![]() |
MAXXX |
![]()
Сообщение
#2
|
В поисках Занаду ![]() Группа: Пользователи Сообщений: 17 Пол: Мужской Реальное имя: Андрей Максай Репутация: ![]() ![]() ![]() |
Уменьшают ширину-справа, слева или все равно как?
|
Ilius |
![]()
Сообщение
#3
|
Новичок ![]() Группа: Пользователи Сообщений: 27 Пол: Мужской Реальное имя: Игорь Репутация: ![]() ![]() ![]() |
Все равно, просто уменьшают или увеличивают.
|
Tan |
![]()
Сообщение
#4
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 559 Пол: Мужской Реальное имя: Бруно Репутация: ![]() ![]() ![]() |
Что - то такое ?
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.
Сообщение отредактировано: Tan - 20.05.2007 15:08 -------------------- Цитата Imagination is more important than knowledge. Albert Einstein |
volvo |
![]()
Сообщение
#5
|
Гость ![]() |
Опять ошибаемся? Не так обрабатываются расширенные клавиши... У тебя будут отрабатываться "P", и т.п. клавиши...
|
klem4 |
![]()
Сообщение
#6
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
procedure draw;
begin
clrscr; // <------------------- Тут надо ClearDevice;
rectangle (x,y,x1,y1);
end;
-------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
Tan |
![]()
Сообщение
#7
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 559 Пол: Мужской Реальное имя: Бруно Репутация: ![]() ![]() ![]() |
volvo, спасибо, это моя частая ошибка, я просто только по нужным кнопком понажимал, проверил, что работает, совсем забыл про расширенные коды, klem4 а зачем ? У меня и без этого всё работает на стандартном компиляторе.
-------------------- Цитата Imagination is more important than knowledge. Albert Einstein |
volvo |
![]()
Сообщение
#8
|
Гость ![]() |
Цитата а зачем ? А затем, что в графике надо использовать процедуры для графики, а в тексте - для текста... |
Tan |
![]()
Сообщение
#9
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 559 Пол: Мужской Реальное имя: Бруно Репутация: ![]() ![]() ![]() |
Просто в данном случае визуальная разница лишь в том, что с clrscr сероватый фон, а с cleardevice чёрный, но на будущее учту, спасибо!
-------------------- Цитата Imagination is more important than knowledge. Albert Einstein |
volvo |
![]()
Сообщение
#10
|
Гость ![]() |
Кстати, здесь можно обойтись и вообще без постоянной очистки экрана, если воспользоваться
SetWriteMode(XORPut);
, (в случае если есть фоновое изображение, например, то постоянно его очищать и перерисовывать - с ума можно сойти...) |
Ilius |
![]()
Сообщение
#11
|
Новичок ![]() Группа: Пользователи Сообщений: 27 Пол: Мужской Реальное имя: Игорь Репутация: ![]() ![]() ![]() |
Почему то не работает, запускаю экрат мигнул, разглядел BGI Error: и т.д. Что это значит?
Сообщение отредактировано: Ilius - 20.05.2007 18:22 |
klem4 |
![]()
Сообщение
#12
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
InitGraph(gd, gm, 'ТУТ укажи полный пусть к папке BGI');
Или в настройках компилера. еще вариант uses crt, graph;
type
TRect = Object
leftX, leftY, height, width: Integer;
constructor Create(const x, y, h, w: Integer);
destructor Done;
procedure Run;
function Request: Char;
procedure Show(const visible: Boolean);
end;
constructor TRect.Create(const x, y, h, w: Integer);
begin
leftX := x;
leftY := y;
height := h;
width := w;
Show(true);
end;
destructor TRect.Done;
begin end;
procedure TRect.Show(const visible: Boolean);
begin
if visible then SetColor(white) else SetColor(black);
Rectangle(leftX, leftY, leftX + width, LeftY + Height);
end;
function TRect.Request: Char;
var
ch: Char;
begin
ch := readkey;
Show(false);
case ch of
#0: case readkey of
#72: dec(leftY, 5);
#80: inc(leftY, 5);
#75: dec(leftX, 5);
#77: inc(leftX, 5);
end;
'>', '.': inc(width, 5);
'<', ',': dec(width, 5);
'+', '=': inc(height, 5);
'-': dec(height, 5);
end;
Show(true);
Request := ch;
end;
procedure TRect.Run;
begin
while (Request <> #27) do;
end;
var
gd, gm: Integer;
R: TRect;
begin
gd := Detect;
InitGraph(gd, gm, '');
R.Create(50, 50, 100, 100);
R.Run;
R.Done;
CloseGraph;
end.
-------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
Ilius |
![]()
Сообщение
#13
|
Новичок ![]() Группа: Пользователи Сообщений: 27 Пол: Мужской Реальное имя: Игорь Репутация: ![]() ![]() ![]() |
Спасибо вам всем, все работает, выручили!!!
|
![]() ![]() |
![]() |
Текстовая версия | 29.07.2025 5:35 |