Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.69/35: Рейтинг темы: голосов - 35, средняя оценка - 4.69
Just Do It!
 Аватар для XLAT
4206 / 2663 / 655
Регистрация: 23.09.2014
Сообщений: 9,061
Записей в блоге: 3

Нужен простой таймер-будильник(консольный)

16.05.2018, 11:50. Показов 7484. Ответов 52

Студворк — интернет-сервис помощи студентам
Играю в БДО(не реклама), и вот понадобился простой таймер, который бы оповещал меня о прошествии заданного мной периода времени. То что я нашел в инетах, извиняюсь, просто хрень, все обнаруженные в ней недостатки меня не устраивают:
- навязчивые функции(кнопка на страницу разраба в полэкрана)
- сложный(а знам заведомо глючный) интерфейс
- неработающие функции(типа выбранный тип бипера просто не слышно)
- главные для меня функции не удобно сделаны или глубоко спрятаны.
- прочие глюки.

А вот так должен выглядеть концепт таймера под меня:
1. окошко вызываемое комбоклавишей.
2. кнопка переключения двух режимов: "В минутах до сигнала" и "Точное время сигнала"
3. место ввода циферек.

Все)
звуковой файлик прибит гвоздями, но можно его в ручную поменять в папочке)

И так на данной этапе нужен исключительно консольный вариант С++ класса делающий это чудо.
Графоболочку я прикручу отдельно)

С чего начать? Что посоветуете?


Буду рад каким-нибудь шаблонам по этой теме))
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.05.2018, 11:50
Ответы с готовыми решениями:

Консольный таймер
Здравствуйте,мне для программы нужен консольный таймер,скажите пожалуйста,как его сделать. Знаю что тема уже поднималась,но там ответа я не...

Простой консольный калькулятор
Я новичок, изучаю C++ всего первый день, начал изучение по книге Либерти "C++ за 21 день". Пока что из всех полученных мною знаний я...

Простой консольный калькулятор - не пойму, где ошибка
#include <stdio.h> int main() { float num1,num2,res,moreCalc; char operation; ...

52
 Аватар для COKPOWEHEU
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,921
17.05.2018, 10:13
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от XLAT Посмотреть сообщение
на данный момент нужна плюшка прерывание(отмена) отсчета таймера
ctrl+C
0
 Аватар для mrden777
14 / 20 / 14
Регистрация: 20.03.2018
Сообщений: 485
17.05.2018, 10:50
Ну сделай по примеру Кучки Там же нет ничего сложного
0
Just Do It!
 Аватар для XLAT
4206 / 2663 / 655
Регистрация: 23.09.2014
Сообщений: 9,061
Записей в блоге: 3
17.05.2018, 11:11  [ТС]
Цитата Сообщение от mrden777 Посмотреть сообщение
Ну сделай по примеру Кучки Там же нет ничего сложного
терпеть не могу видеоуроки))

еще вчера была готова исправленная версия exe(см.вложение),
но там я ни как не могу побороться очисткой клавиатурного буфера.
гугл пока не помогает)

Итак, на данный момент работает так:
1. Набираем время(в минутах).
2. Жмем ентер.
3. Таймер скрывается.
4. Для мониторинга жмем "SHIFT+1"
5. Для отключения мониторинга тоже "SHIFT+1"
все.


итак текущий дефект: после срабатывания таймера на новом предложении ввода времени таймера выводятся прожатые клавиши(аля кейлогер) во время последнего отсчета-работы таймера. Блин, не могу побороть, уже в асм скатился, а все советы гугла мимо.
Вложения
Тип файла: rar MyTimer.rar (18.5 Кб, 2 просмотров)
0
Just Do It!
 Аватар для XLAT
4206 / 2663 / 655
Регистрация: 23.09.2014
Сообщений: 9,061
Записей в блоге: 3
17.05.2018, 11:28  [ТС]
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
ctrl+C
хм, слишком частая операция для разных прог, могут быть коллизии.
конкретно в БДО я её использую.

