龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > VB开发 >

即时即战游戏的写法

时间:2009-12-30 15:42来源:未知 作者:admin 点击:
分享到:
这跟多工什么关系咧,别把问题搅的那么复杂。 1.这叫棋子操纵模式。 2.回合制采用单方棋子操纵模式,也就是敌方棋子由电脑操纵,使用者棋子由使用者操 纵。 3.即时制采用双方棋子
这跟多工什么关系咧,别把问题搅的那么复杂。
  1.这叫棋子操纵模式。
  2.回合制采用单方棋子操纵模式,也就是敌方棋子由电脑操纵,使用者棋子由使用者操
  纵。
  3.即时制采用双方棋子操纵模式,也就是双方棋子都由电脑操作,只是电脑允许使用者
  改变我方棋子行为模式而已。
  4.我们可以这么想,电脑由一个时间器(Timer)隔一段时间去动一下敌我双方的所有旗
  子,也就是说使用者如果不动作,其实就是看电脑自己在下棋。
  5.但一旦使用者指定某棋子时,该棋子移动指标就被标为False,如此电脑在每一棋
  步中碰到该棋子就不会对它有所动作,但其他棋子则继续动作,直到使用者设定完该棋
  子行动方式后,行动指标恢复为True,意思就是继续交还电脑控管。
  6.用一个最简单的VB模型来说明:
  
  Type棋子模式
  行动指标AsBoolean
  行为模式AsSomeValue
  EndType
  
  '假设有十颗棋子
  Dim棋子(9)AS棋子模式
  
  SubForm_Load()
  DimIAsLong
  
  棋子(0).行为模式=敌A
  棋子(1).行为模式=敌B
  .
  .
  棋子(5).行为模式=我A
  棋子(6).行为模式=我B
  .
  .
  ForI=0ToUbound(棋子)-1
  棋子.行动指标=True
  Next
  EndSub
  
  Sub棋子_Click(IndexAsInteger)
  棋子(Index).行动指标=False
  Call行为模式改变(Index)
  EndSub
  
  Sub行为模式改变(Byval传入值)
  '...............行为模式改变设定
  棋子(传入值).行为模式=新行为模式
  棋子(传入值).行动指标=True
  EndSub
  
  SubTimer_Timer()
  DimIAslong
  ForI=0toUBound(棋子)-1
  If棋子(I).行动指标=TrueThen
  Call棋子行动(棋子(I).行为模式)
  EndIf
  Next
  EndSub
  
  Sub棋子行动(ByVal传入值)
  SelectCase传入值
  Case敌A
  敌A模式行动展开
  Case敌B
  敌B模式行动展开
  .
  .
  Case我A
  我A模式行动展开
  Case我B
  我B模式行动展开
  .
  .
  EndSub
  
  至于战车跑几步,士兵发几枪,被K多少下才会隔屁,可借行为模式的增加来设定,
  不过这种各兵种不同属性的设定,不管回合制或即时制都需要有此种机制,不构成双方
  分别的要件。
  
  >※Origin:枫桥驿站◆From:140.135.19.207
  
  小三撰写于文章<3Q8045$uvc@titan.cc.ntu.edu.tw>...
  >※引述《penguinmax.bbs@bbs.ntu.edu.tw(inkfish)》之铭言:
  >:玩过红色警戒这类"即时战略"的玩家都应该知道它的玩法
  >:也就是我方可不断移动单位来部属或是作战同一时间内
  >:电脑所控制的玩家也同时进行这两项动作问题来了
  >:假如大家还没忘记的话当时红色警戒上市时还是80486CPU
  >:加上DOS6.x的作业系统换句话说当时的DOS还不是一个多工的系统
  >:但是红色警戒玩起来却煞有其事好像有多工的样子(战车可自由移动不须
  等
  >:电脑动玩才能动换言之没有回合的限制)所以请问一下要如何在一个没
  有多工
  >:的系统上模拟出一个多工的样子?
  >:假如改在现在的多工作业平台如WIN95以上的系统要如何做到此一功能呢?
  >:thread吗?还是....
  >:请各位高手不吝赐教!
  >:byPENGUINmax
  >
  >先宣告阵列
  >dima(10,2)
  >其中a(1,1),a(2,1),a(3,1),a(4,1......当作'移动时间值'
  >而a(1,2),a(2,2),a(3,2),a(4,1......当作'时间经过累加器'
  >
  >例如:有一士兵,和一战车要做移动,我们把a(1,X)当作是士兵,a(2,X)当作是战车,
  >假设我们给士兵的'移动时间值'5,给战车的'移动时间值'10(设士兵比战车
  >移动还快),而我们同时将每个'时间经过累加器'(a(1,2),a(2,2),a(3,2...)
  >加一,最后判断a(1,1)和a(1,2),a(2,1)和a(2,2),a(3,1....各是否相等,
  >如果相等就是该单位要移动的时候啦...^^
  >
  >以上是小弟的想法不知是否有高手有别的or更特别or更好的想法可提供参考....->

精彩图集

赞助商链接