Имитация часов. Движение по часовой стрелке - Pascal ABC

Узнай цену своей работы

Формулировка задачи:

Здравствуйте. Помогите пожалуйста. Дело вот в чем, нужно сделать имитацию часов, пока первая стрелка делает 1 круг, вторая делает два. Фон - рисунок. Не могу додуматься как стрелки направить в правильную сторону, и как ихнее движение сделать по отдельности. И если не сложно, подскажите каким способом лучше очищать (что бы движение было видно), просто мигает, а это раздражительно. Строго не судите, начинающий.
Забыл шаг уменьшить, что бы стрелки не так быстро летали....0.001 в самый раз.

Решение задачи: «Имитация часов. Движение по часовой стрелке»

textual
Листинг программы
Program Clock;
USES Crt,graphABC;
var xc,yc,x1,y1,x2,y2,r1,r2:integer;
    k:integer;
    a1,a2:real;
    pic:string;
begin
hidecursor;
SetWindowSize(400,400);
SetFontStyle(fsBoldItalicUnderline);
SetFontName('Arial');
SetFontColor(clOlive);
pic:=('cvet.bmp');
k:=loadPicture(pic);
xc:=windowwidth div 2;
yc:=windowheight div 2;
SetPenWidth(5);
a1:=0;a2:=0;
r1:=100; r2:=80;
repeat
DrawPicture(k,0,0,400,400);
TextOut(100,380,'"Эмуляция часов"');
SetFontSize(10);
SetFontColor(clBlack);
TextOut(xc,yc-r1-10,'"12"');
TextOut(xc,yc+r1+10,'"6"');
TextOut(xc+r1+10,yc,'"3"');
TextOut(xc-r1-10,yc,'"9"');
SetPenColor(clBlack);
x1:=xc+round(r1*sin(Pi*a1/180));
y1:=yc-round(r1*cos(Pi*a1/180));
Line(xc,yc,x1,y1);
SetPenColor(clRed);
x2:=xc+round(r2*sin(Pi*a2/180));
y2:=yc-round(r2*cos(Pi*a2/180));
Line(xc,yc,x2,y2);
sleep(1000);
clearwindow;
a1:=a1+12;
a2:=a2+6;
Until keypressed
end.

Объяснение кода листинга программы

  1. Объявление переменных: xc, yc, x1, y1, x2, y2, r1, r2, k, a1, a2, pic (ссылки на графические элементы и переменные для их хранения).
  2. Установка параметров экрана и шрифта: SetWindowSize(400, 400); SetFontStyle(fsBoldItalicUnderline); SetFontName('Arial'); SetFontColor(clOlive);
  3. Загрузка изображения: pic := ('cvet.bmp'); k := loadPicture(pic);
  4. Установка начальных значений переменных: xc := windowwidth div 2; yc := windowheight div 2; r1 := 100; r2 := 80; a1 := 0; a2 := 0;
  5. Цикл выполнения программы: repeat Отображение изображения и текста: DrawPicture(k, 0, 0, 400, 400); TextOut(100, 380, 'Эмуляция часов'); SetFontSize(10); SetFontColor(clBlack); TextOut(xc, yc - r1 - 10, '12'); TextOut(xc, yc + r1 + 10, '6'); TextOut(xc + r1 + 10, yc, '3'); TextOut(xc - r1 - 10, yc, '9'); SetPenColor(clBlack); Вычисление координат для линий: x1 := xc + round(r1 sin(Pi a1 / 180)); y1 := yc - round(r1 cos(Pi a1 / 180)); x2 := xc + round(r2 sin(Pi a2 / 180)); y2 := yc - round(r2 cos(Pi a2 / 180)); Отображение линий: SetPenColor(clRed); Line(xc, yc, x1, y1); Line(xc, yc, x2, y2); Задержка в 1 секунду: sleep(1000); Очистка окна: clearwindow; Увеличение значений переменных: a1 := a1 + 12; a2 := a2 + 6; until keypressed
  6. Завершение программы.

ИИ для рефератов и докладов


  • Экспорт Word по ГОСТу
  • Минимум 80% уникальности текста
  • Поиск релевантных источников в интернете
  • Готовый документ за 2 минуты

Оцени полезность:

8   голосов , оценка 4.125 из 5
Похожие ответы