游戏开发论坛

 找回密码
 立即注册
搜索
楼主: 游戏之家

不使用类的VB游戏程序设计方法(1)

[复制链接]

18

主题

67

帖子

73

积分

注册会员

Rank: 2

积分
73
发表于 2006-9-5 21:43:00 | 显示全部楼层

Re:不使用类的VB游戏程序设计方法(1)

哎,你就不会用FOR啊?

10

主题

411

帖子

411

积分

中级会员

Rank: 3Rank: 3

积分
411
发表于 2006-9-5 22:24:00 | 显示全部楼层

Re: Re:不使用类的VB游戏程序设计方法(1)

psic: Re:不使用类的VB游戏程序设计方法(1)

IF A > 200 THEN LP=1   '地图到200敌人出动

有很多敌人要出动,该怎么办呢?一个敌人就写一句??


当然不用一个飞机一句, 这是10个飞机的代码。
FOR I=1 TO 10
X(I)=M
Y(I)=N
NEXT I

我一种飞机用一个PRIVATE SUB STAGE1,2,3,4,5......余此类推。

至于敌人飞机什么时候出那看地图走到什么地方再加一个RND就可以了,
我说了楼顶的程序是简化的,比如这次的新游戏,同一种飞机可以出现多次,还可以飞不同速度动作,我这种方法是由DOS游戏设计原理继承的,不会比你们写的程序长,同样的程序我不用类,代码少1/3以上,目前类似代码没有公布过。

原理:
变量指针---CALL 子程序。

这样的方法写出的程序很短。

10

主题

411

帖子

411

积分

中级会员

Rank: 3Rank: 3

积分
411
发表于 2006-9-5 22:33:00 | 显示全部楼层

Re: Re:不使用类的VB游戏程序设计方法(1)

wzqqwz: Re:不使用类的VB游戏程序设计方法(1)

哎,你就不会用FOR啊?



FOR TO NEXT  IF THEN  等是BASIC的基本语句,少不了用。
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

例子:(VB6 + TV3D) 定义6架战机。

PFP47 = 0    '飞机动作指针
TexFactory.LoadTexture &quotIC\tietu4.bmp", "PIC003"  '飞机贴图
For IE2 = 1 To 6   '6架飞机
Set PlaneP47(IE2) = New TVMesh
Set PlaneP47(IE2) = Scene.CreateMeshBuilder
PL3X(IE2)=PL3X(IE2)+30    '飞机位置
PL3Y(IE2) = 1120  '起飞坐标
P47LIFE(IE2) = 1 '飞机生命
PlaneP47(IE2).Load3DSMesh "MODEL\P47D.3DS", False   '飞机模型
PlaneP47(IE2).SetTexture GetTex("PIC003")
PlaneP47(IE2).EnableSphereMapping True
PlaneP47(IE2).SetPosition PL3Y(IE2), GD80, PL3X(IE2)  '飞机坐标
PlaneP47(IE2).SetRotation 90, 0, 180                      '飞机角度
PlaneP47(IE2).ScaleMesh 0.05, 0.05, 0.05               '飞机尺寸
Next IE2

187

主题

6490

帖子

6491

积分

论坛元老

团长

Rank: 8Rank: 8

积分
6491
发表于 2006-9-6 08:40:00 | 显示全部楼层

Re:不使用类的VB游戏程序设计方法(1)

没错!正解。

10

主题

411

帖子

411

积分

中级会员

Rank: 3Rank: 3

积分
411
发表于 2006-9-6 08:44:00 | 显示全部楼层

Re:不使用类的VB游戏程序设计方法(1)

这是定义3种飞机的方法:

开始把飞机的相关资料设置好, MAP是地图坐标, K是敌人出动的指针,以下代表3批敌人。

K=0
////////////////////////////////////////////////
IF MAP=100 THEN K=1     ‘地图行进到100
IF MAP=200 THEN K=2     ‘地图行进到200
IF MAP=300 THEN K=3     ‘地图行进到300

////////////////////////////////////////////////

IF K=1 THEN  定义飞机的资料 : K=2:FF=1
IF K=2 THEN  定义飞机的资料 : K=3:FF=2
IF K=3 THEN  定义飞机的资料 : K=4:FF=3

IF FF=1 CALL STAGE1
IF FF=2 CALL STAGE1
IF FF=3 CALL STAGE1


SUB STAGE1()  ‘第1种飞机的子程序
//////////////////////
END SUB

SUB STAGE2()  ‘第2种飞机的子程序

//////////////////////
END SUB

SUB STAGE3()  ‘第3种飞机的子程序
//////////////////////
END SUB

20

主题

451

帖子

470

积分

中级会员

Rank: 3Rank: 3

积分
470
发表于 2006-9-6 11:20:00 | 显示全部楼层

Re:不使用类的VB游戏程序设计方法(1)

类是没法被方法代替的~
简单的例子,类的一个重要特性——继承,用方法怎么实现?
比如有一个飞机基类,然后又有f16,F117,歼10等继承了飞机基类特性的子类,然后又有歼10变种这个继承了歼10特性的子类~
这个用方法怎么实现?

10

主题

411

帖子

411

积分

中级会员

Rank: 3Rank: 3

积分
411
发表于 2006-9-6 11:30:00 | 显示全部楼层

Re:不使用类的VB游戏程序设计方法(1)

我没用过继承,只用指针。

20

主题

451

帖子

470

积分

中级会员

Rank: 3Rank: 3

积分
470
发表于 2006-9-6 11:33:00 | 显示全部楼层

Re:不使用类的VB游戏程序设计方法(1)

代码例子:

Public Class 飞机

Private m_power as Single
Private m_mass as Single

Public Property 推力() as Single
Get
Return m_power
End Get
Set(value as Single)
m_power=value
End Set
End Property

Public Property 质量() as Single
Get
Return m_mass
End Get
Set(value as Single)
m_mass=value
End Set
End Property

Public ReadOnly Property 推重比() as Single
Get
Return m_power / m_mass
End Get
End Property

Public Sub New()

End Sub
End Class

Public Class 歼10
Inherits 飞机

Private m_Weapon as String ="导弹"

Public ReadOnly 武器类型 as String
Get
Return m_Weapon
End Get
End Property

Public Sub New()
MyBase.New()
End Sub
End Class

这样你就可以这样调用:
Dim 我的飞机 As New 歼10()
我的飞机.质量=5167
我的飞机.推力=1387
Console.WriteLine("我的飞机的推重比:" & 我的飞机.推重比)
Console.WriteLine("我的飞机的武器类型:" & 我的飞机.武器类型)

请问你这个用方法+指针怎么实现?

10

主题

411

帖子

411

积分

中级会员

Rank: 3Rank: 3

积分
411
发表于 2006-9-6 11:36:00 | 显示全部楼层

Re:不使用类的VB游戏程序设计方法(1)

我也不会把一个飞机的特性继承到另外一个飞机上,我每个飞机特性都是独立的,就是开始就定义好。

总之我的设计方法没那么复杂,我也在不断学习中。

20

主题

451

帖子

470

积分

中级会员

Rank: 3Rank: 3

积分
470
发表于 2006-9-6 11:40:00 | 显示全部楼层

Re:不使用类的VB游戏程序设计方法(1)

呵呵,不同型号的飞机肯定都有共同的地方,如果你用类和继承来开发游戏的话,一定会使你开发游戏的效率和质量大增~

只是给你提一个建议而已
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-4-13 09:11

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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