VisualFreeBasic游戏趣味编程_3.2_按空格键控制小球起跳

2026-1-21 / 0 评论 / 67 阅读

结合2-9与3-1,以下代码让小球初始在地面上,按下空格键后起跳,落地后小球静止。在2-9的基础上,把窗口宽度、高度、小球半径等数值均用变量表示,这样代码更易阅读与调整,如3-2所示。

Sub 游戏执行过程(hWndForm As hWnd)
   Dim gg As yGDI = hWndForm
   gg.Brush(&HFF0000) '球的颜色
   Dim As Single ww, hh, gravity '重力加速度
   Dim As Single ball_x, ball_y, ball_vy, radius '小球坐标、y方向速度、直径
   ww      = DpiUnScaleF(Form1.ScaleWidth)  '游戏画面宽度
   hh      = DpiUnScaleF(Form1.ScaleHeight) '游戏画面高度
   radius  = 20 '小球直径
   ball_x  = ww / 4      '小球x位置
   ball_y  = hh - radius '小球y位置
   ball_vy = 0 ' 小球初始y速度为0
   Do
      If IsKeyPress(VK_SPACE) Then '按下了空格键"
         ball_vy = -16 ' 给小球一个向上的初速度
      End If
      ball_vy = ball_vy + gravity ' 根据重力加速度更新小球y方向速度
      ball_y  = ball_y  + ball_vy ' 根据小球y方向速度更新其y坐标
      If (ball_y >= hh - radius) Then '如果小球落到地面上
         ball_vy = 0 'y速度为0
         ball_y  = hh - radius ' 规范其y坐标,避免落到地面下
      End If
      If ball_y < 0 Then '小球跳起到顶部,让小球掉下来
         ball_y =0
         ball_vy = 2
         gravity = 0.5
      End If
      gg.DrawEllipse(100, ball_y, radius, radius) '画小球
      gg.Redraw '刷新显示画面
      Sleep(10) '暂停10毫秒
      gg.Cls()  '清空画面
   Loop
End Sub

程序运行后输出如图所示:

评论一下?

OωO
取消