Добавлено через 12 минут
ну, и да , конеш, комбинация "SHIFT+1" тоже не удачная, "!" часто используется в чате.
надо поменять на "CRL+1" или "ALT+1"

Добавлено через 2 минуты
а с дефектом решил бороться не через очистку буфера, а через очистку экрана, но это как бы халтура))
0
 Аватар для mrden777
14 / 20 / 14
Регистрация: 20.03.2018
Сообщений: 485
17.05.2018, 12:16
Скинь код полностью может я доработаю выложу
Шото после тыканий после мониторинга не робит
сигнал в заданное время
1
Just Do It!
 Аватар для XLAT
4206 / 2663 / 655
Регистрация: 23.09.2014
Сообщений: 9,061
Записей в блоге: 3
17.05.2018, 13:25  [ТС]
mrden777,
о, я только буду рад)

Не по теме:

упоминай только мой ник и этот форум, когда буш продавать))))))))) :D


исправлены мелкие недочеты.

Далее, вот, думаю морочиться с двумя потоками, один управляющий, ну а в управляемом сам таймер.
Это нужно, как я полагаю, чтобы избавиться от хлопот с перезапуском окна, т.е. что бы вся функциональность была в пределах досягаемость консольного окна.

mrden777,
правь, как считаешь нужным.
А у мя в планах сделать перезапуск таймера без закрытия консоли.

Полностью проект(МVS2010)+exe смотри вложение:
Вложения
Тип файла: rar MyTimer.rar (71.2 Кб, 7 просмотров)
0
Just Do It!
 Аватар для XLAT
4206 / 2663 / 655
Регистрация: 23.09.2014
Сообщений: 9,061
Записей в блоге: 3
17.05.2018, 13:44  [ТС]
Есть такой вопрос(скорее к админам):
Как редактировать(заменять) вложения???
Код постоянно улучшается+дополняется и мусорить архивами в ветке не сильно забавляет...
0
 Аватар для mrden777
14 / 20 / 14
Регистрация: 20.03.2018
Сообщений: 485
17.05.2018, 16:30
Это не "мусор" а развитие темы
Я обычно все версии выкладываю где пробую
у меня их и по 6 и по 10 версий получается
прежде чем получить окончательную версию.
Народ должен видеть как ты тренируешься чтобы повторить
И потом бывает что одну задачу можно решить несколькими способами - это тоже очень важно
0
Just Do It!
 Аватар для XLAT
4206 / 2663 / 655
Регистрация: 23.09.2014
Сообщений: 9,061
Записей в блоге: 3
17.05.2018, 16:45  [ТС]
Цитата Сообщение от mrden777 Посмотреть сообщение
И потом бывает что одну задачу можно решить несколькими способами - это тоже очень важно
неееа, задачу можно решить бесконечным(...) числом способов

Цитата Сообщение от mrden777 Посмотреть сообщение
Это не "мусор" а развитие темы
ну, тогда лови:
сделал отмену текущего периода с возможностью задания нового.

Итак, на данный момент работает так:
1. Набираем время(в минутах) до начала срабатывания сигнала.
2. Жмем ентер.
3. Таймер скрывается.
4. Для мониторинга жмем "ALT(левый)+1"
5. Для отключения мониторинга тоже "ALT(левый)+1"
6. Прервать работу таймера и задать новый период - клавиша: "Escape"

все...


Полностью проэкт(MVS2010) + exe:
Вложения
Тип файла: rar MyTimer.rar (71.6 Кб, 7 просмотров)
0
Just Do It!
 Аватар для XLAT
4206 / 2663 / 655
Регистрация: 23.09.2014
Сообщений: 9,061
Записей в блоге: 3
17.05.2018, 17:18  [ТС]
старый(уже) глюк побороть не могу пока:
щас проявляется так: если во время отсчета был прожат enter,
то получаем некорректное отображение интерфейса или даже несанкционированный запуск в следующую итерацию.

