如题:用VB编三国游戏行吗?
可以看看
http://www.cndevx.com/club/dispbbs.asp?boardID=30&ID=28755如果你有我同样的爱好访问
http://xprogrammer.3322.org/proj/index.asp
告诉我

解决方案 »

  1.   

    呵呵....有几个难题如果你能先搞掂的话:
    一.VB的速度问题,这可能是历史遗留问题了,呵呵...
    二.多线程方法.这个要在VB中实现可是很难的!建议更改成其它语言来进行开发,比如VC++或.NET等等!
      

  2.   

    怎么想到用VB写呢??写游戏想到的应该是C/C++,或者JAVA什么的
      

  3.   

    可以试试,或许用dictdraw是个不错的想法
      

  4.   

    我的基本想法好像太阁立志传一样,从一个无名到当皇帝统一全国的过程,并且可以经商的游戏。但与现在单机游戏不同的最大一个特点,我希望他是全即时的,人的做法和电脑AI具有同样思维,想法已经有几年了,而且也做过相应的测试,所有电脑将每个指令分成若干指令在每循环中执行,不会影响多大的速度,所有的图像处理均只是可视范围.
    当然我也知道现在还没有一个大的游戏是用VB编的,但是用VB的朋友太多了,如果能够基本成功的话也对VB程序员是一种激励和福音,即使不让,失败了公布一下源代码应该还是有一些帮助。对程序的速度的问题:图像我采用dictdraw+VB,一些特效处理用VC做成DLL,现在测试速度很快,对于程序的其它部分我想可以采用最优的代码提高执行速度.问我为什么想用vb来写,因为所有这些只是我业余爱好而已。
      

  5.   

    http://xprogrammer.3322.org/proj/index.asp好像没什么嘛
      

  6.   

    http://xprogrammer.3322.org/proj/index.asp好像没什么嘛
      

  7.   

    废话,肯定用的DirectX,不关什么语言,不用DirectX肯定不行,即使是VC++,速度也跟不上
      

  8.   

    能不能支持网络对战的,这样人跟人拼智慧嘛。比电脑聪明多啦。
    不过,小弟还是支持的。
    想问一下,你的邮箱是多少。我也有想法,能不能联系?
    我的是:[email protected]
      

  9.   

    flylonginsky(龙行天下):
    我的邮箱:yinxiaodan.163.net
      

  10.   

    http://xprogrammer.3322.org/proj/index.asp是别人asp网络开发论坛,前些天关闭了
      

  11.   

    其实,所谓VB速度慢,只是一些人的VB功力太低罢了。图象自有处理办法,其他的更不成问题。况且如果是网络游戏,那瓶颈主要在网络和硬盘上。同样的一个问题,在考虑速度的时候,程序写法就不一样。
      

  12.   

    北京浮生记不错,不过是vc编的,vb要编也不难
      

  13.   

    楼主想法不错啊,
    我以前也有这个想法
    但是现在没有了,原因是VB是相对简单的语言,在语法和数据类型方面还不是很严谨,而且,在代码编制上是很费事的事情,最好是能用JAVA,或者C/C++,个人意见,见谅!
      

  14.   

    只要有创意,还要策划好
    用 Dx,还要有好的算法
    2d 还是 3d 的?
      

  15.   

    高,实在是高!我从小就玩三国,希望能在不久的将来看到你的特殊的三国游戏鼓励ing
      

  16.   

    用VB控制不了很多东东如内存分配等,当然也许有许多高手能做到这一点,
    所说的多线程问题也是可以解决的,我就在一本杂志上看到过VB处理多线程
    。我个人做过不少小软件。因为我是一所学校的网管。事业单位大家都知道,
    人多事少。所以就有空学了很多东西。VB、VC、oracle一大堆有用没有用的东西。
    但从没有做过什么像样的项目。工作四年了,也学习了四年东西学了不少精的没有
    所以像楼主这样有志向的人我想你VB学得挺好的。望你多多努力学精一门技术成为真
    正的高手。
    祝你成功,虽然有一定难度但我想你还会是成功的。
      

  17.   

    说vb慢,vb 不好用vb没有指针,vb不能多线程的人。
    因为你们是井低之蛙,
    过于自以为事,
    在贬低一个语言的时候还是先提高自己的能力吧!
      

  18.   

    to rednod(奋斗ing.......) 
    vb在某些方面真的不行,尽管他有他的优点,但就象人一样,各有专长,vb的专长不在这里。不过说vb什么都不行我不赞成,要知道winxp操作系统的原代码中还有vb的身影呢
      

  19.   

    看看一些效果的DEMO程序
    http://www.cndevx.com/club/dispbbs.asp?boardid=43&id=30048&star=1#177743
      

  20.   

    做游戏可是个大问题,关键不在于编程。
    要有策划、美工。要有投入、投资。
    一般人,玩玩可以,别认真。
    图像方面用DirectX,逻辑方面要编个核心引擎,界面嘛,VB当然可以胜任。
    请楼主不要舍本求末,界面只是游戏中几乎可以忽略不计的小问题,用什么语言无所谓。
      

  21.   

    to:Gelim(Gelim)
    我说是因为,奇怪的论调太多了。更本没有认真的去了解一个语言,其实有些其它的我也在学,也在用的,现在做的这个是用vb的,我既没有用c/s又没有用b/s,解决的网络应用的一个很重要的问题, 可能我做的这个系统条件有些特殊。
    但绝不是一个小系统,
    所以我想,说任何话 做任何事的时候,尤其在贬低某样事的时候,最好去了解它,如果没有时间了解,请不要盲从。
    所以我同时尊敬其它语言!尊敬创建他们的前辈!虽然我不清楚他们的名字,经历。希望有天可以达到他们的高度。
      

  22.   

    VC+VB应该没问题的,最麻烦的是美工的问题。
      

  23.   

    VB慢----确实如此。
    VB没有指针----请用VB尝试一下最简单的取址运算。我不认为VB高手就能做到。
    关于多线程:你真的能用VB实现多线程?请问是线程还是进程?
      

  24.   

    to boybluesky(boybluesky) :
    "VB慢----确实如此。"
       这点我赞同,但你知道是什么慢吗?运行效率?开发速度?如果你不知道,请不要人云亦云"VB没有指针----请用VB尝试一下最简单的取址运算。我不认为VB高手就能做到。"
       这点我也赞同,但是你不知道VB可以通过API来实现内存分配和取址运算,甚至内存复制吗?要知道这些知识,多点看这里的文章吧!"关于多线程:你真的能用VB实现多线程?请问是线程还是进程?"
       VB通过调用API,同样可以实现到多线程,难道这你都不知道?那你最好还是再看看VB的一些提高书籍了!
      

  25.   

    估计算法如果能实现,vb肯定没有问题,不过单纯的vb肯定不行,有些地方用vb真的是不太现实。但是主体可以是vb实现的
      

  26.   

    应该可以,又不是做星际争霸那样的游戏做三国这种类似于RPG的没有什么问题
      

  27.   

    三国为什么一定要是RPG
    以前街机上不就有个ACT吗
      

  28.   

    可行性是100%,但要熟练多种知识。我看了楼上几位仁兄的留言说用VC写,好像VB就不适合写。当然VC是有VB表面上无法实现的功能(有它的好处),但VB绝对不至于连这样的程序都不能胜任。而且开发即时战略游戏主要需要的是图形动画技术、网络多播技术和AI技术,我想这几个技术不是一定要用VC才能实现吧。
      图形动画可以采用DX,网络多播可以采用API,至于AI就是靠设计者的逻辑思维能力加上些VB代码就可以了。对于速度问题,当然VB和VC是有些差距的,但是以目前的硬件情况来说,在一个处理好的VB代码上看,已经没有多大区别了。如果硬要拿些486来说,相信很多VC的游戏也用不了吧。呵呵。
      

  29.   

    AI的制作是个大问题呢!还有就是VB的运行速度的问题!!
      

  30.   

    VB本身是一个高速的COM组件生成工具.因此,用VB来开发AI运算量大或3D处理量大的游戏根本就不现实.但是如果用VB+DirectDraw API来开发2D的普通的SLG\RPG\ACT等之类的游戏,VB是卓卓有余的!
      

  31.   

    其实VB也很强的,我认识的一个朋友用VB写了一个横版射击的游戏,简直就象是伪3D的,不论任何的语言,研究透了都是无所不能的。我的朋友写这个游戏用了半年,音乐都是原创的。我现在不得不转向DELPHI,虽然有一点苦闷但PASCAL的数据结构有教程啊,很不错。我现在很没有开发的动力了,请大家给我点激情吧。
      

  32.   

    VB绘图事实不比慢多少,主要还是要精简算法,试试DIB吧
      

  33.   

    唉,多线程
    为什么大家非得钻牛角尖呢?难道单任务的dos时代就没有优秀的游戏可玩了吗?
    记住一点,很多事情都是结果比过程重要,你能实现即可,别人也看不到你的代码。
    vb在某些方面的开发确实存在不容忽视的效率问题,可并非不可解决的。
    去年我移植一个纯c写的nes模拟器到vb,把多线程完成的任务挤到一个do循环完成,加上大量的指针和内存操作,优化了3个月的程序,在c300+64m上面可以跑到70-90fps。
    所以vb程序员们呀,不要妄自菲薄了,精研你们的技术吧。
    我的一个ms的工程师说过这样一句话:除去先天不足的方面,我可以在比较少失效率的情况下用vb完成任何vc能够完成的任务。
      

  34.   

    唉,多线程
    为什么大家非得钻牛角尖呢?难道单任务的dos时代就没有优秀的游戏可玩了吗?
    记住一点,很多事情都是结果比过程重要,你能实现即可,别人也看不到你的代码。
    vb在某些方面的开发确实存在不容忽视的效率问题,可并非不可解决的。
    去年我移植一个纯c写的nes模拟器到vb,把多线程完成的任务挤到一个do循环完成,加上大量的指针和内存操作,优化了3个月的程序,在c300+64m上面可以跑到70-90fps。
    所以vb程序员们呀,不要妄自菲薄了,精研你们的技术吧。
    我的一个ms的工程师说过这样一句话:除去先天不足的方面,我可以在比较少失效率的情况下用vb完成任何vc能够完成的任务。
    --------------------------
    同意,以前刻意采用vb使用多线程,但经常非法操作
    后来尽量用循环实现, 实在实现不了的。 做过一个exe。然后让住exe运行的时候调用
    我实现不了多线程序, 多进程总可以了吧。 补:做过的一个CallCenter就是这样实现的
      

  35.   

    vb是有些慢,子弹效果一多,速度下降明显,独龙900机器上运行,Deom只有20~30fps
    况且我要做的才百分之一
    http://www.cndevx.com/club/dispbbs.asp?boardID=43&ID=30048
      

  36.   

    回复 zjkuki(酷奇) ( ) 信誉:99  
    很久没来,现在才看见您老回的帖子。
    VB慢主要在于basic语言本身从始至终,从头到尾都是一种解释型执行的语言,当然慢的另外一个原因是其臃肿的语法结构。如果你认为VB快,那确实是微软无数精英努力的结果。但是,你可以感受一下VB的任何产品和同类其它语言编写的产品的速度。比如word和wps,比如一些常见的管理软件和财务软件。这些地方处处可以看见VB和其它语言的竞争。VB的生存更多利用了漂亮的界面和各种完善的构思,而不是速度。
    关于VB对系统api的调用:我如果连这点都不知道,那我想别人不会同意我领导一个团队进行VB开发了。我这里想说的意思是:VB无法用自身的手段实现类似系统api的功能。
    关于VB的多线程:你如果认为能够实现,那你真的错了。VB所有的类库都是为单线程设置的。你可以调用这个,调用那个,甚至可以直接调用一个别人写的多线程程序。但是,这应该与VB无关。
      

  37.   

    回复BoyBlueSky
      很久没来,一来就看见您老回的帖子。
      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的认识,我还是要奉劝您一句,千万不要人云亦云啊!!
      

  38.   

    //可以试试,或许用dictdraw是个不错的想法
    不用DirectDraw不可能啊(当然可能是可能,只是不可能……呵呵,反正只可意会)
      

  39.   

    同意zjkuki(酷奇)。
    VB不适合做MultiThreaded程序,但是并非不能做到
    还有,VC也是调用API的。除非你用C从头编起,或者用汇编。那才叫自身实现API功能。
    //VB的生存更多利用了漂亮的界面和各种完善的构思
    VB的界面并不漂亮,构思非常紊乱。我不认为VB靠这两点取胜。VB就是靠对初级用户的简单便利高效,和对高级用户COM开发的高效可靠这两点取胜的。
      

  40.   

    到那去看下吧:
    http://www.pointsmoney.com/userprofile.php?auid=747173959&ID=378120
      

  41.   

    zjkuki(酷奇) 你对vb线程的理解错了
      

  42.   

    zjkuki(酷奇):不知道你在用CreateThread过程中,是否遇见了一堆毛病?知道为什么吗?因为VB6仅支持运行多个单线程的单元。一个单元实际上是代码执行的空间,而单元的边界限制了代码访问任何单元以外的事物。虽然VB6支持多个单线程的单元,不过它并不支持一个自由线程的模型,即不允许多个线程使用同一套数据。这不是真正意义上的多线程的。明白?
    我不是做项目管理的。
    如果你坚持认为VB开发的产品是以速度取胜,也未尝不可。我从来不坚持用只用一种语言进行开发。VB开发确实以“速度”取胜,开发速度而已。
      

  43.   

    用vb + sdk没有问题,除了语法与c不同之外,速度不会慢的
      

  44.   

    哦兄弟你还在吗?放手去做吧~这末多兄弟支持你~Me too~
      

  45.   

    VB6中“不能”多线程主要是因为其提供的对象都不是线程安全的。但是理论上可以创建线程。(线程中如果不去访问对象的话)
    所以说虽然多线程是可以的,但是不推荐的,而且这样的没有安全的线程用处极其有限。如果要基于多线程,VB6就不可取了。