2013-03-28 54 views
0

我實際上正在爲一款遊戲設計一個「地面指標引擎」。我基本上做的是真正的地圖數據複製到另一個關聯數組,並將其映射一些度量屬性等生育力或溼度,這裏是一個示例代碼:關聯數組中的美麗數字

this.metricsMap = {}; 
this.generatedFertilities = {}; 

for (var i = 0; i < this.groundMap.data.length; i++) { 
    this.generatedFertilities[i] = this.groundMap.data[i].map(function() { 
     // TODO 
    }); 
} 

for (var i = 0; i < this.groundMap.data.length; i++) { 
    this.metricsMap[i] = this.generatedFertilities[i].map(function (res) { 
     return { 
      ownedBy: "", 
      fertility: res, 
      humidity: 50 
     } 
    }); 
} 

地圖數據是作爲關聯數組[32 ] [32]。我想生成相應的「生育矩陣」一致性和「數浪」,這裏是什麼,我想嘗試做一個小的關聯數組大圖:

[68, 69, 70, 71, 72, 73, 74, 75, 74, 73], 
[69, 70, 71, 72, 73, 74, 75, 74, 73, 72], 
[70, 71, 72, 73, 74, 75, 74, 73, 72, 71], 
[71, 72, 73, 74, 75, 74, 73, 72, 71, 60], 
[72, 73, 74, 75, 74, 73, 72, 71, 60, 59], 
[73, 74, 75, 74, 73, 72, 71, 60, 59, 58], 
[74, 75, 74, 73, 72, 71, 60, 59, 58; 57], 
[75, 74, 73, 72, 71, 60, 59, 58; 57, 56], 
[74, 73, 72, 71, 60, 59, 58; 57, 56, 55], 
[73, 72, 71, 60, 59, 58; 57, 56, 55, 54] 

我們想象的要多「的格局例如,在矩陣中間更集中的地方。

我嘗試這樣的東西很多東西:

var baseRand = Math.floor(Math.random() * 100) + 1; 
for (var i = 0; i < this.groundMap.data.length; i++) { 
    var counter = 0; 
    this.generatedFertilities[i] = this.groundMap.data[i].map(function() { 
     counter++; 

     // think of i like the y axis and counter like the x axis 
     if(i % 8 == 0){ 
      if(counter < 8){ 
       return Math.abs(Math.floor(baseRand++)); 
      } else { 
       return Math.abs(Math.floor(baseRand--)); 
      } 
     } else { 
      if(counter > 8){ 
       return Math.abs(Math.floor(baseRand--)); 
      } else { 
       return Math.abs(Math.floor(baseRand++)); 
      } 
     } 
    }); 
} 

但是,這並不讓我在某處,我與它背後的數學麻煩。你們會如何設計這樣的算法?

回答

0

我不知道我是否正確理解您的問題。你是否與真實地圖數據綁定?

如果不是,也許Perlin Noise是可以幫助你的東西。這種噪音功能可以很容易地用於遊戲中的地形生成。您只需將顏色值映射到高度值即可。

+0

不,我沒有綁定到實際地圖數據 – graph1ZzLle