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

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

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

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


Пионер
**

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

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


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


Гость






Это имеешь в виду: Простые часы ? Это именно часы, но секундомер пишется по тому же принципу.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Пионер
**

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

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


А где можно модули скачать для неё?
Бета-версия ругается на модули, а с WinApi вообще непонятно, там вообще много ругательств smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






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

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.
Чтобы оно запускалось повторно - надо "обернуть" это все еще одним циклом...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Пионер
**

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

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


Спасибо большое!

Добавил цикл. Только вот когда нажимаешь кнопку для
остановки стрелка пропадает, потом нажимаю для старта - появляется. Куда добавить
чтобы она в последнем положении замирала?


Добавлено через 11 мин.

А, разобрался
Ещё немного
нагло. Не встречал электронный, т.е цифровой секундомер в графическом режиме
т.е цифры большие на экране считают?

Сообщение отредактировано: striker -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






Я бы сделал так:
begin
gd := detect;
initgraph(gd, gm, '');
Draw(getmaxx div 2, getmaxy div 2);
setwritemode(xorput);

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

curr_time := GetTime;
while GetTime - curr_time < 100 do;
if keypressed then begin
stop := true; while keypressed do readkey;
end;

if not stop then begin
DrawArrow(getmaxx div 2, getmaxy div 2, i mod 60);
inc(i);
end;
until stop;

while not keypressed do;
finished := readkey = #27;
DrawArrow(getmaxx div 2, getmaxy div 2, i mod 60);
until finished;
closegraph;
end.
Нажатие Esc в положении Stop = выход из программы... Для повторного старта - любая другая клавиша...

Добавлено через 52 сек.
Цитата
Не встречал электронный, т.е цифровой секундомер в графическом режиме т.е цифры большие на экране считают?
Готовый - не встречал, семисегментные индикаторы делал сам...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Пионер
**

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

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


А что такое семисегментные?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






Каждая цифра состоит из 7-ми сегментов:
Wiki: Семисегментный индикатор

Если надо, то см. здесь: Графика на Паскале, Часы
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Пионер
**

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

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


Спасибо.
А не подскажешь почему у меня при запуске в TP экран сразу сворачивается? blink.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Гость






Не знаю, у меня ничего не сворачивается... Можешь попробовать добавить
g_driver := detect;
первой строкой, может от этого?
P.S. Вопросы по другим программам - не здесь, договорились? Здесь - только о секундомере со стрелкой...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Пионер
**

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

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


ок smile.gif

Сообщение отредактировано: striker -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





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