笑傲江湖
级别: 火花会员
编号: 15111
精华: 1
发帖: 224
威望: 5 点
配偶: 单身
火 花 币: 24554 HHB
注册时间:2004-03-04
最后登陆:2017-10-22
|
下面是引用winnner0083于2006-01-14 20:05发表的: 5555……被说教了。 是这样的,我是学化学的,当时大一的计算机课讲的是VB语言,之后的一个学期(也就是半年)里我用别人的机器做了这个程序,后来买了电脑就在我的机器里自己做了,发现一个问题,就是在不同的电脑上用timer控件控制的程序运行速度不一样,当时考虑过可能是interval设定小了,但后来设定大了还是一样,所以就问了这个不同步的问题。 我的算是SRW的同人游戏,所以都是截的图,不需要考虑太多的动画问题,只有个战斗画面的背景移动而已。音乐和音效都是用的现成的。到是没用到美工和音乐,只有我一个程序员。 我当时卡在移动范围的判定上,开始本以为很简单,但是运行时总是出错,错误为“溢出”,我又想不出它是错在哪里,换了个方法还是同样的错误……也上网查了,没有具体代码,只有大体思路,但它说的思路跟我想的是一样的啊,就这样就这样放弃了 我的大部分VB知识也是自学的,游戏里用的也都是很简单的一些控件,顶多在图片效果上用了些API函数,在层次上真是跟楼主差远了。 ....... |
|
关于Timer控件,那个问题我也碰到过,后来找到的解决方法我上面也说到了。Interval我是设置成1,通过其他方法(也就是上面提到的)来实现对间隔的控制。
值得一提的是VB的Timer控件在98和XP下面的执行效果完全不同,有兴趣的可以自己去体会一下。98下面Timer控件会有很大的固有执行间隔,而XP下则小很多。
移动范围方面,程序倒是很简单,思路就不那么容易表叙了……
Dim 阻碍力(20,20) As Long Dim 顺序(20,20) As Long Dim 消耗移动力(20,20) As Long Dim 步 As Long Dim X As Long,Y As Long Dim A As Long,B As Long For Y=0 To 20 For X=0 To 20 阻碍力(X,Y)=Int(Rnd*4+1) '这里虚拟随机生成阻碍力,实际运用的时候自然就和其他数值相挂钩了 顺序(X,Y)=-1 消耗移动力(X,Y)=-1 Next X Next Y 顺序(出发点X,出发点Y)=0 消耗移动力(出发点X,出发点Y)=0 步=0 Do B=0'这是一个标记,用来判断一次循环是否有所操作,如果没有操作就结束循环 For Y=0 to 20 For X=0 to 20 If 顺序(X,Y)=步 Then For A=1 to 7 Step 2 If X+A Mod 3-1>=0 And X+A Mod 3 -1<=20 and Y+A\3-1>=0 And Y+A\3-1<=20 Then Select Case True Case 顺序(X+A Mod 3-1,Y+A\3-1)<0 If 消耗移动力(X,Y)+阻碍力(X+A Mod 3-1,Y+A\3-1)<消耗移动力(X+A Mod 3-1,Y+A\3-1) Then 顺序(X+A Mod 3-1,Y+A\3-1)=步+1 消耗移动力(X+A Mod 3-1,Y+A\3-1)=消耗移动力(X,Y)+阻碍力(X+A Mod 3-1,Y+A\3-1) B=1 End If Case Else 顺序(X+A Mod 3-1,Y+A\3-1)=步+1 消耗移动力(X+A Mod 3-1,Y+A\3-1)=消耗移动力(X,Y)+阻碍力(X+A Mod 3-1,Y+A\3-1) B=1 End Select Next A End If Next X Next Y 步=步+1 Loop Until B=0
这段代码结束的时候会在数组消耗移动力里存上移动到改格子所需要消耗的移动力,再和单位所拥有的移动力做一次判断,就可以计算出移动范围了。
作为程序员,有错误信息的错误都是非常低级的错误,因为有错误信息和出错地点这两个线索,推理起来绝对不会太难。
从你所说的“溢出”就可以判断:你的程序肯定出现了递归型死循环,部分代码出现重复的自我调用,从而最终导致溢出。因为运算这种操作不可能占用太多的资源,会溢出就肯定是出现失去控制的重复调用。
典型的例子是:
Sub A A End Sub
子程序A调用了A,A会继续调用A……如此重复下去,自然就溢出了。
虽然有点言重,但不管你将来选择什么道路,有几句话还是希望你能记住:任何时候,任何事情,做不到,失败了,就是你还不行。人生的棋盘上,能够按照你的意愿行动的棋子始终只有你自己一个。只有把责任归于自己,事情才会有改变的可能。把希望寄托于别人是非常渺茫的东西,就好象我编的这游戏,程序因为是我自己负责,所以编着编着也就编好了,而美工也好音乐也罢我必须寄期待于别人,所以我根本就不知道什么时候会有所转机……
说起来好羡慕日本的同人游戏界啊……一款一款的同人游戏最后都有那么长的制作者名单……中国还号称有着世界上最多的人口呢……苦笑一下……
[ 此贴被笑傲江湖在2006-01-14 23:53重新编辑 ]
|
|
[29 楼]
|
Posted:2006-01-14 22:33| |
顶端
| |