C++趣味编程【时钟】

用C++实现一个时钟程序,完整源代码 C++时钟程序完整源代码,在Dev-c++和Visual Studio 2022上实测编译通过 阅读详情

 今天太无聊了没事干

So,索性就用C++编了一个时钟的小程序(还是十分简单)

这里我参考了某位大佬的文章,十分感谢。

代码实现:

 

(小小蒟蒻,代码可能有点繁琐,请谅解)(可能有些小BUG) 

// 左右键切换模式  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;
bool tonoff;
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,0,0,1,1},{1,0,0,1,1},{1,0,1,0,1},{1,1,0,0,1},{1,1,0,0,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 timer(){    //计时器 
	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;
			for(int i=1;i<=5;i++){
				Beep(500,500);
				Sleep(1000);
			}
			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(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==3) w=1;
    if(w==0) w=2;
}

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();
		if(w==2) timer();
	}
	system("pause>nul");
	return 0;
}

有什么好的意见欢迎评论

用C++制作一个简单的电子时钟 打开Visual Studio,确保你的代码正确地粘贴到了编辑器中。然后,点击工具栏上的“开始调试”按钮(或按F5键),这将编译并运行你的程序。头文件包含了Windows API的函数,我们将使用它来获取控制台窗口句柄并设置窗口属性。我们将在后续代码中使用这个句柄来设置控制台窗口的透明度。这就是一个简单的C++电子时钟程序,如果你有任何问题或想法,请随时留言分享。最后,我们输出当前的年、月、日、时、分、秒,并暂停一秒以便下一次更新。头文件是C++标准库的一部分,我们将使用它们来输出时间和处理时间。 阅读详情

相关推荐

《c++语言程序设计》部分代码chapter4 类与对象

1、时钟类的完整程序:#include using namespace std; //第一部分:类的定义 class Clock { private: int h,m,s; public: void setTime(int nh=0,int nm=0,int ns=0); void showTime(); }; //第二部分:类的成员函数的具体实现 void Clock::setTime(i

勿忘初心,安得始终 866

c++简单时钟代码实现

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

euwue的博客 3825

c++时钟程序

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

weixin_45031220的博客 981

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

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

weixin_44335707的博客 8644

C++ 时钟程序

date.h #ifndef DATE_H_ #define DATE_H_ class Date { private: int year; int month; int day; private: int mons[12]; private: bool isLeap(int y); bool isDateValue(int y,int m,i...

qq_42796313的博客 2358

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

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

weixin_36427956的博客 1266

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

时钟程序第二代

Computer_Devon's blog 165

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

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

weixin_36059856的博客 732

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++桌面动态时钟实现与深度解析

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

weixin_36474001的博客 877

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

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

weixin_31139479的博客 952

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

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

程序设计 3903

深入理解C++中的时钟和定时器

本文深入探讨了C++中时钟和定时器的实现细节,包括如何使用`clock()`函数测量程序运行时间、如何处理时间相关的各种格式以及如何在C++中进行时间输入和输出。文章提供了关于`clock()`函数的详细用法示例,包括如何校准、处理错误情况以及如何获取更精确的时间测量。此外,还介绍了C++标准库中时间和日期的表示方法,包括`time_t`和`tm`结构,以及如何使用``和``头文件中的函数和类来处...

weixin_32312889的博客 836

c/c++ 简约桌面时钟

偶然注意到,任务栏的时钟是那么丑,就小小的一块,还灰不溜秋的。于是一狠心,自己写了一个时钟,放在桌面上,效果还不错。代码如下: #include <iostream> #include <windows.h> #include <cstdlib> #include <ctime> #include <conio.h> #include "HideCursor.h" using namespace std; int main(){ HideC

S_JH330206的博客 2645

从频谱分析到硬件加速:用ZYNQ-7020+FFT IP核实现实时信号处理的完整方案

本文详细介绍了如何利用ZYNQ-7020和FFT IP核实现实时信号处理的完整方案,涵盖系统架构设计、硬件加速实现及性能优化。通过异构计算架构,该方案将1024点FFT处理延迟压缩至28μs,显著提升工业自动化和无线通信等领域的实时频谱分析效率。

weixin_33704234的博客 467

stackelberg博弈_博弈论、多智能体、强化学习(随便记点东西)

多智能体应用场景:已实现:游戏AI。正在努力:UAV,物资运输,快递分发,交通系统。未来:社会学,预测群体行为,城市区域合作,国际关系。博弈论基本定义:玩家集合: 策略集合: 收益函数: 囚徒困境:两智能体矩阵博弈坦白抵赖坦白1,13,0抵赖0,32,2占优策略与最佳应对:上表中两者均具有占优策略,即无论如何都应该选坦白。那么构造下表。坦白抵赖坦白1,13,0抵赖0,12,2对于玩家一来说,坦白...

weixin_39611722的博客 2997

L1-018 大笨钟(时钟的输出)

L1-018 大笨钟(时钟的输出)微博上有个自称“大笨钟V”的家伙,每天敲钟催促码农们爱惜身体早点睡觉。不过由于笨钟自己作息也不是很规律,所以敲钟并不定时。一般敲钟的点数是根据敲钟时间而定的,如果正好在某个整点敲,那么“当”数就等于那个整点数;如果过了整点,就敲下一个整点数。另外,虽然一天有24小时,钟却是只在后半天敲1~12下。例如在23:00敲钟,就是“当当当当当当当当当当当”,而到了23:0...

碳酸钙的01妖精的博客 394

《YOLOv8实例分割实战:训练自己的数据集 》(视频课程)

本课程将手把手地教大家使用labelme标注和使用YOLOv8训练自己的数据集,完成一个多目标实例分割实战项目。

bai666ai的博客 790

基于C++MFC实现模拟时钟程序[2024-01-07]

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

程序设计 1393

车载机器人终极解决方案:从功能叠加到生态融合的颠覆性变革

本文提出一种融合智能汽车与家居技术的车载机器人架构。其创新点包括:1)基于多模态传感器的拟人化硬件设计,实现声源定位误差<5°、体温检测精度±0.3℃;2)跨模态情感计算引擎,综合面部表情、心率等数据构建三维情绪模型;3)协议自适应中间件,支持小米、华为等多品牌智能家居设备即插即用;4)环境自适应舵机控制,-30℃环境下扭矩保持率达92.5%。测试数据显示,该方案使交互步骤减少60%,用户满意度提升58%,日均使用时长增加2.3倍,为"人-车-家"生态融合提供了可行技术路径。

qq_42671193的博客 1125

Adaboost入门教程——最通俗易懂的原理介绍(图文实例)

Adaboost入门教程——最通俗易懂的原理介绍(图文实例)

Max的杂物仓 11万+

STM32 进阶教程 7 -  C与C++混合编程

前言 在嵌入式开发过程中经常会用到第三个芯片/设备,这些第三方的芯片提供的DEMO程序或驱动程序有时候是C++,如果先前的系统用C语言写的就会出现点问题,往往需先将C++的驱动程序自已手动改成C语言再用,本节给大家介给一下如何在KEL MDK环境中实现C与C++混合编程。本节将在《STM32 进阶教程 4 - 软件实现高精度延时 2》基础上将Delay.c变成C++实现的Delay.cpp编代...

张十三的博客 9131

《LangChain技术原理剖析:OpenAI Function Calling的实践与应用》

,"unit": {},name:函数的唯一标识符:自然语言描述,决定LLM如何选择该函数parameters:定义输入参数的完整Schema。

qq_62223405的博客 980

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

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

weixin_34026276的博客 341

鸿蒙实战开发教程-注册登录页面

在密码输入框中,只要设置TextInput的类型就可以实现带眼睛logo的密码输入框效果:

2401_82546228的博客 3559

【重温童年】基于tkinter模块设计的Q宠大乐斗武器升星模拟器:重温经典,畅享休闲时光

与传统的Q宠大乐斗不同,这款模拟器还加入了一个创新的功能——自定义升星概率。玩家可以根据自己的喜好和策略,为不同的武器设置不同的成功率和降级率。比如,你可以将“嗜血”这把武器的升星难度设置得极高,以体现其稀有性和强大威力;也可以将“平底锅”这样的普通武器设置得相对容易升星,让玩家在升级过程中感受到更多的成就感。这种自定义的概率设置,不仅增加了游戏的趣味性和挑战性,还让玩家在升级过程中有了更多的策略和选择。你可以根据自己的武器库和卷轴数量,制定出最合适的升级计划,从而在游戏中占据先机。

nmdbbzcl的博客 1238
上一篇: 【机器翻译】题解
下一篇: C++趣味编程【时钟2代】
Hound1101001
博客等级 码龄3年 10粉丝 6原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值