|
|

楼主 |
发表于 2005-11-28 01:21:00
|
显示全部楼层
Re:耶 - 仿造仿造 .
一卡一卡的原因我不太清楚
我用了三个数组来做三层的星星移动,是0 to 100的,就是300个变量
在我的机器上跑不卡,我新买的机子,配置较高
Variant是变体类型
给它赋什么值它就是什么类型的变量
整形好像是2个字节,长整形是4个字节,你要是想再大就用双精度浮点形的
我用双精度浮点形做过一个计算
算出10位以内所有可打印字符相匹配可以匹配出的密码数量,结果不可想象呀,呵呵
游戏之家的编程风格我也觉得不好。
声明方式:dim a,b,c as long这是其一;
用“:”符号把多行代码改写成一行这是其二;
变量明名不规范是其三;
我的星星是这么写的,没用控件:
Option Explicit
'*****************************************
'星空效果程序设计
'程序编写: 老飞
'*****************************************
Private Type stars '定义星星的结构体
X As Long '星星的横坐标
Y As Long '星星的纵坐标
light As Integer '星星的亮度
End Type
Private Const MAXCOUNT = 100 '每层星星的数量
Private isStart As Boolean '是否动画已经开始
Private MyStar(MAXCOUNT) As stars '第一层星星
Private MyStarA(MAXCOUNT) As stars '第二层星星
Private MyStarB(MAXCOUNT) As stars '第三层星星
Private Sub Form_Activate()
MsgBox "用鼠标单击黑色部份动画开始!", vbInformation + vbOKOnly, "提示"
End Sub
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = 27 Then '按Esc键退出程序
End
End If
End Sub
Private Sub Form_Load()
With Form1
.Width = 640 * 15
.Height = 480 * 15
.Top = 0
.Left = 0
.BackColor = RGB(0, 0, 0)
.Caption = "星空效果程序设计 - 老飞制作"
End With
End Sub
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim i As Long
If isStart = False Then
isStart = True
'初始化所有星星坐标
For i = 0 To MAXCOUNT
MyStar(i).X = Rnd() * Me.ScaleWidth
MyStar(i).Y = Rnd() * Me.ScaleHeight
MyStarA(i).X = Rnd() * Me.ScaleWidth
MyStarA(i).Y = Rnd() * Me.ScaleHeight
MyStarB(i).X = Rnd() * Me.ScaleWidth
MyStarB(i).Y = Rnd() * Me.ScaleHeight
Next i
Do
Randomize
For i = 0 To MAXCOUNT
'如果飞出屏外则移至另一头
If MyStar(i).X <= 0 Then
MyStar(i).X = MyStar(i).X + Me.ScaleWidth
End If
If MyStarA(i).X <= 0 Then
MyStarA(i).X = MyStarA(i).X + Me.ScaleWidth
End If
If MyStarB(i).X <= 0 Then
MyStarB(i).X = MyStarB(i).X + Me.ScaleWidth
End If
'三层星星移动速度不一样
MyStar(i).X = MyStar(i).X - 3
MyStarA(i).X = MyStarA(i).X - 4
MyStarB(i).X = MyStarB(i).X - 5
Next i
For i = 0 To MAXCOUNT
'星星的亮度随机,最外层的星星要更亮一些
MyStar(i).light = Rnd() * 255
MyStarA(i).light = Rnd() * 255
MyStarB(i).light = Rnd() * 50 + 200
PSet (MyStar(i).X, MyStar(i).Y), RGB(MyStar(i).light, MyStar(i).light, MyStar(i).light)
PSet (MyStarA(i).X, MyStarA(i).Y), RGB(MyStarA(i).light, MyStarA(i).light, MyStarA(i).light)
PSet (MyStarB(i).X, MyStarB(i).Y), RGB(MyStarB(i).light, MyStarB(i).light, MyStarB(i).light)
Next i
DoEvents
Me.Cls
Loop
End If
End Sub
Private Sub Form_Unload(Cancel As Integer)
End
End Sub
|
|