c++设计一个计时器(能够暂停,重新开始,继续)的功能。写的不好,仅供参考!
来源:互联网 发布:腾讯抽奖软件 编辑:程序博客网 时间:2024/06/10 08:57
完全模拟计时器实现(时间精确到 秒 即可)
功能要求:
1.计时器的开始功能 例如:键盘按键a 开始计时。
2.计时器的暂停功能 例如:键盘按键空格键 计时暂停
3.计时器的停止功能 例如:键盘按键s 计时停止
4.一次计时结束之后,可以再次计时(也就说,如果当前计时停止,按a键可以重新开始下一轮计时)
实现要求:
1.利用C++中面向对象特性去实现计时类
2.利用C++中抽象、封装等特性实现计时器类的抽象与封装。
可能会用到
void gotoxy(int x,int y)
所需头文件
#include<windows.h>
#include<conio.h>
功能:将控制台光标定位到(x,y)处。
void hoidden()
所需头文件
#include<windows.h>
#include<conio.h>
#include<conio.h>
功能:隐藏控制台光标。
此外还可能会用到time函数和
kbhit()函数,
kbhit()可以用来检查当前是否有键盘输入。
下面来看代码
#include<iostream>#include<windows.h>#include<conio.h>#include<time.h>#include<iomanip>using namespace std;void gotoxy(int x, int y)//定位光标,x为行坐标,y为列坐标{COORD pos = {x,y};//(坐标 位置); HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE); //得到标准处理(标准输出处理); SetConsoleCursorPosition(hOut, pos);//设置控制台光标位置; }void hidden()//隐藏光标{ HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE); CONSOLE_CURSOR_INFO cci;GetConsoleCursorInfo(hOut,&cci);cci.bVisible=0;//赋1为显示,赋0为隐藏SetConsoleCursorInfo(hOut,&cci);}class Time{public:Time(){hour=minute=second=0;gotoxy(40,10);display();} void menu();void xuanze();private:void settime();void display();void chongzhi(){second=0;minute=0;hour=0;} double hour;double minute;double second;};void Time::settime( ){second++;if(second==60){second=0;minute++;}else if(minute==60){minute=0;hour++;}Sleep(1000);}void Time::display(){cout<<setw(2)<<setfill('0')<<hour<<":";cout<<setw(2)<<setfill('0')<<minute<<":";cout<<setw(2)<<setfill('0')<<second<<endl;}void Time::menu(){gotoxy(40,6);cout<<"*&计时器&*"<<endl; gotoxy(26,18);cout<<"按a开始计时 按s重新计时 按空格暂停"<<endl; }void Time::xuanze(){char key;hidden();key=getch();if(key=='a'||key=='A'){while(1){if(kbhit()){hidden();key=getch();if(key=='s'||key=='S'){chongzhi();xuanze();}else if(key==' '){xuanze();}}settime();gotoxy(40,10);display();}}else xuanze();}int main(){Time te;te.menu();te.xuanze();}首先来声明gotoxy()函数和hidden()函数如下:
然后在while循环中控制输入的字符确定执行那个功能,其中使用key=getch()能够使输入的字符隐藏
其中sleep函数简介
Sleep
Sleep函数的功能是让程序挂起一段时间,第一个字母大写,只在VC中使用,头文件为#include<windows.h>,单位为毫秒,若想挂起120毫秒,可以写为:
Sleep(120);
在linux gcc中,让程序挂起一段时间的函数为sleep和usleep,sleep的第一个字母小写,sleep的单位是秒,usleep的单位为微妙us,1秒为1000毫秒,1毫秒等于1000微妙,linux中的sleep和usleep在头文件#include<unistd.h>中。
Sleep函数的功能是让程序挂起一段时间,第一个字母大写,只在VC中使用,头文件为#include<windows.h>,单位为毫秒,若想挂起120毫秒,可以写为:
Sleep(120);
在linux gcc中,让程序挂起一段时间的函数为sleep和usleep,sleep的第一个字母小写,sleep的单位是秒,usleep的单位为微妙us,1秒为1000毫秒,1毫秒等于1000微妙,linux中的sleep和usleep在头文件#include<unistd.h>中。
gotoxy(int x, int y)
x,y为界面的横纵坐标,可以改为任意,可自己上机试一试
经过编辑运行后生成界面如下
1 0
- c++设计一个计时器(能够暂停,重新开始,继续)的功能。写的不好,仅供参考!
- 计时器的开始与暂停
- 【转】Android - 带暂停,继续,重置功能的简易倒计时器-附jpg源码
- 关于安卓如何实现计时器chronometer的暂停和继续计时功能
- Cocos2d-x游戏暂停、继续游戏、重新开始界面的实现---之游戏开发《赵云要格斗》(10)
- CountDownTimer 倒计时封装(可 暂停 继续 重新开始)
- Android 实现能够暂停的录音功能
- Android 实现能够暂停的录音功能
- Android 实现能够暂停的录音功能
- 简单开始,暂停,继续的倒计时实现
- Android关于Chronometer计时器的暂停继续计时
- 关于一个程序的“开始——暂停——继续”的一个问题
- 一个按钮两个功能(开始/暂停)
- android开发——分秒计时器(可 开始/暂停/继续/停止)
- 重新开始吧,继续写博客
- css3 动画的播放、暂停和重新开始
- apache的重新写功能
- NSTimer的暂停和继续
- 第五周项目1-三角形类雏形(1)
- 更新ubuntu15.10内核后,驱动解决
- Git Visual Studio gitignore 去除不需要的dll Nuget包等等文件
- 浮点数用double
- android项目引用library导致引用android-support-v4.jar冲突
- c++设计一个计时器(能够暂停,重新开始,继续)的功能。写的不好,仅供参考!
- usb总线系统介绍
- BZOJ_P1452 [JSOI2009]Count(二维树状数组)
- hdu 【1715】大菲波数
- Python使用sqlite3操作数据库
- 业务 加载DB数据到内存的 一些基本原则
- fflush的用途
- S5PV210加文件头
- Linux平台下的内存泄漏检测