level 6
ForeverBell
楼主
源C++代码来自《编程之美》~
现翻译成VB代码和吧友感受下编程的魅力~
Option Explicit
Private Declare Function GetTickCount Lib "kernel32" () As Long
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Const SPLIT As Double = 0.01
Private Const COUNT As Long = 200
Private Const PI As Double = 3.14159265
Private Const INTERVAL As Long = 300
Sub Main()
Dim busySpan(COUNT) As Long
Dim idleSpan(COUNT) As Long
Dim half As Long
half = INTERVAL / 2
Dim radian As Double
Dim i As Long
For i = 0 To COUNT - 1
busySpan(i) = half + (Sin(PI * radian) * half)
idleSpan(i) = INTERVAL - busySpan(i)
radian = radian + SPLIT
Next i
Dim starttime As Long
Dim j As Long
While (True)
j = j Mod COUNT
starttime = GetTickCount()
While (GetTickCount() - starttime <= busySpan(j))
Wend
Sleep (idleSpan(j))
j = j + 1
Wend
End Sub
顺便附带上C++代码,让大家看下C++和VB代码的转换关系~
#include <windows.h>
#include <stdlib.h>
#include <math.h>
const double SPLIT = 0.01;
const int COUNT = 200;
const double PI = 3.14159265;
2009年08月18日 12点08分
1
现翻译成VB代码和吧友感受下编程的魅力~
Option Explicit
Private Declare Function GetTickCount Lib "kernel32" () As Long
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Const SPLIT As Double = 0.01
Private Const COUNT As Long = 200
Private Const PI As Double = 3.14159265
Private Const INTERVAL As Long = 300
Sub Main()
Dim busySpan(COUNT) As Long
Dim idleSpan(COUNT) As Long
Dim half As Long
half = INTERVAL / 2
Dim radian As Double
Dim i As Long
For i = 0 To COUNT - 1
busySpan(i) = half + (Sin(PI * radian) * half)
idleSpan(i) = INTERVAL - busySpan(i)
radian = radian + SPLIT
Next i
Dim starttime As Long
Dim j As Long
While (True)
j = j Mod COUNT
starttime = GetTickCount()
While (GetTickCount() - starttime <= busySpan(j))
Wend
Sleep (idleSpan(j))
j = j + 1
Wend
End Sub
顺便附带上C++代码,让大家看下C++和VB代码的转换关系~
#include <windows.h>
#include <stdlib.h>
#include <math.h>
const double SPLIT = 0.01;
const int COUNT = 200;
const double PI = 3.14159265;