Паскаль!!! Нужно написать модель солнечной системы с 3 планетами (Меркурий, Венера, Земля) и 1 спутник (Луна). Чем дальше планеты от солнца, тем медленнее они крутятся. Есть код на одну планету, нужно дописать остальное в похожем стиле.
uses crt, graphABC ;
var
x , y , x0 , y0 , rvod , xe , ye , rel , dy , re , i : integer ;
Begin
x := 640 ; // ширина окна
y := 480 ; // высота окна
setwindowsize ( x , y ) ; // устанавливаем размер окна
x0 :=x div 2 ; // центр Х
y0 := y div 2 ; // центр у
rvod :=70 ; // радиус солнца
rel := 10 ; // радиус венеры .
dy :=100 ;
re :=y0 - dy ; // радиус вращения венеры
i :=360 ;
repeat
clearwindow ;
if i=360 then i:= 1 else inc ( i ) ;
setpencolor ( clorange ) ; // цвет пера
circle ( x0 , y0 , rvod ) ; // солнце
floodfill ( x0 , y0 , clyellow ) ; // заливка фигуры ( солнце )
xe := x0 + round ( re*cos( i*pi / 180 ) ) ;
ye := y0 + round ( re*sin (i*pi / 180 ) ) ;
circle ( xe , ye , rel ) ; // (венера)
delay ( 10 ) ;
until keypressed
End.
Ответы на вопрос
Можно сделать так: у каждой планеты свой радиус орбиты и своя скорость. Чем дальше планета от Солнца, тем меньше скорость изменения угла.
Код на PascalABC.NET:
uses crt, graphABC;
var
x, y, x0, y0: integer;
rSun: integer;
rMercury, rVenus, rEarth, rMoon: integer;
orbMercury, orbVenus, orbEarth, orbMoon: integer;
xm, ym, xv, yv, xe, ye, xl, yl: integer;
i: integer;
begin
x := 640;
y := 480;
setwindowsize(x, y);
x0 := x div 2;
y0 := y div 2;
rSun := 35;
rMercury := 5;
rVenus := 8;
rEarth := 9;
rMoon := 3;
orbMercury := 70;
orbVenus := 120;
orbEarth := 180;
orbMoon := 20;
i := 0;
repeat
clearwindow;
inc(i);
setpencolor(clOrange);
circle(x0, y0, rSun);
floodfill(x0, y0, clYellow);
xm := x0 + round(orbMercury * cos(4 * i * pi / 180));
ym := y0 + round(orbMercury * sin(4 * i * pi / 180));
setpencolor(clGray);
circle(xm, ym, rMercury);
floodfill(xm, ym, clGray);
xv := x0 + round(orbVenus * cos(2 * i * pi / 180));
yv := y0 + round(orbVenus * sin(2 * i * pi / 180));
setpencolor(clBrown);
circle(xv, yv, rVenus);
floodfill(xv, yv, clBrown);
xe := x0 + round(orbEarth * cos(i * pi / 180));
ye := y0 + round(orbEarth * sin(i * pi / 180));
setpencolor(clBlue);
circle(xe, ye, rEarth);
floodfill(xe, ye, clBlue);
xl := xe + round(orbMoon * cos(6 * i * pi / 180));
yl := ye + round(orbMoon * sin(6 * i * pi / 180));
setpencolor(clLightGray);
circle(xl, yl, rMoon);
floodfill(xl, yl, clLightGray);
delay(20);
until keypressed;
end.
Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili

