-
VisualFreeBasic游戏趣味编程_10.8_地址与指针
FB语言中所有变量都存储在内存中,而存放变量特定内存单元的编号就称为地址,输入并运行以下代码:Sub游戏执行过程(hWndFormAshWnd)DimaAsLonga=1PrintaPrint@aEndSub程序运行后输出154394640其中@称为取地址运算符,@a即为变量a的地址。注意,每次运行时,程序为变量a分配的地址可能不一样。54394640的数字每次运行都会不同为了处理地址,我们可以定… -
VisualFreeBasic游戏趣味编程_10.7_多关卡与增加游戏难度
首先,定义level表示当前为第几关:DimSharedlevelAsLong=1'当前关卡序号在start()函数中,随着level的增加,当前关的游戏总时长越来越短:maxTime=200-level*10show()函数中显示当前为第几关、已得分数、得到多少分可以进入下一关:gg.DrawTextS0,242,窗口宽度,20,"当前第"&level&"关,已得"&score&"分,达到"&I… -
VisualFreeBasic游戏趣味编程_10.6_得分计算与胜负判断
首先定义变量score记录玩家消去的方块个数,noZeroBlockNum记录游戏开始时彩色砖块的总数,设定当score>=0.9*noZeroBlockNum时游戏胜利:DimSharedscoreAsLong'得分数,也就是消去的方块的个数DimSharednoZeroBlockNumAsLong'非空白区域的砖块的个数在startup()初始化函数中统计随机生成的彩色砖块总数:Ift>0Th… -
VisualFreeBasic游戏趣味编程_10.5_倒计时与进度条
输入并运行以下代码,窗口显示出程序运行了多少秒:Sub游戏执行过程(hWndFormAshWnd)DimggAsyGDI=hWndFormDim开始时间AsDouble=Now()Dim当前时间AsDoubleDo'循环执行gg.Clsgg.Font"黑体",20当前时间=Now()gg.DrawString100,100,"程序运行了"&DateDiff("s",开始时间,当前时间)&"秒"gg… -
VisualFreeBasic游戏趣味编程_10.4_方块提示框的绘制
为了便于玩家看到自己点击的方块、十字区域内可以消除的方块,需要绘制方块提示框。首先定义绘制提示框的函数:gg.BrushBGR(105,105,105)'GDI的颜色值。gg.DrawFrameblocks(clicked_i,clicked_j).x,blocks(clicked_i,clicked_j).y,BlockSize,BlockSize如果十字区域有要消除的彩色方块,则执行:gg.P… -
VisualFreeBasic游戏趣味编程_10.3_鼠标点击与十字消除
首先添加updateWithInput()函数,根据鼠标点击位置(m.x,m.y)计算点中的小方块在二维数组中的行列序号(clicked_i,clicked_j)。为了方便调试,可以将blocks(clicked_i,clicked_j).colorId设为0,即将其颜色设为灰白色:SubupdateWithInput(hWndFormAshwnd)'和输入有关的更新StaticppAsLong'… -
VisualFreeBasic游戏趣味编程_10.2_随机颜色方块的实现
为了实现随机颜色的方块,首先进行宏定义:#defineColorTypeNum9'方块颜色为彩色的个数定义全局变量colors数组记录ColorTypeNum+1种颜色,其中第0种为灰白色(表示空白),其他为彩色:DimSharedcolors(ColorTypeNum)AsCOLORREF'颜色数组,小方块可能的几种颜色在startup()函数中对颜色数组进行初始化:colors(0)=BGR(… -
VisualFreeBasic游戏趣味编程_10.1_红色方块的表示与绘制
十字消除游戏画面由很多小方块组成,首先进行宏定义:#defineBlockSize19'小方块的边长#defineRowNum13'游戏画面一共RowNum行小方块#defineColNum21'游戏画面一共ColNum列小方块定义小方块结构体:TypeBlock'小方块结构体AsLongx,y'小方块在画面中的x,y坐标AsLongi,j'小方块在二维数组中的i,j下标EndType利用Bloc… -
VisualFreeBasic游戏趣味编程_第10章_“十字消除”游戏
在本章我们将探讨如何编写“十字消除”游戏,用户点击空白方块,沿其上、下、左、右方向寻找第一个彩色方块,如果有两个或两个以上颜色一致,就将其消除。在进度条时间结束前消除足够的方块,可以进入下一关,效果如图10-1所示。本章首先讲解了如何实现随机颜色方块的表示与绘制,鼠标点击与十字消除算法;然后讲解了如何绘制提示框和倒计时进度条;接着讲解了如何开发得分计算、胜负判断、多关卡功能;接下来介绍了地址与指针… -
VisualFreeBasic游戏趣味编程_9.8_枚举类型
如果一个变量只有几种可能的值,则该变量可以定义为枚举类型:EnumElement'定义枚举类型,小方块所有的可能的种类wall,target,box,empty,achieved,roleEndEnumDimlevel(7,7)AsLong={{wall,wall,wall,wall,wall,wall,wall,wall},_{wall,wall,wall,target,box,empty,em…