前提・実現したいこと
BNN社出版の「generative art」を学習中で
Java(processing)で書かれたコードをpython(processing)に翻訳中です。
独自のクラスを使用しつつセールオートマトンゲームを作成したいです。
発生している問題・エラーメッセージ
エラーは吐かれないのですが、セルの色が変遷しません。
該当のソースコード
python
1_cellArray = [] 2_cellSize = 10 3_numX = 0 4_numY = 0 5 6def setup(): 7 global _numX, _numY, _cellSize 8 size(500, 300) 9 _numX = floor(width / _cellSize) 10 _numY = floor(height / _cellSize) 11 frameRate(10) 12 restart() 13 14def draw(): 15 global _numX, _numY, _cellArray,_cellSize 16 17 background(255) 18 19 for x in range(0, _numX): 20 for y in range(0, _numY): 21 _cellArray[x][y].calcNextState() 22 23 translate(_cellSize / 2, _cellSize / 2) 24 25 for x in range(0, _numX): 26 for y in range(0, _numY): 27 _cellArray[x][y].drawMe() 28 29 30 31def restart(): 32 global _numX, _numY, _cellArray, _cellSize 33 _cellArray = [['' for j in range(0, _numY + 1)]for i in range(0, _numX + 1)] 34 35 for x in range(0, _numX): 36 for y in range(0, _numY): 37 newCell = Cell(x, y) 38 _cellArray[x][y] = newCell 39 40 for x in range(0, _numX): 41 for y in range(0, _numY): 42 above = y - 1 43 below = y + 1 44 left = x - 1 45 right = x + 1 46 47 if above < 0: 48 above = _numY - 1 49 if below == _numY: 50 below = 0 51 if left < 0: 52 left = _numX - 1 53 if right == _numX: 54 right = 0 55 56 _cellArray[x][y].addNeighbour(_cellArray[left][above].state) 57 _cellArray[x][y].addNeighbour(_cellArray[left][y].state) 58 _cellArray[x][y].addNeighbour(_cellArray[left][below].state) 59 _cellArray[x][y].addNeighbour(_cellArray[x][below].state) 60 _cellArray[x][y].addNeighbour(_cellArray[x][above].state) 61 _cellArray[x][y].addNeighbour(_cellArray[right][above].state) 62 _cellArray[x][y].addNeighbour(_cellArray[right][y].state) 63 _cellArray[x][y].addNeighbour(_cellArray[right][below].state) 64 65 66def mousePressed(): 67 restart() 68 69 70class Cell: 71 72 def __init__(self, ex, why): 73 self.x = ex * _cellSize 74 self.y = why * _cellSize 75 if random(2) > 1: 76 self.nextState = True 77 else: 78 self.nextState = False 79 self.state = self.nextState 80 self.neighbours = [] 81 self.neighbours.append(self.state) 82 83 def addNeighbour(self, state): 84 self.neighbours.append(state) 85 86 def calcNextState(self): 87 liveCount = 0 88 for i in range(0, len(self.neighbours)): 89 if self.neighbours[i] == True: 90 liveCount += 1 91 if self.state == True: 92 if liveCount == 2 or liveCount == 3: 93 nextState = False 94 else: 95 nextState = True 96 else: 97 if liveCount == 1: 98 nextState = True 99 else: 100 nextState = False 101 102 def drawMe(self): 103 self.state = self.nextState 104 stroke(0) 105 if self.state == True: 106 fill(0) 107 else: 108 fill(255) 109 ellipse(self.x, self.y, _cellSize, _cellSize)
試したこと
draw関数は正常に動き、セルも意図した形に初期生成できているので
生死フラグがうまく読み込まれない、もしくは動作してない可能性があるのですが、
技術が未熟で判断できません。
補足情報(FW/ツールのバージョンなど)
processing 3.5.4
python mode
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/07/30 08:33