游戏开发论坛

 找回密码
 立即注册
搜索
楼主: Siner

耶 - 仿造仿造 .

[复制链接]

130

主题

2714

帖子

2714

积分

金牌会员

Rank: 6Rank: 6

积分
2714
发表于 2005-11-26 23:57:00 | 显示全部楼层

Re:耶 - 仿造仿造 .

难道要这样写:
Dim X(110) As Single , Y(110)As Single , A(110)As Single , B(110)As Single , A1(110)As Single , B1(110) As Single

130

主题

2714

帖子

2714

积分

金牌会员

Rank: 6Rank: 6

积分
2714
发表于 2005-11-27 00:01:00 | 显示全部楼层

Re:耶 - 仿造仿造 .

我昏!!老外也是错的? 我在QB里也是这么写的,难道VB6没改进?

130

主题

2714

帖子

2714

积分

金牌会员

Rank: 6Rank: 6

积分
2714
发表于 2005-11-27 00:05:00 | 显示全部楼层

Re:耶 - 仿造仿造 .

Variant是什么意思?

130

主题

2714

帖子

2714

积分

金牌会员

Rank: 6Rank: 6

积分
2714
发表于 2005-11-27 00:16:00 | 显示全部楼层

Re:耶 - 仿造仿造 .

知道了,我说我的粮食一超过65536就溢出了,哈哈!
不过我的粮食已经改成最多不超过10000了,所以用什么变量类型关系不是很大。

7

主题

229

帖子

247

积分

中级会员

Rank: 3Rank: 3

积分
247
QQ
发表于 2005-11-27 01:17:00 | 显示全部楼层

Re:耶 - 仿造仿造 .

呵呵,希望你的游戏越做越好吧!三国游戏我也喜欢的。规范的代码不但自己维护起来会很轻松,而且查错也很容易,也不易出错。

VB有很多不足的地方。但用来编写数据库及一些要求效率不是很高的WIN32 APPLICATION还是很不错的选择。至于高效的APPLICATION及GAME,原因是本人比较喜欢用API和内嵌汇编(MMX等),但VB却要声明,而且使用指针也比较困难(虽然可用RtlMoveMemory+VarPtr/StrPtr来使用,但有些问题还是比较麻烦)。。。

这是我用VB八年、WIN32 SDK五年、MASM三年总结出来的经验。目前我正在学习DELPHI。感觉这编程工具不错。。。呵呵!个人观点。希望大家不要攻击了。有机会多多交流。http://dsdm.bokee.com是我的BLOG。希望能认识更多的同道!我极喜爱GAME PROGRAMMING!

8

主题

120

帖子

120

积分

注册会员

Rank: 2

积分
120
QQ
 楼主| 发表于 2005-11-28 01:21:00 | 显示全部楼层

Re:耶 - 仿造仿造 .

一卡一卡的原因我不太清楚
我用了三个数组来做三层的星星移动,是0 to 100的,就是300个变量
在我的机器上跑不卡,我新买的机子,配置较高

Variant是变体类型
给它赋什么值它就是什么类型的变量
整形好像是2个字节,长整形是4个字节,你要是想再大就用双精度浮点形的
我用双精度浮点形做过一个计算
算出10位以内所有可打印字符相匹配可以匹配出的密码数量,结果不可想象呀,呵呵

游戏之家的编程风格我也觉得不好。
声明方式:dim a,b,c as long这是其一;
用“:”符号把多行代码改写成一行这是其二;
变量明名不规范是其三;

我的星星是这么写的,没用控件:
Option Explicit
'*****************************************
'星空效果程序设计
'程序编写:  老飞
'*****************************************
Private Type stars              '定义星星的结构体
    X As Long                   '星星的横坐标
    Y As Long                   '星星的纵坐标
    light As Integer            '星星的亮度
End Type

Private Const MAXCOUNT = 100    '每层星星的数量
Private isStart As Boolean      '是否动画已经开始

Private MyStar(MAXCOUNT) As stars       '第一层星星
Private MyStarA(MAXCOUNT) As stars      '第二层星星
Private MyStarB(MAXCOUNT) As stars      '第三层星星

Private Sub Form_Activate()
    MsgBox "用鼠标单击黑色部份动画开始!", vbInformation + vbOKOnly, "提示"
