游戏开发论坛

 找回密码
 立即注册
搜索
查看: 6048|回复: 17

(转)统计VB程序的运行时间

[复制链接]

187

主题

6490

帖子

6491

积分

论坛元老

团长

Rank: 8Rank: 8

积分
6491
发表于 2006-11-11 19:44:00 | 显示全部楼层 |阅读模式
用户退出程序时若能告诉用户程序当次用了多长时间、时间过长的话则提醒用户注意休息,我想这样的创意应是对用户的一种体贴,会使我们的软件更具亲和性,也给我们的软件添色不少。VB中可利用Now函数或者Timer控件完成此设想。
用Now函数能保证时间统计的准确性。思路是这样:用CStr(Second(Now)、CStr(Minute(Now))、Cstr(Hour(Now))及CStr(Day(Now))记取程序启动和关闭时系统时钟的秒、分、时、日,然后作些计算即可得出运行时间总和。因其计算在跨月份的情况下相当复杂,本文不打算对这个思路作讨论。
用Timer控件不失为一种很好的解决方法,它能较为方便地帮助我们统计程序运行的时间。具体思路是:设置几个变量分别记录秒、分、时、日,让Timer控件控制秒、分、时、日的变化。当秒数等于60时则分钟加1,当分钟等于60时则小时加1,当小时等于24时则日加1。这里,秒最为关键,它的精确性决定了时间的统计是否准确。Timer控件的Interval属性的设置因而变得很重要:我们的秒变量将由它来主宰。将其Interval属性设为1000的话一个小时可能会误差6秒钟,这应该是无关紧要了吧。

以下是完整的程序代码清单。作为试验,本程序仅需要一个窗体、一个按钮和一个Timer控件。程序在PWin98、VB6.0下调试通过。

Private s As Integer '声明秒
Private m As Integer '声明分
Private h As Integer '声明小时
Private d As Integer '声明日

'启动程序时设置Timer控件属性并给秒、分、时、日变量赋值
Private Sub Form_Load()
Timer1.Enabled = True
Timer1.Interval = 1000
s = 0
m = 0
h = 0
d = 0
End Sub

Private Sub Timer1_Timer()
s = s + 1 '每秒钟给s变量加1
If s >= 60 Then
s = 0 '重新计算秒
m = m + 1 '逢秒为60则分钟加1
If m >= 60 Then
m = 0 '重新计算分
h = h + 1 '逢分钟为60则小时加1
If h >= 24 Then
h = 0 '重新计算小时
d = d + 1 '逢24小时则天数加1
End If
End If
End If
End Sub

'退出时
Private Sub cmdExit_Click()
If d*24 +h >= 1 Then '使用时间若超过一小时
MsgBox "本次使用的时间为:" & d*24 + h & "小时" & m & "分钟" _
& s & "秒" & vbCrLf & "谢谢使用!" & vbCrLf & _
"但请您注意休息,不要太劳累哦!", vbOKOnly, "再见"
Else '若不超过一小时
MsgBox "本次使用的时间为:" & h & "小时" & m & "分钟" _
& s & "秒" & vbCrLf & "谢谢使用!" & vbCrLf, vbOKOnly, "再见"
End If
End
End Sub


'若用户点击窗体右上角的关闭按钮
Private Sub Form_queryunload(Cancel As Integer, Unloadmode As Integer)
cmdExit_Click
End Sub
作者:土人

187

主题

6490

帖子

6491

积分

论坛元老

团长

Rank: 8Rank: 8

积分
6491
 楼主| 发表于 2006-11-11 19:46:00 | 显示全部楼层

Re:(转)统计VB程序的运行时间

这个程序可以用来干什么呢??
可以用来做一些“共享游戏”,比如说只能玩30分钟那种。
不过我还是不提倡搞什么共享游戏之类的东西,我们要做免费游戏,而且要开源!!这样才能把自己的技术和大家分享,互利互惠,提高大家游戏开发水平。
就是这样。

6

主题

73

帖子

73

积分

注册会员

Rank: 2

积分
73
发表于 2006-11-11 20:04:00 | 显示全部楼层

Re:(转)统计VB程序的运行时间

拜托,少发点无聊的东西,不实用,和开发游戏也没多少关系,你以为这个论坛的人都10几岁?

15

主题

2093

帖子

2093

积分

金牌会员

Rank: 6Rank: 6

积分
2093
发表于 2006-11-11 20:17:00 | 显示全部楼层

Re:(转)统计VB程序的运行时间

有点意思,支持

187

主题

6490

帖子

6491

积分

论坛元老

团长

Rank: 8Rank: 8

积分
6491
 楼主| 发表于 2006-11-11 20:20:00 | 显示全部楼层

Re:(转)统计VB程序的运行时间

To 天使的眼泪 :谢谢批评指正,但是它的作用我已经说明了。这个和年龄没什么关系吧??
To psic :谢谢支持。

6

主题

73

帖子

73

积分

注册会员

Rank: 2

积分
73
发表于 2006-11-11 20:52:00 | 显示全部楼层

Re:(转)统计VB程序的运行时间

千万别用TIMER

187

主题

6490

帖子

6491

积分

论坛元老

团长

Rank: 8Rank: 8

积分
6491
 楼主| 发表于 2006-11-11 20:58:00 | 显示全部楼层

Re: Re:(转)统计VB程序的运行时间

天使的眼泪: Re:(转)统计VB程序的运行时间

千万别用TIMER

哦,不用Timer也可以,那就要在游戏的主循环里隔一段时间判断一次了。

15

主题

2093

帖子

2093

积分

金牌会员

Rank: 6Rank: 6

积分
2093
发表于 2006-11-11 20:59:00 | 显示全部楼层

Re:(转)统计VB程序的运行时间

这里怎么不可以用Timer?又不是当多线程来用……

9

主题

688

帖子

688

积分

高级会员

Rank: 4

积分
688
发表于 2006-11-11 21:10:00 | 显示全部楼层

Re:(转)统计VB程序的运行时间

在对时间精度要求较低时用Timer是完全可以的。

88

主题

1125

帖子

1136

积分

金牌会员

Rank: 6Rank: 6

积分
1136
QQ
发表于 2006-11-12 00:00:00 | 显示全部楼层

Re:(转)统计VB程序的运行时间

  这个概念很不错。
  但是我觉得有点繁琐了。  
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-26 00:42

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表