游戏开发论坛

 找回密码
 立即注册
搜索
查看: 4882|回复: 21

耶 - 仿造仿造 .

[复制链接]

8

主题

120

帖子

120

积分

注册会员

Rank: 2

积分
120
QQ
发表于 2005-11-26 04:18:00 | 显示全部楼层 |阅读模式
模仿游戏之家的那个星空程序设计的程序
我自己也写了一个
而且觉得比他那个好,嘿嘿
因为我见他那个星星到了边边后不消失,就停在那里,越积越多!
[em3]

sf_2005112641747.rar

3.65 KB, 下载次数:

130

主题

2714

帖子

2714

积分

金牌会员

Rank: 6Rank: 6

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

Re:耶 - 仿造仿造 .

星星到了边边后不消失是我没锁定窗口,还有我只要叫星星飞出FORM就不会有停留。
你那个怎么会飞一下就暂停? 其实这个程序改一下是可以作为游戏里的子弹的,哈哈!
我的程序是很短的,20多行程序: 公布代码:

先设置一个TIMER控件:

Dim N, CA As Integer

Dim X(110), Y(110), A(110), B(110), A1(110), B1(110) As Single


Private Sub Form_Load()
Randomize Timer
Timer1.Interval = 2

Form1.Height = 480 * 15: Form1.Width = 640 * 15
ScaleMode = 3
BackColor = QBColor(0)

For C1 = 1 To 80: X(C1) = Int(Rnd * 640): Y(C1) = Int(Rnd * 450 + 10): Next
For C2 = 1 To 90: A(C2) = Int(Rnd * 640): B(C2) = Int(Rnd * 450 + 10): Next
For C3 = 1 To 110: A1(C3) = Int(Rnd * 640): B1(C3) = Int(Rnd * 450 + 10): Next

End Sub

Private Sub Timer1_Timer()
For C1 = 1 To 80
PSet (X(C1), Y(C1)), QBColor(15): PSet (X(C1) - 1, Y(C1)), 0: PSet (X(C1) - 1.5, Y(C1)), 0
X(C1) = X(C1) + 1.5
If X(C1) > 641 Then X(C1) = 1
Next
For C2 = 1 To 90
PSet (A(C2), B(C2)), QBColor(15): PSet (A(C2) - 1, B(C2)), 0
A(C2) = A(C2) + 1
If A(C2) > 641 Then A(C2) = 1
Next
For C3 = 1 To 110
PSet (A1(C3), B1(C3)), QBColor(15): PSet (A1(C3) - 1, B1(C3)), 0
A1(C3) = A1(C3) + 0.5
If A1(C3) > 641 Then A1(C3) = 1
Next
End Sub

53

主题

419

帖子

451

积分

中级会员

Rank: 3Rank: 3

积分
451
发表于 2005-11-26 09:25:00 | 显示全部楼层

Re:耶 - 仿造仿造 .

感觉运行时有一卡一卡的现象

不知道楼主会不会编写哪个很经典的星空模拟屏保,就是星星从屏幕中间发散,感觉真的在飞
,还有一个版本就是WINDOWS标志从屏幕中间发散的屏保

对射击游戏编写很有用的热身例子哦

130

主题

2714

帖子

2714

积分

金牌会员

Rank: 6Rank: 6

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

Re:耶 - 仿造仿造 .

星星从屏幕中间发散没问题,需要的我就发DEMO。

13

主题

594

帖子

595

积分

高级会员

Rank: 4

积分
595
发表于 2005-11-26 16:39:00 | 显示全部楼层

Re:耶 - 仿造仿造 .

Dim N, CA As Integer

Dim X(110), Y(110), A(110), B(110), A1(110), B1(110) As Single

-------------

VB6可以这样用???

130

主题

2714

帖子

2714

积分

金牌会员

Rank: 6Rank: 6

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

Re: Re:耶 - 仿造仿造 .

wangh: Re:耶 - 仿造仿造 .

Dim N, CA As Integer

Dim X(110), Y(110), A(110), B(110), A1(110), B1(110) As Single

----------...


这是定义数组,110代表有110颗星,我程序里其实没用到110,可以自己调整星星数量(1-110)

13

主题

594

帖子

595

积分

高级会员

Rank: 4

积分
595
发表于 2005-11-26 17:32:00 | 显示全部楼层

Re:耶 - 仿造仿造 .

Dim X(110), Y(110), A(110), B(110), A1(110), B1(110) As Single

我是说前面的几个数组怎么不声明类型,这样效率不高哦

7

主题

229

帖子

247

积分

中级会员

Rank: 3Rank: 3

积分
247
QQ
发表于 2005-11-26 18:00:00 | 显示全部楼层

Re:耶 - 仿造仿造 .

Dim N, CA As Integer

Dim X(110), Y(110), A(110), B(110), A1(110), B1(110) As Single

这里的N及 X(110), Y(110), A(110), B(110), A1(110)将成为Variant类型!

还有,你的代码看上去有点乱!完全是个人风格。希望你能规范化你的代码,这样维护起来也不会太困难……推荐参考“匈牙利命名规则”:

许多Windows程序中的变量名及函数等标识符使用一种称作「匈牙利表示法」的命名系统,该系统在标识符名称前面增加了表示标识符类型的短前缀,在WIN32SDK中,一般前缀 i 表示int、sz表示「以零结束的字符串」、p表示指针……

在VB中我们一般:
1、变量:n表示数字整型、d表示浮点数、s表示字符串、b表示BYTE类型、t表示日期时间;
2、函数及过程:用尽可能短的(不超过25个字符的)清晰的动词组合而成,不需要前缀,但必须遵守每个单词的第一个字母必须要大写;
3、控件名称:txt表示textbox,frm表示form,pic表示picturebox,img表示image,lbl表示lable等。。。。
4、关于区域规划一般在标识符的前面加上:
模块级: m_  全局:g_
。。。。

32

主题

1583

帖子

1589

积分

金牌会员

Rank: 6Rank: 6

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

Re:耶 - 仿造仿造 .

本人认为游戏之家的编程习惯不是很好。

这样编出来的代码没有经过优化,效率较低,而且可读性较差。

关于变量命名的问题8楼已经说了,我说说关于效率的一些问题。

Dim X(110), Y(110), A(110), B(110), A1(110), B1(110) As Single

——————————此句定义了555个Variant型变量,这种类型的变量对程序速度的严重影响是众所周知的。

For C1 = 1 To 80: X(C1) = Int(Rnd * 640): Y(C1) = Int(Rnd * 450 + 10): Next
——————————要养成定义每个变量的习惯,对于FOR循环中的循环变量,预先使用Long类型定义会使程序提速很多。

130

主题

2714

帖子

2714

积分

金牌会员

Rank: 6Rank: 6

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

Re:耶 - 仿造仿造 .

VB6是可以这样写的
Dim X(110), Y(110), A(110), B(110), A1(110), B1(110) As Single

PUBLIC  X(110), Y(110), A(110), B(110), A1(110), B1(110) As Single

全部定义是SINGLE,刚看了下国外的VB程序,都是这么写的,除非老外也是错的。

看看国外游戏写法:
Public MenuScreenDC, MenuScreen, MenuScreenMaskDC, MenuScreenMask, StatusScreen, HealthvDC, Healthv As Long
Public MainShipDC, MainShip, MainShipMaskDC, MainShipMask, ShDC, SH As Long
Public gameover, LeftK, RightK, Blasting, ShowMenu, CanShoot As Boolean
Public EnemyDC(), Enemy(), EnemyMaskDC(), EnemyMask() As Long
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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