|
|

楼主 |
发表于 2006-4-7 12:02:00
|
显示全部楼层
Re:向大家请教一个类模块编程设计的问题
写了一天终于写出了一点东西。 然‘而刚刚测试 ,即遭重创 。首先创建 Estate(能力) Nskill(技能) ill(疾病) 三个类 . 最后创建顶层类 human (角色 )
其中human 代码如下 .
'保持属性值的局部变量
Private mvarHp As Estate '局部复制
'保持属性值的局部变量
Private mvarLogist As Nskill '局部复制
'保持属性值的局部变量
Private mvarDkangL As Nskill '局部复制
'保持属性值的局部变量
Private mvarEP As Estate '局部复制
Private mvarBP As Estate '局部复制
'保持属性值的局部变量
Private mvarZhs As Nskill '局部复制
Private mvarAmbition As Nskill '局部复制
'保持属性值的局部变量
Private mvartactics As Nskill '局部复制
Private mvarhardiness As Nskill '局部复制
Private mvarregimen As Nskill '局部复制
Private mvarStudy As Nskill '局部复制
'保持属性值的局部变量
Private mvarillness As ill '局部复制
Public Sub Checkill()
Dim a, b, c, d
a = mvarHp.Value < mvarHp.Max * 0.2
b = mvarEP.Value < mvarEP.Max * 0.2
c = mvarBP.Value < mvarBP.Max * 0.2
d = Rnd < (0.5 - 0.15 * mvarDkangL.Grade) * (1 - mvarLogist.Grade)
If ((a Or b Or c) And d) Then
End Sub
Private Sub AdvanceChk()
Randomize
Dim X As Integer
X = CInt(100 * Rnd)
Select Case X
Case 50 To 100 '45%得A类病
mvarillness.Grade = 1
Case 20 To 49 '30%得B类病
mvarillness.Grade = 2
Case 0 To 19 '
mvarillness.Grade = 3
End Select
mvarillness.Start = Now
mvarHp.Value = mvarHp.Value - mvarillness.Thp
mvarBP.Value = mvarBP.Value - mvarillness.Tbp
mvarEP.Value = mvarEP.Value - mvarillness.Tep
mvarillness.CheckDone = True
End Sub
Public Property Set illness(ByVal vData As ill)
'向属性指派对象时使用,位于 Set 语句的左边。
'Syntax: Set x.illness = Form1
Set mvarillness = vData
End Property
Public Property Get illness() As ill
'检索属性值时使用,位于赋值语句的右边。
'Syntax: Debug.Print X.illness
Set illness = mvarillness
End Property
Public Property Set Study(ByVal vData As Nskill)
'向属性指派对象时使用,位于 Set 语句的左边。
'Syntax: Set x.Study = Form1
Set mvarStudy = vData
End Property
Public Property Get Study() As Nskill
'检索属性值时使用,位于赋值语句的右边。
'Syntax: Debug.Print X.Study
Set Study = mvarStudy
End Property
Public Property Set regimen(ByVal vData As Nskill)
'向属性指派对象时使用,位于 Set 语句的左边。
'Syntax: Set x.regimen = Form1
Set mvarregimen = vData
End Property
Public Property Get regimen() As Nskill
'检索属性值时使用,位于赋值语句的右边。
'Syntax: Debug.Print X.regimen
Set regimen = mvarregimen
End Property
Public Property Set hardiness(ByVal vData As Nskill)
'向属性指派对象时使用,位于 Set 语句的左边。
'Syntax: Set x.hardiness = Form1
Set mvarhardiness = vData
End Property
Public Property Get hardiness() As Nskill
'检索属性值时使用,位于赋值语句的右边。
'Syntax: Debug.Print X.hardiness
Set hardiness = mvarhardiness
End Property
Public Property Set tactics(ByVal vData As Nskill)
'向属性指派对象时使用,位于 Set 语句的左边。
'Syntax: Set x.tactics = Form1
Set mvartactics = vData
End Property
Public Property Get tactics() As Nskill
'检索属性值时使用,位于赋值语句的右边。
'Syntax: Debug.Print X.tactics
Set tactics = mvartactics
End Property
Public Property Set Ambition(ByVal vData As Nskill)
'向属性指派对象时使用,位于 Set 语句的左边。
'Syntax: Set x.Ambition = Form1
Set mvarAmbition = vData
End Property
Public Property Get Ambition() As Nskill
'检索属性值时使用,位于赋值语句的右边。
'Syntax: Debug.Print X.Ambition
Set Ambition = mvarAmbition
End Property
Public Property Set Zhs(ByVal vData As Nskill)
'向属性指派对象时使用,位于 Set 语句的左边。
'Syntax: Set x.Zhs = Form1
Set mvarZhs = vData
End Property
Public Property Get Zhs() As Nskill
'检索属性值时使用,位于赋值语句的右边。
'Syntax: Debug.Print X.Zhs
Set Zhs = mvarZhs
End Property
Public Property Set BP(ByVal vData As Estate)
'向属性指派对象时使用,位于 Set 语句的左边。
'Syntax: Set x.BP = Form1
Set mvarBP = vData
End Property
Public Property Get BP() As Estate
'检索属性值时使用,位于赋值语句的右边。
'Syntax: Debug.Print X.BP
Set BP = mvarBP
End Property
Public Property Set EP(ByVal vData As Estate)
'向属性指派对象时使用,位于 Set 语句的左边。
'Syntax: Set x.EP = Form1
Set mvarEP = vData
End Property
Public Property Get EP() As Estate
'检索属性值时使用,位于赋值语句的右边。
'Syntax: Debug.Print X.EP
Set EP = mvarEP
End Property
Public Property Set DkangL(ByVal vData As Nskill)
'向属性指派对象时使用,位于 Set 语句的左边。
'Syntax: Set x.DkangL = Form1
Set mvarDkangL = vData
End Property
Public Property Get DkangL() As Nskill
'检索属性值时使用,位于赋值语句的右边。
'Syntax: Debug.Print X.DkangL
Set DkangL = mvarDkangL
End Property
Public Property Set Logist(ByVal vData As Nskill)
'向属性指派对象时使用,位于 Set 语句的左边。
'Syntax: Set x.Logist = Form1
Set mvarLogist = vData
End Property
Public Property Get Logist() As Nskill
'检索属性值时使用,位于赋值语句的右边。
'Syntax: Debug.Print X.Logist
Set Logist = mvarLogist
End Property
Public Property Set Hp(ByVal vData As Estate)
'向属性指派对象时使用,位于 Set 语句的左边。
'Syntax: Set x.HP = Form1
Set mvarHp = vData
mvarHp.Ename = Hp
If mvarHp.Value < 0.2 * mvarHp.Max And Rnd < (0.5 - 0.15 * DkangL.Grade) * (1 - Logist.Grade) Then
mvarillness.Check = True
mvarillness.Start = Now
End If
End Property
Public Property Get Hp() As Estate
'检索属性值时使用,位于赋值语句的右边。
'Syntax: Debug.Print X.HP
Set Hp = mvarHp
End Property
测试窗体
dim tiexue As human
Private Sub Form_Load()
Set tiexue = New human
tiexue.Hp.Value = 100
tiexue.BP.Value = 100
tiexue.EP.Value = 100
End Sub
运行就开始显示 对象变量未设置或with 块变量未设置 . 这是怎么回事啊 ?
难道嵌套类里的属性是不允许外部赋值的 ?????
那我做这些还有什么用 ? 真郁闷啊.
|
|