這跟多工什么關系咧,別把問題攪的那么復雜。
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更好的想法可提供參考....->