IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> секундомер графический, нужна программа
сообщение
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 86
Пол: Мужской

Репутация: -  0  +


Нужен секундомер в графике. Циферблат, нажатие кнопки - старт/стоп
Где-то недавно видел готовый, нужен для одной идеи.
Помогите найти пожалуйста и подскажите
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Гость






А, у тебя Турбо Паскаль... Ясно. Тогда за основу можешь взять вот это (я не знаю, как у тебя замеряется время, что еще должно происходить, вот код, который просто рисует секундомер, и останавливает его по нажатию любой кнопки на клавиатуре...)

uses crt, dos, graph;

const
R = 100;
angle = (360 / 60) * pi / 180;

procedure Draw(CX, CY: integer);
var
i: integer;
len: integer;
begin
setcolor(white);
circle(cx, cy, R);
for i := 0 to 59 do begin
if i mod 5 = 0 then begin
setcolor(lightred); len := 5;
end
else begin
setcolor(white); len := 3;
end;

line(
cx + Trunc((R - len) * cos(i*angle)),
cy - Trunc((R - len) * sin(i*angle)),
cx + Trunc((R + len) * cos(i*angle)),
cy - Trunc((R + len) * sin(i*angle))
);
end;
end;

procedure DrawArrow(CX, CY: integer; sec: integer);
const
ArrowLen = 0.8;
begin
line(
cx, cy,
cx + Trunc(ArrowLen*R * cos(pi/2 - sec*angle)),
cy - Trunc(ArrowLen*R * sin(pi/2 - sec*angle))
);
end;

Function GetTime: LongInt;
Var
h, m, s, ms: Word;
R: longint;
begin
Dos.GetTime(h, m, s, ms);
GetTime := ms + 100 * (s + 60 * (longint(m) + 60 * h));
end;

var
gd, gm: integer;
i: integer;
curr_time: longint;
stop: boolean;

begin
gd := detect;
initgraph(gd, gm, '');
Draw(getmaxx div 2, getmaxy div 2);
setwritemode(xorput);

i := 0; stop := false;
repeat
DrawArrow(getmaxx div 2, getmaxy div 2, i mod 60);

curr_time := GetTime;
while GetTime - curr_time < 100 do; { просто ждем 1 секунду }
if keypressed then begin
stop := true; while keypressed do readkey;
end;

DrawArrow(getmaxx div 2, getmaxy div 2, i mod 60);
inc(i);
until stop;

readln;
closegraph;
end.
Чтобы оно запускалось повторно - надо "обернуть" это все еще одним циклом...
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 7.09.2025 2:25
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name