2015-05-28 24 views
-2

我正在康威的生活遊戲中使用2條規則。 第一條規則是我們有10%在我們的網格中出現綠色的良好細胞,它可以從它周圍產生所有細胞,而且我們有相同的百分比來生成破壞細胞周圍所有細胞的紅色壞細胞。我無法理解如何實現這一點。 有沒有人有關於如何做到這一點的想法?Conways具有更多規則的人生遊戲

細胞用鼠標繪製創建:

var livingCells = me.cells.filter(function(c){ 
     return c.isAlive; 
    }).forEach(function(c){ 
     ctx.fillStyle = me.cellColor; 
     ctx.fillRect(c.x * width, c.y * height, width, height); 

    }); 

然後,我的鄰居檢測和檢查什麼細胞會死亡或仍然活着,:

me.getNeighbors = function(){ 

    return [grid.getCell(x-1, y-1), 
      grid.getCell(x-1, y), 
      grid.getCell(x-1, y+1), 
      grid.getCell(x, y-1), 
      grid.getCell(x, y+1), 
      grid.getCell(x+1, y-1), 
      grid.getCell(x+1, y), 
      grid.getCell(x+1, y+1)]; 

} 
me.shouldDie = function(){ 
    var livingNeighbors = me.getNeighbors().filter(function(c){ 
     return c.isAlive; 
    }); 


    if(livingNeighbors.length < 2){ 
     return true; 
    } 

    if(livingNeighbors.length > 3){ 
     return true; 
    } 

    return false; 
} 


me.shouldBeBorn = function(){ 
    var livingNeighbors = me.getNeighbors().filter(function(c){ 
     return c.isAlive; 
    }); 

    if(livingNeighbors.length === 3){ 
     return true; 
    } 
    return false; 
} 

My solution with original rules

+0

英文請問? :) –

+0

@ValentinWaeselynck,對不起我的英文,你不要低頭嗎?也許我可以更詳細地解釋。 – Vaik

+0

我不得不承認我不知道「出生」是什麼意思。另外,我們有10%*什麼*? –

回答

0

假設你有一個版本使用原始規則,您的設計包含一箇中間緩衝區來存儲活動/死亡值,而該字段仍在分析中。

爲了實現新規則,您需要另一個緩衝區。

如:

field = Conway_field() 

while True: 
    buffer1 = apply_rule_1(field) 
    buffer2 = apply_rule_2(buffer1) 
    field = buffer2 

所以,如果我理解你的問題,你需要根據你的新規則基礎上,定期的規則來計算的下一代,然後計算出一代又一代。此外,它soulds像你想實現可以分兩步走,像這樣的新規則:我知道你不會使用python

field = Conway_field() 

while True: 
    buffer1 = regular_rules(field) 
    buffer2 = add_random_red_or_green_cells(buffer1) 
    buffer3 = kill_red_neighbors_birth_green_neighbors(buffer2) 
    field = buffer3 

,但我認爲這是一個說明點。希望這可以幫助!