首页标签编程
  • VisualFreeBasic进程通信_文件映射(内存映射)

    文件映射(Memory-MappedFile,简称内存映射)是一种将磁盘文件的部分或全部内容直接映射到进程虚拟内存地址空间的技术。通过这种方式,进程可以像访问普通内存一样读写文件,无需使用read、write等传统I/O函数,大幅简化了文件操作流程,同时也能提升I/O效率(尤其适合大文件或频繁读写场景)。在这里,我们并不是去文件映射,而是利用文件映射,跳过文件而直接使用内存映射,让任何进程都可以访…
  • VisualFreeBasic进程通信

    进程通信(IPC,Inter-ProcessCommunication)是指操作系统中不同进程之间交换数据、传递信息或协同工作的机制。由于进程在内存中相互隔离(独立的地址空间),无法直接访问彼此的资源,因此需要通过操作系统提供的特定接口实现交互。一、进程通信的核心目的数据交换:进程间传递数据(如文件内容、网络数据等)。同步协作:协调多个进程的执行顺序(如避免同时修改共享资源)。资源共享:多个进程共…
  • VisualFreeBasic多线程编程

    多线程编程是指在一个进程内创建多个线程,让它们并发执行不同任务的编程技术。线程作为进程内的执行单元,共享进程的内存空间(如全局变量、堆内存),但拥有独立的栈和程序计数器,这使得线程间通信更高效,却也带来了同步与冲突的挑战。一、为什么需要多线程?单线程程序在执行耗时操作(如网络请求、文件读写)时会陷入阻塞,导致整个程序“卡壳”。多线程的核心价值在于:提升资源利用率:当一个线程因I/O操作阻塞时,其他…
  • VisualFreeBasic游戏趣味编程_11.4_显示绘制过程动画

    为了可以显示出逐渐绘制樱花的过程,增加全局变量:DimSharedisShowAnimationAsLong=1'是否显示树生成的过程动画在brunch()函数中加入代码,如果isShowAnimation等于1,每次运行brunch()后调用FlushBatchDraw()绘制,这样就可以显示逐渐绘制樱花树的过程动画了:IfisShowAnimationThen'如果为1,绘制樱花树生成的过程动…
  • VisualFreeBasic游戏趣味编程_11.3_绘制樱花树

    修改练习题11-1中的brunch()函数,当第10代树枝或树枝长度小于2时,绘制一个粉色填充圆,表示樱花:IfchildLength=9Thengg.Pen1,HSBtoRGB_Gdi(HSB(325,50,100,255))'设定线条颜色为粉色gg.BrushHSBtoRGB_Gdi(HSB(325,50,100,255))'设定填充颜色为粉色IfchildLength360Thenangle…
  • VisualFreeBasic游戏趣味编程_11.2_分形与递归

    雪花、果实、闪电、叶子、树枝、河道等自然界中很多对象的图形都具有以下两个特征:(1)整体上看,物体图形是处处不规则的;(2)在不同尺度上,图形的结构又有一定的相似性。如图11-5所示。满足这些特征的图形可以称为分形(Fractal),图11-6展示了用分形方法绘制一棵树的过程:绘制过程可抽象为如下步骤。(1)绘制一个树干。(2)绘制其左边的子树干,绘制其右边的子树干。(3)当到第n代树干时停止生成…
  • VisualFreeBasic游戏趣味编程_11.1_递归

    函数在定义时可以调用其他的函数。输入并运行以下代码:Subfun1()Print"a"EndSubSubfun2()fun1()Print"a"EndSubSub游戏执行过程(hWndFormAshWnd)fun2()Print"c"EndSub程序运行后输出:abc程序运行流程如图11-2所示。(1)代码首先从主函数开始运行,调用fun2()函数。(2)进入fun2()函数内部。(3)在fun2…
  • VisualFreeBasic游戏趣味编程_第11章_樱花树

    在本章我们将探讨如何绘制一些漂亮的樱花树,如图11-1所示。通过鼠标交互设定樱花树的高度和分散程度,鼠标右键点击设置是否显示过程动画,鼠标左键点击开始绘制。本章首先介绍了递归的概念,以及如何实现汉诺塔问题的求解;然后介绍了分形的概念,以及如何利用递归调用绘制一棵分形树;最后讲解了如何修改分形树的生成与绘制参数,实现随机樱花树的绘制。
  • VisualFreeBasic游戏趣味编程_10.9_指针与数组

    数组名作为函数参数时可以修改实际参数的值(8.4节),这是因为数组的名字就是一个指针:Sub游戏执行过程(hWndFormAshWnd)Dima(4)AsLong={1,2,3,4,5}Print@a(0)EndSub将指针变量p赋为数组的首地址,则可以通过以下方式访问数组元素:Sub游戏执行过程(hWndFormAshWnd)Dima(4)AsLong={1,2,3,4,5}DimpAsLong…
  • VisualFreeBasic游戏趣味编程_10.8_地址与指针

    FB语言中所有变量都存储在内存中,而存放变量特定内存单元的编号就称为地址,输入并运行以下代码:Sub游戏执行过程(hWndFormAshWnd)DimaAsLonga=1PrintaPrint@aEndSub程序运行后输出154394640其中@称为取地址运算符,@a即为变量a的地址。注意,每次运行时,程序为变量a分配的地址可能不一样。54394640的数字每次运行都会不同为了处理地址,我们可以定…