Часы |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Часы |
Pascal |
Сообщение
#1
|
Группа: Пользователи Сообщений: 5 Репутация: 0 |
Подскажите, как сделать часы на Паскале, лучше со стрелками. Очень надо!
|
virt |
Сообщение
#2
|
Знаток Группа: Пользователи Сообщений: 419 Пол: Мужской Репутация: 6 |
тебе татушка нужна???
а так есть системный таймер : Код var Timer:longint absolute $0:$046c; по этому адресу ~ 18.2 раза в секунду увеличивается значение на 1 (точнее 1000/55 ~= 18.18...). Можешь отслеживать изменения и каждые 18 увеличений прорисовывать новое положение стрелок. Не забудь каждые 1620 увеличений счетчика (90 секунд) ,корректировать значение часов на +2 сек. Но это теория ,может тебя именно графическая реализация интересовала? Сообщение отредактировано: volvo - -------------------- |
Serega |
Сообщение
#3
|
Новичок Группа: Пользователи Сообщений: 15 Пол: Мужской Репутация: 0 |
Если все лишнее убрать, то получится то, что тебе надо. ;)
Код 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 Репутация: 0 |
Serega
Подскажи, где можно взять модуль dos. |
trminator |
Сообщение
#5
|
Четыре квадратика Группа: Пользователи Сообщений: 579 Пол: Мужской Репутация: 4 |
Модуль DOS -- встроенный модуль Паскаля (в Borland/Turbo pascal for DOS как минимум)
-------------------- Закон добровольного труда Зимерги:
Люди всегда согласны сделать работу, когда необходимость в этом уже отпала |
Pascal |
Сообщение
#6
|
Группа: Пользователи Сообщений: 5 Репутация: 0 |
Спасибо, у меня ещё один вопрос: где-нибудь можно взять исходники часов?
|
HelpAusHeaven |
Сообщение
#7
|
Пионер Группа: Пользователи Сообщений: 57 Пол: Мужской Репутация: 0 |
Какие именно тебе нужны исходники?
Тебе же привели уже программу с исходным кодом.... -------------------- Рассылка: "Решение Вами Предложенных Задач На Языке PASCAL. Алгоритмы на PASCAL."
Подписка по e-mail: comp.soft.prog.pascal123-sub@subscribe.ru |
Pascal |
Сообщение
#8
|
Группа: Пользователи Сообщений: 5 Репутация: 0 |
Часы с этим кодом у меня бегают как бешеные.
|
BlackShadow |
Сообщение
#9
|
Гость |
А ты им успокоительное синсталлируй
Пардон за флуд |
virt |
Сообщение
#10
|
Знаток Группа: Пользователи Сообщений: 419 Пол: Мужской Репутация: 6 |
Pascal
а ты перед gettime поставь Код delay(100); -------------------- |
BlackShadow |
Сообщение
#11
|
Гость |
virt, а я бы Delay и не советовал. Работает он сейчас... Ну дай бог через 10 раз...
|
FreeMan |
Сообщение
#12
|
- Группа: Пользователи Сообщений: 480 Пол: Мужской Репутация: 4 |
вместа дэлая юзай системный таймер по адресу $40:$6c.
-------------------- бб
|
Pascal |
Сообщение
#13
|
Группа: Пользователи Сообщений: 5 Репутация: 0 |
Ну вроде заработало.
Спасибо всем! Тему можно закрывать. |
Человечище |
Сообщение
#14
|
Гость |
Нет!!!
Тему закрывать нельзя. Может кто-нибудь предоставит решение классической задачи "ЧАСЫ". Пусть даны целые числа m,n (часы, минуты), 0 <= m <= 11, 0 <= n <= 59, определяющие время суток. Опеределить наименьшее время (число полных минут), которое должно пройти до того момента, когда часовая и минутная стрелки: 1. совпадут 2. расположатся перпендикулярно друг другу (программа должна быть линейной[без циклов, ветвлений]) Задача взята из задачника Усковой "Программирование на языке Паскаль". Чего то не доходит, как её решать!!! |
Atos |
Сообщение
#15
|
Прогрессор Группа: Пользователи Сообщений: 602 Пол: Мужской Реальное имя: Михаил Репутация: 9 |
Для 1. надо воспользоваться тем фактом, что 11 точек совпадения стрелок делят циферблат на 11 равных частей.
|
Гость |
Сообщение
#16
|
Гость |
а может и мне поможете? у нас в школе началось программирование в паскале... и задал нам препод очень странную задачку : надо создать часы в формате часы:минуты:секунды , чтобы было 01 , 05 ( сек мин часов) и т.д. а также чтобы можно было устанавливать время самостоятельно, был будильник... сколько пробовал сделать не получается... то что получилось прекреплю...
Прикрепленные файлы Gmail.zip ( 676 байт ) Кол-во скачиваний: 239 |
Артемий |
Сообщение
#17
|
Помощник капитана Группа: Пользователи Сообщений: 601 Пол: Мужской Реальное имя: Артем Репутация: 2 |
Цитата а также чтобы можно было устанавливать время самостоятельно Но он у тебя каждый раз должен просто отсчет вперед вести (1 сек,2 сек, 3 сек, n сек) или все-таки время системное показывать? Или ты имел ввиду настроить время для будильника? -------------------- Dum spiro spero!
|
Артемий |
Сообщение
#18
|
Помощник капитана Группа: Пользователи Сообщений: 601 Пол: Мужской Реальное имя: Артем Репутация: 2 |
немного подделал по твоему наброску..Если не очень красиво, без обид.
uses crt; Сообщение отредактировано: Артемий2 - -------------------- Dum spiro spero!
|
Текстовая версия | 11.10.2024 21:58 |