如题:用VB编三国游戏行吗?
可以看看
http://www.cndevx.com/club/dispbbs.asp?boardID=30&ID=28755如果你有我同样的爱好访问
http://xprogrammer.3322.org/proj/index.asp
告诉我
可以看看
http://www.cndevx.com/club/dispbbs.asp?boardID=30&ID=28755如果你有我同样的爱好访问
http://xprogrammer.3322.org/proj/index.asp
告诉我
一.VB的速度问题,这可能是历史遗留问题了,呵呵...
二.多线程方法.这个要在VB中实现可是很难的!建议更改成其它语言来进行开发,比如VC++或.NET等等!
当然我也知道现在还没有一个大的游戏是用VB编的,但是用VB的朋友太多了,如果能够基本成功的话也对VB程序员是一种激励和福音,即使不让,失败了公布一下源代码应该还是有一些帮助。对程序的速度的问题:图像我采用dictdraw+VB,一些特效处理用VC做成DLL,现在测试速度很快,对于程序的其它部分我想可以采用最优的代码提高执行速度.问我为什么想用vb来写,因为所有这些只是我业余爱好而已。
不过,小弟还是支持的。
想问一下,你的邮箱是多少。我也有想法,能不能联系?
我的是:[email protected]
我的邮箱:yinxiaodan.163.net
我以前也有这个想法
但是现在没有了,原因是VB是相对简单的语言,在语法和数据类型方面还不是很严谨,而且,在代码编制上是很费事的事情,最好是能用JAVA,或者C/C++,个人意见,见谅!
用 Dx,还要有好的算法
2d 还是 3d 的?
所说的多线程问题也是可以解决的,我就在一本杂志上看到过VB处理多线程
。我个人做过不少小软件。因为我是一所学校的网管。事业单位大家都知道,
人多事少。所以就有空学了很多东西。VB、VC、oracle一大堆有用没有用的东西。
但从没有做过什么像样的项目。工作四年了,也学习了四年东西学了不少精的没有
所以像楼主这样有志向的人我想你VB学得挺好的。望你多多努力学精一门技术成为真
正的高手。
祝你成功,虽然有一定难度但我想你还会是成功的。
因为你们是井低之蛙,
过于自以为事,
在贬低一个语言的时候还是先提高自己的能力吧!
vb在某些方面真的不行,尽管他有他的优点,但就象人一样,各有专长,vb的专长不在这里。不过说vb什么都不行我不赞成,要知道winxp操作系统的原代码中还有vb的身影呢
http://www.cndevx.com/club/dispbbs.asp?boardid=43&id=30048&star=1#177743
要有策划、美工。要有投入、投资。
一般人,玩玩可以,别认真。
图像方面用DirectX,逻辑方面要编个核心引擎,界面嘛,VB当然可以胜任。
请楼主不要舍本求末,界面只是游戏中几乎可以忽略不计的小问题,用什么语言无所谓。
我说是因为,奇怪的论调太多了。更本没有认真的去了解一个语言,其实有些其它的我也在学,也在用的,现在做的这个是用vb的,我既没有用c/s又没有用b/s,解决的网络应用的一个很重要的问题, 可能我做的这个系统条件有些特殊。
但绝不是一个小系统,
所以我想,说任何话 做任何事的时候,尤其在贬低某样事的时候,最好去了解它,如果没有时间了解,请不要盲从。
所以我同时尊敬其它语言!尊敬创建他们的前辈!虽然我不清楚他们的名字,经历。希望有天可以达到他们的高度。
VB没有指针----请用VB尝试一下最简单的取址运算。我不认为VB高手就能做到。
关于多线程:你真的能用VB实现多线程?请问是线程还是进程?
"VB慢----确实如此。"
这点我赞同,但你知道是什么慢吗?运行效率?开发速度?如果你不知道,请不要人云亦云"VB没有指针----请用VB尝试一下最简单的取址运算。我不认为VB高手就能做到。"
这点我也赞同,但是你不知道VB可以通过API来实现内存分配和取址运算,甚至内存复制吗?要知道这些知识,多点看这里的文章吧!"关于多线程:你真的能用VB实现多线程?请问是线程还是进程?"
VB通过调用API,同样可以实现到多线程,难道这你都不知道?那你最好还是再看看VB的一些提高书籍了!
以前街机上不就有个ACT吗
图形动画可以采用DX,网络多播可以采用API,至于AI就是靠设计者的逻辑思维能力加上些VB代码就可以了。对于速度问题,当然VB和VC是有些差距的,但是以目前的硬件情况来说,在一个处理好的VB代码上看,已经没有多大区别了。如果硬要拿些486来说,相信很多VC的游戏也用不了吧。呵呵。
为什么大家非得钻牛角尖呢?难道单任务的dos时代就没有优秀的游戏可玩了吗?
记住一点,很多事情都是结果比过程重要,你能实现即可,别人也看不到你的代码。
vb在某些方面的开发确实存在不容忽视的效率问题,可并非不可解决的。
去年我移植一个纯c写的nes模拟器到vb,把多线程完成的任务挤到一个do循环完成,加上大量的指针和内存操作,优化了3个月的程序,在c300+64m上面可以跑到70-90fps。
所以vb程序员们呀,不要妄自菲薄了,精研你们的技术吧。
我的一个ms的工程师说过这样一句话:除去先天不足的方面,我可以在比较少失效率的情况下用vb完成任何vc能够完成的任务。
为什么大家非得钻牛角尖呢?难道单任务的dos时代就没有优秀的游戏可玩了吗?
记住一点,很多事情都是结果比过程重要,你能实现即可,别人也看不到你的代码。
vb在某些方面的开发确实存在不容忽视的效率问题,可并非不可解决的。
去年我移植一个纯c写的nes模拟器到vb,把多线程完成的任务挤到一个do循环完成,加上大量的指针和内存操作,优化了3个月的程序,在c300+64m上面可以跑到70-90fps。
所以vb程序员们呀,不要妄自菲薄了,精研你们的技术吧。
我的一个ms的工程师说过这样一句话:除去先天不足的方面,我可以在比较少失效率的情况下用vb完成任何vc能够完成的任务。
--------------------------
同意,以前刻意采用vb使用多线程,但经常非法操作
后来尽量用循环实现, 实在实现不了的。 做过一个exe。然后让住exe运行的时候调用
我实现不了多线程序, 多进程总可以了吧。 补:做过的一个CallCenter就是这样实现的
况且我要做的才百分之一
http://www.cndevx.com/club/dispbbs.asp?boardID=43&ID=30048
很久没来,现在才看见您老回的帖子。
VB慢主要在于basic语言本身从始至终,从头到尾都是一种解释型执行的语言,当然慢的另外一个原因是其臃肿的语法结构。如果你认为VB快,那确实是微软无数精英努力的结果。但是,你可以感受一下VB的任何产品和同类其它语言编写的产品的速度。比如word和wps,比如一些常见的管理软件和财务软件。这些地方处处可以看见VB和其它语言的竞争。VB的生存更多利用了漂亮的界面和各种完善的构思,而不是速度。
关于VB对系统api的调用:我如果连这点都不知道,那我想别人不会同意我领导一个团队进行VB开发了。我这里想说的意思是:VB无法用自身的手段实现类似系统api的功能。
关于VB的多线程:你如果认为能够实现,那你真的错了。VB所有的类库都是为单线程设置的。你可以调用这个,调用那个,甚至可以直接调用一个别人写的多线程程序。但是,这应该与VB无关。
很久没来,一来就看见您老回的帖子。
VB的运行效率慢,这是不能否认的事实,但是,您指的慢只是针对VB的运行效率,但即使是这个慢,您又能察觉得出来吗?就象我们用VB做的LIS检验信息管理系统,和其他一些用BCB来做的完全没区别,但是我们用VB做的只是核心,而其它一些漂亮的UI都是用DELPHI做的。其实我强调的是VB的开发效率快,特别是基于COM/COM+组件开发方面的效率,它就是快!
不好意思!如果您的意思是指VB无法用自身的手段实现类似系统api的功能的话,那我误会您的意思了。不过至于你提到“关于VB对系统api的调用:我如果连这点都不知道,那我想别人不会同意我领导一个团队进行VB开发了”呵呵,也许您的开发技术很好,但是项目管理并非以技术为本的。当您有机会带领超过20个人的队伍进行大型项目开发的时候您就可以体验到了。
至于多线程嘛,您认为VB实现的是多进程而不是多线程的话,那您真是错得很离谱了。您真的不知道VB是怎样实现多线程的吗??下面我且慢慢给你说怎样用VB实现多线程!
vb是apprent single-thread(单线程)的.但用addressof加上一些API,就可以非常容易的做多线程.(比VC容易的多,做出来的东西也一样快,因为都是用API). 每一个线程约占用20毫秒的时间片.
vb有一个主线程.我们可以另外加一个工作线程.对于不清楚什么是单/多线程的程序元,我们用一个简单的列子来说明一下.
在form里加上两个timer控件. 把interval属性设成5000(5秒),然后在两个timer1_timer事件中放一个大loop, 如for 10000 next. 运行. 你会看到第二个timer控件不会在五秒后执行,除非timer1的for-next结束. 同样,如果你的程序中有大量的数据库读写.你的用户街面可能被"冻".这时,我们就需要用多线程来改进程序了.(当然你可以用DoEvents来避免被冻,但用DoEvents有很多副作用.这里不提).
需要用第一个API是CreateThread, VB的格式是:private declare function CreateThread Lib "kernel32" (byval pThreadAttributes as any, byval dwStackSize as long, byval lpStartAddress as long, lpParameter as any, byval dwCreationFlags as long, lpThreadID as long) as long. (从vb API text viewer中拿是最真确的语法)CreateThread的参数指出你将要创立的线程是什么样子的. CreateThread的返回值是一个线程的handle. 这里是vb的多线程初始化程序:Public Sub Initialize(lpfnBasFunc as long)
dim dwStackSize as long
dim dwCreationFlags as long
dim lpThreadId as long
dim lpParameter as long
dim myNull as long
myNull = 0& ’create a null pointer
dwStackSize = 0 ’0表示用exe stack size
dwCreationFlags = 4 ’用4表示初始化后先不激活,让别人来激活.
Me.Thread = CreateThread(myNull, dwStackSize, lpfnBasFunc, myNull, dwCreationFlags, lpThreadId)
if Me.Thread = myNull then
Msgbox "create thread failed"
end if
end Sub
下面是两个API用来激活/暂定该线程.private declare function ResumeThread lib "kernel32"(byval hThread as long)as longprivate declare function SuspendThread lib "kernel32"(byval hThread as long)as long让我们来用一个变量表示当前线程的状态.
public ThreadStatus as boolean
在vb里,可用property来实现ThreadStatus的管理.
Public property Let Enabled(byval vNewValue as boolean)
if vNewValue = true and Me.ThreadStatus = false then
ResumeThread Me.Thread
Me.ThreadStatus = True
elseif Me.ThreadStatus = true then
SuspendThread Me.Thread
Me.ThreadStatus = False
endif
end Property这个简单的类可以用New Object来引用:
’make new thread object
dim myThread as New clsThreads
’创建线程 Foo
myThread.Initialize AddressOf Foo
’激活线程
myThread.Enabled = True执行后,你可以用PVIEW95.EXE看到你的线程.
你还可以提高你的线程的优先级.
SetThreadPriority ’设优先级GetThreadPriority ’查优先级你把以上的程序加入timer例子,就会看到两个timer同时运行.
这里要提醒一下. vb的开发环境是单线程的.如果你的程序写错,或中断后试图恢复,往往会出错,有时是GPF错.总之,用vb写多线程可以写出和VC一样快的程序.而且开发容易的多,开发速度也快得多. 关于VB编写多线程的方法就是这样,所以啊, boybluesky同志,当您真的很了解VB的时候再去确定VB的一些不可能,VB和其他语言都之是一门工具,是我们用来实现思想和模型的工具,因此我从来就不会去说哪个语言好,哪个语言不好。按照您现在对VB的认识,我还是要奉劝您一句,千万不要人云亦云啊!!
不用DirectDraw不可能啊(当然可能是可能,只是不可能……呵呵,反正只可意会)
VB不适合做MultiThreaded程序,但是并非不能做到
还有,VC也是调用API的。除非你用C从头编起,或者用汇编。那才叫自身实现API功能。
//VB的生存更多利用了漂亮的界面和各种完善的构思
VB的界面并不漂亮,构思非常紊乱。我不认为VB靠这两点取胜。VB就是靠对初级用户的简单便利高效,和对高级用户COM开发的高效可靠这两点取胜的。
http://www.pointsmoney.com/userprofile.php?auid=747173959&ID=378120
我不是做项目管理的。
如果你坚持认为VB开发的产品是以速度取胜,也未尝不可。我从来不坚持用只用一种语言进行开发。VB开发确实以“速度”取胜,开发速度而已。
所以说虽然多线程是可以的,但是不推荐的,而且这样的没有安全的线程用处极其有限。如果要基于多线程,VB6就不可取了。