用VB開發即時戰略游戲
發表于:2007-07-14來源:作者:點擊數:
標簽:
我先解釋一下設計方法。 1.這叫棋子操縱模式。 2.回合制采用單方棋子操縱模式,也就是敵方棋子由電腦操縱,使用者棋子由使用者操縱。 3.即時制采用雙方棋子操縱模式,也就是雙方棋子都由電腦操作,只是電腦允許使用者改變我方棋子行為模式而已。 4.我們可以
我先解釋一下設計方法。
1.這叫棋子操縱模式。
2.回合制采用單方棋子操縱模式,也就是敵方棋子由電腦操縱,使用者棋子由使用者操縱。
3.即時制采用雙方棋子操縱模式,也就是雙方棋子都由電腦操作,只是電腦允許使用者改變我方棋子行為模式而已。
4.我們可以這么想,電腦由一個時間器(Timer) 隔一段時間去動一下敵我雙方的所有旗子,也就是說使用者如果不動作,其實就是看電腦自己在下棋。
5.但一旦使用者指定某棋子時,該棋子移動指標就被標為 False ,如此電腦在每一棋步中碰到該棋子就不會對它有所動作,但其他棋子則繼續動作,直到使用者設定完該棋子行動方式后,行動指標恢復為 True ,意思就是繼續交還電腦控管。
6.用一個最簡單的 VB 模型來說明:
Type 棋子模式
行動指標 As Boolean
行為模式 As SomeValue
End Type
'假設有十顆棋子
Dim 棋子(9) AS 棋子模式
Sub Form_Load()
Dim I As Long
棋子(0).行為模式=敵A
棋子(1).行為模式=敵B
.
.
棋子(5).行為模式=我A
棋子(6).行為模式=我B
.
.
For I=0 To Ubound(棋子)-1
棋子.行動指標=True
Next
End Sub
Sub 棋子_Click(Index As Integer)
棋子(Index).行動指標=False
Call 行為模式改變(Index)
End Sub
Sub 行為模式改變(Byval 傳入值)
'...............行為模式改變設定
棋子(傳入值).行為模式 =新行為模式
棋子(傳入值).行動指標=True
End Sub
Sub Timer_Timer()
Dim I As long
For I=0 to UBound(棋子)-1
If 棋子(I).行動指標=True Then
Call 棋子行動 (棋子(I).行為模式)
End If
Next
End Sub
Sub 棋子行動(ByVal 傳入值)
Select Case 傳入值
Case 敵A
敵A 模式行動展開
Case 敵B
敵B 模式行動展開
.
.
Case 我A
我A 模式行動展開
Case 我B
我B 模式行動展開
.
.
End Sub
至于戰車跑幾步,士兵發幾槍,被 K 多少下才會隔屁,可借行為模式的增加來設定,不過這種各兵種不同屬性的設定,不管回合制或即時制都需要有此種機制,不構成雙方分別的要件。
原文轉自:http://www.anti-gravitydesign.com