2013-03-23 304 views
-2

與我一起,因爲我第一次學習這一點,但我試圖通過互聯網製作四人棋牌遊戲。到目前爲止,我有這些類:Java - 用於製作在線4人棋牌遊戲的結構

MultiPlayerServer 
MultiPlayerServerThread 

Client 

MultiPlayerServer使一個端口監聽,每當一個Client開始聽,它給責任到MultiPlayerServerThread處理請求,但在這裏,我的問題是:我想有一個類可以處理遊戲的狀態,我是否會創建一個靜態類(如果有的話,它可能會去哪裏?)。除此之外,客戶端需要大量的工作,因爲服務器將把客戶端數據作爲在哪裏繪製棋子和實現的其餘部分。

TL; DR 如果我是做一個多人在線4播放器棋牌遊戲服務器類,服務器線程類和客戶端類,其中可能是一個好地方,以使遊戲的副本,所以如果多人加入,他們都加入同一個遊戲,而不是爲自己創建遊戲。

回答

1

MultiPlayerServer應該「擁有」一個遊戲狀態的實例 - 這對所有玩家都很常見。 MultiPlayerServerThread類(抽象到客戶端的連接)包含對此通用對象的引用。

當客戶進行移動時,會訪問該公共遊戲狀態,如果移動合法,則會發生變化。

由於每個客戶端運行在單獨的線程中,因此通常需要進行同步以確保兩個客戶端不會在同一時間修改狀態。使用國際象棋這個問題不大,因爲規則只允許一名玩家一次修改遊戲狀態 - 但如果將「遊戲狀態」擴展到包含聊天記錄之類的內容,請注意引入此規則。

請注意,您可能需要設計這一點,因爲您可能會希望MultiPlayerServer跟蹤幾個 GameState對象。這將允許您的國際象棋服務器保持同時運行多個國際象棋遊戲。您需要額外的邏輯來跟蹤哪些玩家在哪些遊戲中玩。

+0

非常感謝svk,你對問題有真正的洞察力。非常感謝!祝你今天愉快 :) – Zac 2013-03-23 20:51:52