首先在画面左边绘制一根针,表示待发射针的位置:
gg.DrawLine 0, 120, 100, 120
假设初始状态下没有针在旋转:
Dim lineNum As Long = 0
浮点数数组存储所有可能针的旋转角度,假设最多有1000根针
Dim Angles(999) As Single
当用户按下空格键时,针的个数加1,并且新增加的针初始角度为PI。用户不断按下空格键,即可持续生成新的针
If IsKeyPress(VK_SPACE) Then '按下空格键
If lineNum < 1000 Then
Angles(lineNum) = 180
lineNum += 1
Sleep 100
End If
End If

全部代码
Sub 游戏执行过程(hWndForm As hWnd)
Dim gg As yGDI = hWndForm
Dim pi As Single = 3.1415926 / 180
Dim lineLength As Long = 100 ' 针的长度
Dim As Long xEnd, yEnd ' 针的末端坐标(针起始位置为圆心)
Dim lineNum As Long = 0
gg.Brush '不填充色彩
Dim rotateSpeed As Single = 0.5
Dim Angles(999) As Single
Dim i As Long
Do
gg.Cls
gg.Pen 3, BGR(0, 0, 0) '线宽为3,这样针看起来更明显
gg.DrawLine 0, 120, 60, 120
If IsKeyPress(VK_SPACE) Then '按下空格键
If lineNum < 1000 Then
Angles(lineNum) = 180
lineNum += 1
Sleep 100
End If
End If
If lineNum Then '有针的情况
For i = 0 To lineNum -1
Angles(i) = Angles(i) + rotateSpeed '角度增加
If Angles(i) > 360 Then Angles(i) = 0
xEnd = 200 + lineLength *Cos(Angles(i) * pi) '计算针的末端坐标
yEnd = 120 + lineLength *Sin(Angles(i) * pi)
gg.DrawLine 200, 120, xEnd, yEnd
Next
End If
gg.Pen 2, BGR(255, 0, 0) '设置圆盘线条颜色为红色
gg.DrawEllipse 160, 80, 80, 80
gg.Redraw
Sleep 10
Loop
End Sub
评论一下?