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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.06.2010, 11:48   #1
Темир
Новичок
Джуниор
 
Регистрация: 13.06.2010
Сообщений: 3
По умолчанию 1. Нарисовать часы в Pascal. Секундная стрелка перемещается.

1. Нарисовать часы в Pascal. Секундная стрелка перемещается.
Темир вне форума Ответить с цитированием
Старый 13.06.2010, 11:53   #2
Темир
Новичок
Джуниор
 
Регистрация: 13.06.2010
Сообщений: 3
По умолчанию

Помгоите пожалуйста!!!)))
Темир вне форума Ответить с цитированием
Старый 13.06.2010, 11:59   #3
baster128
Форумчанин
 
Аватар для baster128
 
Регистрация: 24.04.2010
Сообщений: 205
По умолчанию

Писать все это в лом. Есть готовый компонент именно часики со стрелочками.
Вложения
Тип файла: rar SRClock.rar (5.7 Кб, 61 просмотров)
baster128 вне форума Ответить с цитированием
Старый 13.06.2010, 12:03   #4
Темир
Новичок
Джуниор
 
Регистрация: 13.06.2010
Сообщений: 3
По умолчанию

от души братан))))но мне с помощью Graph надо)
Темир вне форума Ответить с цитированием
Старый 13.06.2010, 12:18   #5
ROMA2PVT
ТАМБОВСКИЙ ВОЛК.
Участник клуба
 
Аватар для ROMA2PVT
 
Регистрация: 16.03.2010
Сообщений: 1,354
По умолчанию

http://bpascal.ru/download/desc/38.php
にんじゃ
ROMA2PVT вне форума Ответить с цитированием
Старый 13.06.2010, 13:21   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

держи, братан... Переводи деньги мне на банковский счёт

я вытащил куски кода с Delphi (из компонента SRClock, выложенного baster128) и переложил код на Pascal...

Код:
uses crt,graph, Dos;
type TPoint=record
    x,y:integer;
end;


function XKoord(XMittel,XRadius,Grad:word):word;
begin
  XKoord:=round(XMittel-(sin(Grad*Pi/180)*XRadius));
end; {XKoord}

function YKoord(YMittel,YRadius,Grad:word):word;
begin
  YKoord:=round(YMittel-(cos(Grad*Pi/180)*YRadius));
end; {YKoord}

  procedure AlTextOut(X,Y:integer;sText:string);
  var LeftOut,TopOut : integer;
  begin
      LeftOut:=X -(length(sText)*7 div 2);
      TopOut :=Y-2; {-(5 div 2);}
      OutTextXY(LeftOut, TopOut, sText);
  end;


var
  Center : TPoint;
  XRadius: Integer;
  YRadius: Integer;
  i : integer;
  gd, gm : integer;
  s : string;
  FHour, FMinute, FSecond, FHundredth : Word;
  Grad : Integer;


procedure ShowArrows;
begin
  SetColor(Blue);
  SetLineStyle(SolidLn, 0, 5);
  MoveTo(Center.X, Center.Y);
  LineTo(XKoord(Center.X,XRadius div 2,Grad),
             YKoord(Center.Y,YRadius div 2,Grad));

  { Minuten }
  SetColor(Blue);
  SetLineStyle(SolidLn, 0, ThickWidth);
  MoveTo(Center.X, Center.Y);
  LineTo(XKoord(Center.X,XRadius-10,360-(FMinute*6)),
             YKoord(Center.Y,YRadius-10,360-(FMinute*6)));

  { Секунды }
  SetColor(Green);
  SetLineStyle(SolidLn, 0, NormWidth);
  MoveTo(XKoord(Center.X,5,180-(FSecond*6)),
               YKoord(Center.Y,5,180-(FSecond*6)));
  LineTo(XKoord(Center.X,XRadius-8,360-(FSecond*6)),
               YKoord(Center.Y,YRadius-8,360-(FSecond*6)));
end;

begin

  gd := detect;
  initgraph(gd, gm, '..\BGI');

  Center.X:=GetMaxX div 2;
  Center.Y:=GetMaxY div 2;
  XRadius:=200;
  YRadius:=200;


  for i:=1 to 12 do begin
    MoveTo(XKoord(Center.X-1, XRadius-1, 360-(i*30)),
           YKoord(Center.Y-1, YRadius-1, 360-(i*30)));
    LineTo(XKoord(Center.X-1, XRadius-5, 360-(i*30)),
           YKoord(Center.Y-1, YRadius-5, 360-(i*30)));
  end;

  {Отобразим цифры}
  for i:=1 to 12 do  begin
     str(i:1,s);
     AlTextOut(XKoord(Center.X, XRadius+10, 360-(i*30)),
         YKoord(Center.Y, YRadius+10, 360-(i*30)),
         s);
  end;

  repeat
     {нарисуем круг циферблата}
     {  Circle(Center.X, Center.Y, XRadius); }
  GetTime(FHour, FMinute, FSecond, FHundredth);

  Grad:=360-((FHour mod 12)*30);
  Grad:=Grad-round(30*(FMinute/60));

  SetWriteMode(NormalPut);
  ShowArrows;
  
  {задержку можно сделать побольше!!
    подбирается опытным путём в зависимости
    от корректности работы процедуры DELAY из  модуля CRT}
  Delay(500);

  SetWriteMode(XORPut);
  ShowArrows; {стираем стрелки}
  until KeyPressed;

{  Readln;}
  CloseGraph;
end.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Progressbar не перемещается на задний план tocsik Компоненты Delphi 5 20.09.2009 18:32
pascal сегментные часы world12_tk Помощь студентам 9 03.06.2009 22:20
Нарисовать кораблик (Turbo Pascal) Сэм Помощь студентам 9 15.04.2009 19:46
Стрелка у ярлыка Altera Windows 3 29.10.2008 14:45
Стрелка мыши Gladiator Общие вопросы Delphi 3 21.05.2008 20:56