在本节我们尝试实现小球落地反弹的效果。首先在小球逐渐下落代码的基础上,设定变量vy记录小球在y轴方向上的速度,vy初始化为3。在do 循环语句中,小球的y坐标每次增加vy。
提示 do 是无限循环语句 for 是有限循环语句
一直向下运动效果
Sub 游戏执行过程(hWndForm As hWnd)
Dim gg As yGDI = hWndForm
gg.Brush(&HFF0000)
Dim y As Long = 10
Dim vy As Long = 2
Do
y = y + vy
If y > 280 Then y = -20
gg.DrawEllipse(100, y, 20, 20)
gg.Redraw : Sleep(10) : gg.Cls()
Loop
End Sub
提示 循环都必须有一个配套使用,For 和 Next 配套,Do 和 Loop 配套 ,因为需要无限循环运动,因此用 Do 循环更适合。
上下反弹运动效果
当小球落地时,即小球刚和窗口最底部接触时,小球y坐标恰好等于240。为了实现小球落地时反弹,只需将其y轴上的速度反向(vy = – vy),执行y = y+ vy就相当于将y逐渐变小,即实现了小球向上反弹。
Sub 游戏执行过程(hWndForm As hWnd)
Dim gg As yGDI = hWndForm
gg.Brush(&HFF0000)
Dim y As Long = 10
Dim vy As Long = 2
Do
y = y + vy
If y <=0 Or y>=240 Then vy = -vy
gg.DrawEllipse(100, y, 20, 20)
gg.Redraw : Sleep(10) : gg.Cls()
Loop
End Sub
评论一下?