|
这跟多工什么关系咧,别把问题搅的那么复杂。 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更好的想法可提供参考....->
|
| |
|