游戏开发论坛

 找回密码
 立即注册
搜索
查看: 4972|回复: 10

Vb的继承求助!

[复制链接]

14

主题

24

帖子

26

积分

注册会员

Rank: 2

积分
26
发表于 2004-11-30 16:26:00 | 显示全部楼层 |阅读模式
大侠们:
  各位辛苦了!小弟学习Vb,碰到了多态和继承的问题!愿大侠花点时间常来看看。
  Vb是不能继承的,请问有什么方法可以模拟继承呢?这里举个大家都知道的数据库的例子,有三个不同的表,分别为表A、表B、表C,但这三个表都有相似的操作,都有增、删、改、查,有没有办法写一个东东,能方便的对这三个不同的表操作呢?请各位大侠指点!

73

主题

612

帖子

618

积分

高级会员

Rank: 4

积分
618
发表于 2004-11-30 17:43:00 | 显示全部楼层

Re:Vb的继承求助!

我的方法就是复制相同代码,别无他法

4

主题

714

帖子

714

积分

高级会员

Rank: 4

积分
714
QQ
发表于 2004-11-30 21:34:00 | 显示全部楼层

Re:Vb的继承求助!

楼主说的是VB.NET吗??
还是VB6?
用类模块可以实现代码重用的啊!!

14

主题

24

帖子

26

积分

注册会员

Rank: 2

积分
26
 楼主| 发表于 2004-12-1 16:23:00 | 显示全部楼层

Re:Vb的继承求助!

大侠们,小弟学的是VB6呀,怎么实现继承呢?

73

主题

612

帖子

618

积分

高级会员

Rank: 4

积分
618
发表于 2004-12-1 16:26:00 | 显示全部楼层

Re:Vb的继承求助!

已经告诉你了,不同对象但有相似特征需要复制代码,vb.net才能直接继承

2

主题

41

帖子

41

积分

注册会员

Rank: 2

积分
41
发表于 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
    甘.显

73

主题

612

帖子

618

积分

高级会员

Rank: 4

积分
618
发表于 2004-12-2 13:31:00 | 显示全部楼层

Re:Vb的继承求助!

这叫继承吗?继承是父亲和儿子的关系,父亲有的东西儿子可以继承,但是儿子不完全是父亲,他有很多父亲不具备的特征.vb好像不能直接引用吧

2

主题

41

帖子

41

积分

注册会员

Rank: 2

积分
41
发表于 2004-12-2 16:15:00 | 显示全部楼层

Re:Vb的继承求助!

7楼的我的代码就是继承呀,类模块不过是个框架它们的儿子都有不同的数据来源,父亲就没有儿子的数据源的如果还要其它特性完全可以建立相关类,不要以为VB.net比VB好,实际上VB.net属于退化了的东西,它比起VB来更类似于应用软件,而且越来越不象编程工具了
vb与VB.Net性能比较

Test Name VB6 Times (ns) VB.Net Times (ns) VB.Net is...
Square Root开方 46.7791 34.4608 1.36x faster
Sine正弦 160.4986 162.5435 1.01x slower
Inverse Cosine反余弦 435.8120 375.6694 1.16x faster
Inverse Tangent反正切 259.7525 286.1751 1.10x slower
Inverse Sine反正弦 405.3237 401.6973 1.01x faster
Natural Logarithmn自然对数 194.9694 226.1549 1.16x slower
Exponentiala 指数 121.0084 193.8514 1.60x slower
Logarithm to base 10基本对数 203.6077 230.0629 1.13x slower
CreateMatrix( )创建矩阵 1265.5043 1214.1316 1.04x faster
InverseMatrix( )反转矩阵 843.4019 1009.7311 1.20x slower
Norm. Vec. Function单位化向量函数 194.8496 165.7895 1.18x faster
Norm. Vec. Inlinen 单位化向量内联 183.5613 209.2288 1.14x slower
Ray-Triangle Intersect三角形相交检测 610.4232 733.7162 1.20x slower

这是最终结果,vb.net赢了5项,vb6赢了8项.vb.net平均慢了1.034x倍

14

主题

24

帖子

26

积分

注册会员

Rank: 2

积分
26
 楼主| 发表于 2004-12-5 00:52:00 | 显示全部楼层

多谢

谢谢各位大侠为我指点

187

主题

600

帖子

606

积分

高级会员

Rank: 4

积分
606
QQ
发表于 2004-12-5 08:20:00 | 显示全部楼层

Re:Vb的继承求助!

请你搞清楚你到底需要继承吗?到底能不能用包含实现呢?
我的意思就是两个对象是不是可以用组合来实现呢?反正一般情况下我觉得可以使用对象的组合来完成继承的相关功能的
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-12-23 13:22

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表