2012-06-01 33 views
0

我真的不知道這種彌散問題是否適合在這裏,但我會無論如何給它一個去。顯示相同的'會話',基於回合的Django遊戲

我在Django建立了一個基於回合的(Yatzee)遊戲,在那裏我爲用戶/玩家建立了一個拉力賽簡單模型,併爲每個用戶記分牌設計了一個更加複雜的模型。

新遊戲會生成一個新的記分牌,它基本上由一些int字段和布爾字段組成,每個記分對應一個分數(例如,如果您獲得兩對,則會有一個字段可以保存分數和字段,將其設置爲'分配')

事情是,用這種方法,我將分數保存到數據庫(sqlite)每轉之後,我將能夠'暫停'一場比賽,並在稍後繼續。

我現在想開始研究,而不真正知道從哪裏開始尋找的是如何在網絡上「託管」兩個或更多個播放器的遊戲。如果他們都坐在同一臺電腦上,那就沒有問題了,因爲我可以通過javascript控制玩家/記分牌的數量。

爲了達到這個目的,我正在考慮以某種方式將屬於'togheter'的記分板分配給一個會話,但是我應該如何以及在哪裏做這個事情,現在還不在我的範圍之內。

我已經讀了一些關於Django中間件的內容,但是不知道如果這個wolud是比試圖從模型層解決它更好的方法(它相信會很難......)。

回答

0

我不知道中間件與此有什麼關係。

最簡單的方法肯定是將遊戲模型中的外鍵指向Player1和Player2的auth.User模型。

+0

我也是,因此:這個問題。 – BSG

1

完成此操作的一種方法是構建一個用於輪詢玩家活動後端的javascript框架。有許多玩家活動的追蹤:

  1. 新遊戲
  2. 玩家離開遊戲/超時
  3. 遠程玩家的回合擲骰子
  4. 本地玩家的回合擲骰子

我建議有一個計時器的AJAX功能,輪詢服務器的更新或張貼本地球員的活動。

當我說javascript框架時,我指的是一種處理客戶端自動輪詢和更新的方式。

請注意,您不能依靠javascript來處理遊戲規則,擲骰子等等所有必須在服務器上完成的操作。 JavaScript應該只更新玩家的GUI以顯示當前狀態。因此,您需要AJAX調用類似以下操作:啓動新遊戲,檢查遠程活動,滾動骰子,保存玩家選項(玩家選擇保存3 * 6成對)等等。

+0

另外,玩家應該能夠開始一個會話(新遊戲),並且其他玩家應該能夠搜索該玩家能夠加入的遊戲。 – Mikael

+0

很多很好的意見,謝謝。我會盡快找到他們,AJAX聽起來像是艱難的路。 我acctually希望我colud保持遊戲的嚴格客戶端的「遊戲」的一部分,因爲它是這是唯一的興趣,如何得到的結果骰子的結果並不重要,但我可能是錯誤。 – BSG

+0

好吧,如果骰子邏輯是對事物的客戶端,作弊將是可能的。一個技術玩家將能夠假冒擲骰,並告訴你的系統,骰子的給定組合推出了無任何控制。 – Mikael

相關問題