Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.12.2015, 13:49   #1
Sour1
 
Регистрация: 15.12.2015
Сообщений: 8
По умолчанию Часы в турбо паскаль

Помогите сделать затирание минутной и часовой стрелки, и убрать лишние линии
Код:
program clock;
uses Dos,graph,Crt;
var
  H, M, S, Hund : Word;
 x,y,x0,y0:integer;
  grDriver : Integer;
  grMode   : Integer;
  ErrCode  : Integer;
begin
  grDriver := Detect;
  InitGraph(grDriver, grMode, 'X:\BP');
if graphresult <>grOk then
halt(1);
circle(250,250,100);
repeat
x0:=250;
y0:=250;
begin

setCOLOR(blue);
x:=round(100*sin((pi/30)*s));
y:=round(100*cos((pi/30)*s));
line(x+x0,-y+y0,x0,y0);

delay(1000);
setCOLOR(black);
x:=round(100*sin((pi/30)*s));
y:=round(100*cos((pi/30)*s));
line(x+x0,-y+y0,x0,y0);

setCOLOR(red);
x:=round(100*sin((pi/30)*m));
y:=round(100*cos((pi/30)*m));
line(x+x0,-y+y0,x0,y0);

setCOLOR(white);
x:=round(50*sin((pi/6)*H));
y:=round(50*cos((pi/6)*H));
line(x+x0,-y+y0,x0,y0);

 GetTime(H, M, S, Hund);
end;
until keypressed;
   CloseGraph;

end.
_____
Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ)
Модератор

Последний раз редактировалось Serge_Bliznykov; 16.12.2015 в 14:13.
Sour1 вне форума Ответить с цитированием
Старый 16.12.2015, 14:48   #2
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Код:
program clock;
uses Dos,graph,Crt;
var
  H, M, S, Hund : Word;
 x,y,x0,y0:integer;xh,yh,xm,ym,xs,ys:integer;
  grDriver : Integer;
  grMode   : Integer;
  ErrCode  : Integer;
begin
  grDriver := Detect;
  InitGraph(grDriver, grMode, '');
if graphresult <>grOk then
halt(1);
circle(250,250,100);
x0:=250;
y0:=250;
repeat
GetTime(H, M, S, Hund);

setCOLOR(black);
xm:=round(100*sin((pi/30)*m));
ym:=round(100*cos((pi/30)*m));
line(xm+x0,-ym+y0,x0,y0);
setCOLOR(red);
xm:=round(100*sin((pi/30)*m));
ym:=round(100*cos((pi/30)*m));
line(xm+x0,-ym+y0,x0,y0);

setCOLOR(black);
xh:=round(50*sin((pi/6)*H));
yh:=round(50*cos((pi/6)*H));
line(xh+x0,-yh+y0,x0,y0);
setCOLOR(white);
xh:=round(50*sin((pi/6)*H));
yh:=round(50*cos((pi/6)*H));
line(xh+x0,-yh+y0,x0,y0);

setCOLOR(blue);
xs:=round(100*sin((pi/30)*s));
ys:=round(100*cos((pi/30)*s));
line(xs+x0,-ys+y0,x0,y0);
delay(1000);
setCOLOR(black);
xs:=round(100*sin((pi/30)*s));
ys:=round(100*cos((pi/30)*s));
line(xs+x0,-ys+y0,x0,y0);

until keypressed;

CloseGraph;

end.
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 16.12.2015, 18:44   #3
Sour1
 
Регистрация: 15.12.2015
Сообщений: 8
По умолчанию

Аа ничего не поменялось
Появляется вторая минутная стрелка
Sour1 вне форума Ответить с цитированием
Старый 16.12.2015, 18:52   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Затирай все по каждому такту и по новой в соответствии с текущим временем. Это самый простой и кардинальный вариант. Можно и предыдущее положение стрелок затирать цветом фона.
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 16.12.2015, 22:10   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

а если так?
Код:
program clock;
uses Dos, graph, Crt;
var
  H, M, S, Hund: Word;
  H0, M0, S0: Word;
  x, y, x0, y0: integer; xh, yh, xm, ym, xs, ys: integer;
  grDriver, grMode, ErrCode : Integer;
begin
  grDriver := Detect;
  InitGraph(grDriver, grMode, '');
  if graphresult <> grOk then halt(1);
  circle(250, 250, 100);
  x0 := 250;
  y0 := 250;
  GetTime(H0, M0, S0, Hund);
  repeat
    GetTime(H, M, S, Hund);

    if M0 <> M then
    begin
      SetColor(black);
      xm := round(100 * sin((pi / 30) * M0));
      ym := round(100 * cos((pi / 30) * M0));
      line(xm + x0, -ym + y0, x0, y0);
      M0 := M;
    end;

    SetColor(red);
    xm := round(100 * sin((pi / 30) * M));
    ym := round(100 * cos((pi / 30) * M));
    line(xm + x0, -ym + y0, x0, y0);

    if H0 <> H then begin
      SetColor(black);
      xh := round(50 * sin((pi / 6) * H0));
      yh := round(50 * cos((pi / 6) * H0));
      line(xh + x0, -yh + y0, x0, y0);
      H0 := H; 
    end;
    SetColor(white);
    xh := round(50 * sin((pi / 6) * H));
    yh := round(50 * cos((pi / 6) * H));
    line(xh + x0, -yh + y0, x0, y0);

    SetColor(blue);
    xs := round(99 * sin((pi / 30) * S));
    ys := round(99 * cos((pi / 30) * S));
    line(xs + x0, -ys + y0, x0, y0);

    delay(1000);

    SetColor(black);
    xs := round(99 * sin((pi / 30) * S));
    ys := round(99 * cos((pi / 30) * S));
    line(xs + x0, -ys + y0, x0, y0);
  until keypressed;

  CloseGraph;

end.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как можно в Паскаль АВС (Паскаль-Турбо) вставлять в результаты печати программы графики, таблицы, схемы, набранные формулы, выраже IZOPGRAM Паскаль, Turbo Pascal, PascalABC.NET 0 11.06.2012 10:54
турбо паскаль IceFlame1292 Помощь студентам 2 11.01.2011 16:09
турбо паскаль Hallucinogin Помощь студентам 2 11.06.2010 22:38
Турбо Паскаль Jondeer Помощь студентам 3 28.10.2007 12:42