![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
Pascal |
![]()
Сообщение
#1
|
Группа: Пользователи Сообщений: 5 Репутация: ![]() ![]() ![]() |
Подскажите, как сделать часы на Паскале, лучше со стрелками. Очень надо!
![]() |
virt |
![]()
Сообщение
#2
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 419 Пол: Мужской Репутация: ![]() ![]() ![]() |
тебе татушка нужна???
а так есть системный таймер : Код var Timer:longint absolute $0:$046c; по этому адресу ~ 18.2 раза в секунду увеличивается значение на 1 (точнее 1000/55 ~= 18.18...). Можешь отслеживать изменения и каждые 18 увеличений прорисовывать новое положение стрелок. Не забудь каждые 1620 увеличений счетчика (90 секунд) ,корректировать значение часов на +2 сек. Но это теория ,может тебя именно графическая реализация интересовала? Сообщение отредактировано: volvo - 22.01.2005 11:36 -------------------- |
Serega |
![]()
Сообщение
#3
|
Новичок ![]() Группа: Пользователи Сообщений: 15 Пол: Мужской Репутация: ![]() ![]() ![]() |
Если все лишнее убрать, то получится то, что тебе надо. ;)
Код program clock; uses crt,graph,dos; var gb,gm,R:integer;x,y,x1,y1,u1,u,x2,y2,u2:real; i:integer; s:string[2]; h,m,c,d,c1:word; begin gb:=detect; initgraph(gb,gm,'c:\bp\bgi'); R:=80;x:=320;y:=240; x1:=320;y1:=240;u:=-pi/2; x2:=320;y2:=240; setfillstyle(1,6); bar(0,300,640,480); setfillstyle(10,2); bar(0,0,640,300); setfillstyle(1,7); setcolor(7); sector(250,150,35,215,30,30); sector(390,150,325,360,30,30); sector(390,150,0,143,30,30); setlinestyle(0,0,3); line(250,150,270,170); line(390,150,370,170); bar(305,120,335,125); line(320,125,320,170); setlinestyle(0,0,1); sector(320,360,0,180,60,40); setfillstyle(1,6);setcolor(6); fillellipse(320,370,40,25); setfillstyle(1,7); fillellipse(320,240,R+20,R+20); setbkcolor(0); for i:=1 to 12 do begin u:=u+pi/6; x:=(R+10)*cos(u)+317;y:=(R+10)*sin(u)+237; str(i,s); outtextxy(round(x),round(y),s); end; for i:=1 to 60 do begin u:=u+pi/30; x:=(R+17)*cos(u)+320;y:=(R+17)*sin(u)+240; putpixel(round(x),round(y),1); end; for i:=1 to 12 do begin u:=u+pi/6; x:=(R+17)*cos(u)+320;y:=(R+17)*sin(u)+240; setcolor(1); setfillstyle(1,7); fillellipse(round(x),round(y),2,2); circle(round(x),round(y),2); end; repeat gettime(h,m,c,d); if c1<>c then begin c1:=c; setcolor(7); line(320,240,round(x),round(y)); line(320,240,round(x1),round(y1)); setlinestyle(0,0,3); line(320,240,round(x2),round(y2)); x2:=(R-23)*cos(u2)+320;y2:=(R-30)*sin(u2)+240; setcolor(9); line(320,240,round(x2),round(y2)); setlinestyle(0,0,1); x1:=(R-15)*cos(u1)+320;y1:=(R-15)*sin(u1)+240; setcolor(1); line(320,240,round(x1),round(y1)); x:=(R)*cos(u)+320;y:=(R)*sin(u)+240; setcolor(4); line(320,240,round(x),round(y)); setcolor(4); setfillstyle(1,4); fillellipse(320,240,3,3); u:=(c+45)*pi/30; u1:=(m+45)*60*pi/1800; u2:=(h*5+m/15+45)*3600*pi/108000; end; until keypressed; closegraph; end. По-моему это надо отправить в "Задачи" -------------------- Не могу сидеть, когда другие работают.
Пойду полежу. |
Pascal |
![]()
Сообщение
#4
|
Группа: Пользователи Сообщений: 5 Репутация: ![]() ![]() ![]() |
Serega
Подскажи, где можно взять модуль dos. |
trminator |
![]()
Сообщение
#5
|
Четыре квадратика ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 579 Пол: Мужской Репутация: ![]() ![]() ![]() |
Модуль DOS -- встроенный модуль Паскаля (в Borland/Turbo pascal for DOS как минимум)
-------------------- Закон добровольного труда Зимерги:
Люди всегда согласны сделать работу, когда необходимость в этом уже отпала |
Pascal |
![]()
Сообщение
#6
|
Группа: Пользователи Сообщений: 5 Репутация: ![]() ![]() ![]() |
Спасибо, у меня ещё один вопрос: где-нибудь можно взять исходники часов?
|
HelpAusHeaven |
![]()
Сообщение
#7
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 57 Пол: Мужской Репутация: ![]() ![]() ![]() |
Какие именно тебе нужны исходники?
Тебе же привели уже программу с исходным кодом.... -------------------- Рассылка: "Решение Вами Предложенных Задач На Языке PASCAL. Алгоритмы на PASCAL."
Подписка по e-mail: comp.soft.prog.pascal123-sub@subscribe.ru |
Pascal |
![]()
Сообщение
#8
|
Группа: Пользователи Сообщений: 5 Репутация: ![]() ![]() ![]() |
Часы с этим кодом у меня бегают как бешеные.
|
BlackShadow |
![]()
Сообщение
#9
|
Гость ![]() |
А ты им успокоительное синсталлируй
![]() Пардон за флуд |
virt |
![]()
Сообщение
#10
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 419 Пол: Мужской Репутация: ![]() ![]() ![]() |
Pascal
а ты перед gettime поставь Код delay(100); -------------------- |
BlackShadow |
![]()
Сообщение
#11
|
Гость ![]() |
virt, а я бы Delay и не советовал. Работает он сейчас... Ну дай бог через 10 раз...
|
FreeMan |
![]()
Сообщение
#12
|
- ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 480 Пол: Мужской Репутация: ![]() ![]() ![]() |
вместа дэлая юзай системный таймер по адресу $40:$6c.
![]() -------------------- бб
|
Pascal |
![]()
Сообщение
#13
|
Группа: Пользователи Сообщений: 5 Репутация: ![]() ![]() ![]() |
Ну вроде заработало.
Спасибо всем! Тему можно закрывать. |
Человечище |
![]()
Сообщение
#14
|
Гость ![]() |
Нет!!!
Тему закрывать нельзя. Может кто-нибудь предоставит решение классической задачи "ЧАСЫ". Пусть даны целые числа m,n (часы, минуты), 0 <= m <= 11, 0 <= n <= 59, определяющие время суток. Опеределить наименьшее время (число полных минут), которое должно пройти до того момента, когда часовая и минутная стрелки: 1. совпадут 2. расположатся перпендикулярно друг другу (программа должна быть линейной[без циклов, ветвлений]) Задача взята из задачника Усковой "Программирование на языке Паскаль". Чего то не доходит, как её решать!!! ![]() |
Atos |
![]()
Сообщение
#15
|
![]() Прогрессор ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 602 Пол: Мужской Реальное имя: Михаил Репутация: ![]() ![]() ![]() |
Для 1. надо воспользоваться тем фактом, что 11 точек совпадения стрелок делят циферблат на 11 равных частей.
|
Гость |
![]()
Сообщение
#16
|
Гость ![]() |
а может и мне поможете? у нас в школе началось программирование в паскале... и задал нам препод очень странную задачку : надо создать часы в формате часы:минуты:секунды , чтобы было 01 , 05 ( сек мин часов) и т.д. а также чтобы можно было устанавливать время самостоятельно, был будильник... сколько пробовал сделать не получается...
![]() Прикрепленные файлы ![]() |
Артемий |
![]()
Сообщение
#17
|
![]() Помощник капитана ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 601 Пол: Мужской Реальное имя: Артем Репутация: ![]() ![]() ![]() |
Цитата а также чтобы можно было устанавливать время самостоятельно Но он у тебя каждый раз должен просто отсчет вперед вести (1 сек,2 сек, 3 сек, n сек) или все-таки время системное показывать? Или ты имел ввиду настроить время для будильника? -------------------- Dum spiro spero!
|
Артемий |
![]()
Сообщение
#18
|
![]() Помощник капитана ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 601 Пол: Мужской Реальное имя: Артем Репутация: ![]() ![]() ![]() |
немного подделал по твоему наброску..Если не очень красиво, без обид.
![]() uses crt; Сообщение отредактировано: Артемий2 - 14.03.2007 21:28 -------------------- Dum spiro spero!
|
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 6:43 |