teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

追記

2018/12/02 18:11

投稿

8524ba23
8524ba23

スコア38352

answer CHANGED
@@ -10,4 +10,60 @@
10
10
  ![イメージ説明](35312bf206f801e8ec7db36506876f0e.png)
11
11
  ただしすぐに次の行で
12
12
  `AttributeError: 'points' object has no attribute '_size'`
13
- が発生してしまいます
13
+ が発生してしまいます。
14
+ ほかエラーをいくつか潰してみましたが、死滅セルの更新ができず、まともに動作させることはできませんでした。
15
+ ```Python
16
+ from vpython import *
17
+ from IPython.display import display
18
+ from numpy import zeros
19
+ import random
20
+
21
+ scene = display(width = 500 , height = 500 , title = 'Game of Life')
22
+ cell = zeros((50 , 50)); cellu = zeros((50 , 50))
23
+ curve( pos =
24
+ [(-49 , -49, 0) , (-49 , 49, 0) , (49 , 49, 0) , (49 , -49, 0) , (-49 , -49, 0)] , color = color.white) # ***
25
+ boxes = points(shape = 'square' , color = color.cyan)
26
+
27
+ def drawcells(ce):
28
+ boxes.empty() # ***
29
+ for j in range(0 , 50):
30
+ for i in range(0 , 50): # ***
31
+ if ce[i , j] == 1:
32
+ xx = 2*i - 50
33
+ yy = 2*j - 50
34
+ boxes.append(pos = (xx , yy, 0)) # ***
35
+
36
+ def initial():
37
+ for j in range(20 , 28):
38
+ for i in range(20 , 28):
39
+ r= int(random.random() * 2)
40
+ cell[j , i] = r
41
+ return cell
42
+
43
+ def gameoflife(call):
44
+ for i in range(1 , 49):
45
+ for j in range(1 , 49):
46
+ sum1 = cell[i-1 , j-1] + cell[i , j-1] + cell[i+1 , j-1]
47
+ sum2 = cell[i-1 , j] + cell[i+1 , j] + cell[i-1 , j+1] + cell[i , j+1] + cell[i+1 , j+1]
48
+ alive = sum1 + sum2
49
+ if cell[i , j] == 1:
50
+ if alive == 2 or alive == 3:
51
+ cellu[i , j] = 1
52
+ if alive > 3 or alive < 2:
53
+ cellu[i , j] = 0
54
+ if cell[i , j] == 0:
55
+ if alive == 3:
56
+ cellu[i , j] = 1
57
+ else:
58
+ cellu[i , j] = 0
59
+ alive = 0
60
+ return cellu
61
+ temp = initial()
62
+ drawcells(temp)
63
+ while True:
64
+ rate(6)
65
+ cell = temp
66
+ temp = gameoflife(cell)
67
+ drawcells(cell)
68
+ ```
69
+ ![イメージ説明](f485673487a7b4f6dd8e13a306bdbbb0.png)