●●●
●○●
●●● このように回りが死んでいるときには、中心のセルは死にます
ところが、
○○●
●○●
●●● このような場合には生存し続けます。
また
○○●
●●●
●●○ このような場合は生き返ります
このような単純な(?)ルールーに従い、セルを操作していきます。
on startMovie
global myList,tate,yoko,tateList,yokoList,tyousei,neList
set myList=[]
set yokoList=[]
set tateList=[]
set neList=[]
set tate=7
set yoko=7
put tate into field"ookisa"
set tyousei=290
puppetSprite 1,true
set the trails of sprite 1 to True
repeat with m=1 to tate*yoko
setAt(myList,m,random(2)-1)
end repeat
repeat with y=yoko down to 1
setAt yokoList,y,tyousei/yoko*(y-1)+10
end repeat
repeat with t=tate down to 1
setAt tateList,t,tyousei/tate*(t-1)+10
end repeat
set the rect of sprite 1 to rect(-100,-100,tyousei/yoko-100,tyousei/tate-100)
end
--
on neighbor
global tate,yoko,myList,neList,tateList,yokoList
repeat with m=1 to tate*yoko
if m =1 then
put getAt(myList,2)+getAt(myList,1+yoko) + getAt(myList,yoko+2) into mawari
else if m=yoko then
put getAt(myList,yoko-1)+ getAt(myList,yoko+yoko) + GetAt(myList,yoko+yoko-1) into mawari
else if m=yoko*tate-yoko+1 then
put getAt(myList,yoko*(tate-2)+1) + getAt(myList,yoko*(tate-1)+2) + getAt(myList,yoko*(tate-2)+2 ) into mawari
else if m=yoko*tate then
put getAt(myList,yoko*(tate-1)) + getAt(myList,yoko*tate-1)+ getAt(myList,yoko*(tate-1)-1) into mawari
-- hidari
else if m mod yoko = 1 then
put getAt(myList,m-yoko) + getAt(myList,m+1) + getAt(myList,m+yoko) + getAt(myList,m-yoko+1) + getAt(myList,m+yoko+1) into mawari
--migi
else if m mod yoko=0 then
put getAt(myList,m-yoko) + getAt(myList,m-1) + getAt(myList,m+yoko) + getAt(myList,m-yoko-1) + getAt(myList,m+yoko-1) into mawari
--ue
else if m / yoko < 1 then
put getAt(myList,m-1) + getAt(myList,m+1) + getAt(myList,m+yoko) + getAt(myList,m+yoko-1) + getAt(myList,m+yoko+1) into mawari
--sita
else if m/yoko >= tate-1 then
put getAt(myList,m-yoko) + getAt(myList,m-1) + getAt(myList,m+1) + getAt(myList,m-yoko-1) + getAt(myList,m-yoko+1) into mawari
else
put getAt(myList,m-1)+getAt(myList,m+1) + getAt(myList,m-yoko) +ツ getAt(mylist,m+yoko)+ getAt(myList, m-yoko-1) + getAt(myList,m-yoko+1) +ツ
getAt(myList,m+yoko-1) + getAt(myList,m+yoko+1) into mawari
end if
setAt neList,m,mawari
end repeat
repeat with a=1 to tate*yoko
put getAt(neList,a) into N
if getAt(myList, a)=1 then
if N = 2 or N=3 then
setAt myList,a,1
else
setAt myList,a,0
end if
else
if N = 3 then
setAt myList,a,1
else
setAt mylist,a,0
end if
end if
end repeat
end
--
on display
global myList,tate,yoko,yokoList,tateList
repeat with y=1 to yoko
put getAt(yokoList,y) into yokoH
repeat with t=1 to tate
set the locH of sprite 1 to yokoH
set the locV of sprite 1 to getAt(tateList,t)
set the foreColor of sprite 1 to 255-getAt(myList,tate*(t-1)+y)*random(20)*10
updatestage
end repeat
end repeat
end
--
on stopMovie
global tateList,yokoList
puppetsprite 1,false
set tateList=[]
set yokoList=[]
end