Другие языки программирования и технологии

Движение фигур в Паскале!

Изобразить в 4-х углах экрана по "Кресту". Фигуры на концах диагоналей должны вращаться в разные стороны. Скорость вращения фигур в левых углах должна быть в 2 раза выше скорости фигур в правых углах. Вот у меня есть программа вращения креста, осталось только сделать всё по заданию, но у меняя что-то ничего не получается((: program lab4; uses crt,graph; var gdriver,gmode,x,y,x1,y1,r,d,i: integer; t: real; BEGIN clrscr; gdriver:=detect; initgraph(gdriver,gmode,'d:\bp\bgi'); x:=getmaxx div 2; y:=getmaxy div 2; r:=50; i:=1; d:=100; setcolor(2); repeat t:=2*i*sin(180); x:=round(r*cos(t))+getmaxx div 2; y:=round(r*sin(t))+getmaxy div 2; x1:=round(r*cos(t+pi))+getmaxx div 2; y1:=round(r*sin(t+pi))+getmaxy div 2; line(x,y,x1,y1); delay(1500); cleardevice; if i<360 then i:=i+1 else i:=1; until keypressed; readln; closegraph; END.
Андрей Р
Андрей Р
199
Раз сам написал вращение, то и коефициенты сможешь подобрать

--------------------
program lab4;

uses crt,graph;

var gdriver,gmode,x,y,x12,y12,x122,y122,x1,y1,x11,y11,x111,y111,x2,y2,x22,y22,x3,y3,x33,y33,r,d,i,ii: integer;
t,t1: real;

BEGIN
clrscr;
gdriver:=detect;
initgraph(gdriver,gmode,'d:\bp\bgi');

x:=getmaxx div 2;
y:=getmaxy div 2;
r:=50;
i:=1;
d:=100;
setcolor(2);

repeat

t:=2*i*sin(180);
t1:=2*ii*cos(180);

x:=round(r*cos(t1))+getmaxx div 2;
y:=round(r*sin(t1))+getmaxy div 2;
x1:=round(r*cos(t1+pi))+getmaxx div 2;
y1:=round(r*sin(t1+pi))+getmaxy div 2;
line(x-270,y-180,x1-270,y1-180);

x2:=round(r*cos(t1))+getmaxx div 2;
y2:=round(r*sin(t1))+getmaxy div 2;
x22:=round(r*cos(t1+pi))+getmaxx div 2;
y22:=round(r*sin(t1+pi))+getmaxy div 2;
line(x2-270,y2+180,x22-270,y22+180);

y3:=round(r*cos(t))+getmaxx div 2;
x3:=round(r*sin(t))+getmaxy div 2;

y33:=round(r*cos(t+pi))+getmaxx div 2;
x33:=round(r*sin(t+pi))+getmaxy div 2;

line(x3+330,y3+100,x33+330,y33+100);

y11:=round(r*cos(t))+getmaxx div 2;
x11:=round(r*sin(t))+getmaxy div 2;
y111:=round(r*cos(t+pi))+getmaxx div 2;
x111:=round(r*sin(t+pi))+getmaxy div 2;
line(x11+330,y11-270,x111+330,y111-270);

setcolor(Red);
x12:=round(r*cos(t))+getmaxx div 2;
y12:=round(r*sin(t))+getmaxy div 2;
x122:=round(r*cos(t+pi))+getmaxx div 2;
y122:=round(r*sin(t+pi))+getmaxy div 2;
line(x12,y12,x122,y122);
setColor(green);
delay(1500);
cleardevice;
if i<360 then i:=i+1 else i:=1;
ii := 2+i;
until keypressed;
readln;
closegraph;
END.
Макс Кириенко
Макс Кириенко
6 004
Лучший ответ
cyberforum. ru - там спрашивал? Здесь просто бессмысленно это в большинстве случаев. я не вникал в твою программу еще, но возник сразу вопрос: Ты с преподавателем эту задачу обсуждал?

Давай так: что именно тебе не понятно? Определился - теперь вбей это в поисковик или почитай в книжке. Нет - я тебя никуда не шлю или что-то в этом роде. Есть множество типов которые с тебя еще деньги возьмут. Постарайся разобраться сам. Почитай про графику в Паскале - думаю разберешься как выводить.

Удачи.

P.s. Помни - экран состоит из точек)))) )

P.P.s. На худой конец пройди по ссылке которую я дал и там задай в соответствующей теме вопрос. Там больше умов, которые ждут твоего вопроса) . Хотя не знаю как они к нему отнесутся. Может помогут, а может будут вести дискусии на тему "подумай" так же как я =)))) Все относительно)
NM
Nurik Meimanbaev
6 180