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

    • 累计撰写 330 篇文章
    • 累计收到 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编程文档
    • VisualFreeBasic游戏趣味编程_2.8_小球落地反弹 2026-1-21
      VisualFreeBasic游戏趣味编程_2.8_小球落地反弹 在本节我们尝试实现小球落地反弹的效果。首先在小球逐渐下落代码的基础上,设定变量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
      • 2026年-1月-21日
      • 54 阅读
      • 0 评论
      VisualFreeBasic编程文档
    • VisualFreeBasic游戏趣味编程_2.7_利用if语句实现小球重复下落 2026-1-21
      VisualFreeBasic游戏趣味编程_2.7_利用if语句实现小球重复下落 2-6中小球落到窗口底部后就消失了,在这一节我们增加2-7代码,得到小球重复下落的效果。 Sub 游戏执行过程(hWndForm As hWnd) Dim gg As yGDI = hWndForm gg.Brush(&HFF0000) Dim y As Long For y = 10 To 300 Step 2 If y > 280 Then y = -20 gg.DrawEllipse(100, y, 20, 20) gg.Redraw : Sleep(10) : gg.Cls() Next End Sub 添加的代码叫if语句,也叫选择判断语句。If y > 280 Then表示当y的值大于280时,执行后面的语句y = –20,即将小球的y坐标设为–20。 提示 当圆 y坐标为280时,下落的小球刚好从窗口底部完全消失。此时将y的值设为–20,即小球从窗口顶部开始出现。 有了if语句,我们就可以让计算机进行一些智能处理了,比如判断两个数字的大小: Sub 游戏执行过程(hWndForm As hWnd) Dim x As Long = 3 Dim y As Long = 5 If x > y Then Print "x大" If x < y Then Print "y大" If x = y Then Print "x与y一样大" End Sub 程序运行后输出: FB语言中有>,<,=,<>,>=,<= 6种运算符用来判断两个数字的大小关系,如表2-1所示。 表2-1 表 达 式 含  义 x > y x是否大于y x < y x是否小于y x = y x是否等于y x <> y x是否不等于y x >= y x是否大于或等于y x <= y x是否小于或等于y 提示 x=y是赋值语句,表示把y的值赋给x。if (x=y) then表示如果x和y值相等,就执行if(x=y) then后的语句。   练习题2-6:编程计算12×14×16×18,并用if语句判断结果是否大于50000。
      • 2026年-1月-21日
      • 55 阅读
      • 0 评论
      VisualFreeBasic编程文档
    • VisualFreeBasic游戏趣味编程_2.6_利用For实现小球下落动画 2026-1-21
      VisualFreeBasic游戏趣味编程_2.6_利用For实现小球下落动画 在本节我们讲解For循环语句,用较少的代码实现小球连续运动的动画。首先,输入并运行以下代码: Sub 游戏执行过程(hWndForm As hWnd) Dim i As Long For i = 1 To 10 Print 10 Next End Sub 程序将重复输出整数10: For i = 1 To 10 表示从 1 开始 到 10 ,重复执行 Print 10 10次 For 和 Next 需要配套使用,中间部分是循环体,就是循环执行的代码 利用For语句,我们可以实现小球连续下落的动画效果: Sub 游戏执行过程(hWndForm As hWnd) Dim gg As yGDI = hWndForm gg.Brush(&HFF0000) Dim y As Long For y = 10 To 300 Step 2 gg.DrawEllipse(100, y, 20, 20) gg.Redraw : Sleep(10) : gg.Cls() Next End Sub For y = 10 To 300 Step 2 小球的初始 y = 10 y坐标为10,For循环语句中Step 2y坐标每循环1次增加2、清空屏幕、绘制新位置的圆、暂停10毫秒。如此重复执行,即实现了小球连续下落的动画效果。 练习题2-5:利用For语句,实现小球半径逐渐变大的动画效果,如图所示。
      • 2026年-1月-21日
      • 41 阅读
      • 0 评论
      VisualFreeBasic编程文档
    • VisualFreeBasic游戏趣味编程_2.5_小球下落动画 2026-1-21
      VisualFreeBasic游戏趣味编程_2.5_小球下落动画 在2-4的基础上,每绘制一个小球后 gg.Redraw 刷新显示,加上Sleep(1000)语句,表示程序暂停1000毫秒(1秒),即可实现小球从上向下依次出现的效果。 Sub 游戏执行过程(hWndForm As hWnd) Dim gg As yGDI = hWndForm gg.Brush(&HFF0000) Dim y As Long = 10 Dim St As Long = 40 gg.DrawEllipse(100, y, 20, 20) gg.Redraw :Sleep(1000) y=y+St gg.DrawEllipse(100, y, 20, 20) gg.Redraw :Sleep(1000) y=y+St gg.DrawEllipse(100, y, 20, 20) gg.Redraw :Sleep(1000) y=y+St gg.DrawEllipse(100, y, 20, 20) gg.Redraw :Sleep(1000) y=y+St gg.DrawEllipse(100, y, 20, 20) End Sub 接下来,利用gg.Cls(GetSysColor(COLOR_WINDOW))清屏函数,在绘制新的小球前先清除画面上的内容,即可实现一个小球逐渐下落的动画效果。 Sub 游戏执行过程(hWndForm As hWnd) Dim gg As yGDI = hWndForm gg.Brush(&HFF0000) Dim y As Long = 10 Dim St As Long = 40 gg.DrawEllipse(100, y, 20, 20) gg.Redraw :Sleep(1000):gg.Cls(GetSysColor(COLOR_BTNFACE)) y=y+St gg.DrawEllipse(100, y, 20, 20) gg.Redraw :Sleep(1000):gg.Cls(GetSysColor(COLOR_BTNFACE)) y=y+St gg.DrawEllipse(100, y, 20, 20) gg.Redraw :Sleep(1000):gg.Cls(GetSysColor(COLOR_BTNFACE)) y=y+St gg.DrawEllipse(100, y, 20, 20) gg.Redraw :Sleep(1000):gg.Cls(GetSysColor(COLOR_BTNFACE)) y=y+St gg.DrawEllipse(100, y, 20, 20) End Sub
      • 2026年-1月-21日
      • 49 阅读
      • 0 评论
      VisualFreeBasic编程文档
    • VisualFreeBasic游戏趣味编程_2.4_利用变量修改多个小球的位置 2026-1-21
      VisualFreeBasic游戏趣味编程_2.4_利用变量修改多个小球的位置 如果希望更改3个小球位置仍然保持均匀分布,则需要修改4行代码,修改后代码 Sub 游戏执行过程(hWndForm As hWnd) Dim gg As yGDI = hWndForm gg.Brush(&HFF0000) gg.DrawEllipse(100, 1*(200/4)-50, 50, 50) gg.DrawEllipse(100, 2*(200/4)-50, 50, 50) gg.DrawEllipse(100, 3*(200/4)-50, 50, 50) End Sub 是否有更简单的方法?下面我们介绍变量的概念,并讲解如何利用变量来存储、修改多个小球的参数。输入并运行以下代码: Sub 游戏执行过程(hWndForm As hWnd) Dim x As Long x = 10 Print x End Sub 其中,Long为FB语言的关键词,Dim x As Long 定义了整型变量x,即x可以存储整数。 程序运行后输出结果如下: 定义变量后,可以利用赋值语句对变量进行赋值,如x=10;语句,意为将x的值设为10。 print()函数除了可以输出整数常量,也可以输出变量的值,如print(x) 输出整型变量x的值——10。 变量之间也可以进行赋值、四则运算: Sub 游戏执行过程(hWndForm As hWnd) Dim As Long x, y, z x = 4 Print x y = x Print y z = 2 *x - y + 1 Print z End Sub 程序运行后输出结果如下: 其中,Dim As Long x, y, z 表示定义了3个整型变量x、y、z,同时定义的多个变量之间以逗号分隔。 y = x 将x的值赋给y,即y的值也变为5。 FB语言中的等号和数学运算中的符号意义不太一样,前者将等号右边的值赋给等号左边的变量。x = x – 2 将x–2的值赋给变量x,运行后x值为3。 变量和常量之间也可以进行混合运算,执行 z = 2*x – y + 1 后,z的值变为2。 练习题2-3:长方形的宽width=20,高height=10,编程求出长方形的周长length、面积area并输出, 提示 变量的名字可以由字母、下划线、数字组成,开头不能是数字。另外,变量名是区分大写字母、小写字母的,大小写不同表示不同的变量。 定义变量height 记录高度,将2-3修改为:rcn t Sub 游戏执行过程(hWndForm As hWnd) Dim gg As yGDI = hWndForm gg.Brush(&HFF0000) Dim height As Long height=200 gg.DrawEllipse(100, 1*(height/4)-50, 50, 50) gg.DrawEllipse(100, 2*(height/4)-50, 50, 50) gg.DrawEllipse(100, 3*(height/4)-50, 50, 50) End Sub 将高度调整为200,只需将代码改为height = 200 即可,程序运行结果如图所示。 定义变量y记录小球的y坐标、变量st记录两个小球间的距离,以下代码可以绘制出多个小球: Sub 游戏执行过程(hWndForm As hWnd) Dim gg As yGDI = hWndForm gg.Brush(&HFF0000) Dim y As Long = 10 Dim St As Long = 40 gg.DrawEllipse(100, y, 20, 20) y=y+St gg.DrawEllipse(100, y, 20, 20) y=y+St gg.DrawEllipse(100, y, 20, 20) y=y+St gg.DrawEllipse(100, y, 20, 20) y=y+St gg.DrawEllipse(100, y, 20, 20) End Sub 其中,Dim y As Long = 10定义了整型变量y,并初始化为10;Dim St As Long = 40定义了整型变量st,并初始化为40。 程序运行后,输出效果如图2-15所示。 变量y记录小球的y坐标,第一个小球的y坐标初始化为10。变量st记录两个小球之间的距离,设为40。y = y+st;让小球y坐标每次增加st,即可以绘制出多个小球。 修改y 的值,可以设定最上面小球的起始位置。修改st的值,即可以设定两个小球之间的间隔。
      • 2026年-1月-21日
      • 54 阅读
      • 0 评论
      VisualFreeBasic编程文档
    • 13
    • 14
    • 15
    • 16
    • 17
    博主栏壁纸
    博主头像 勇芳

    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