все вопросы к std::cin

щас попробую что-нить сделать с запретом ввода во время просчета периода.

судя по форуму, про это мало кто знает:
вопросы по этой проблеме остались без решающих ответов.
Если я не прав, то дайте ссылку, плиз.

Выход из этой проблемы, пока, который я вижу, переход на винапишное окно.
0
 Аватар для mrden777
14 / 20 / 14
Регистрация: 20.03.2018
Сообщений: 485
17.05.2018, 17:57
Ты не в вижал студио писал да ? Я еле скомпоновал
0
Just Do It!
 Аватар для XLAT
4206 / 2663 / 655
Регистрация: 23.09.2014
Сообщений: 9,061
Записей в блоге: 3
17.05.2018, 20:21  [ТС]
Цитата Сообщение от mrden777 Посмотреть сообщение
Ты не в вижал студио писал да ? Я еле скомпоновал
]
Microsoft Visual Studio 2010

никаких сторонних библов там нет.
в своем солюшене добавляешь проект и все.
хотя. хз, чё за сложности могли у тя быть?
Миниатюры
Нужен простой таймер-будильник(консольный)  
0
Just Do It!
 Аватар для XLAT
4206 / 2663 / 655
Регистрация: 23.09.2014
Сообщений: 9,061
Записей в блоге: 3
17.05.2018, 20:35  [ТС]
скрин с лучшим качеством:
Кликните здесь для просмотра всего текста
0
 Аватар для mrden777
14 / 20 / 14
Регистрация: 20.03.2018
Сообщений: 485
17.05.2018, 20:43
Ща доделаю скину хД
Все намного проще чем ты там намутил
Я немного по другому сделал
0
Just Do It!
 Аватар для XLAT
4206 / 2663 / 655
Регистрация: 23.09.2014
Сообщений: 9,061
Записей в блоге: 3
17.05.2018, 20:48  [ТС]
mrden777,
ага, еще не рефакторил.
лепил как возможно, лишь бы работало)
0
 Аватар для mrden777
14 / 20 / 14
Регистрация: 20.03.2018
Сообщений: 485
17.05.2018, 20:50
как ты делал чтоб окно было определенного размера ? Чтобы не раздвигалось
0
Just Do It!
 Аватар для XLAT
4206 / 2663 / 655
Регистрация: 23.09.2014
Сообщений: 9,061
Записей в блоге: 3
17.05.2018, 21:06  [ТС]
Цитата Сообщение от mrden777 Посмотреть сообщение
как ты делал чтоб окно было определенного размера ? Чтобы не раздвигалось
C++
1
2
3
4
5
// Задал константой в одном месте, чтобы можно в этом одном месте поменять, если приспичить и ...
const char* MODE40_10 = "mode con cols=35 lines=3";
...
// ... раздать всем страждущим:
system (MODE40_10);
изначально было:
C++
1
const char* MODE40_10 = "mode con cols=40 lines=10";
имя идентификатора, знам, не совсем удачно.
0
 Аватар для mrden777
14 / 20 / 14
Регистрация: 20.03.2018
Сообщений: 485
17.05.2018, 21:41
Лучший ответ Сообщение было отмечено XLAT как решение

Решение

TIMER_SPB2018_Ver 008 FINAL

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
#include "stdafx.h"
#include <iostream>
#include <thread>
#include <chrono>
#include <conio.h>
#include <clocale>
#include <Windows.h>
 