End Sub

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    If KeyCode = 27 Then                '按Esc键退出程序
        End
    End If
End Sub

Private Sub Form_Load()
    With Form1
        .Width = 640 * 15
        .Height = 480 * 15
        .Top = 0
        .Left = 0
        .BackColor = RGB(0, 0, 0)
        .Caption = "星空效果程序设计 - 老飞制作"
    End With
End Sub

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Dim i As Long
   
    If isStart = False Then
        isStart = True
        
        '初始化所有星星坐标
        For i = 0 To MAXCOUNT
            MyStar(i).X = Rnd() * Me.ScaleWidth
            MyStar(i).Y = Rnd() * Me.ScaleHeight
            MyStarA(i).X = Rnd() * Me.ScaleWidth
            MyStarA(i).Y = Rnd() * Me.ScaleHeight
            MyStarB(i).X = Rnd() * Me.ScaleWidth
            MyStarB(i).Y = Rnd() * Me.ScaleHeight
        Next i
        
        Do
            Randomize
            
            For i = 0 To MAXCOUNT
                '如果飞出屏外则移至另一头
                If MyStar(i).X <= 0 Then
                    MyStar(i).X = MyStar(i).X + Me.ScaleWidth
                End If
                If MyStarA(i).X <= 0 Then
                    MyStarA(i).X = MyStarA(i).X + Me.ScaleWidth
                End If
                If MyStarB(i).X <= 0 Then
                    MyStarB(i).X = MyStarB(i).X + Me.ScaleWidth
                End If
               
                '三层星星移动速度不一样
                MyStar(i).X = MyStar(i).X - 3
                MyStarA(i).X = MyStarA(i).X - 4
                MyStarB(i).X = MyStarB(i).X - 5
            Next i
            
            For i = 0 To MAXCOUNT
                '星星的亮度随机,最外层的星星要更亮一些
                MyStar(i).light = Rnd() * 255
                MyStarA(i).light = Rnd() * 255
                MyStarB(i).light = Rnd() * 50 + 200
               
                PSet (MyStar(i).X, MyStar(i).Y), RGB(MyStar(i).light, MyStar(i).light, MyStar(i).light)
                PSet (MyStarA(i).X, MyStarA(i).Y), RGB(MyStarA(i).light, MyStarA(i).light, MyStarA(i).light)
                PSet (MyStarB(i).X, MyStarB(i).Y), RGB(MyStarB(i).light, MyStarB(i).light, MyStarB(i).light)
            Next i
            
            DoEvents
            Me.Cls
        Loop
    End If
End Sub


Private Sub Form_Unload(Cancel As Integer)
    End
End Sub

130

主题

2714

帖子

2714

积分

金牌会员

Rank: 6Rank: 6

积分
2714
发表于 2005-11-28 09:10:00 | 显示全部楼层

Re:耶 - 仿造仿造 .

你这个程序效率和层次感肯定没我的高, 我的星星移动步长(速度)最大的才1.5, 我觉得你的写的程序太复杂了......

你的程序星星移动的时候一卡一卡, 我公司电脑是P4-3.0, 造成程序卡的原因是这两句, 好象不需要清屏和刷新.
DoEvents
Me.Cls

14

主题

318

帖子

321

积分

中级会员

Rank: 3Rank: 3

积分
321
发表于 2005-11-28 09:52:00 | 显示全部楼层

Re: Re:耶 - 仿造仿造 .

游戏之家: Re:耶 - 仿造仿造 .

星星到了边边后不消失是我没锁定窗口,还有我只要叫星星飞出FORM就不会有停留。
你那个怎么会飞一下就暂停...

这种东西就不用Timer了。

130

主题

2714

帖子

2714

积分

金牌会员

Rank: 6Rank: 6

积分
2714
发表于 2005-11-28 12:21:00 | 显示全部楼层

Re:耶 - 仿造仿造 .

那你可以比较一下这两个程序的效率。

8

主题

120

帖子

120

积分

注册会员

Rank: 2

积分
120
QQ
 楼主| 发表于 2005-11-28 16:01:00 | 显示全部楼层

Re:耶 - 仿造仿造 .

也许我应该用一个API就不会一卡一卡了……
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-22 19:42

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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