2015-07-06 49 views
3

我正在用Java創建一個策略遊戲,爲此我正在編寫一個地圖編輯器。在遊戲開始之前,玩家在每個島上製作一個包含多個島嶼和一定數量資源的地圖。保存地圖後,選擇玩家人數。每個球員都有一個基地,基地必須位於彼此最遠的距離。離島策略遊戲基地距離

因此,假設我在5個島上加載地圖,並在遊戲開始時加入2個玩家 - 每個玩家必須有一個島。這些島嶼必須距離彼此最遠,所以它應該是這樣的:玩家1的島嶼,中立島嶼,中立島嶼,中立島嶼,玩家2的島嶼。

我不知道我的算法應該是什麼。

+1

是球員和島嶼要大多少?你可以蠻力 - 如果不是,則通過檢查所有組合來選擇'n''中的'k'項(其中'k'是玩家的數量,'n'是島的數量),對於小'k'和'n' - 它可以很快完成,不需要過度檢查。檢查「生成所有k個n的組合」有很多例子。 – amit

+2

我不是我不是一個mod,但我從來沒有理解爲什麼要關閉一個可以很快澄清的問題而不用提問呢?幾乎沒有問題,而且如果OP有反應,那麼問題它可以很快變成一個穩定的。 – amit

+1

我同意阿米特和投票重新開放。我認爲這個問題不是太廣泛,它很具體,可以通過評論中的幾個問題來澄清。 –

回答

0

此問題似乎等同於此問題:https://cs.stackexchange.com/questions/22767/choosing-a-subset-to-maximize-the-minimum-distance-between-points。有效解決這個問題可能是理論CS中的一個懸而未決的問題!既然這是爲了一個遊戲,我不確定你想以一個完美的最佳方式解決這個問題需要多少努力。

它應該是非常容易,快速和接近正確的產生一個隨機猜測和重複(擾亂它,衡量擾動猜測的不好之處,並且如果擾動猜測的不好之處比當前猜測更好使擾動猜猜當前的猜測)。

至於你認爲可能猜測的壞處,我的建議是「所有玩家居住的島嶼的平均值(到最近的玩家居住的島嶼的距離)」。

0

假設你的島嶼數量和你的玩家數量都很小,我認爲簡單的窮舉搜索將是最容易和最快速的實現方式。

  1. 構成一個矩陣,該矩陣包含從一個島到另一個島的距離。 (只需要
  2. 系統遍歷玩家展示位置的所有組合,從一個到所有其他玩家總結出每個距離和存儲的最大
+0

這是用於遍歷矩陣的二次時間乘以不同玩家的數量 – Mackiavelli