Sneaky Trick #1

Paste the following script into a behaviour, hit play and watch the score come alive:

property myArray, mySize,  myLastCell

on beginSprite me
  me.mCreateArray(40,40)
  me.mRandomStart(mySize[1]*mySize[2]/5)
end 


on exitFrame me
  me.mPlayLife()
  me.mDrawArray(myArray)
  go to the frame
end 

on mCreateArray (me,  aX, aY)
  myArray = []
  mySize = [aX, aY]
  repeat with y = 1 to aY
  myArray[y] = []
  repeat with x = 1 to aX
  myArray[y][x] = 0
  end repeat
  end repeat
end 

on mRandomStart (me,  numCells)
  repeat with cell = 1 to numcells
  y = random(mySize[2])
  x = random(mySize[1])
  myArray[y][x] = NOT(myArray[y][x])
  end repeat
end 

on mPlayLife me
  newState = myArray.duplicate()
  repeat with y = 1 to mySize[2]
  repeat with x = 1 to mySize[1]
  c = me.mGetNeighborCount(x,y)
  if c = 2 then
  -- no change
  else if c = 3 then
  newState[x][y] = 1
  else
  newState[x][y] = 0
  end if
  
  end repeat
  end repeat
  myArray = newState
end 

on mGetNeighborCount me, x, y
  mx = mySize[1]
  case(x) of
  1: Nx = [mx, x, x+1]
  mx: Nx = [x-1, x, 1]
  otherwise
  Nx = [x-1, x, x+1]
  end case
  my = mySize[2]
  case(y) of
  1: Ny = [my, y, y+1]
  my: Ny = [y-1, y, 1]
  otherwise
  Ny = [y-1, y, y+1]
  end case
  ---
  tally = myArray[Nx[1]][Ny[1]] + myArray[Nx[1]][Ny[2]] + myArray[Nx[1]][Ny[3]]
  tally = tally + myArray[Nx[2]][Ny[1]] + myArray[Nx[2]][Ny[3]]
  tally = tally + myArray[Nx[3]][Ny[1]] + myArray[Nx[3]][Ny[2]] + myArray[Nx[3]][Ny[3]]
  return tally
end 

on mDrawArray(me,  array)
  scoreSeln = []
  repeat with y = 1 to array.count
  row = array[y]
  repeat with x = 1 to row.count
  if row[x] then scoreSeln.append([y,y,x,x])
  end repeat
  end repeat
  the scoreSelection = scoreSeln
end
Last updated 28th of February, 2006

© 2006 MeccaMedialight. Site Powered by Wrangler 8.