2019年第三次课程设计实验报告
一丶实时时钟
二丶实验项目功能描述
通过程序来实现实时时针转动,定义静态秒针,通过改变角度使得秒针转动,,通过系统变量获取当前时间,秒针的角度由当前时间决定,再添加分钟和时针,最后添加表盘刻度实现程序。
三丶项目模块结构
文章图片
游戏最终代码:
#include
#include
#include #define High 480// 游戏画面尺寸
#define Width 640
#define PI3.14159int main()
{
initgraph(Width, High);
// 初始化 640 x 480 的绘图窗口
int center_x,center_y;
// 中心点的坐标,也是表的中心
center_x = Width/2;
center_y = High/2;
int secondLength = Width/5;
// 秒针的长度
int minuteLength = Width/6;
// 分针的长度
int hourLength = Width/7;
// 时针的长度int secondEnd_x,secondEnd_y;
// 秒针的终点
int minuteEnd_x,minuteEnd_y;
// 分针的终点
int hourEnd_x,hourEnd_y;
// 时针的终点
float secondAngle;
// 秒钟对应的角度
float minuteAngle;
// 分钟对应的角度
float hourAngle;
// 时钟对应的角度SYSTEMTIME ti;
// 定义变量保存当前时间BeginBatchDraw();
while (1)
{
// 绘制一个简单的表盘
setlinestyle(PS_SOLID, 1);
setcolor(WHITE);
circle(center_x, center_y, Width/4);
// 画刻度
int x, y,i;
for (i=0;
i<60;
i++)
{
x = center_x + int(Width/4.3 * sin(PI * 2 * i / 60));
y = center_y + int(Width/4.3 * cos(PI * 2 * i / 60));
if (i % 15 == 0)
bar(x - 5, y - 5, x + 5, y + 5);
else if (i % 5 == 0)
circle(x, y, 3);
else
putpixel(x, y, WHITE);
}outtextxy(center_x - 25, center_y + Width/6, "我的时钟");
GetLocalTime(&ti);
// 获取当前时间
// 秒钟角度变化
secondAngle = ti.wSecond * 2*PI/60;
// 一圈一共2*PI,一圈60秒,一秒钟秒钟走过的角度为2*PI/60
// 分钟角度变化
minuteAngle = ti.wMinute * 2*PI/60 + secondAngle/60;
// 一圈一共2*PI,一圈60分,一分钟分钟走过的角度为2*PI/60
// 时钟角度变化
hourAngle = ti.wHour * 2*PI/12 + minuteAngle/12;
// 一圈一共2*PI,一圈12小时,一小时时钟走过的角度为2*PI/12
// 由角度决定的秒针端点坐标
secondEnd_x = center_x + secondLength*sin(secondAngle);
secondEnd_y = center_y - secondLength*cos(secondAngle);
// 由角度决定的分针端点坐标
minuteEnd_x = center_x + minuteLength*sin(minuteAngle);
minuteEnd_y = center_y - minuteLength*cos(minuteAngle);
// 由角度决定的时针端点坐标
hourEnd_x = center_x + hourLength*sin(hourAngle);
hourEnd_y = center_y - hourLength*cos(hourAngle);
setlinestyle(PS_SOLID, 2);
setcolor(YELLOW);
line(center_x, center_y, secondEnd_x, secondEnd_y);
// 画秒针setlinestyle(PS_SOLID, 5);
setcolor(BLUE);
line(center_x, center_y, minuteEnd_x, minuteEnd_y);
// 画分针setlinestyle(PS_SOLID, 10);
setcolor(RED);
line(center_x, center_y, hourEnd_x, hourEnd_y);
// 画时针FlushBatchDraw();
Sleep(10);
setcolor(BLACK);
setlinestyle(PS_SOLID, 2);
line(center_x, center_y, secondEnd_x, secondEnd_y);
// 隐藏前一帧的秒针
setlinestyle(PS_SOLID, 5);
line(center_x, center_y, minuteEnd_x, minuteEnd_y);
// 隐藏前一帧的分针
setlinestyle(PS_SOLID, 10);
line(center_x, center_y, hourEnd_x, hourEnd_y);
// 隐藏前一帧的时针
}EndBatchDraw();
getch();
// 按任意键继续
closegraph();
// 关闭绘图窗口
return 0;
}
四丶实验界面展示
文章图片
五丶代码托管链接
https://gitee.com/Talent_Wei/c_language_warehouse
六丶实验总结
问题:安装编译器VS 的问题
解决方法:看了视频教程完成了安装 。
感想:这次实验涉及到很多从未学过的知识,例如系统变量、outtextxy()函数等,同时也觉得这些小游戏还是很难得,并不是想象中的那样简单,一个功能需要通过许多代码实现。
【2019年第三次课程设计实验报告】转载于:https://www.cnblogs.com/tqw0728-Mars/p/11031946.html
推荐阅读
- 2019年12月24日
- 2019.4.2咖啡冥想日记
- 和陈先生第三次在一起
- 2019-04-01|2019-04-01 幸运
- 亲子日记第三百四十二篇|亲子日记第三百四十二篇 暴雨
- 2019年第22周报
- 牙齿好痛
- 课后分享记录
- 机器学习|机器学习 Andrew Ng《Machine Learning》课程笔记1
- 幼小衔接家长手册(欢迎来到一年级读后感)