VisualFreeBasic的编程文档和教程
论坛的首页 勇芳的软件
教程和帮助
  • VisualFreeBasic编程文档
  • 勇芳系列软件帮助说明教程
  • 留言或交流 登录
    登录
    侧边栏壁纸
    博主头像
    勇芳

    • 累计撰写 330 篇文章
    • 累计收到 0 条评论
    • 首页
    • 栏目
      • 论坛的首页
      • 勇芳的软件
      • 教程和帮助
        • VisualFreeBasic编程文档
        • 勇芳系列软件帮助说明教程
      • 留言或交流
      • 登录
    VisualFreeBasic编程文档
    • VisualFreeBasic游戏趣味编程_第4章_“旋转蛇”错觉 2026-1-21
      VisualFreeBasic游戏趣味编程_第4章_“旋转蛇”错觉 在本章我们将讲解如何绘制非常神奇的错觉图片,如图4-1所示,静止的圆盘看起来却有在转动的错觉。 本章首先介绍了扇形函数和RGB颜色模型,解析了一个基本单元的绘制方式;然后介绍了for循环语句和循环的嵌套,解析了多层圆盘的绘制方式;最后介绍了HSV颜色模型,并利用随机函数和按键切换,解析了丰富多变的“旋转蛇”错觉图案的绘制方式。
      • 2026年-1月-21日
      • 90 阅读
      • 0 评论
      VisualFreeBasic编程文档
    • VisualFreeBasic游戏趣味编程_3.7_避免空中起跳 2026-1-21
      VisualFreeBasic游戏趣味编程_3.7_避免空中起跳 在这一节,我们处理一个游戏中的小bug,避免小球在空中还能继续起跳。 首先,定义变量isBallOnFloor记录小球是否在地面上,并初始化为1,表示开始小球在地面上: Dim isBallOnFloor As Long = 1 '小球是否在地面上,避免重复起跳 当用户按下空格键时,必须同时满足isBallOnFloor为1,才让小球起跳。起跳后,设定isBallOnFloor = 0,表示目前小球不在地面上了: If IsKeyPress(VK_SPACE) And isBallOnFloor =1 Then '按下了空格键" ball_vy = -16 ' 给小球一个向上的初速度 isBallOnFloor = 0 '表示小球不在地面了,不能重复起跳 End If 当小球再次落到地面上后,设定isBallOnFloor = 1,表示目前小球又重新到了地面上,可以起跳了: If (ball_y >= hh - radius) Then '如果小球落到地面上 ball_vy = 0 'y速度为0 ball_y = hh - radius ' 规范其y坐标,避免落到地面下 isBallOnFloor = 1 ' 表示小球在地面上 End If 完整代码,玩家可以根据随机方块的高度、速度,选择合适的起跳时机,让小球躲避方块。 Sub 游戏执行过程(hWndForm As hWnd) Dim gg As yGDI = hWndForm 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 Dim As Single rect_left_x, rect_top_y, rect_width, rect_height, rect_vx ' 方块障碍物的相关参数 rect_height = 100 ' 方块高度 rect_width = 20 ' 方块宽度 rect_left_x = ww * 3 / 4 ' 方块左边x坐标 rect_top_y = hh - rect_height '方块顶部y坐标 rect_vx = -3 '方块x方向速度 Dim score As Long = 0 '得分 Dim isBallOnFloor As Long = 1 '小球是否在地面上,避免重复起跳 Do If IsKeyPress(VK_SPACE) And isBallOnFloor =1 Then '按下了空格键" ball_vy = -16 ' 给小球一个向上的初速度 isBallOnFloor = 0 '表示小球不在地面了,不能重复起跳 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坐标,避免落到地面下 isBallOnFloor = 1 ' 表示小球在地面上 End If If ball_y < 0 Then '小球跳起到顶部,让小球掉下来 ball_y = 0 ball_vy = 2 gravity = 0.5 End If gg.Brush(&HFF0000) '球的颜色 gg.DrawEllipse(100, ball_y, radius, radius) '画小球 rect_left_x = rect_left_x + rect_vx ' 方块向左移 If (rect_left_x <= -20) Then '如果方块跑到最左边 score = score + 1 ' 得分+1 rect_left_x = ww ' 在最右边重新出现 Randomize rect_height = Int(Rnd * (hh / 2 - hh / 4)) + hh / 2 Randomize rect_vx = - (Int(Rnd * 4) + 3) ' 3 到 7 之间 rect_top_y = hh - rect_height '方块顶部y坐标 End If gg.Brush(BGR(204, 0, 0)) '方块的颜色 gg.DrawFrame(rect_left_x, rect_top_y, rect_width, rect_height) '画方块 gg.Font "黑体",14 gg.DrawString 10,10,score '显示得分 gg.Redraw '刷新显示画面 '如果小球碰到方块 If ((rect_left_x <= ball_x + radius) And _ (rect_left_x + rect_width >= ball_x ) And _ (hh - rect_height <= ball_y + radius)) Then score = 0 ' 得分清零 Sleep(200) ' 慢动作效果 Else Sleep(10) '暂停10毫秒 End If gg.Cls() '清空画面 Loop End Sub
      • 2026年-1月-21日
      • 45 阅读
      • 0 评论
      VisualFreeBasic编程文档
    • VisualFreeBasic游戏趣味编程_3.6_得分的计算与显示 2026-1-21
      VisualFreeBasic游戏趣味编程_3.6_得分的计算与显示 定义整型变量记录游戏的得分,并初始化为0: Dim score As Long = 0 '得分 当方块跑到画面最左边时,得分增加1: If (rect_left_x <= -20) Then '如果方块跑到最左边 score = score + 1 ' 得分+1 当方块碰到小球时,得分清零: '如果小球碰到方块 If ((rect_left_x <= ball_x + radius) And _ (rect_left_x + rect_width >= ball_x ) And _ (hh - rect_height <= ball_y + radius)) Then score = 0 ' 得分清零 Sleep(200) ' 慢动作效果 Else Sleep(10) '暂停10毫秒 End If 另外,文字输出功能 gg.DrawString 10,10,score '显示得分 代码写在刷新显示之前 gg.Brush(BGR(204, 0, 0)) '方块的颜色 gg.DrawFrame(rect_left_x, rect_top_y, rect_width, rect_height) '画方块 gg.DrawString 10,10,score '显示得分 gg.Redraw '刷新显示画面 也可以先设置字体和大小 gg.Font "黑体",14 gg.DrawString 10,10,score '显示得分 最后执行效果: 完整代码: Sub 游戏执行过程(hWndForm As hWnd) Dim gg As yGDI = hWndForm 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 Dim As Single rect_left_x, rect_top_y, rect_width, rect_height, rect_vx ' 方块障碍物的相关参数 rect_height = 100 ' 方块高度 rect_width = 20 ' 方块宽度 rect_left_x = ww * 3 / 4 ' 方块左边x坐标 rect_top_y = hh - rect_height '方块顶部y坐标 rect_vx = -3 '方块x方向速度 Dim score As Long = 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.Brush(&HFF0000) '球的颜色 gg.DrawEllipse(100, ball_y, radius, radius) '画小球 rect_left_x = rect_left_x + rect_vx ' 方块向左移 If (rect_left_x <= -20) Then '如果方块跑到最左边 score = score + 1 ' 得分+1 rect_left_x = ww ' 在最右边重新出现 Randomize rect_height = Int(Rnd * (hh / 2 - hh / 4)) + hh / 2 Randomize rect_vx = - (Int(Rnd * 4) + 3) ' 3 到 7 之间 rect_top_y = hh - rect_height '方块顶部y坐标 End If gg.Brush(BGR(204, 0, 0)) '方块的颜色 gg.DrawFrame(rect_left_x, rect_top_y, rect_width, rect_height) '画方块 gg.Font "黑体",14 gg.DrawString 10,10,score '显示得分 gg.Redraw '刷新显示画面 '如果小球碰到方块 If ((rect_left_x <= ball_x + radius) And _ (rect_left_x + rect_width >= ball_x ) And _ (hh - rect_height <= ball_y + radius)) Then score = 0 ' 得分清零 Sleep(200) ' 慢动作效果 Else Sleep(10) '暂停10毫秒 End If gg.Cls() '清空画面 Loop End Sub
      • 2026年-1月-21日
      • 56 阅读
      • 0 评论
      VisualFreeBasic编程文档
    • VisualFreeBasic游戏趣味编程_3.5_随机方块的速度和高度 2026-1-21
      VisualFreeBasic游戏趣味编程_3.5_随机方块的速度和高度 为了增加游戏的趣味性,可以添加一定的随机性。首先输入并运行代码 Sub 游戏执行过程(hWndForm As hWnd) Print Rnd Print Rnd Print Rnd End Sub rnd()函数可以生成随机数,程序运行后输出一些随机数: 为了得到设定范围内的随机数(比如:0~100),我们需要乘法。输入并运行代码 Sub 游戏执行过程(hWndForm As hWnd) Print Rnd *100 Print Rnd *100 Print Rnd *100 End Sub 程序运行后输出(是 0 和 100之间,但不包括 0 和 100) 最后会发现,随机数,运行一次软件,第一个,第二个 数 都是一样的,为了每次都不一样,需要初始化 Randomize Sub 游戏执行过程(hWndForm As hWnd) Randomize Print Rnd * 100 Randomize Print Rnd * 100 Randomize Print Rnd *100 End Sub 现在每次都不一样了。 如果不需要小数,需要整数,就增加转换函数:Int Sub 游戏执行过程(hWndForm As hWnd) Randomize Print Int(Rnd * 100) Randomize Print Int(Rnd * 100) Randomize Print Int(Rnd * 100) 运行结果,整数是结果是 0~99 ,就是 Rnd *100 结果是永远不会出现 100 。 当方块重新出现时,添加代码设置其随机高度范围为height/4到height/2,随机速度为-3到-7,添加代码如下: If (rect_left_x <= -20) Then '如果方块跑到最左边 rect_left_x = ww ' 在最右边重新出现 Randomize rect_height = Int(Rnd * (hh / 2 - hh / 4)) + hh / 2 Randomize rect_vx = - (Int(Rnd * 4) + 3) ' 3 到 7 之间 rect_top_y = hh - rect_height '方块顶部y坐标 End If 好了,把代码复制去使用吧。
      • 2026年-1月-21日
      • 51 阅读
      • 0 评论
      VisualFreeBasic编程文档
    • VisualFreeBasic游戏趣味编程_3.4_小球和方块的碰撞判断 2026-1-21
      VisualFreeBasic游戏趣味编程_3.4_小球和方块的碰撞判断 图3-5列出了小球和方块发生碰撞的3种边界情况,由图分析可认为小球和方块发生碰撞需同时满足以下3个条件。 (a)rect_left_x <= ball_x + radius(方块最左边在小球最右边的左侧或二者x坐标相同)。 (b)rect_left_x + rect_width >= ball_x - radius(方块最右边在小球最左边的右侧或二者x坐标相同)。 (c)height - rect_height <= ball_y + radius(方块最上边在小球最下边的上侧或二者y坐标相同)。 利用C语言提供的3种逻辑运算符:Not(非)、And(与)、Or(或),我们可以实现多个逻辑条件的组合。输入并运行如下代码: Sub 游戏执行过程(hWndForm As hWnd) Print 2 > 3 Print 5 < 6 Print Not(2 > 3) Print 2 > 3 And 5 < 6 Print 2 > 3 Or 5 < 6 End Sub 程序运行后输出: FB语言中0表示假,-1表示真,因此 print 2>3 输出0,print 5<6 输出-1。 逻辑非运算符 Not 会把真变成假,把假变成真。(2>3)为假,则Not(2>3)为真,print Not(2>3)输出-1。 逻辑与运算符 And 只有当两边的条件都是真时,组合条件才是真。(2>3)为假,(5<6)为真,则(2>3) And (5<6)为假,因此print (2>3) And (5<6) 输出0。 逻辑或运算符 Or 只要两边的条件有一个是真时,组合条件就是真。(5<6)为真,则 (2>3)Or(5<6)为真,因此print (2>3)Or(5<6) 输出-1。 利用逻辑与运算符,在3-3-2基础上添加如下代码,即可实现小球和方块的碰撞判断。当发生碰撞时,利用Sleep( )函数实现类似慢动作的效果: '如果小球碰到方块 If ((rect_left_x <= ball_x + radius) And _ (rect_left_x + rect_width >= ball_x ) And _ (hh - rect_height <= ball_y + radius) ) Then Sleep(200) ' 慢动作效果 Else Sleep(10) '暂停10毫秒 End If 提示 可将过长的FB语言代码分成多行来写,便于规范化与阅读理解。如上面代码 And _ 后面下划线,表示多行。 作业: 以上碰撞代码,应该增加在什么地方?然后运行看效果。
      • 2026年-1月-21日
      • 56 阅读
      • 0 评论
      VisualFreeBasic编程文档
    • VisualFreeBasic游戏趣味编程_3.3_方块的绘制与移动 2026-1-21
      VisualFreeBasic游戏趣味编程_3.3_方块的绘制与移动 函数gg.DrawFrame(x,y,w,h)可以绘制矩形,其中(x,y)为矩形左上角的(x,y)坐标,(w,h)为矩形的宽度和高度,单位全部是像素。在3-2的基础上添加以下代码: Dim As Single rect_left_x, rect_top_y, rect_width, rect_height ' 方块障碍物的相关参数 rect_height = 100 ' 方块高度 rect_width = 20 ' 方块宽度 rect_left_x = ww * 3 / 4 ' 方块左边x坐标 rect_top_y = hh - rect_height '方块顶部y坐标 '画方块 gg.DrawFrame(rect_left_x, rect_top_y, rect_width, rect_height) 进一步,添加变量rect_vx记录方块在x方向上的速度,并初始化为-3。在ddo语句中,让方块从右向左移动。当方块到达窗口最左边时,再让其从最右边出现。 完整代码 Sub 游戏执行过程(hWndForm As hWnd) Dim gg As yGDI = hWndForm 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 Dim As Single rect_left_x, rect_top_y, rect_width, rect_height,rect_vx ' 方块障碍物的相关参数 rect_height = 100 ' 方块高度 rect_width = 20 ' 方块宽度 rect_left_x = ww * 3 / 4 ' 方块左边x坐标 rect_top_y = hh - rect_height '方块顶部y坐标 rect_vx = -3 '方块x方向速度 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.Brush(&HFF0000) '球的颜色 gg.DrawEllipse(100, ball_y, radius, radius) '画小球 rect_left_x = rect_left_x + rect_vx ' 方块向左移 If (rect_left_x <= -20) Then '如果方块跑到最左边 rect_left_x = ww ' 在最右边重新出现 End If gg.Brush(BGR(204,0,0)) '方块的颜色 gg.DrawFrame(rect_left_x, rect_top_y, rect_width, rect_height) '画方块 gg.Redraw '刷新显示画面 Sleep(10) '暂停10毫秒 gg.Cls() '清空画面 Loop End Sub
      • 2026年-1月-21日
      • 53 阅读
      • 0 评论
      VisualFreeBasic编程文档
    • VisualFreeBasic游戏趣味编程_3.2_按空格键控制小球起跳 2026-1-21
      VisualFreeBasic游戏趣味编程_3.2_按空格键控制小球起跳 结合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 程序运行后输出如图所示:
      • 2026年-1月-21日
      • 68 阅读
      • 0 评论
      VisualFreeBasic编程文档
    • VisualFreeBasic游戏趣味编程_3.1_字符 2026-1-21
      VisualFreeBasic游戏趣味编程_3.1_字符 除了整型(Long)、浮点型(Single),C语言还提供了字符型(String)数据类型。输入并运行以下代码: Sub 游戏执行过程(hWndForm As hWnd) Print "文字" Dim c As String c = "中文" Print c End Sub 程序运行后输出: 提示 当输出区内容很多,不利于我们查看打印输出内容,可以点清除按钮,清除内容。 不清除,每次输出的内容都会被保留,最多保留最近1000个 常见的字符包括英文字母、数字、标点符号、空格、回车等。双引号包含的一个字符,如“a”、“B”、“1”、“@” 、“ ”(空格)等都为字符常量。 String 为定义字符型变量的关键词,Dim c As String定义了字符型变量c,c = "中文"对字符型变量进行赋值。 检测按键被按下 Sub 游戏执行过程(hWndForm As hWnd) Do If IsKeyPress(VK_SPACE) Then Print "按下了空格键" Sleep 100 Loop End Sub IsKeyPress 是检查按键是否被按下函数,什么按键对应什么参数,需要查看微软网站。 https://learn.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes 运行软件后,按下 空格键 ,看看是否有打印输出
      • 2026年-1月-21日
      • 53 阅读
      • 0 评论
      VisualFreeBasic编程文档
    • VisualFreeBasic游戏趣味编程_第3章_“别碰方块”游戏” 2026-1-21
      VisualFreeBasic游戏趣味编程_第3章_“别碰方块”游戏” 在本章我们将探讨如何实现一个小球跳跃躲避方块的游戏,如图3-1所示。 本章首先介绍了字符的知识,按空格键控制小球起跳;然后介绍了矩形的绘制,并利用逻辑运算符解析如何实现小球和方块的碰撞判断;接着介绍了整除、取余和类型转换,以及如何利用随机数增加游戏的趣味性;最后分析了得分的计算显示实现方式,解决了小球在空中起跳的问题。
      • 2026年-1月-21日
      • 53 阅读
      • 0 评论
      VisualFreeBasic编程文档
    • VisualFreeBasic游戏趣味编程_2.9_小球加速下落 2026-1-21
      VisualFreeBasic游戏趣味编程_2.9_小球加速下落 在现实物理世界中,自由落体的物体会受重力影响加速下落。为了在FB语言中处理数值为小数的重力加速度,我们可以利用一种新的数据类型—— Single(浮点型)。 Sub 游戏执行过程(hWndForm As hWnd) Dim g As Single g = 9.8 Print g End Sub 浮点型的关键词为Single,Dim g As Single定义了一个浮点型的变量g。FB语言中的小数被自动认为是浮点型常量,并可以赋值给浮点型变量。print()函数可以输出浮点型常量或变量。浮点型数值之间也可以进行四则运算。 首先将y、vy改成浮点型变量。小球y坐标初始化为0,y方向的速度vy初始化为0。增加浮点型变量g描述重力加速度,设为0.5。在do循环语句中,首先根据重力加速度g增加速度vy,然后利用vy更新y坐标,碰到地面后速度vy反向。如此重复运行,即实现了小球加速下落、触底反弹的循环动画效果。 Sub 游戏执行过程(hWndForm As hWnd) Dim gg As yGDI = hWndForm gg.Brush(&HFF0000) Dim y As Single = 0 Dim vy As Single = 0 Dim g As Single = 0.5 Do vy = vy + g y = y + vy If y <= 0 Or y >= 240 Then vy = - vy gg.DrawEllipse(100, y, 20, 20) gg.Redraw : Sleep(10) : gg.Cls() If y > 284 Then vy = 0 : y = 0 '这是重新开始 Loop End Sub 现实世界中的物体会受阻力的影响,运动速度逐渐减小。我们可以在小球每次落地反弹时,速度变成之前的0.95倍。另外让小球最后静止时正好停止在地面上,防止小球穿过地面。 Sub 游戏执行过程(hWndForm As hWnd) Dim gg As yGDI = hWndForm gg.Brush(&HFF0000) Dim y As Single = 0 Dim vy As Single = 0 Dim g As Single = 0.5 Do vy = vy + g y = y + vy If y <= 0 Or y >= 240 Then vy = - 0.95*vy gg.DrawEllipse(100, y, 20, 20) gg.Redraw : Sleep(10) : gg.Cls() If y > 250 Then Exit Do Loop gg.DrawEllipse(100, 240, 20, 20) End Sub 当代码比较多时,可以适当加一些注释。所谓注释,就是一些说明的文字,不参与程序运行,格式一般是 ‘注释文字”。以下为加上注释的完整代码,这样读者可以比较清楚地了解代码的功能、变量的含义等。 Sub 游戏执行过程(hWndForm As hWnd) Dim gg As yGDI = hWndForm gg.Brush(&HFF0000) '球的颜色 Dim y As Single = 0 '小球的y坐标 Dim vy As Single = 0 '小球y方向速度 Dim g As Single = 0.5 '小球加速度,y方向 Do vy = vy + g '利用加速度g更新vy速度 y = y + vy '利用y方向速度vy更新y坐标 If y <= 0 Or y >= 240 Then '当碰到地面时和反弹到最高时 vy = - 0.95 *vy ' y方向速度改变方向,并受阻力影响,绝对值变小 End If gg.DrawEllipse(100, y, 20, 20) '画小球 gg.Redraw '刷新显示画面 Sleep(10) '暂停10毫秒 gg.Cls() '清空画面 If y > 250 Then Exit Do '超过范围,不再反弹,退出循环 Loop gg.DrawEllipse(100, 240, 20, 20) '画一个在地面的小球 End Sub 提示 当代码逐渐复杂时,一般不要把数值写死在代码中,而是用变量替代。这样代码的可读性更好(阅读有意义的变量名称,而不是阅读没有含义的数字),也方便之后修改参数(只需要修改一次变量,而不是修改多次数值)。 练习题2-8:增加变量x表示小球的x坐标,vx表示x方向的速度,vx初始化为1。尝试实现小球抛物线运动,如图所示。并实现小球在窗口中四处反弹的效果
      • 2026年-1月-21日
      • 56 阅读
      • 0 评论
      VisualFreeBasic编程文档
    • 12
    • 13
    • 14
    • 15
    • 16
    博主栏壁纸
    博主头像 勇芳

    330 文章数
    0 评论量
    • QQ游戏大厅多开版_旧版_2012到2025版
    • 使用Sandboxie沙盒多开QQ游戏大厅
    • Sandboxie沙盒(隔离软件)
    人生倒计时
    最新评论
    链接
    • 公益·寻亲,让爱回家
    • Visual Basic6 语言和控件手册
    • CWindow类库帮助FreeBasic版
    • FreeBASIC 帮助文档中文版
    • Windows GDI 编程手册
    • Windows GDI+ 编程手册
    • SQLite3数据库API手册
    • WebBrowser控件编程手册
    • Win32API参考手册
    • Windows 编程宝典
    • WinHttp参考资料
    • WMI编程手册
    • VisualFreeBasic编程文档
    舔狗日记
    载入天数...载入时分秒...

    © 2025 勇芳软件工作室 版权所有

    ICP备案图标 浙ICP备11006222号-1 | 公安备案图标 33100402331731号

    powered by emlog 浙ICP备11006222号-1