-
VisualFreeBasic游戏趣味编程_7.2_基于二维数组的游戏地图
为了实现图7-1中网格状的游戏地图效果,这一节介绍二维数组的概念。首先输入并运行以下代码:Sub游戏执行过程(hWndFormAshWnd)Dima(2,4)AsLongDimiAsLong,jAsLongFori=0To2Forj=0To4a(i,j)=i*10+jNextNextFori=0To2Forj=0To4Printa(i,j)NextNextEndSub其中,Dima(2,4)AsL… -
VisualFreeBasic游戏趣味编程_7.1_变量作用域与游戏框架
在程序中变量起作用的范围,称为变量的作用域。根据作用域的不同,FB语言中的变量可分为局部变量和全局变量。在函数内部定义的变量称为局部变量,其作用域从变量定义处开始,到}处结束。Subfun()DimaAsLong'局部变量,仅能在fun函数内部使用a=10EndSubSub游戏执行过程(hWndFormAshWnd)DimxAsLong'局部变量,仅能在函数内部使用x=1EndSub在以上代码中,… -
VisualFreeBasic游戏趣味编程_第7章_“贪吃蛇”游戏
在本章我们将探讨如何编写“贪吃蛇”游戏,效果如图7-1所示。键盘控制小蛇上、下、左、右移动,吃到食物后长度加1;蛇头碰到自身或窗口边缘,游戏失败。本章首先探讨了如何利用全局变量和函数的知识,设计一个游戏开发框架;然后介绍了二维数组的知识,构造地图和小蛇的方法,解析了如何实现小蛇向4个方向移动;接着讲解了静态变量的概念,以及如何进行时间控制的改进;最后讲解了如何实现失败判断与显示、吃食物增加长度的功… -
VisualFreeBasic游戏趣味编程_6.7_按键互动
当按下空格键后,将circleNum设为0,相当于清除所有已有的圆;将drawMode加1,从而切换为下一种绘图模式:DoIfIsKeyPress(VK_SPACE)Then'按下空格键drawMode+=1IfdrawMode>4ThendrawMode=1ExitDoEndIfSleep100Loop全部代码Sub游戏执行过程(hWndFormAshWnd)DimggAsyGDI=hWndFo… -
VisualFreeBasic游戏趣味编程_6.6_函数封装多种绘制效果
对于圆心坐标(x,y)、半径r的圆,定义4个函数,可以实现不同的绘制效果:'填充黄色圆绘制SubDrawCircles1(ggAsyGDI,xAsLong,yAsLong,rAsLong)gg.Pen1,BGR(105,105,105)'GDI的颜色值。gg.BrushBGR(204,204,0)'GDI的颜色值。gg.DrawEllipsex-r,y-r,r*2,r*2EndSub'填充随机颜色… -
VisualFreeBasic游戏趣味编程_6.5_新圆半径最大化
为了进一步改进图案效果,在这一节中让生成的新圆半径尽量大。rmin为圆的最小半径,rmax为圆的最大半径。首先在随机位置(x,y)处生成半径为rmin的圆,如果生成的新圆和之前已生成的圆相交,如图6-6中“1”处所示,则放弃该圆,重新随机生成。如果生成的新圆和之前已生成的圆都不相交,如图6-6中“2”处所示,则不断增大新圆的半径,直至找到第一个与该圆相切的圆,或者达到rmax为止。While圆的个… -
VisualFreeBasic游戏趣味编程_6.4_函数的定义与应用
FB程序是由函数组成的,每一个FB程序都包含这样的结构:SubForm1_Shown(hWndFormAshWnd,UserDataAsInteger)ThreaddetachThreadCreate(Cast(AnyPtr,@游戏执行过程),hWndForm)EndSubSub游戏执行过程(hWndFormAshWnd)EndSub在之前的章节中,我们已经调用了很多函数,比如,print()函数… -
VisualFreeBasic游戏趣味编程_6.3_新圆不和已有圆相交
假设有两个圆,其圆心坐标分别为(x1,y1)、(x2,y2),半径分别为r1、r2,如图6-4所示。记录两个圆心之间距离的平方dist2=(x1−x2)(x1−x2)+(y1−y2)(y1−y2)。当两个圆正好相切时,圆心距离平方r2=(r1+r2)(r1+r2)。当dist2 -
VisualFreeBasic游戏趣味编程_6.2_每次增加一个随机圆
为了显示圆生成的过程,我们修改6-1的代码,实现每隔100毫秒,添加一个随机圆并绘制。完整代码参看Sub游戏执行过程(hWndFormAshWnd)DimggAsyGDI=hWndFormDim圆心x(99)AsLong'数组存储所有圆心的x坐标Dim圆心y(99)AsLong'数组存储所有圆心的y坐标Dim半径(99)AsLong'数组存储所有圆的半径Dim圆的个数AsLong=100Dim游戏… -
VisualFreeBasic游戏趣味编程_6.1_利用数组记录多个随机圆
本节讲解如何利用数组记录生成100个随机圆首先定义3个数组存储所有圆的圆心坐标、半径:Dim圆心x(99)AsLong'数组存储所有圆心的x坐标Dim圆心y(99)AsLong'数组存储所有圆心的y坐标Dim半径(99)AsLong'数组存储所有圆的半径设定圆的个数=100,在for循环中随机生成圆心坐标、半径,并存储在数组中:'生成圆,把数据保存在数组中DimiAsLongFori=0To圆的个…