2013-04-07 48 views
1

我是iOS新手(雖然我的確有很多C++經驗),我正在使用gamecenter開發基於回合的紙牌遊戲。這就是傳球 - 現在輪到的球員是裁判,並在轉彎結束之前等待所有其他球員打出一張牌。在Game Center中有沒有辦法做到這一點,因此所有球員都選擇同時做什麼,一旦完成了這些,法官會得到通知,做出決定,然後將優先權交給下一位球員?例如,假設我們開始回合1.我問這個問題,@「你最喜歡什麼顏色?」對所有通過他們的玩家都有一個作爲問題的遊戲狀態,他們沒有回答。然後你迴應,@「綠色」,我們的朋友史蒂夫迴應@「藍色」。然後我決定哪個更好,給你一個觀點,然後我給出的觀點成爲新的評委。我的問題是,我如何讓所有球員同時做出反應,而不是順序進行。我知道,最壞的情況下,我可以依次循環播放直到它回到我身邊,然後判斷它,但這會減慢我的遊戲速度,使它變得不那麼有趣。有沒有辦法同時做到這一點?遊戲中心同時打開

+0

如果您在任何球員做出選擇後立即通知裁判球員,那麼運行在裁判面的代碼應該很容易知道他們是否得到了所有答案。對? – Fraggle 2013-04-07 03:20:29

回答

1

iOS API圍繞順序轉彎模型構建。儘管您提到的解決方法可行,但無法讓GC執行並行轉換。對不起):

+0

作爲一個擴展,從iOS7開始,這可以通過交換來實現 - 這種機制允許不是當前玩家的玩家向其他玩家傳輸數據並更新匹配狀態。 – Xono 2013-10-21 23:25:23

1

我同意NSSplendid關於需要順序轉向的基於Turnbased的遊戲的API。唯一真正的同時進行的方法是使用GKMatch的實時比賽,對於超過少數球員的比賽來說這不是真正的選擇。

但是,順序版本可以通過對遊戲中心使用程序化方法而不是默認視圖控制器稍微改進。

結束轉動通過Game Center觸發推送通知,並通過使用GKTurnBasedEventHandler的方法handleTurnEventForMatch:didBecomeActive :,您可以在您的應用程序中接收該通知。當法官問這個問題時,讓用戶將這個問題顯示爲遊戲的一部分,並將他們的回答存儲在本地,直到輪到他們。一旦它變成給定的玩家,即使在後臺應用程序中,他們也會收到通知。

在該方法中,它可以檢查本地存儲的答案並立即結束,如果他們已經回答。如果沒有,請在答案完成後發送。這並不是真正的同時進行,但法官會在每個人都回應後立即得到答案,球員不必等待一名球員完成,然後他們可以輸入自己的答案。

玩家不會得到通知,法官已經結束輪到他們打開應用程序,但他們不能看到問題反正沒有這樣做。另一種方法雖然有些浪費,但在法官結束輪到他們的問題之後,一旦他們得到「你的回合」通知,所有參與者輪到他們輪換,所以每個人都知道一個問題被問到,然後按照前兩段的步驟進行。