int main() {
 
 
    const char* MODE50_10 = "mode con cols=50 lines=10";
    system(MODE50_10);
    system("cls");
    int mytime, sec, min, hour;
    int symbol = 176;
    ///////////////////////////////////
    HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleTextAttribute(hStdOut, FOREGROUND_GREEN | FOREGROUND_INTENSITY);
    
    
    
    std::cout << "\n SET TIME | SEC |  : ";
    std::cin >> sec;// Вводим число секунд
    std::cout << "\n SET TIME | MIN: | : ";
    std::cin >> min;// Вводим число минут
    std::cout << "\n SET TIME | HOUR: |  : ";
    std::cin >> hour;// Вводим число часов
    //_____________________________________________
    
    
    mytime = sec+(min * 60) + (hour * 3600);
 
    std::size_t i = mytime; 
        
    for (mytime; mytime != 0; --mytime)
    {
        
        HANDLE hd = GetStdHandle(STD_OUTPUT_HANDLE);
        COORD cd;
    
        cd.X = 1;
        cd.Y = 2;
        SetConsoleCursorPosition(hd, cd);
        
        for (int counter = 0; counter < 48; counter++)
        std::cout << ((char)symbol);
 
        
        cd.X = 1;
        cd.Y = 4;
        SetConsoleCursorPosition(hd, cd);
        std::cout << "| SEC |    " ;
        
        SetConsoleTextAttribute(hStdOut, FOREGROUND_RED| FOREGROUND_INTENSITY);
 
        std::cout <<":"<< mytime;
 
 
        SetConsoleTextAttribute(hStdOut, FOREGROUND_GREEN | FOREGROUND_INTENSITY);
        cd.X = 1;
        cd.Y = 6;
        SetConsoleCursorPosition(hd, cd);
        for (int counter = 0; counter < 48; counter++)
            std::cout << ((char)symbol);
 
        std::this_thread::sleep_for(std::chrono::seconds(1));
        system("cls");
    }
    HANDLE hd = GetStdHandle(STD_OUTPUT_HANDLE);
    COORD cd;
    SetConsoleTextAttribute(hStdOut, FOREGROUND_BLUE | FOREGROUND_INTENSITY);
    cd.X = 15;
    cd.Y = 4;
    SetConsoleCursorPosition(hd, cd);
    std::cout << "NO MUSIC - NO WIN !";
 
    Beep(411.26, 200);
    Beep(644.26, 200);
    Beep(511.26, 400);
    Beep(1480, 200);
    Beep(1568, 200);
    Beep(1568, 300);
    Beep(1568, 200);
    Beep(739, 400);
    Beep(783, 200);
    Beep(783, 200);
    Beep(783, 400);
    Beep(369, 200);
    Beep(392, 200);
    Beep(369, 200);
    Beep(392, 200);
    Beep(392, 400);
    Beep(196, 400);
 
    std::cout << "text." << std::endl;
}
Добавлено через 3 минуты
Незнаю чтото он по Y все равно сжимается, ну начальное окно дает размер, да
1
Just Do It!
 Аватар для XLAT
4206 / 2663 / 655
Регистрация: 23.09.2014
Сообщений: 9,061
Записей в блоге: 3
17.05.2018, 21:48  [ТС]
функциональность текущая сохранена?
или мож даже продвинул её???
0
 Аватар для mrden777
14 / 20 / 14
Регистрация: 20.03.2018
Сообщений: 485
17.05.2018, 21:52
Ну как бы я сделал расчет только на секунды в мониторинг, а задавать по стандарту в 3х параметрах
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.05.2018, 21:52
Помогаю со студенческими работами здесь

Простой консольный конвертер валют - проверить корректность реализации
Всем привет! Я новичок на вашем форуме, как и в C++. Изучаю его третий день. Вот решил подкрепить свои знания и написать простенький...

Сделать простой таймер
У меня есть игра сапер мне нужно сделать таймер что бы он начинал работ при открытие и заканчивал при победе или поражении !!

Простой консольный "сапер"
Здравстсвуйте все мне нужно написать игру сапер консольную очень простым и понятным языком На языке c++.Консольное приложение.

Консольный будильник: как сверять время и проиграть мелодию
Добрый вечер. Задали мне тут задачку, не знаю как реализовать. Задача: Написать консольную программу, которая будет содержать в себе...

таймер будильник
В общем, у нас есть такой план: последовательно, с первого значения и до конца файла, перебираем варианты и сравниваем их с базой....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru