![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
ko1hoz |
![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 11 Пол: Мужской Реальное имя: Евгений Репутация: ![]() ![]() ![]() |
Нужно сделать стрелу, движущуюся вокруг своей середины. Так вот, таким образом у меня получается только линия. Незнаю как сделать наконечник. Да и помойму тут можно как-то попроще написать. Подскажите пожалуйста.
uses crt,graph;
const
xn=320;
yn=200;
h=150;d=0;
var
xc,yc,gd,gm,i,j:integer;
xa,ya:word;
t:real;
x,y:array[1..5] of integer;
p:array[1..5] of pointtype;
begin
clrscr;
gd:=detect;
initgraph (gd,gm,'D:\TP\BGI');
rectangle(xn,yn,xn+d,yn+h);
delay(2000);
cleardevice;
x[1]:=xn; y[1]:=yn;
x[2]:=xn+d; y[2]:=yn;
x[3]:=xn+d; y[3]:=yn+h;
x[4]:=xn; y[4]:=yn+h;
x[5]:=x[1]; y[5]:=y[1];
xc:=xn;
yc:=yn+75;
getaspectratio (xa,ya);
for j:=1 to 180 do
begin
t:=10*j*pi/180;
for i:=1 to 5 do
begin
P[i].x:=xc+round((x[i]-xc)*cos(t)+(y[i]-yc)*sin(t)*ya/xa);
P[i].y:=yc+round((y[i]-yc)*cos(t)+(x[i]-xc)*sin(t)*xa/ya);
end;
drawpoly (5,p);
delay(10000);
cleardevice;
end;
readln;
closegraph;
end.
|
ko1hoz |
![]()
Сообщение
#2
|
Новичок ![]() Группа: Пользователи Сообщений: 11 Пол: Мужской Реальное имя: Евгений Репутация: ![]() ![]() ![]() |
Что, никто не знает чтоли?)
|
Ozzя |
![]()
Сообщение
#3
|
![]() Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 220 Пол: Мужской Репутация: ![]() ![]() ![]() |
|
Lapp |
![]()
Сообщение
#4
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
Вот, посмотри, я подправил..
Стрелку рисую линиями, полином убрал. Кроме того, исправил поворот. Короче, разбирайся. Но по-хорошему, нужно бы иначе.. uses crt,graph;
const
xn=320;
yn=200;
h=150;d=10;
var
xc,yc,gd,gm,i,j:integer;
xa,ya:word;
t:real;
x0,y0,x,y:array[1..4] of integer;
procedure Arrow(c:integer);
begin
SetColor(c);
Line(x[1],y[1],x[2],y[2]);
Line(x[2],y[2],x[3],y[3]);
Line(x[2],y[2],x[4],y[4]);
end;
begin
clrscr;
gd:=detect;
initgraph (gd,gm,'');
delay(100);
cleardevice;
x0[1]:=xn; y0[1]:=yn;
x0[2]:=xn; y0[2]:=yn+h;
x0[3]:=xn+d; y0[3]:=yn+h-d;
x0[4]:=xn-d; y0[4]:=yn+h-d;
xc:=xn;
yc:=yn+75;
getaspectratio (xa,ya);
for j:=1 to 180 do begin
Arrow(White);
Delay(100);
Arrow(Black);
t:=10*j*pi/180;
for i:=1 to 4 do begin
x[i]:=xc+round((x0[i]-xc)*cos(t)-(y0[i]-yc)*sin(t));
y[i]:=yc+round((x0[i]-xc)*sin(t)+(y0[i]-yc)*cos(t));
end;
end;
readln;
closegraph;
end.
-------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
ko1hoz |
![]()
Сообщение
#5
|
Новичок ![]() Группа: Пользователи Сообщений: 11 Пол: Мужской Реальное имя: Евгений Репутация: ![]() ![]() ![]() |
|
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 9:53 |