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

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

16.05.2018, 11:50. Показов 7855. Ответов 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
4139 / 2717 / 433
Регистрация: 09.09.2017
Сообщений: 12,050
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
4219 / 2680 / 656
Регистрация: 23.09.2014
Сообщений: 9,235
Записей в блоге: 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
4219 / 2680 / 656
Регистрация: 23.09.2014
Сообщений: 9,235
Записей в блоге: 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
4219 / 2680 / 656
Регистрация: 23.09.2014
Сообщений: 9,235
Записей в блоге: 3
17.05.2018, 13:25  [ТС]
mrden777,
о, я только буду рад)

Не по теме:

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


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

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

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

Полностью проект(МVS2010)+exe смотри вложение:
Вложения
Тип файла: rar MyTimer.rar (71.2 Кб, 7 просмотров)
0
Just Do It!
 Аватар для XLAT
4219 / 2680 / 656
Регистрация: 23.09.2014
Сообщений: 9,235
Записей в блоге: 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
4219 / 2680 / 656
Регистрация: 23.09.2014
Сообщений: 9,235
Записей в блоге: 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
4219 / 2680 / 656
Регистрация: 23.09.2014
Сообщений: 9,235
Записей в блоге: 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
4219 / 2680 / 656
Регистрация: 23.09.2014
Сообщений: 9,235
Записей в блоге: 3
17.05.2018, 20:21  [ТС]
Цитата Сообщение от mrden777 Посмотреть сообщение
Ты не в вижал студио писал да ? Я еле скомпоновал
]
Microsoft Visual Studio 2010

никаких сторонних библов там нет.
в своем солюшене добавляешь проект и все.
хотя. хз, чё за сложности могли у тя быть?
Миниатюры
Нужен простой таймер-будильник(консольный)  
0
Just Do It!
 Аватар для XLAT
4219 / 2680 / 656
Регистрация: 23.09.2014
Сообщений: 9,235
Записей в блоге: 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
4219 / 2680 / 656
Регистрация: 23.09.2014
Сообщений: 9,235
Записей в блоге: 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
4219 / 2680 / 656
Регистрация: 23.09.2014
Сообщений: 9,235
Записей в блоге: 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
4219 / 2680 / 656
Регистрация: 23.09.2014
Сообщений: 9,235
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
Расчёт периметра прямоугольника по координатам вершин
Maks 18.07.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Вычислить периметр прямоугольника, заданного координатами своих вершин на плоскости. Решение: Создан документ со следующими. . .
Подсчёт частоты трёхбуквенных слов в тексте
Maks 18.07.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Выясните, сколько раз в предложенном тексте встречается каждое трехбуквенное слово. Решение: Создан документ с единственным. . .
Сумма и количество положительных элементов в чётных строках массива
Maks 18.07.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Вычислить сумму и количество положительных элементов массива, расположенных в четных строках. Решение: Создан документ с. . .
Поиск произведения положительных чётных чисел в последовательности
Maks 18.07.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Дана произвольная последовательность целых чисел. Найти произведение положительных четных чисел данной последовательности. . . .
Обработка трёх чисел: утроение и возведение в степень
Maks 18.07.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Даны три действительных числа. Утроить те из них, значения которых неотрицательны, и возвести в четвертую степень отрицательные. . . .
Расчёт стоимости яблок по весу
Maks 18.07.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Написать программу вычисления стоимости некоторого количества (по весу) яблок. Решение: Создан документ, с табличной частью. . .
сукцессия 30. Фосфорный и азотный замки по "честному" закону лимитирования Либиха
anaschu 16.07.2026
Основные достижения за последние дни 1. Механизм отложенного высвобождения фосфора Добавлен специальный пул для медленного разложения меланизированных гиф ЕСМ Реализована разная скорость. . .
Запрет пометки на удаление и отмены проведения
Maks 16.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "ПутевойЛист" разработанного в КА2. Задача: запретить помечать на удаление и отменять проведения путевого листа при условии, если он сдан. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru