|    | 
     以下は自分が作ったVBAでのライフゲームなのですが 
一度黒くなったセルはもう二度と黒くならないようにしたいです。 
どのようにすればいいのかご教授ください。 
また、できれば以下のプログラムにパラメータを組み込みたいと考えています。 
それは確率です。たとえば、8近傍のセルのなかに1つでも黒いセルがあったとき 
中心のセルは1/2で黒くなるなどです。 
もしわかる方がいましたらこれも含めてご教授ください。 
よろしくお願いいたします。 
 
Sub lifegame3() 
  Worksheets("sheet1").Activate 
  Dim i As Integer, j As Integer, n As Integer, x As Integer 
  Dim ip As Integer, im As Integer, jp As Integer, jm As Integer 
  Dim g As Integer 
         
  'セルの数 
  n = 50 
  Dim k(50, 50) As Integer, k2(50, 50) As Integer 
   
  '世代数 
  t = Range("AZ52").Value 
   
   
  '初期条件 
  Randomize 
  For i = 1 To n 
    For j = 1 To n 
      If (Rnd() < 0.4) Then 
        Cells(i, j).Interior.ColorIndex = 1 
        k(i, j) = 1 
      Else 
        Cells(i, j).Interior.ColorIndex = 2 
        k(i, j) = 0 
      End If 
    Next 
  Next 
 
 
  For g = 1 To t 
     
    For i = 1 To n 
      For j = 1 To n 
        '端のセルの処理 
        ip = (i Mod n) + 1 
        im = n - ((n + 1 - i) Mod n) 
        jp = (j Mod n) + 1 
        jm = n - ((n + 1 - j) Mod n) 
        x = k(im, jm) + k(i, jm) + k(ip, jm) + k(im, j) + k(ip, j) + k(im, jp) + k(i, jp) + k(ip, jp) 
        If (k(i, j) = 1) Then 
          If (x = 2 Or x = 3) Then 
            k2(i, j) = 1 
          Else 
            Cells(i, j).Interior.ColorIndex = 2 
            k2(i, j) = 0 
          End If 
        Else 
          If (x = 3) Then 
            Cells(i, j).Interior.ColorIndex = 1 
            k2(i, j) = 1 
          Else 
            k2(i, j) = 0 
          End If 
        End If 
      Next 
    Next 
     
    For i = 1 To n 
      For j = 1 To n 
        k(i, j) = k2(i, j) 
      Next 
    Next 
    Range("BB52").Select 
    Selection.Value = g 
  Next 
End Sub 
 | 
     
    
   |