c++控制檯寫一個計時器
示意圖
新建類Timer
Timer.h
#pragma once
#include <stdio.h>
#include <tchar.h>
#include <time.h>
#include <iostream>
#include <iomanip>
#include <windows.h>
class Timer
{
public:
Timer();
~Timer();
private:
long start_time;//開始的時間
long pause_time;//暫停的時間
bool is_pause;//記錄計時器的狀態(是否暫停)
bool is_stop;//計時器是否停止
public:
bool isPause();//讓外界獲取計時器是否處於暫停狀態
bool isStop();//讓外界獲取計時器是否處於停滯狀態
void Start();//開始
void Pause();//暫停
void Stop();//停止
void show();//顯示時間
void gotoxy(int x, int y);
void HideCursor();
};
Timer.cpp
#include "Timer.h"
Timer::Timer()
{
is_pause = false;//初始化計時器狀態
is_stop = true;
}
Timer::~Timer()
{
}
bool Timer::isPause()
{
if (is_pause)
{
return true;
}
else
return false;
}
bool Timer::isStop()
{
if (is_stop)
return true;
else
return false;
}
void Timer::Start()
{
if (is_stop)
{
start_time = (long)time(0);
is_stop = false;
}
else if (is_pause)
{
is_pause = false;
start_time += time(0) - pause_time;
}
}
void Timer::Pause()
{
if (is_stop||is_pause)//如果處於停止/暫停狀態,此動作不做任何處理,直接返回
{
return;
}
else
{
is_pause = true;
pause_time = (long)time(0);//獲取暫停時間
}
}
void Timer::Stop()
{
if (is_stop)
{
return;
}
else if (is_pause)
{
is_pause = false;
is_stop = true;
}
else
{
is_stop = true;
}
}
void Timer::show()
{
long t = time(0) - start_time;
gotoxy(35, 12);
std::cout << std::setw(2) << std::setfill('0') << t / 60 / 60 << ":" \
<< std::setw(2) << std::setfill('0') << t / 60 << ":"\
<< std::setw(2) << std::setfill('0') << t % 60 << std::endl;
}
void Timer::gotoxy(int x, int y)//定位到下x,y位置
{
int xx = 0x0b;
HANDLE hOutput;
COORD loc;
loc.X = x;
loc.Y = y;
hOutput = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(hOutput, loc);
return;
}
void Timer::HideCursor()
{
HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_CURSOR_INFO CursorInfo;
GetConsoleCursorInfo(handle, &CursorInfo);//獲取控制檯游標資訊
CursorInfo.bVisible = false;//隱藏控制檯游標
SetConsoleCursorInfo(handle, &CursorInfo);//設定控制檯游標狀態
}
主函式
main.cpp
#include "Timer.h"
#include <conio.h>
int _tmain(int argc, _TCHAR* argv[])
{
Timer t;
char ch;
t.HideCursor();//隱藏游標
system("color 02");
t.gotoxy(20, 18);
std::cout << "按a開始,按空格暫停,按s停止";
while (1)
{
if (_kbhit())//是否有按鍵
{
ch = _getch();//獲取按鍵資訊
switch (ch)
{
case 'a':
t.Start();
break;
case 's':
t.Stop();
break;
case ' ':
t.Pause();
break;
default:
break;
}
}
if ((!t.isStop())&&(!t.isPause()))
{
t.show();
}
}
return 0;
}
相關文章
- c++控制檯程式實現定時器C++定時器
- C++控制檯程式中使用定時器C++定時器
- C++ 控制檯讀寫excelC++Excel
- C++程式設計_簡易計時器(Timer)的控制檯實現C++程式設計
- Windows控制檯的定時器Windows定時器
- 用Node寫的一個控制檯看股票的小程式
- VC++控制檯程式中使用定時器C++定時器
- 編寫一個簡易計時器程式(edu)
- C++ 11 時間程式設計(4)利用std::chrono::steady_clock寫一個定時器C++程式設計定時器
- 用 Node.js 給樹莓派寫了個控制檯Node.js樹莓派
- 控制檯實時檢視 sqlSQL
- 如何寫一個計算器?
- Win32控制檯程式的定時器實現(轉載)Win32定時器
- VC++ 控制檯程式中 四種定時器建立方法C++定時器
- C\C++控制檯程式隱藏方法總結C++
- vue 手寫一個時間選擇器Vue
- .NET Core建立一個控制檯(Console)程式
- 一個遠端系統控制檯的小工具
- 有趣的控制檯玩法:一行程式碼繪製控制檯影像!行程
- 不一樣的控制檯程式—–在控制檯中輸出圖片薦
- java 在控制檯上輸入密碼時,密碼不顯示在控制檯上Java密碼
- C++基於控制檯的迷宮實現(上)C++
- zookeeper控制檯
- JAVA控制檯下:控制檯商城購物系統Java
- frp p2p rdp 計算機無法連線到遠端計算機上的另一個控制檯會話原因是你正在執行一個控制檯會話FRP計算機會話
- C++實現控制檯學生學籍管理系統C++
- C++學習筆記(七) - Qt 在控制檯輸出C++筆記QT
- Oracle:PL/SQL--開啟控制檯or關閉控制檯OracleSQL
- 如何使用原生技術寫一個倒數計時時鐘
- 禁用瀏覽器控制檯除錯JavaScript功能瀏覽器除錯JavaScript
- rocketmq 管理控制檯MQ
- 用現代 C++ 寫一個高效能的伺服器C++伺服器
- IDEA--執行maven時控制檯亂碼IdeaMaven
- 控制檯中動態顯示系統時間
- Python編寫一個簡單計算器Python
- Flutter最佳入門方式——寫一個計算器Flutter
- 用JS寫個小燈控制器唄JS
- Golang(Go語言)封裝一個簡單的控制檯輸出包Golang封裝