Advertisement
Doob

Rubik's_cube_game

Nov 29th, 2014
511
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 6.85 KB | None | 0 0
  1. local commandBlock = peripheral.wrap('top')
  2.  
  3. rednet.open('back')
  4.  
  5. tCube = {['s1'] = {}, ['s2'] = {}, ['s3'] = {}, ['s4'] = {}, ['s5'] = {}, ['s6'] = {}}
  6.  
  7. local tCell = {'~-1 ', '~ ', '~1 ', '~2 ', '~-2 '}
  8.  
  9. local tCoord = {
  10.   ['s1'] = {
  11.     {3, 4, 1}, {3, 4, 2}, {3, 4, 3},
  12.     {2, 4, 1}, {2, 4, 2}, {2, 4, 3},
  13.     {1, 4, 1}, {1, 4, 2}, {1, 4, 3}},
  14.   ['s2'] = {
  15.     {1, 3, 4}, {2, 3, 4}, {3, 3, 4},
  16.     {1, 2, 4}, {2, 2, 4}, {3, 2, 4},
  17.     {1, 1, 4}, {2, 1, 4}, {3, 1, 4}},
  18.   ['s3'] = {
  19.     {4, 3, 3}, {4, 3, 2}, {4, 3, 1},
  20.     {4, 2, 3}, {4, 2, 2}, {4, 2, 1},
  21.     {4, 1, 3}, {4, 1, 2}, {4, 1, 1}},
  22.   ['s4'] = {
  23.     {3, 3, 5}, {2, 3, 5}, {1, 3, 5},
  24.     {3, 2, 5}, {2, 2, 5}, {1, 2, 5},
  25.     {3, 1, 5}, {2, 1, 5}, {1, 1, 5}},
  26.   ['s5'] = {
  27.     {5, 3, 1}, {5, 3, 2}, {5, 3, 3},
  28.     {5, 2, 1}, {5, 2, 2}, {5, 2, 3},
  29.     {5, 1, 1}, {5, 1, 2}, {5, 1, 3}},
  30.   ['s6'] = {
  31.     {1, 5, 1}, {1, 5, 2}, {1, 5, 3},
  32.     {2, 5, 1}, {2, 5, 2}, {2, 5, 3},
  33.     {3, 5, 1}, {3, 5, 2}, {3, 5, 3}}}
  34.  
  35. local function reset()
  36.   for i = 1, 9 do
  37.     tCube['s1'][i] = 14
  38.     tCube['s2'][i] = 0
  39.     tCube['s3'][i] = 13
  40.     tCube['s4'][i] = 4
  41.     tCube['s5'][i] = 11
  42.     tCube['s6'][i] = 1
  43.   end
  44. end
  45.  
  46. local function drawAngles()
  47.   for a = 4, 5 do
  48.     for b = 4, 5 do
  49.       for c = 1, 5 do
  50.         commandBlock.setCommand('setblock '..tCell[a]..tCell[b]..tCell[c]..'glass')
  51.         commandBlock.runCommand{}
  52.         commandBlock.setCommand('setblock '..tCell[b]..tCell[c]..tCell[a]..'glass')
  53.         commandBlock.runCommand{}
  54.         commandBlock.setCommand('setblock '..tCell[c]..tCell[a]..tCell[b]..'glass')
  55.         commandBlock.runCommand{}
  56.       end
  57.     end
  58.   end
  59. end
  60.  
  61. local function drawCube()
  62.   for pG = 1, 9 do
  63.     for eS = 1, 6 do
  64.       commandBlock.setCommand('setblock '..
  65.         tCell[tCoord['s'..eS][pG][1]]..
  66.         tCell[tCoord['s'..eS][pG][2]]..
  67.         tCell[tCoord['s'..eS][pG][3]]..
  68.         'wool '..
  69.         tCube['s'..eS][pG])
  70.       commandBlock.runCommand{}
  71.     end
  72.   end
  73. end
  74.  
  75. local function abracadabra(side, rule)
  76.   if rule == '01' then
  77.     tCube[side][1], tCube[side][2], tCube[side][3], tCube[side][4], tCube[side][6], tCube[side][7], tCube[side][8], tCube[side][9] =
  78.     tCube[side][7], tCube[side][4], tCube[side][1], tCube[side][8], tCube[side][2], tCube[side][9], tCube[side][6], tCube[side][3]
  79.   elseif rule == '02' then
  80.     tCube[side][7], tCube[side][4], tCube[side][1], tCube[side][8], tCube[side][2], tCube[side][9], tCube[side][6], tCube[side][3] =
  81.     tCube[side][1], tCube[side][2], tCube[side][3], tCube[side][4], tCube[side][6], tCube[side][7], tCube[side][8], tCube[side][9]
  82.   end
  83. end
  84.  
  85. local function magic(sides, cells)
  86.   tCube[sides[1]][cells[1]],
  87.   tCube[sides[2]][cells[2]],
  88.   tCube[sides[3]][cells[3]],
  89.   tCube[sides[4]][cells[4]],
  90.   tCube[sides[1]][cells[5]],
  91.   tCube[sides[2]][cells[6]],
  92.   tCube[sides[3]][cells[7]],
  93.   tCube[sides[4]][cells[8]],
  94.   tCube[sides[1]][cells[9]],
  95.   tCube[sides[2]][cells[10]],
  96.   tCube[sides[3]][cells[11]],
  97.   tCube[sides[4]][cells[12]] =
  98.   tCube[sides[5]][cells[13]],
  99.   tCube[sides[6]][cells[14]],
  100.   tCube[sides[7]][cells[15]],
  101.   tCube[sides[8]][cells[16]],
  102.   tCube[sides[5]][cells[17]],
  103.   tCube[sides[6]][cells[18]],
  104.   tCube[sides[7]][cells[19]],
  105.   tCube[sides[8]][cells[20]],
  106.   tCube[sides[5]][cells[21]],
  107.   tCube[sides[6]][cells[22]],
  108.   tCube[sides[7]][cells[23]],
  109.   tCube[sides[8]][cells[24]]
  110. end
  111.  
  112. local function rotate(V)
  113.   if V == '01' then
  114.     magic({'s2', 's3', 's4', 's5', 's3', 's4', 's5', 's2'}, {1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3,})
  115.     abracadabra('s1', '01')
  116.  
  117.   elseif V == '02' then
  118.     magic({'s2', 's3', 's4', 's5', 's3', 's4', 's5', 's2'}, {4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6,})
  119.  
  120.   elseif V == '03' then
  121.     magic({'s2', 's3', 's4', 's5', 's3', 's4', 's5', 's2'}, {7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9,})
  122.     abracadabra('s6', '02')
  123.  
  124.   elseif V == '04' then
  125.     magic({'s1', 's5', 's6', 's3', 's5', 's6', 's3', 's1'}, {1, 1, 1, 9, 4, 4, 4, 6, 7, 7, 7, 3, 1, 1, 9, 1, 4, 4, 6, 4, 7, 7, 3, 7})
  126.     abracadabra('s4', '02')
  127.  
  128.   elseif V == '05' then
  129.     magic({'s1', 's5', 's6', 's3', 's5', 's6', 's3', 's1'}, {2, 2, 2, 8, 5, 5, 5, 5, 8, 8, 8, 2, 2, 2, 8, 2, 5, 5, 5, 5, 8, 8, 2, 8})
  130.  
  131.   elseif V == '06' then
  132.     magic({'s1', 's5', 's6', 's3', 's5', 's6', 's3', 's1'}, {3, 3, 3, 7, 6, 6, 6, 4, 9, 9, 9, 1, 3, 3, 7, 3, 6, 6, 4, 6, 9, 9, 1, 9})
  133.     abracadabra('s2', '01')
  134.  
  135.   elseif V == '07' then
  136.     magic({'s1', 's4', 's6', 's2', 's4', 's6', 's2', 's1'}, {3, 1, 7, 9, 2, 4, 8, 6, 1, 7, 9, 3, 1, 7, 9, 3, 4, 8, 6, 2, 7, 9, 3, 1,})
  137.     abracadabra('s3', '02')
  138.  
  139.   elseif V == '08' then
  140.     magic({'s1', 's4', 's6', 's2', 's4', 's6', 's2', 's1'}, {6, 2, 4, 8, 5, 5, 5, 5, 4, 8, 6, 2, 2, 4, 8, 6, 5, 5, 5, 5, 8, 6, 2, 4,})
  141.  
  142.   elseif V == '09' then
  143.     magic({'s1', 's4', 's6', 's2', 's4', 's6', 's2', 's1'}, {9, 3, 1, 7, 8, 6, 2, 4, 7, 9, 3, 1, 3, 1, 7, 9, 6, 2, 4, 8, 9, 3, 1, 7,})
  144.     abracadabra('s5', '01')
  145.    
  146.   elseif V == '11' then
  147.     magic({'s3', 's5', 's2', 's4', 's2', 's4', 's5', 's3'}, {1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3,})
  148.     abracadabra('s1', '02')
  149.  
  150.   elseif V == '12' then
  151.     magic({'s3', 's5', 's2', 's4', 's2', 's4', 's5', 's3'}, {4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6,})
  152.  
  153.   elseif V == '13' then
  154.     magic({'s3', 's5', 's2', 's4', 's2', 's4', 's5', 's3'}, {7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9,})
  155.     abracadabra('s6', '01')
  156.  
  157.   elseif V == '14' then
  158.     magic({'s5', 's1', 's3', 's6', 's1', 's3', 's6', 's5'}, {1, 1, 9, 1, 4, 4, 6, 4, 7, 7, 3, 7, 1, 9, 1, 1, 4, 6, 4, 4, 7, 3, 7, 7})
  159.     abracadabra('s4', '01')
  160.  
  161.   elseif V == '15' then
  162.     magic({'s5', 's1', 's3', 's6', 's1', 's3', 's6', 's5'}, {2, 2, 8, 2, 5, 5, 5, 5, 8, 8, 2, 8, 2, 8, 2, 2, 5, 5, 5, 5, 8, 2, 8, 8})
  163.  
  164.   elseif V == '16' then
  165.     magic({'s5', 's1', 's3', 's6', 's1', 's3', 's6', 's5'}, {3, 3, 7, 3, 6, 6, 4, 6, 9, 9, 1, 9, 3, 7, 3, 3, 6, 4, 6, 6, 9, 1, 9, 9})
  166.     abracadabra('s2', '02')
  167.  
  168.   elseif V == '17' then
  169.     magic({'s4', 's1', 's2', 's6', 's1', 's2', 's6', 's4'}, {7, 1, 3, 9, 4, 2, 6, 8, 1, 3, 9, 7, 1, 3, 9, 7, 2, 6, 8, 4, 3, 9, 7, 1,})
  170.     abracadabra('s3', '01')
  171.  
  172.   elseif V == '18' then
  173.     magic({'s4', 's1', 's2', 's6', 's1', 's2', 's6', 's4'}, {8, 4, 2, 6, 5, 5, 5, 5, 2, 6, 8, 4, 4, 2, 6, 8, 5, 5, 5, 5, 6, 8, 4, 2,})
  174.  
  175.   elseif V == '19' then
  176.     magic({'s4', 's1', 's2', 's6', 's1', 's2', 's6', 's4'}, {9, 7, 1, 3, 6, 8, 4, 2, 3, 9, 7, 1, 7, 1, 3, 9, 8, 4, 2, 6, 9, 7, 1, 3,})
  177.     abracadabra('s5', '02')
  178.   end
  179. end
  180.  
  181. reset()
  182. drawAngles()
  183. drawCube()
  184.  
  185. while true do
  186.   rednet.broadcast(textutils.serialize(tCube) ,'cube_0')
  187.   local id, msg = rednet.receive('cube_0')
  188.  
  189.   if msg == 'reset' then
  190.     reset()
  191.     drawCube()
  192.   elseif msg == 'shuffle' then
  193.     for i = 1, 11 do
  194.       g = math.random(0, 1)
  195.       s = math.random(1, 9)
  196.       rotate(g..s)
  197.     end
  198.     drawCube()
  199.   else
  200.     rotate(msg)
  201.     drawCube()
  202.   end
  203. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement