程序员开发实例大全宝库

网站首页 > 编程文章 正文

打造纯C的电子时钟(加图形库+源码)

zazugpt 2024-09-07 01:56:34 编程文章 23 ℃ 0 评论

用到编译工具 是vs2013(VC Vs2015也行)记得安装图形库

涉及到的知识点:

1.图形库 界面 DONE

2.鼠标操作

3.时间 DONE

4.音乐DONE

5.计算问题 角度 DONE

源码如下:

#include<graphics.h>//图形库 需要安装 VS VC

#include<stdio.h>

#include<time.h> //time clock

#include<math.h>//计算

#include<stdlib.h>//关机命令

//playsound 只能放wav 可以用于资源文件

//mciSendSring 可以放mp3

#include<mmsystem.h>

#pragma comment(lib,"WINMM.LIB")//播放多媒体的一个库

#define PI 3.141592654

void draw(int,int,int);

int main()

{

initgraph(640, 480);//新建窗口

//表盘界面

//1.获取时间

SYSTEMTIME time;//结构体

//char arr[50];

setbkmode(TRANSPARENT);

settextstyle(30,0,"华文彩云");//高度和默认宽度

//setbkcolor(LIGHTGRAY);//grey gray

while (1)

{

loadimage(NULL, "1.jpg");

setlinecolor(WHITE);

rectangle(480, 0, 640, 160);

outtextxy(500, 70, "放音乐");

rectangle(480, 160, 640, 320);

outtextxy(500, 230, "不要点");

rectangle(480, 320, 640, 480);

outtextxy(500, 380, "退出");

//界面

GetLocalTime(&time);//获取当前时间 年 月 日 小时 分 秒

draw(time.wHour, time.wMinute, time.wSecond);

Sleep(1000);

}

//while (1)

//{

//Sleep(1000);//单位毫秒

//GetLocalTime(&time);//获取当前时间 年 月 日 小时 分 秒

//sprintf(arr, "%d年%d月%d日%d小时%d分%d秒", time.wYear, time.wMonth, time.wDay, time.wHour, time.wMinute, time.wSecond);//格式化写入

//outtextxy(0, 0, arr);//图形库的输出函数 printf

////

//}

getchar();

closegraph();//关闭窗口

return 0;

}

void draw(int hour,int min,int sec)

{

//画表盘

setlinecolor(WHITE);

setlinestyle(PS_SOLID, 1);

circle(240,240,200);//圆心加半径 直径<480 半径<240

//圆心坐标 200 是半径

char arr[3];

for (int i = 1; i <= 12; i++)//刻度

{

sprintf(arr, "%d", i);

outtextxy(240+(int)(200*sin(30*i*PI/180))-5, 240-(int)(200 * cos(30 * i*PI / 180))-5, arr);

}

//强转

//开始画指针 时针 分针 秒针 时针最短120 分针160 秒针最长200

//粗细 颜色

//画时针

setlinecolor(RED);

setlinestyle(PS_SOLID,7);

line(240, 240, 240 + (int)(120 * sin(30 * (hour+min/60.0)*PI / 180)), 240 - (int)(120 * cos(30 * (hour+min/60.0)*PI / 180)));

//画分针

setlinecolor(BLUE);

setlinestyle(PS_SOLID, 6);

line(240, 240, 240 + (int)(160 * sin(6 * min*PI / 180)), 240 - (int)(160 * cos(6* min*PI / 180)));

//画秒针

setlinecolor(YELLOW);

setlinestyle(PS_SOLID, 2);

line(240, 240, 240 + (int)(200 * sin(6 * sec*PI / 180)), 240 - (int)(200 * cos(6 * sec*PI / 180)));

}

void play()

{

if (MouseHit())//判断有没有鼠标信息

{

MOUSEMSG msg = GetMouseMsg();//鼠标信息

switch (msg.uMsg)

{

case WM_LBUTTONDOWN:

if (msg.x >= 480)

{

if (msg.y <= 160)

{

//放音乐

mciSendString("open Fade.mp3 alias bgm", 0, 0, 0);//

mciSendString("play bgm repeat", 0, 0, 0);

}

else if (msg.y > 320)

{

//结束 整个程序

//return ? break?

closegraph();

exit(0);

}

else

{

//关机

MessageBox(GetHWnd(), "将在60秒后关机", "关机", MB_OK);//句柄 对应一个窗口

system("shutdown -s -t 60");//关机和取消关机

//shutdown -s -t 60

//shutdown -s 立刻关机

//23:30关机

//at 23:30 shutdown -s

//shutdown -a 取消关机

}

}

}

}

}

最终的效果图:小编的设计感不强,配色,字体也不是很美观,但是做出来的。可以加下小编的群466572167,群内有视频资料学习交流

可以加群466572167,群内有视频资料

小编就暂时说到这,也有好看的背景可以放到时针后面的,只是要配上好图,有个美观才好看,但是最终的话我们是做项目的,程序出来才是最重要的。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表