论坛的首页
勇芳的软件
教程和帮助
VisualFreeBasic编程文档
勇芳系列软件帮助说明教程
留言或交流
登录
搜索
登录
搜索
勇芳
累计撰写
330
篇文章
累计收到
0
条评论
首页
栏目
论坛的首页
勇芳的软件
教程和帮助
VisualFreeBasic编程文档
勇芳系列软件帮助说明教程
留言或交流
登录
VisualFreeBasic编程文档
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编程文档
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编程文档
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编程文档
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编程文档
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编程文档
2026-1-21
VisualFreeBasic游戏趣味编程_2.3_显示多个小球
绘制出3个小球。 Sub 游戏执行过程(hWndForm As hWnd) Dim gg As yGDI = hWndForm gg.Brush(&HFF0000) gg.DrawEllipse(100, 30, 50, 50) gg.DrawEllipse(100, 110, 50, 50) gg.DrawEllipse(100, 190, 50, 50) End Sub 绘制区域采用直角坐标系,左上角的坐标为(0,0),横轴方向由x坐标表示,纵轴方向由y坐标表示。窗口中任一点的位置可由其x坐标和y坐标表示,gg.DrawEllipse语句即可绘制对应圆坐标的3个小球,如图2-11所示。 提示 代码中100、30等整数在程序运行后值保持不变,因此它们称为常量。 练习题2-2:绘制所示的图形,分析左右两组图案中间圆的半径大小。 整数之间也可以进行加、减、乘、除四则运算,在FB语言中分别用+、-、*、/ 这4个符号表示。 Sub 游戏执行过程(hWndForm As hWnd) Print 1 + 2 Print 10 -6 Print 3 * 4 Print 8 / 2 End Sub 程序运行后可得到整数运算的结果如下: 利用四则运算,可以修改2-3,让3个小球上下均匀分布 Sub 游戏执行过程(hWndForm As hWnd) Dim gg As yGDI = hWndForm gg.Brush(&HFF0000) gg.DrawEllipse(100, 1*(300/4)-50, 50, 50) gg.DrawEllipse(100, 2*(300/4)-50, 50, 50) gg.DrawEllipse(100, 3*(300/4)-50, 50, 50) End Sub 整数之间也可以进行包含括号的加、减、乘、除混合运算,其规则和数学运算规则一致。
2026年-1月-21日
63 阅读
0 评论
VisualFreeBasic编程文档
2026-1-21
VisualFreeBasic游戏趣味编程_2.2_显示一个静止小球
显示一个蓝色的小圆 Sub 游戏执行过程(hWndForm As hWnd) Dim gg As yGDI = hWndForm gg.Brush(&HFF0000) gg.DrawEllipse(150,100,100,100) End Sub 执行代码后的效果 gg.Brush 填充的颜色,为 RGB 颜色。 gg.DrawEllipse 表示画一个填充圆,(150,100)为圆的左上角x坐标和y坐标,宽度和高度100。4个参数放在圆括号内,且以逗号分隔 以上数字为像素单位 提示 1-2的其他行代码,读者目前不用了解其具体含义,暂时理解为一个程序框架即可,我们会在后续章节中逐步讲解。 gg.DrawEllipse(150,100,100,100) 中的数字,在FB语言中也称为整数。读者可以尝试修改1-2中代码,绘制出半径小一些的圆,如图所示。 Sub 游戏执行过程(hWndForm As hWnd) Dim gg As yGDI = hWndForm gg.Brush(&HFF0000) gg.DrawEllipse(150,100,50,50) End Sub 读者也可以利用print()函数,直接输出整数的值: Sub 游戏执行过程(hWndForm As hWnd) Dim gg As yGDI = hWndForm gg.Brush(&HFF0000) gg.DrawEllipse(150,100,50,50) Print 50 End Sub 坐标体系(单位为像素) 坐标是从软件的左上角开始,从左到右为 X ,从上到下为 Y
2026年-1月-21日
58 阅读
0 评论
VisualFreeBasic编程文档
2026-1-21
VisualFreeBasic游戏趣味编程_2.1_准备工作
按照第一章的做法,先创建框架代码,以后所有的都是按照这个框架代码里执行 后面就不再重复说明,都是在此修改代码。
2026年-1月-21日
57 阅读
0 评论
VisualFreeBasic编程文档
2026-1-21
VisualFreeBasic游戏趣味编程_第2章_仿真“自由落体的小球”
在本章我们将探讨如何实现小球受重力影响加速下落后,碰到地面反弹的效果 本章首先介绍了代码写在上面地方,以及如何显示一个静止小球;之后介绍了整数常量的知识,并讲解如何绘制多个小球;然后介绍了整型变量的定义和使用,以及如何修改小球坐标;接着介绍了while(1)循环和if语句,分析小球下落和反弹的实现方法;最后介绍了浮点型变量,讲解如何实现小球受重力加速下落的效果。
2026年-1月-21日
68 阅读
0 评论
VisualFreeBasic编程文档
2026-1-21
VisualFreeBasic游戏趣味编程_第1章_开发环境介绍
可视化FreeBasic语言集成开发环境 一、新建一个工程 点击新建按钮,然后选择 VFB框架,输入软件名称 二、切换到窗口代码 三、写好代码框架 复制以下代码,为我们后面写游戏使用 注意: 下面代码,必须存在,软件才可以执行,后面教程中将不会提及,也不出现下面代码。 Sub Form1_Shown(hWndForm As hWnd, UserData As Integer) Threaddetach ThreadCreate(Cast(Any Ptr, @游戏执行过程), hWndForm) End Sub Sub 游戏执行过程(hWndForm As hWnd) Dim gg As yGDI = hWndForm End Sub 四、执行代码 点击编译执行按钮 我们就可以看到效果,现在还没内容,只是做了装备工作,看后面章节就有了。 五、游戏开发和应用开发 这里的教程是讲解游戏开发,软件执行逻辑和软件架构,和应用软件是不同的。 游戏是“帧”驱动,每时每刻循环绘画,每一帧画面,需要做什么事情,主动安排。 应用是“消息”驱动,系统发送软件来消息,就是“事件”,依据“事件”再写处理代码。
2026年-1月-21日
58 阅读
0 评论
VisualFreeBasic编程文档
13
14
15
16
17