Advertisement
electronic_steve

ccs : calculator v3 no color

Mar 15th, 2015
299
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 8.41 KB | None | 0 0
  1.  
  2. if not shell.run("ESGraphics") then
  3. shell.run("pastebin","get","iifHYZ2v","ESGraphics")
  4. shell.run("ESGraphics")
  5.  end
  6.  
  7.  
  8.  
  9.  
  10.  maincomputerid=1447
  11. rednet.open("right")
  12. rednet.send(maincomputerid,"READY&"..os.getComputerID())
  13. mapX=9
  14. mapY=9
  15. mapZ=9
  16. map={}
  17. drawz=1
  18. winloop=0
  19. drawscale=10
  20. htime=0
  21. groups={}
  22. dim={}
  23. dims={}
  24. drawx=0
  25. drawy=0
  26. npower=0
  27. GroupPower={}
  28. SumOfDimensions={}
  29. GroupSumPower=0
  30. maps={}
  31. TotalNumberOfBlocksInAllGroups=0
  32. failstep=0
  33. maxloop=0
  34. loop=0
  35. drawblocks=0
  36. test=0
  37. --bush
  38. bush={}
  39. start=1
  40. draw=true
  41. blocksmap={}
  42.  
  43. function saveinblocksmap(x,y,z)
  44. blocksmap[#blocksmap+1]={x,y,z,map[x][y][z]}
  45.  
  46. end
  47. function getblockmap(i)
  48. return blocksmap[i][1],blocksmap[i][2],blocksmap[i][3],blocksmap[i][4]
  49.  
  50. end
  51. bush[1]= function(x,y,z)
  52. local radius=math.random(1,math.floor((mapX+mapY+mapZ)/3))
  53. for nx=-radius,radius do
  54.  for ny=-radius,radius do
  55.   for nz=-radius,radius do
  56.   local x2=limit(x+nx,mapX)
  57.   local y2=limit(y+ny,mapY)
  58.   local z2=limit(z+nz,mapZ)
  59.   --print(x2,y2,z2)
  60.    if map[x2][y2][z2]==-1
  61.    then map[x2][y2][z2]=-2 else
  62.    map[x2][y2][z2]=-1 end
  63.   end
  64.  end
  65.  end
  66. end
  67. bush[2]= function(x2,y,z)
  68.  for x=1,mapX do
  69.   if map[x][y][z]==-1
  70.   then map[x][y][z]=-2 else
  71.   map[x][y][z]=-1 end
  72.  end
  73.  
  74. end
  75. bush[3]= function(x,y2,z)
  76.  for y=1,mapY do
  77.   if map[x][y][z]==-1
  78.   then map[x][y][z]=-2 else
  79.   map[x][y][z]=-1 end
  80.  end
  81. end
  82. bush[4]= function(x,y,z2)
  83.  for z=1,mapZ do
  84.   if map[x][y][z]==-1
  85.   then map[x][y][z]=-2 else
  86.   map[x][y][z]=-1 end
  87.  end
  88. end
  89. bush[5]= function(x2,y2,z)
  90.  for x=1,x2 do
  91.   for y=1,y2 do
  92.    if math.random(1,2)==1 then
  93.     if map[x][y][z]==-1
  94.     then map[x][y][z]=-2 else
  95.     map[x][y][z]=-1 end
  96.    end
  97.   end
  98.  end
  99. end
  100.  
  101. bush[6]= function(x,y2,z2)
  102.  for z=1,z2 do
  103.   for y=1,y2 do
  104.    if math.random(1,2)==1 then
  105.     if map[x][y][z]==-1
  106.     then map[x][y][z]=-2 else
  107.     map[x][y][z]=-1 end
  108.  
  109.  end
  110.  end
  111.  end
  112.  end
  113. bush[7]= function(x2,y,z2)
  114. for x=1,x2 do
  115.  for z=1,z2 do
  116.  if math.random(1,2)==1 then
  117.   if map[x][y][z]==-1
  118. then map[x][y][z]=-2 else
  119.  map[x][y][z]=-1 end
  120.  
  121.  end
  122.  end
  123.  end
  124.  end
  125.  bush[8]= function(x2,y2,z)
  126. x=math.random(1,mapX)
  127. y=math.random(1,mapY)
  128. map[x][y][z]=-2
  129.  end
  130.  
  131.  
  132.  function generatemap()
  133.  local I=-1
  134.  local O=-2
  135. for x=1,mapX do
  136. map[x]={}
  137. maps[x]={}
  138. for y=1,mapY do
  139. map[x][y]={}
  140. maps[x][y]={}
  141. for z=1,mapZ do
  142. map[x][y][z]=-2
  143. maps[x][y][z]=-2
  144. end end end
  145. --[[
  146. for x=1,mapX,2 do
  147. for y=1,mapY,2 do
  148. for z=1,mapZ do
  149. map[x][y][z]=-1
  150. end end end
  151. ]]
  152.  
  153.  
  154.  
  155. for x=1,mapX do
  156. for y=1,mapY do
  157. for z=1,mapZ do
  158. maps[x][y][z]=map[x][y][z] end end end
  159.  
  160. end
  161. generatemap()  
  162. function getmaxpowersave()
  163. local FileList = fs.list("RMCS/")
  164.  
  165. local N=0
  166. for _, file in ipairs(FileList) do
  167.  N=math.max(N,file)
  168. end
  169.  
  170. return N
  171. end
  172. function resetall()
  173. drawblocks=TotalNumberOfBlocksInAllGroups
  174. TotalNumberOfBlocksInAllGroups=0
  175. SumOfDimensions=nil
  176. SumOfDimensions={}
  177. SizePower=0
  178.  
  179. GroupPower=nil
  180. GroupPower={}
  181. GroupSumPower=0
  182.  
  183. end
  184. function mima(mi,n,ma)
  185. local x=math.min(n,ma)
  186.  
  187. local nx=math.max(mi,x)
  188.  
  189. return nx
  190. end  
  191.  
  192. function reader(mode,mode2,name)
  193.  local file = io.open(tostring(name),mode)
  194.                 if file then
  195.                 text=file:read(mode2)
  196.                 file:close()
  197.         end
  198.         return text
  199. end
  200.  
  201. function resetmap()
  202. for I=1,#blocksmap do
  203. x,y,z,name=getblockmap(I)
  204.   if map[x][y][z]==-2 then else map[x][y][z]=-1 end
  205.    
  206.  
  207. end
  208.    groups=nil
  209. groups={}
  210.    dim=nil
  211. dim={}
  212. dims=nil
  213. dims={}
  214. blocksmap=nil
  215. blocksmap={}
  216. end
  217.  
  218.  
  219.  
  220.  
  221. function updateall()
  222.  
  223. loop=loop+1
  224. if loop==maxloop then else
  225.  if loop==1 then  else
  226.  
  227. bush[math.random(1,#bush)](math.random(1,mapX),math.random(1,mapY),math.random(1,mapZ))
  228.  
  229.  end
  230.  
  231.  for x=1,mapX do
  232.  for y=1,mapY do
  233.   for z=1,mapZ do
  234.    
  235.   saveinblocksmap(x,y,z,map[x][y][z])
  236.  
  237.   end end end
  238.  
  239.  
  240.  
  241.  
  242.  
  243. local fail=0
  244. for I=1,#blocksmap do
  245. x,y,z,name=getblockmap(I)
  246.    if map[x][y][z]==-1 then
  247.     groups[#groups+1]={}
  248.     map[x][y][z]=#groups
  249.     dim[#groups]={}
  250.     dims[#groups]={}
  251.     for i=1,(mapX+mapY+mapZ)/3 do
  252.     for I2=1,#blocksmap do
  253. x2,y2,z2,name=getblockmap(I2)
  254.         if map[x2][y2][z2]==#groups then
  255.         reactorupdate(x2,y2,z2,-1,#groups) else fail=fail+1
  256.        
  257.        
  258.        
  259.       end
  260.    
  261.      
  262.    end
  263.   end
  264.  end
  265. end
  266. if #groups>0 then
  267. dim[#dim]={}
  268.  
  269.  for i=1, #dim do
  270.     for I2=1,#blocksmap do
  271. x,y,z,name=getblockmap(I2)
  272.      if map[x][y][z]==i then dim[i][#dim[i]+1]={x,y,z}
  273.    
  274.    
  275.    end
  276.   end
  277.  end
  278. end
  279.  
  280. for i=1, #groups do
  281. for n=1, #dim[i] do
  282.  
  283.    
  284.    
  285.    
  286.     if n==1 then
  287. minx=dim[i][n][1]
  288. maxx=dim[i][n][1]
  289. miny=dim[i][n][2]
  290. maxy=dim[i][n][2]
  291. minz=dim[i][n][3]
  292. maxz=dim[i][n][3]
  293.  else
  294. minx=math.min (dim[i][n][1],minx)
  295. maxx=math.max (dim[i][n][1],maxx)
  296. miny=math.min (dim[i][n][2],miny)
  297. maxy=math.max (dim[i][n][2],maxy)
  298. minz=math.min (dim[i][n][3],minz)
  299. maxz=math.max (dim[i][n][3],maxz)
  300.  
  301.  end
  302.  
  303.  
  304.  end
  305.  
  306.  dims[i]={maxx-(minx-1),maxy-(miny-1),maxz-(minz-1)}
  307.  
  308.  
  309.  
  310.  end
  311.  
  312.  for i=1, #groups do
  313.  SumOfDimensions[i]=dims[i][1]+dims[i][2]+dims[i][3]
  314.  SizePower = 2000000 / ( 1 + 1.000696^(-0.333*(SumOfDimensions[i]/3)^1.7)) - 1000000
  315.  
  316.  BlockPower = 25 * #dim[i]
  317.  SizePower =math.min(SizePower,1000000 )
  318.  GroupPower[i] = BlockPower + SizePower
  319.  
  320.   GroupSumPower=GroupSumPower+(SumOfDimensions[i]/3)^1.7
  321.  
  322.  
  323.  
  324.   TotalNumberOfBlocksInAllGroups = TotalNumberOfBlocksInAllGroups+#dim[i]
  325.   end
  326.   GroupSumSizePower = 2000000 / ( 1 + 1.000696^(-0.333 * GroupSumPower)) - 1000000
  327.   BlockPower = 25 * TotalNumberOfBlocksInAllGroups
  328.  TotalPower = math.floor(BlockPower + GroupSumSizePower)
  329.  
  330.  
  331.  
  332. if npower<TotalPower then rednet.send(maincomputerid,"NEWPOWER&"..os.getComputerID().."&"..npower)   npower=TotalPower
  333.  
  334. savemap() else loadmap()
  335.  
  336.  failstep=failstep+1  end
  337. resetall()
  338. end
  339.  
  340. if npower>getmaxpowersave() then  savestructure()  end
  341.  
  342. end
  343. function writer(mode,mode2,name)
  344.  local file = io.open(tostring(name),mode)
  345.                 if file then
  346.                 file:write(mode2)
  347.                 file:close()
  348.         end
  349. end
  350. function savestructure()
  351.  local file = io.open("RMCS/"..name,"a")
  352.                 if file then
  353.                 file:write("mapX")
  354.                 file:close()
  355.         end
  356.          local file = io.open("RMCS/"..name,"a")
  357.                 if file then
  358.                 file:write("&"..mapY)
  359.                 file:close()
  360.         end
  361.          local file = io.open("RMCS/"..name,"a")
  362.                 if file then
  363.                 file:write("&"..mapZ)
  364.                 file:close()
  365.         end
  366.  
  367.  
  368.  for x=1,mapX do
  369.  for y=1,mapY do
  370.  for z=1,mapZ do
  371.  if map[x][y][z]==-2 then writer("a","&2","RMCS/"..npower)else
  372. writer("a","&1","RMCS/"..npower) end
  373.      
  374. end end end
  375.  
  376.    
  377.        
  378.        
  379.  
  380.  
  381. end
  382. function reactorupdate(x,y,z,d,d2)
  383.  
  384.  
  385.  
  386.     if  map[x][y][z]==d then map[x][y][z]=d2 end
  387.     if  map[limit(x+1,mapX)][y][z]==d then map[limit(x+1,mapX)][y][z]=d2 end
  388.     if  map[limit(x-1,mapX)][y][z]==d then map[limit(x-1,mapX)][y][z]=d2 end
  389.     if  map[x][limit(y+1,mapY)][z]==d then map[x][limit(y+1,mapY)][z]=d2 end
  390.     if  map[x][limit(y-1,mapY)][z]==d then map[x][limit(y-1,mapY)][z]=d2 end
  391.     if  map[x][y][limit(z+1,mapZ)]==d then map[x][y][limit(z+1,mapZ)]=d2 end
  392.     if  map[x][y][limit(z-1,mapZ)]==d then map[x][y][limit(z-1,mapZ)]=d2 end
  393.    
  394. end
  395.  
  396. function savemap()
  397.   for x=1,mapX do
  398.    for y=1,mapY do
  399.     for z=1,mapZ do
  400. maps[x][y][z]=map[x][y][z]
  401.  end end
  402. end end
  403. function loadmap()
  404.   for x=1,mapX do
  405.    for y=1,mapY do
  406.     for z=1,mapZ do
  407. map[x][y][z]=maps[x][y][z]
  408. end end
  409. end end  
  410. function mimat(mi,n,ma)
  411. if n<mi or n>ma then return false else return true end
  412.  
  413.  
  414. end
  415.  
  416. function update()
  417. math.randomseed(os.time()+math.random(-100000,1000000000))
  418. if redstone.getInput("left") or redstone.getInput("right")   then
  419.  updateall() end
  420. end
  421.  
  422. function draw()
  423.  
  424. N=math.floor(mapZ/2)
  425. for z=1,N do
  426.  
  427.  gh.rectangle("line",(z-1)*mapZ+z,2,mapX+1,mapY+1,"O")
  428. for y=1,mapY do
  429. for x=1,mapX do
  430. if  map[x][y][z]==-2 then else
  431.  
  432. gh.point(x+1+mapZ*(z-1)+z,y+2,"#")
  433. end
  434. end
  435. end
  436. for z=1,mapZ-N do
  437.  
  438.  gh.rectangle("line",(z-1)*mapZ+z,(mapY+3),mapX+1,mapY+1,"O")
  439. for y=1,mapY do
  440. for x=1,mapX do
  441. if  map[x][y][z]==-2 then else
  442.  
  443. gh.point(x+1+mapZ*(z-1)+z,y+12,"#")
  444. end
  445. end
  446. end end
  447.  
  448.  
  449. end
  450.  
  451. gh.text(1,mapY+17,"loop:"..loop.." fail step:"..failstep.." good step:"..loop-failstep)
  452. gh.text(1,mapY+16,"fps:"..fps.update().." power:"..npower.." computer id:"..os.getComputerID())
  453.  resetmap()
  454. end
  455.  
  456. while true do
  457. r.systemupdate()
  458. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement