|
|
发表于 2004-12-2 09:33:00
|
显示全部楼层
Re:Vb的继承求助!
'用类模块就可以继承,结构体也可继承
Option Explicit
Private ax As Integer '位置x
Private ay As Integer '位置y
Private 宽 As Long
Private 高 As Long
Private 状态 As Byte '0为死亡,1、2、3、、、、、、为图象索引
Private 图数 As Byte
Private 通道数 As Byte
Private 通道() As Byte
Private 图像() As Byte
Private 输出口 As Long
Private 出击 As Byte
Private Sub Class_Initialize()
状态 = 0
出击 = 0
输出口 = 主窗体.Picture1.image
End Sub
Private Sub Class_Terminate()
Free
End Sub
Public Property Let 句柄(hdc As Long) '游戏时没用
输出口 = hdc
End Property
Public Property Let 行动(动 As Byte)
出击 = 动
End Property
Public Property Let zx(x As Integer)
ax = x
End Property
Public Property Let zy(y As Integer)
ay = y
End Property
Public Property Get 状况() As Byte
状况 = 状态
End Property
'创建图片
Public Function Create(文件名 As String, Optional x As Integer = 0, Optional y As Integer = 0)
读取 App.Path & "\资源文件\" & 文件名, , ".gwsd"
ax = x
ay = y
宽 = s_gwsd.宽
高 = s_gwsd.高
状态 = 1
图数 = s_gwsd.数量
通道数 = s_gwsd.通道
If 通道数 = 0 Then
ElseIf 通道数 = 1 Then
ReDim 通道(1 To UBound(gyt))
通道 = gyt
ReDim 图像(1 To UBound(gy, 1), 1 To 图数)
图像 = gy
Else
End If
End Function
Public Sub 显()
If 状态 <> 0 Then
Dim p As String
Dim i As Long, j As Long, q As Long, z As Byte, e As Variant
设备数组 输出口
p = 区(ax, ay, 宽, 高, s_gws.宽, s_gws.高)
If p = "-1" Then Exit Sub
e = Split(p, "|")
q = e(3)
j = e(2)
For i = 1 To UBound(通道)
If i Mod (宽 / 8) = 1 And i <> 1 Then q = q + 2 * (s_gws.宽 - 宽)
z = 通道(i)
If z > 127 Then
xs(q) = 图像(j, 状态)
xs(q + 1) = 图像(j + 1, 状态)
j = j + 2
z = z - 128
End If
q = q + 2
If z > 63 Then
xs(q) = 图像(j, 状态)
xs(q + 1) = 图像(j + 1, 状态)
j = j + 2
z = z - 64
End If
q = q + 2
If z > 31 Then
xs(q) = 图像(j, 状态)
xs(q + 1) = 图像(j + 1, 状态)
j = j + 2
z = z - 32
End If
q = q + 2
If z > 15 Then
xs(q) = 图像(j, 状态)
xs(q + 1) = 图像(j + 1, 状态)
j = j + 2
z = z - 16
End If
q = q + 2
If z > 7 Then
xs(q) = 图像(j, 状态)
xs(q + 1) = 图像(j + 1, 状态)
j = j + 2
z = z - 8
End If
q = q + 2
If z > 3 Then
xs(q) = 图像(j, 状态)
xs(q + 1) = 图像(j + 1, 状态)
j = j + 2
z = z - 4
End If
q = q + 2
If z > 1 Then
xs(q) = 图像(j, 状态)
xs(q + 1) = 图像(j + 1, 状态)
j = j + 2
z = z - 2
End If
q = q + 2
If z = 1 Then
xs(q) = 图像(j, 状态)
xs(q + 1) = 图像(j + 1, 状态)
j = j + 2
End If
q = q + 2
Next i
SetBitmapBits 输出口, x_s, xs(1)
If 状态 < 图数 Then
状态 = 状态 + 1
Else
状态 = 1
End If
End If
End Sub
'释放图片
Public Sub Free()
If 状态 Then
ReDim 通道(0)
ReDim 图像(0)
End If
End Sub
'上面就是一个类模块
'下面就是引用这个类模块的方法,当然也可以用动态数组引用
Dim b As String
b = List1.List(0)
Set 甘 = New 十六位玩家
甘.Create (b)
甘.句柄 = Picture1.image
甘.zx = 50
甘.zy = 50
甘.显 |
|