C++趣味编程【时钟2代】

C++11计时器:chrono库介绍 阅读详情

时钟第2代他来了

更新内容:

  1. 加入了秒表功能
  2. 修复了已知问题

 下面是代码环节

// 左右键切换模式  A,D键选计时器单位  W,S键改计时器数值  回车暂停/继续秒表  空格重置秒表 
#define _CRT_SECURE_NO_WARNINGS
#define VK_l 0x25	//左 
#define VK_r 0x27   //右 
#define VK_x 0x53	//下
#define VK_u 0x57   //上
#define VK_D 0x44   //D
#define VK_A 0x41   //A  
#define VK_Enter 0x0D  //Enter 
#define VK_s 0x20   //空格
#include<windows.h>
#include<bits/stdc++.h>
using namespace std;
int w=1,s,minn,hour,tway=1,timerj,watchj,ws_,wminn,whour;
bool tonoff,wonoff;
bool num[16][7][8]={{{0,1,1,1,0},{1,0,0,0,1},{1,0,0,0,1},{1,0,0,0,1},{1,0,0,0,1},{1,0,0,0,1},{0,1,1,1,0}}  ,  {{0,0,1,0,0},{0,1,1,0,0},{0,0,1,0,0},{0,0,1,0,0},{0,0,1,0,0},{0,0,1,0,0},{0,1,1,1,0}}  ,  {{0,1,1,1,0},{1,0,0,0,1},{0,0,0,0,1},{0,0,0,1,0},{0,0,1,0,0},{0,1,0,0,0},{1,1,1,1,1}}  ,  {{1,1,1,1,1},{0,0,0,1,0},{0,0,1,0,0},{0,0,0,1,0},{0,0,0,0,1},{1,0,0,0,1},{0,1,1,1,0}}  ,  {{0,0,0,1,0},{0,0,1,1,0},{0,1,0,1,0},{1,0,0,1,0},{1,1,1,1,1},{0,0,0,1,0},{0,0,0,1,0}}  ,  {{1,1,1,1,1},{1,0,0,0,0},{1,1,1,1,0},{0,0,0,0,1},{0,0,0,0,1},{1,0,0,0,1},{0,1,1,1,0}}  ,  {{0,0,1,1,0},{0,1,0,0,0},{1,0,0,0,0},{1,1,1,1,0},{1,0,0,0,1},{1,0,0,0,1},{0,1,1,1,0}}  ,  {{1,1,1,1,1},{0,0,0,0,1},{0,0,0,1,0},{0,0,1,0,0},{0,0,1,0,0},{0,0,1,0,0},{0,0,1,0,0}}  ,  {{0,1,1,1,0},{1,0,0,0,1},{1,0,0,0,1},{0,1,1,1,0},{1,0,0,0,1},{1,0,0,0,1},{0,1,1,1,0}}  ,  {{0,1,1,1,0},{1,0,0,0,1},{1,0,0,0,1},{0,1,1,1,1},{0,0,0,0,1},{0,0,0,1,0},{0,1,1,0,0}}  ,  {{0,0,0,0,0},{0,0,1,0,0},{0,0,1,0,0},{0,0,0,0,0},{0,0,1,0,0},{0,0,1,0,0},{0,0,0,0,0}}  ,  {{1,0,0,0,1},{1,0,0,0,1},{1,0,0,0,1},{1,1,1,1,1},{1,0,0,0,1},{1,0,0,0,1},{1,0,0,0,1}}  ,  {{0,0,1,0,0},{0,1,0,1,0},{1,0,0,0,1},{1,0,0,0,1},{1,0,0,0,1},{0,1,0,1,0},{0,0,1,0,0}}  ,  {{1,0,0,0,1},{1,0,0,0,1},{1,0,0,0,1},{1,0,0,0,1},{1,0,0,0,1},{1,0,0,0,1},{0,1,1,1,0}}  ,  {{1,0,0,0,1},{1,1,0,0,1},{1,1,0,0,1},{1,0,1,0,1},{1,0,0,1,1},{1,0,0,1,1},{1,0,0,0,1}}  ,  {{1,1,1,1,0},{1,0,0,0,1},{1,0,0,0,1},{1,0,0,0,1},{1,0,0,0,1},{1,0,0,0,1},{1,1,1,1,0}}};
void go(int x,int y){		//控制光标位置 
    HANDLE hOut=GetStdHandle(STD_OUTPUT_HANDLE);
    COORD c={x,y};
    SetConsoleCursorPosition(hOut,c);
}
void show(int number,int x,int y,int t){
	go(x,y);
	for(int i=0;i<7;i++){
		for(int j=0;j<5;j++){
			x++;
			if(num[number][i][j]==1){
				cout<<"■";
			}
			else{
				cout<<"  ";
			}
		}
		x-=5; y++;
		go(x,y);
		Sleep(t);
	}
}
void winSize(int lines_height,int cols_width){		//控制屏幕 
    char cmd[100];
    sprintf(cmd,"mode con cols=%d lines=%d",lines_height,cols_width);
    system(cmd);
}
void no(){		//隐藏光标 
    CONSOLE_CURSOR_INFO cursor_info={1,0}; 
    SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info);
}
void square(int x,int y,bool condition){  //方框 
	for(int i=1;i<=26;i+=2){
		go(i+x-1,y);
		if(condition==1) cout<<"■";
		else cout<<"  ";
	}
	for(int i=1;i<=7;i++){
		go(x,y+i);
		if(condition==1) cout<<"■";
		else cout<<"  ";
		go(x+24,y+i);
		if(condition==1) cout<<"■";
		else cout<<"  ";
	}
	for(int i=1;i<=26;i+=2){
		go(i+x-1,y+8);
		if(condition==1) cout<<"■";
		else cout<<"  ";
	}
} 
void timenow(){     //当前时间 
	go(44,8);
	cout<<"当前时间";
	time_t nowtime;
	time(&nowtime);
	tm* p=localtime(&nowtime);
	show(p->tm_hour/10,0,10,0);
	show(p->tm_hour%10,12,10,0);
	show(10,24,10,0);
	show(p->tm_min/10,36,10,0);
	show(p->tm_min%10,48,10,0);
	show(10,60,10,0);
	show(p->tm_sec/10,72,10,0);
	show(p->tm_sec%10,84,10,0);
} 
void watch(){     //秒表 
	if(w==3)if(GetAsyncKeyState(VK_Enter)) (wonoff==0)?(wonoff=1):(wonoff=0),wonoff=1;
	if(w==3)if(GetAsyncKeyState(VK_s)) wonoff=0,wminn=0,whour=0,ws_=0,Sleep(500);
	if(s==60&&minn==59&&hour==99) s=59,wonoff=0;
	if(wonoff==1){
		time_t nowtime;
		time(&nowtime);
		tm* p=localtime(&nowtime);
		if(watchj!=p->tm_sec){
			ws_++;
		}
		watchj=p->tm_sec;
	}
	
	
	if(s==60&&wminn==59&&whour==99) ws_=59;
	if(s==60) wminn++,ws_=0;
	if(minn==60) whour++,wminn=0;
	
	if(w==3){
		go(44,8);
		cout<<"  秒表";
		show(whour/10,2,10,0);
		show(whour%10,14,10,0);
		show(10,26,10,0);
		show(wminn/10,38,10,0);
		show(wminn%10,50,10,0);
		show(10,62,10,0);
		show(ws_/10,74,10,0);
		show(ws_%10,86,10,0);
	}
	
} 
void timer(){    //计时器 
	if(w==2) if(GetAsyncKeyState(VK_Enter)) square(tway*36-36,9,0),tonoff=1;
	if(tonoff==1){
		time_t nowtime;
		time(&nowtime);
		tm* p=localtime(&nowtime);
		if(timerj!=p->tm_sec){
			s--;
		}
		timerj=p->tm_sec;
		if(s==-1&&minn==0&&hour==0){
			tonoff=0;
			MessageBox(0,"TIME OUT!","TIMER",MB_ICONINFORMATION);
			s=0;
		}
	}

	if(GetAsyncKeyState(VK_s)) tonoff=0,s=0,minn=0,hour=0;
	if(GetAsyncKeyState(VK_u)&&tonoff==0) (tway==3)?(s++):((tway==2)?(minn++):(hour++)),Sleep(100);
    if(GetAsyncKeyState(VK_x)&&tonoff==0) (tway==3)?(s--):((tway==2)?(minn--):(hour--)),Sleep(100);
    if(GetAsyncKeyState(VK_D)&&tonoff==0) square(tway*36-36,9,0),tway++,Sleep(100);
    if(GetAsyncKeyState(VK_A)&&tonoff==0) square(tway*36-36,9,0),tway--,Sleep(100);
    
    if(tway==0) tway=3; 
    if(tway==4) tway=1; 
    if(s==-1&&minn==0&&hour==0) s=59,hour=99,minn=59;
	if(s==-1&&(minn>0||hour>0)) s=59,minn--;
	if(s==60) minn++,s=0;
	if(minn==-1) hour--,minn=59;
	if(minn==60) hour++,minn=0;
	if(hour==100||hour==-1) minn=0,hour=0,s=0;
	
	if(w==2){
		if(tonoff==0) square(tway*36-36,9,1);
		go(44,8);
		cout<<" 计时器";
		show(hour/10,2,10,0);
		show(hour%10,14,10,0);
		show(10,26,10,0);
		show(minn/10,38,10,0);
		show(minn%10,50,10,0);
		show(10,62,10,0);
		show(s/10,74,10,0);
		show(s%10,86,10,0);
	}
	
} 
void button(){		//键位判断 
    if(GetAsyncKeyState(VK_l)) system("cls"),w--,Sleep(100);
    if(GetAsyncKeyState(VK_r)) system("cls"),w++,Sleep(100);
    if(w==4) w=1;
    if(w==0) w=3;
}

int main(){
	winSize(98,27);
	no();
	for(int j=18,i=11;i<=15;i++,j+=12){
		show(i,j,10,100);
	}
	Sleep(1000);
	system("cls");
	Sleep(100);
	while(1){
		button();
		if(w==1) timenow();
		timer();
		watch();
	}
	system("pause>nul");
	return 0;
}

有什么好的意见欢迎评论

c++时钟程序 一个小小的时钟图形程序(c++) 最近闲着没事做了一个程序,新手可以拿过去看看。 注意:本程序用了easyx图形接口,且有一些较难的数学函数。 #include<graphics.h> #include<math.h> #define HIGH 500 //定义高和宽 #define WIDTH 500 #define second_long 200 //秒针长度 #def... 阅读详情

相关推荐

C++面向对象编程实践:时钟类的设计与实现

本文还有配套的精品资源,点击获取 简介:在C++中,通过创建时钟类来实践面向对象编程,封装时间和行为。本文将介绍如何定义时钟类的数据成员、构造函数、获取系统当前时间、时间获取与设置方法、有效性检查、时间流逝的表示以及时间格式化输出等功能。此外,还会讨论时钟类可能需要的额外功能,如日期支持和线程安全等。通过剖析提供的源代码,可以深入理解时钟类的实现细节。 1. C+...

