微信公众号 
图码生活

每天发布有五花八门的文章,各种有趣的知识等,期待您的订阅与参与
电脑报 1992-2001 十年文章全集
电脑报 1992-2001 十年文章全集
包含从 1992 年 - 2001 年间,两万余篇期刊文章,查询最少输入两个字符
随便看看
读取中
读取中
标题用VB来“下雪”
栏目软件世界
作者EastWood
发布2001年22期
  相信大家对DirectX一定不会陌生吧,目前,市面上很多3D游戏都支持DirectX。这段程序虽然简单,也可以不用这种方式就可达到同样的效果,但其主要目的是向大家介绍DirectX的编程技术,让大家初步了解DirectX的编程方式,起到一个抛砖引玉的作用。
  最近,对用VB编写DirectX7.0游戏很感兴趣。上次看到一个游戏中下雪的情形,于是自己做了这么一个下雪的小程序。其实原理很简单,就是在一个黑色Form上随机出现一些白点作为雪花,然后控制它们下移,循环执行就模拟出这么一幅下雪的情景了。好,下面就跟我来实践一下吧!
  1.新建一个工程文件,点击菜单“工程/引用”选项,在“Object Library”列表中会有一项:DirectX 7.0 For Visual Basic Type Library 列表项,这个就是DirectX7.0 VB类库,选中该项,再选“ok”按钮,就可以将库加入工程文件中。
  2.点击菜单“工程/添加”模块项,弹出的窗体中选中“模块”项,再选“打开”按钮,添加了Module1,双击它加入如下代码:
  Declare Function ShowCursor Lib "user32" (ByVal bShow As Long) As Long '调用API函数控制鼠标
  Public Const spi_screensaverrunning = 97
  Declare Function SystemParametersInfo Lib "user32" Alias "SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long, ByVal lpvParam As Any, ByVal fuWinIni As Long) As Long '调用API函数来禁用/使用“Ctrl+Alt+Del”组合键,这样可以作成屏保程序。
  要加入这些代码可以打开VB自带的“API文本查看器”程序,找到ShowCursor和SystemParametersInfo函数,然后复制过来,粘贴就可以了。
  3.把Form1的BackColor属性设为黑色。双击添加下面这些代码:
  Dim Xiaxue(1000,2),Sumu As Long
  Dim DX As New DirectX7
  '建立一个DirectX7对象
  Dim DDraw As DirectDraw7
  '建立DirectDraw对象
  Private Sub Form_Load()
  Temp = ShowCursor(0)
  '隐藏鼠标
  Set DDraw = DX.DirectDrawCreate("")
  DDraw.SetCooperativeLevel Me.hWnd, DDSCL_EXCLUSIVE Or DDSCL_FULLSCREEN '全屏显示
  Call SystemParametersInfo(spi_screensaverrunning,True, ByVal 1&,0) '禁用“Ctrl+Alt+Del”组合键
  Form1.Show
  DoEvents
  Randomize
  Sumu = 400
  For J = 1 To Sumu
  Xiaxue(J,0) = Int(Rnd*Form1.Width)
  Xiaxue(J,1) = Int(Rnd*Form1.Height)
  Xiaxue(J,2) = 15 +(Rnd*5)
  Next J
  Do While Not (DoEvents = 0)
  For LS = 1 To 10
  For I = 1 To Sumu
  OldX = Xiaxue(I,0):OldY = Xiaxue(I,1)
  Xiaxue(I,0)= Xiaxue(I,0)+ Xiaxue(I,2)
  If Xiaxue(I,0)> Form1.Height Then
  Xiaxue(I,0) = 0: Xiaxue(I,2)= 15 +(Rnd*20)
  Xiaxue(I,0) = Int(Rnd*Form1.Width)
  OldX = 0:OldY = 0
  End If
  Coloury = 8*(Xiaxue(I,2)- 10): Coloury = 60 + Coloury
  PSet (OldX,OldY),QBColor(0)
  PSet (Xiaxue(I,0), Xiaxue(I,0)), RGB(Coloury,Coloury,Coloury)
  Next I
  Next LS
  Loop
  End
  End Sub
  Private Sub Form_KeyPress(KeyAscii As Integer)
  If KeyAscii = 27 Then
  '按ESC键退出程序
  Temp = ShowCursor(1)
  '显示鼠标
  Call SystemParametersInfo(spi_screensaverrunning,False,ByVal,1&,0)
  '恢复使用“Ctrl+Alt+Del”组合键
  Unload Me
  End
  End If
  End Sub
  按F5运行看看效果怎么样。哈哈,还真看到了一种久违的下雪情景。以上程序在Windows 98 VB5.0简体中文版通过。