首页标签编程
  • VisualFreeBasic游戏趣味编程_8.2_鼠标交互

    回顾7.4节中讲解的键盘交互处理函数:SubupdateWithInput(moveDirectionAsString)'和输入有关的更新IfIsKeyPress(&H57)ThenmoveDirection="上"ElseIfIsKeyPress(&H53)ThenmoveDirection="下"ElseIfIsKeyPress(&H41)ThenmoveDirection="左"ElseIf…
  • VisualFreeBasic游戏趣味编程_8.1_结构体

    图8-1中的绘制单元由一个白色圆圈、一个红色指针组成。记录白色圆圈的信息需要定义3个变量:DimAsLongx,y'小圆圈的圆心坐标DimAsLongr'小圆圈半径红色指针起点在圆心,长度为圆半径,其角度只能有0、90、180、270这4种可能。定义取值范围为的整型变量angleNumDimAsLongangleNum'对应的角度种类,只能是0、1、2、3,表示对应的4个角度值要记录图8-1中的5…
  • VisualFreeBasic游戏趣味编程_第8章_“十步万度”游戏

    在本章我们将探讨如何编写“十步万度”游戏,效果如图8-1所示。用鼠标点击任意一个小圆圈,其指针顺时针旋转90度,后续被指向的圆圈指针也依次旋转,所有圆圈的旋转度数累积。玩家点击10次,尝试得到尽量高的旋转度数。本章首先介绍了结构体的概念,并展示利用结构体数组存储所有小圆圈信息;然后讲解了鼠标交互的方法,以及如何实现被鼠标点中的小圆圈的旋转;接着讲解了数组作为函数的参数,以及如何实现旋转的迭代传播;…
  • VisualFreeBasic游戏趣味编程_7.7_添加食物

    添加全局变量记录食物的位置:DimSharedAsLongfood_i,food_j'食物的位置在startup()函数中初始化食物的位置:Substartup(ggAsyGDI)'初始化函数Randomizefood_i=Rnd*(BLOCK_HEIGHT-5)+2'初始化随机食物位置Randomizefood_j=Rnd*(BLOCK_WIDTH-5)+2在show()函数中在食物位置处绘制一…
  • VisualFreeBasic游戏趣味编程_7.6_失败判断与显示

    定义全局变量isFailure表示游戏是否失败,初始化为0:DimSharedisFailureAsLong'是否游戏失败当小蛇碰到画面边界时,则认为游戏失败。由于每次只有蛇头是新生成的位置,所以在moveSnake()函数中只需判断蛇头是否越过边界:IfnewHead_i>=BLOCK_HEIGHTOrnewHead_i=BLOCK_WIDTHOrnewHead_j0ThenisFailure=…
  • VisualFreeBasic游戏趣味编程_7.4_控制小蛇向4个方向移动

    变量oldHead_i、oldHead_j存储移动前的蛇头位置(对应元素在二维数组中的行号、列号),newHead_i、newHead_j存储移动后的蛇头位置。小蛇向上移动,只需把新蛇头的坐标设为旧蛇头的上方即可,如图7-6所示。在7-3代码的基础上修改代码就可以让小蛇向上移动:newHead_i=oldTail_j-1'向上移动进一步,我们让玩家用键盘控制小蛇的移动。除了上、下、左、右键外,很多…
  • VisualFreeBasic游戏趣味编程_7.3_小蛇向右移动

    实现小蛇的移动功能是“贪吃蛇”游戏的开发难点,图7-4列出了小蛇向右移动前后二维数组的元素值,虚线框内为对应代码的实现步骤:假设小蛇初始元素值为54321,其中1为蛇头、5432为蛇身、最大值5为蛇尾。首先将二维数组中所有大于0的元素加1,得到65432;然后将最大值6变为0,即去除了原来的蛇尾;最后将2右边的元素由0变成1,即实现了小蛇向右移动。定义函数moveSnake()处理小蛇移动的相关操…
  • VisualFreeBasic游戏趣味编程_7.1_变量作用域与游戏框架

    在程序中变量起作用的范围,称为变量的作用域。根据作用域的不同,FB语言中的变量可分为局部变量和全局变量。在函数内部定义的变量称为局部变量,其作用域从变量定义处开始,到}处结束。Subfun()DimaAsLong'局部变量,仅能在fun函数内部使用a=10EndSubSub游戏执行过程(hWndFormAshWnd)DimxAsLong'局部变量,仅能在函数内部使用x=1EndSub在以上代码中,…
  • 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'填充随机颜色…