作爲我的個人項目,我開發了一個用戶可以隨時加入的遊戲。 我有一個平鋪的世界地圖,它是從一個簡單的位圖創建的,它的資源隨機位置遍佈整個地圖,除了海洋。尋找符合幾個標準的2D地圖上的位置
當一個玩家加入時,我想在一個地方創建自己的起始位置,這個地方至少有4個資源中的每個資源在1個區域內(圓圈還有一個直徑,我認爲是3-4個區塊),但沒有海洋瓷磚(Tile.Type!=「ocean」),並且不與屬於另一個玩家的字段衝突(Tile.Owner == null)。
地圖大小可以變化,目前它的大小是600x450,它被實現爲一個簡單的Array:Tile [] [],其Tile.Resource爲null或將Tile.Resource.Type作爲資源名稱的字符串(因爲它是可以通過明文文件進行配置,以適應任何我想放進去的景物,所以沒有內置的枚舉可能)。
我目前有一個簡單的循環遍歷每個可能的位置,檢查範圍中的每個字段並計算每個資源字段的數量,並丟棄它,如果其中沒有一個或者其中一個屬於某個玩家或者是一片海洋。
我寧願如果它發現一個隨機的位置,但那不是一個要求,單聲道兼容性是一個要求。
在C#中實現算法的最佳方法是什麼?
編輯
玩家可以和將增加/變化和資源可以使用了,甚至有可能隨機出現的區域(=>「你的勘探者發現新的金礦」),以便預計算出來的職位可能會不起作用。
這聽起來很有趣,感謝指針。我會讀到這。 – dbemerlin 2010-03-02 16:30:43
實現這一點看起來很有趣,儘管它可能並不總能給出最好的結果,但結果應該足夠好。解決方案接受 – dbemerlin 2010-03-03 07:50:18
我自己用它來做標籤應用程序,但是我從某個遊戲AI編程文章中得到了這個想法。我不記得來源。乾杯! – 2010-03-03 13:24:59