构造一个角色类 , 角色有技能若干 。
先将技能定义成类, 然后定义 一个该技能类的集合 。
最后在角色类模块里调用这个集合类。
不知道我这种思想对不对。 如果是该这样子做。 那么如何实施呢, 请朋友给我,在角色类中构造关联的代码。 关于类 和 集合的编写 代码,我 已经略微知道一点了。
对了, 在gameres中提问时 ,无意中了解到 在集合中 使用一些高深的排序算法 . 好像是链表之类的吧, 不知道有何应用. 我的技能集合粗略估计是8种技能. .之所以不分开定义 ,是考虑到最后保存到数据库时可以使用循环 ,
先将技能定义成类, 然后定义 一个该技能类的集合 。
最后在角色类模块里调用这个集合类。
不知道我这种思想对不对。 如果是该这样子做。 那么如何实施呢, 请朋友给我,在角色类中构造关联的代码。 关于类 和 集合的编写 代码,我 已经略微知道一点了。
对了, 在gameres中提问时 ,无意中了解到 在集合中 使用一些高深的排序算法 . 好像是链表之类的吧, 不知道有何应用. 我的技能集合粗略估计是8种技能. .之所以不分开定义 ,是考虑到最后保存到数据库时可以使用循环 ,
解决方案 »
- vb.net怎么实现倒时,时间到则执行另一个文件
- 在VB中执行SQL脚本的问题?
- 使用monthview控件的时候,碰到一个奇怪的问题!!
- 怎么在VB中调用EXCEL里的图表?
- 读中文字乱码问题.
- 请问我这个错误该怎么更改?关于OLEDB4的!
- win7 64位系统office 2010版本中Msflxgrd.ocx和MSWINSCK.oc控件加载成功但是无法使用
- 怎么用HScrollBar控件来控制窗体的透明度,或用其它控件??
- 在vb里如何取得屏幕的宽度和高度啊,请指示。
- 控件的复制??????
- Form load前就很慢。如何提速?
- 请教:请各位大哥再来帮帮我这个问题(POS 打印),谢谢~!
其中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 SubPrivate 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 PropertyPublic 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 块变量未设置 . 这是怎么回事啊 ?
难道嵌套类里的属性是不允许外部赋值的 ?????
那我做这些还有什么用 ? 真郁闷啊.
请高手来救救急啊。
从你错误提示看,是因为你的类没有实例化引起的。
Set tiexue = New human只是实例化了角色类
而mvarHp、mvarEP、mvarBP却没见有实例化的代码,
最简单的办法就是在角色类初始化时加入
set mvarHp=new ...
set mvarEp=new ...
set mvarBp=new ...