weixin_36427956的博客 1266

PTA时钟模拟

一个Time类,数据成员有时、分、秒。要求模拟秒表,每次走一秒,满60秒进位,秒又从零开始计数。满60分进位,分又从零开始计数。输出时、分和秒的值。(使用重载++运算符实现) 时间类定义: class MyTime 测试程序样例: /* 请在这里填写答案 */ int main() { MyTime t1,t2(23,59,59),t3; cin>>t3; ++t1; cout<<t1<<endl; ++t2; cout<<t2&lt

m0_62788400的博客 560

C++电子时钟项目设计与实现

多线程是现代操作系统提供的一种允许程序并发执行多个线程的技术。线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。多线程的引入允许程序在执行过程中同时处理多个任务,这在设计需要同时执行多个操作的应用时是非常有用的,例如,一个电子时钟同时需要显示时间、响应用户输入、以及播放闹钟声音。在某些情况下,我们需要显示自定义的时间格式。例如,我们可能需要去掉秒数,或者根据用户设置来显示24小时或12小时制的时间。// 24小时制时间格式} else {

weixin_36059856的博客 732

第16期《简易秒表》

这期向大家分享一款自编c++秒表。 非常简单。包括Sleep函数知识点。 #include<bits/stdc++.h> #include<windows.h> using namespace std; int main(){ int t=0; system("PAUSE"); for(;;){ system("cls"); t++; cout<<"时间:"<<t; Sleep(1000); } return 0; }

joe_zxq21的博客 246

C++桌面动态时钟实现与深度解析

C++是一种高效、灵活的编程语言,广泛应用于桌面应用开发领域。它支持面向对象、泛型等编程范式,为开发者提供了强大的工具来构建高性能的应用程序。本章将简要介绍C++的基础语法和特性,以及它们如何被用来开发桌面应用程序。GDI(图形设备接口)是Windows操作系统中提供的一套用于绘制图形的API。它允许开发者在显示设备和打印机上进行图像输出。GDI通过定义了一系列的抽象设备,如打印机、显示器等,为不同的输出设备提供了一个统一的编程接口。

weixin_36474001的博客 877

C++时钟程序设计:时针、分针与秒针的动态实现

函数是组织代码的有效方式,将重复使用的代码块封装起来。在C++中,函数由返回类型、函数名、参数列表和函数体构成。// 定义一个返回类型为void的函数// 函数体,更新时钟的逻辑// 调用函数通过本章的基础语法学习,我们将逐步构建出时钟的核心逻辑框架,为后续章节中图形界面和多线程处理打下坚实的基础。图形库作为程序员手中的画笔和颜料,是构建图形用户界面(GUI)不可或缺的工具。选择合适的图形库可以帮助我们在不同层面实现多样的视觉效果和用户交互体验。

weixin_31139479的博客 952

C++数字时钟

C++数字时钟 #include<iostream> #include<ctime> #include<iomanip> using namespace std; class Time{ private: int Hour; int Minute; int Second; public: //构造函数,设置初始时间为00:00:00; Time(int h,int m,int s); Time(); //set类设置时间

Hiyiin的博客 2497

C++ 一个简单的秒表类

学习boost库中的timer,对它进行了扩展了。实现了一个类似秒表的功能。

c++实现时钟(图形实现)

由于该项目是win32项目,且在VS2019上实现的,故现在简单一下在VS2019上如何创建与为win32项目相同的windows桌面向导程序。 (1)首先打开vs2019创建新项目 (2)然后选择Windows桌面向导程序 (3)然后点击下一步创建桌面向导程序,点击将解决方案与项目放在放在同一目录中 (4)然后点击创建,在弹出来的小窗口中将应用控制程序修改为桌面应用程序,再点击空项目,最后确...

weixin_44335707的博客 8644

C++秒表

简单实用,用类做的,可记录多次

用C++编写的秒表程序设计

该程序实现的功能是记录下不同时刻下的时间

基于C++MFC实现模拟时钟程序

指针式的时钟表盘为椭圆形或圆形,并且圆周上有分布均匀的 12 个刻度,刻度要求显示清晰,钟面上有长度和颜色及粗细各不相同的指针,即时针、分针、秒针,以便各个指针重合时亦可以轻易辨认,指针的运动要求具有规律性,且为顺时针。数字钟的钟面为一个规则的矩形,其显示时间的格式是时:分:秒,小时为 24 进制,分钟和秒是 60 进制,指针式的时钟和数字式的时钟显示的时间同步,且两个时钟所显示的时间与计算机的系统时间一致。1、提出总体方案的设计思想和原理,绘制程序流程图和描述程序的功能,并说明程序的特点和难点。

程序设计 3903

C++秒表程序

C++做的,做了一个时间发生器,精确到百分秒

c++简单时钟代码实现

以上是简单时钟板块,这里要注意按原慕课中代码在Visual Stdio 上生成会出错,原因是重复声明了h,m,s要在private中删去int h,m,s.

euwue的博客 3825

c++的一个秒表示例

很简单的一个秒表,精度达到要求 #include <iostream> #include <time.h> #include <Windows.h> #include<stdio.h> #include<stdlib.h> 都用到了上述的几个库文件

数字秒表C++版

用C++实现的一个秒表计时工具

C/C++趣味编程百例:从算法可视化到游戏开发,重燃编程乐趣

编程学习常始于语法与算法,但如何将抽象概念转化为直观应用,是提升技能与兴趣的关键。其核心原理在于通过项目驱动,将控制流、数据结构、指针等知识融入具体场景。这种实践方法的技术价值在于完成从“学语法”到“用语法”的思维转变,有效提升问题解决能力与内驱力。应用场景广泛,例如通过实现控制台贪吃蛇游戏,可自然练习数组、循环、随机数生成与非阻塞输入等综合技能;而编写康威生命游戏模拟器,则能深入理解二维数组、双缓冲与边界处理等概念。这些趣味项目,如算法可视化与交互模拟,正是将C/C++学习变得生动有趣的绝佳途径。

weixin_34026276的博客 341

PCIE协议版--M.2接口规范V1.0中文版1——物理规格篇

5.1.3.双模块键模块:同时支持Socket1-DP、Socket1-SD。2.4.7.3.3.双面模块(使用H2.8、H3.2、H4.2连接器)6.5.8.2.5.热设计功率响应-带有风扇类别的薄平台笔记本电脑。2.3.7.1. Socket1&2射频连接器PIN-OUT。5.2.2.Socket2 PIN-OUT(机械KEY B)3.2.10.1.3.极薄的笔记本电脑的电源开关顺序的例子。5.1.1.Socket1-DP(机械KEY A)5.1.2.Socket1-SD(机械KEY E)

想你所想,做你所做 4679
上一篇: C++趣味编程【时钟】
下一篇: 【铺地毯】题解
Hound1101001
博客等级 码龄3年 10粉丝 6原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值