使用 QBASIC 编写指针式时钟

本教程将带您使用 QBASIC 编程语言编写一个简单的指针式时钟,时针、分针、秒针用不同颜色标示。

代码示例

CLS
SCREEN 12
DIM SHARED cx, cy, r AS INTEGER
DIM SHARED hour, minute, second AS INTEGER

' 设置时钟中心点坐标和半径
 cx = 320: cy = 240: r = 200

' 初始化时间
hour = 0: minute = 0: second = 0

DO
    ' 获取当前时间
    hour = VAL(MID$(TIME$, 1, 2))
    minute = VAL(MID$(TIME$, 4, 2))
    second = VAL(MID$(TIME$, 7, 2))

    ' 画时钟表盘
    CIRCLE (cx, cy), r, 15, , , , , FILL
    CIRCLE (cx, cy), r, 0

    ' 画时针
    LINE (cx, cy)-(cx + 80 * SIN(hour * 30 + minute / 2), cy - 80 * COS(hour * 30 + minute / 2)), 4

    ' 画分针
    LINE (cx, cy)-(cx + 120 * SIN(minute * 6 + second / 10), cy - 120 * COS(minute * 6 + second / 10)), 2

    ' 画秒针
    LINE (cx, cy)-(cx + 140 * SIN(second * 6), cy - 140 * COS(second * 6)), 1

    ' 等待1秒
    SLEEP 1

LOOP UNTIL INKEY$ <> ""

代码解释

  1. CLS:清空屏幕
  2. SCREEN 12:设置屏幕模式
  3. DIM SHARED cx, cy, r AS INTEGER:定义全局变量,表示时钟中心点坐标和半径
  4. DIM SHARED hour, minute, second AS INTEGER:定义全局变量,表示当前时间的时、分、秒
  5. cx = 320: cy = 240: r = 200:初始化时钟中心点坐标和半径
  6. hour = 0: minute = 0: second = 0:初始化当前时间
  7. DO:程序进入无限循环,不断更新时钟
  8. hour = VAL(MID$(TIME$, 1, 2)):获取当前小时数
  9. minute = VAL(MID$(TIME$, 4, 2)):获取当前分钟数
  10. second = VAL(MID$(TIME$, 7, 2)):获取当前秒数
  11. CIRCLE (cx, cy), r, 15, , , , , FILL:画一个以(cx, cy)为中心,半径为r,填充颜色为15(白色)的圆,表示时钟表盘
  12. CIRCLE (cx, cy), r, 0:画一个以(cx, cy)为中心,半径为r,边框颜色为0(黑色)的圆,表示时钟表盘的边框
  13. LINE (cx, cy)-(cx + 80 * SIN(hour * 30 + minute / 2), cy - 80 * COS(hour * 30 + minute / 2)), 4:画一个从(cx, cy)到时针末端的线段,线宽为4,表示时针
  14. LINE (cx, cy)-(cx + 120 * SIN(minute * 6 + second / 10), cy - 120 * COS(minute * 6 + second / 10)), 2:画一个从(cx, cy)到分针末端的线段,线宽为2,表示分针
  15. LINE (cx, cy)-(cx + 140 * SIN(second * 6), cy - 140 * COS(second * 6)), 1:画一个从(cx, cy)到秒针末端的线段,线宽为1,表示秒针
  16. SLEEP 1:等待1秒
  17. LOOP UNTIL INKEY$ <> "":程序进入无限循环,直到用户按下任意键结束程序。

总结

这段代码利用 QBASIC 的绘图命令,结合时间函数,实现了一个动态指针式时钟,并用不同颜色区分了时针、分针、秒针。您可以根据自己的喜好修改代码,例如:

  • 改变时钟的中心点坐标和半径
  • 调整时针、分针、秒针的长度
  • 增加其他装饰元素,例如刻度线、数字等
QBASIC 指针式时钟绘制教程 - 用代码实现动态时针、分针、秒针

原文地址: http://www.cveoy.top/t/topic/jvDR 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录