Advertisement
NeonJ

RPS System 2P

Jan 13th, 2013
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 12.25 KB | None | 0 0
  1. -- *** VARIABLES ***
  2.  
  3. -- Do not alter
  4.  
  5. credits = 0
  6.  
  7. -- Monitor and Redstone Sides
  8.  
  9. p1monside = "left"
  10. p2monside = "right"
  11. detectside = "back"
  12. stopperside = "bottom"
  13.  
  14. -- Draw RPS symbols
  15.  
  16. drawRA = " _ "
  17. drawRB = "/ \\"
  18. drawRC = "\\_/"
  19.  
  20. drawPA = " _ "
  21. drawPB = "| |"
  22. drawPC = "|_|"
  23.  
  24. drawSA = "\\ /"
  25. drawSB = " X "
  26. drawSC = "O O"
  27.  
  28. -- Misc. Variables
  29.  
  30. pointstowin = 5
  31. p1attack = "N"
  32. p2attack = "N"
  33. p1score = 0
  34. p2score = 0
  35. creditspercoin = 1
  36.  
  37. -- *** CODING ***
  38.  
  39. mon1 = peripheral.wrap(p1monside)
  40. mon2 = peripheral.wrap(p2monside)
  41. redstone.setOutput(stopperside,true)
  42. shell.run("clear",1)
  43. print("Rock Paper Scissors BATTLE 2P activated. Ctrl + T to terminate!")
  44.  
  45. mon1.setCursorPos(1,1)
  46. mon1.write("  "..drawRA.."  "..drawPA.."  "..drawSA.."  ")
  47. mon1.setCursorPos(1,2)
  48. mon1.write("  "..drawRB.."  "..drawPB.."  "..drawSB.."  ")
  49. mon1.setCursorPos(1,3)
  50. mon1.write("  "..drawRC.."  "..drawPC.."  "..drawSC.."  ")
  51. mon1.setCursorPos(1,4)
  52. mon1.write("- - - - - - - - -")
  53. mon1.setCursorPos(1,5)
  54. mon1.write(" Insert   Credit ")
  55.  
  56. mon2.setCursorPos(1,1)
  57. mon2.write("  "..drawRA.."  "..drawPA.."  "..drawSA.."  ")
  58. mon2.setCursorPos(1,2)
  59. mon2.write("  "..drawRB.."  "..drawPB.."  "..drawSB.."  ")
  60. mon2.setCursorPos(1,3)
  61. mon2.write("  "..drawRC.."  "..drawPC.."  "..drawSC.."  ")
  62. mon2.setCursorPos(1,4)
  63. mon2.write("- - - - - - - - -")
  64. mon2.setCursorPos(1,5)
  65. mon2.write(" Insert   Credit ")
  66.  
  67. function roll()
  68.  
  69.   -- Start part, suspense and stuff.
  70.  
  71.   mon1.setCursorPos(1,5)
  72.   mon1.write(" THREE  3  THREE ")
  73.   mon2.setCursorPos(1,5)
  74.   mon2.write(" THREE  3  THREE ")
  75.   sleep(1)
  76.   mon1.setCursorPos(1,5)
  77.   mon1.write("  TWO   2   TWO  ")
  78.   mon2.setCursorPos(1,5)
  79.   mon2.write("  TWO   2   TWO  ")
  80.   sleep(1)
  81.   mon1.setCursorPos(1,5)
  82.   mon1.write("  ONE   1   ONE  ")
  83.   mon2.setCursorPos(1,5)
  84.   mon2.write("  ONE   1   ONE  ")
  85.   sleep(1)
  86.  
  87.   -- Show players their opponent's result
  88.  
  89.   if p1attack == "R" then
  90.     mon2.setCursorPos(3,1)
  91.     mon2.write(drawRA)
  92.     mon2.setCursorPos(3,2)
  93.     mon2.write(drawRB)
  94.     mon2.setCursorPos(3,3)
  95.     mon2.write(drawRC)
  96.   elseif p1attack == "P" then
  97.     mon2.setCursorPos(3,1)
  98.     mon2.write(drawPA)
  99.     mon2.setCursorPos(3,2)
  100.     mon2.write(drawPB)
  101.     mon2.setCursorPos(3,3)
  102.     mon2.write(drawPC)
  103.   elseif p1attack == "S" then
  104.     mon2.setCursorPos(3,1)
  105.     mon2.write(drawSA)
  106.     mon2.setCursorPos(3,2)
  107.     mon2.write(drawSB)
  108.     mon2.setCursorPos(3,3)
  109.     mon2.write(drawSC)
  110.   end
  111.  
  112.   if p2attack == "R" then
  113.     mon1.setCursorPos(13,1)
  114.     mon1.write(drawRA)
  115.     mon1.setCursorPos(13,2)
  116.     mon1.write(drawRB)
  117.     mon1.setCursorPos(13,3)
  118.     mon1.write(drawRC)
  119.   elseif p2attack == "P" then
  120.     mon1.setCursorPos(13,1)
  121.     mon1.write(drawPA)
  122.     mon1.setCursorPos(13,2)
  123.     mon1.write(drawPB)
  124.     mon1.setCursorPos(13,3)
  125.     mon1.write(drawPC)
  126.   elseif p2attack == "S" then
  127.     mon1.setCursorPos(13,1)
  128.     mon1.write(drawSA)
  129.     mon1.setCursorPos(13,2)
  130.     mon1.write(drawSB)
  131.     mon1.setCursorPos(13,3)
  132.     mon1.write(drawSC)
  133.   end
  134.  
  135.   mon1.setCursorPos(1,5)
  136.   mon1.write(" FIGHT  !  FIGHT ")
  137.   mon2.setCursorPos(1,5)
  138.   mon2.write(" FIGHT  !  FIGHT ")
  139.   sleep(2)
  140.  
  141.   -- Who won?
  142.  
  143.   winner = 0
  144.   if p1attack == "R" then
  145.     if p2attack == "R" then
  146.       mon1.setCursorPos(1,5)
  147.       mon1.write("       TIE       ")
  148.       mon2.setCursorPos(1,5)
  149.       mon2.write("       TIE       ")
  150.     elseif p2attack == "P" then
  151.       mon1.setCursorPos(1,5)
  152.       mon1.write("    P2 SCORE!    ")
  153.       mon2.setCursorPos(1,5)
  154.       mon2.write("    P2 SCORE!    ")
  155.       p2score = p2score + 1
  156.     elseif p2attack == "S" then
  157.       mon1.setCursorPos(1,5)
  158.       mon1.write("    P1 SCORE!    ")
  159.       mon2.setCursorPos(1,5)
  160.       mon2.write("    P1 SCORE!    ")
  161.       p1score = p1score + 1
  162.     end
  163.   elseif p1attack == "P" then
  164.     if p2attack == "R" then
  165.       mon1.setCursorPos(1,5)
  166.       mon1.write("    P1 SCORE!    ")
  167.       mon2.setCursorPos(1,5)
  168.       mon2.write("    P1 SCORE!    ")
  169.       p1score = p1score + 1
  170.     elseif p2attack == "P" then
  171.       mon1.setCursorPos(1,5)
  172.       mon1.write("       TIE       ")
  173.       mon2.setCursorPos(1,5)
  174.       mon2.write("       TIE       ")
  175.     elseif p2attack == "S" then
  176.       mon1.setCursorPos(1,5)
  177.       mon1.write("    P2 SCORE!    ")
  178.       mon2.setCursorPos(1,5)
  179.       mon2.write("    P2 SCORE!    ")
  180.       p2score = p2score + 1
  181.     end
  182.   elseif p1attack == "S" then
  183.     if p2attack == "R" then
  184.       mon1.setCursorPos(1,5)
  185.       mon1.write("    P2 SCORE!    ")
  186.       mon2.setCursorPos(1,5)
  187.       mon2.write("    P2 SCORE!    ")
  188.       p2score = p2score + 1
  189.     elseif p2attack == "P" then
  190.       mon1.setCursorPos(1,5)
  191.       mon1.write("    P1 SCORE!    ")
  192.       mon2.setCursorPos(1,5)
  193.       mon2.write("    P1 SCORE!    ")
  194.       p1score = p1score + 1
  195.     elseif p2attack == "S" then
  196.       mon1.setCursorPos(1,5)
  197.       mon1.write("       TIE       ")
  198.       mon2.setCursorPos(1,5)
  199.       mon2.write("       TIE       ")
  200.     end
  201.   end
  202.  
  203.   sleep(2)
  204.  
  205.   -- Check if the fight should continue
  206.  
  207.   if p1score == pointstowin then
  208.     mon1.setCursorPos(7,3)
  209.     mon1.write(p1score.." : "..p2score)
  210.     mon2.setCursorPos(7,3)
  211.     mon2.write(p1score.." : "..p2score)
  212.     mon1.setCursorPos(1,5)
  213.     mon1.write("* *  YOU WIN  * *")
  214.     mon2.setCursorPos(1,5)
  215.     mon2.write("* * TRY AGAIN * *")
  216.     credits = credits - 1
  217.     p1score = 0
  218.     p2score = 0
  219.     sleep(2)
  220.   elseif p2score == pointstowin then
  221.     mon1.setCursorPos(7,3)
  222.     mon1.write(p1score.." : "..p2score)
  223.     mon2.setCursorPos(7,3)
  224.     mon2.write(p1score.." : "..p2score)
  225.     mon1.setCursorPos(1,5)
  226.     mon1.write("* * TRY AGAIN * *")
  227.     mon2.setCursorPos(1,5)
  228.     mon2.write("* *  YOU WIN  * *")
  229.     credits = credits - 1
  230.     p1score = 0
  231.     p2score = 0
  232.     sleep(2)
  233.   end
  234.  
  235.   p1attack = "N"
  236.   p2attack = "N"
  237.   mon1.setCursorPos(1,1)
  238.   mon1.write("  ###  V S  ###  ")
  239.   mon1.setCursorPos(1,2)
  240.   mon1.write("  ###       ###  ")
  241.   mon1.setCursorPos(1,3)
  242.   mon1.write("  ### "..p1score.." : "..p2score.." ###  ")
  243.   mon2.setCursorPos(1,1)
  244.   mon2.write("  ###  V S  ###  ")
  245.   mon2.setCursorPos(1,2)
  246.   mon2.write("  ###       ###  ")
  247.   mon2.setCursorPos(1,3)
  248.   mon2.write("  ### "..p1score.." : "..p2score.." ###  ")
  249.  
  250.   if credits == 0 then
  251.     mon1.setCursorPos(1,1)
  252.     mon1.write("  "..drawRA.."  "..drawPA.."  "..drawSA.."  ")
  253.     mon1.setCursorPos(1,2)
  254.     mon1.write("  "..drawRB.."  "..drawPB.."  "..drawSB.."  ")
  255.     mon1.setCursorPos(1,3)
  256.     mon1.write("  "..drawRC.."  "..drawPC.."  "..drawSC.."  ")
  257.     mon2.setCursorPos(1,1)
  258.     mon2.write("  "..drawRA.."  "..drawPA.."  "..drawSA.."  ")
  259.     mon2.setCursorPos(1,2)
  260.     mon2.write("  "..drawRB.."  "..drawPB.."  "..drawSB.."  ")
  261.     mon2.setCursorPos(1,3)
  262.     mon2.write("  "..drawRC.."  "..drawPC.."  "..drawSC.."  ")
  263.     mon1.setCursorPos(1,5)
  264.     mon1.write(" Insert   Credit ")
  265.     mon2.setCursorPos(1,5)
  266.     mon2.write(" Insert   Credit ")
  267.   else
  268.     mon1.setCursorPos(1,5)
  269.     mon1.write("  Select Attack  ")
  270.     mon2.setCursorPos(1,5)
  271.     mon2.write("  Select Attack  ")
  272.   end
  273. end
  274.  
  275. local rRunning = true
  276. print("Activating rRunning Loop.")
  277. while rRunning do
  278.   sleep(0.05)
  279.   local rEvent, param = os.pullEvent()
  280.   redstone.setOutput(stopperside, true)
  281.   if rEvent == "redstone" then
  282.     if redstone.getBundledInput(detectside) then
  283.       if redstone.testBundledInput(detectside, colors.yellow) then      -- P1 ROCK
  284.         redstone.setOutput(stopperside, false)
  285.         if credits > 0 then
  286.           p1attack = "R"
  287.           mon1.setCursorPos(1,5)
  288.           mon1.write(" Waiting for P2! ")
  289.           mon1.setCursorPos(1,1)
  290.           mon1.write("  "..drawRA.."  V S  ###  ")
  291.           mon1.setCursorPos(1,2)
  292.           mon1.write("  "..drawRB.."       ###  ")
  293.           mon1.setCursorPos(1,3)
  294.           mon1.write("  "..drawRC.." "..p1score.." : "..p2score.." ###  ")
  295.           if p2attack ~= "N" then
  296.             roll()
  297.           end
  298.         end
  299.         redstone.setOutput(stopperside, true)
  300.       elseif redstone.testBundledInput(detectside, colors.red) then     -- P1 PAPER
  301.         redstone.setOutput(stopperside, false)
  302.         if credits > 0 then
  303.           p1attack = "P"
  304.           mon1.setCursorPos(1,5)
  305.           mon1.write(" Waiting for P2! ")
  306.           mon1.setCursorPos(1,1)
  307.           mon1.write("  "..drawPA.."  V S  ###  ")
  308.           mon1.setCursorPos(1,2)
  309.           mon1.write("  "..drawPB.."       ###  ")
  310.           mon1.setCursorPos(1,3)
  311.           mon1.write("  "..drawPC.." "..p1score.." : "..p2score.." ###  ")
  312.           if p2attack ~= "N" then
  313.             roll()
  314.           end
  315.         end
  316.         redstone.setOutput(stopperside, true)
  317.       elseif redstone.testBundledInput(detectside, colors.orange) then  -- P1 SCISSORS
  318.         redstone.setOutput(stopperside, false)
  319.         if credits > 0 then
  320.           p1attack = "S"
  321.           mon1.setCursorPos(1,5)
  322.           mon1.write(" Waiting for P2! ")
  323.           mon1.setCursorPos(1,1)
  324.           mon1.write("  "..drawSA.."  V S  ###  ")
  325.           mon1.setCursorPos(1,2)
  326.           mon1.write("  "..drawSB.."       ###  ")
  327.           mon1.setCursorPos(1,3)
  328.           mon1.write("  "..drawSC.." "..p1score.." : "..p2score.." ###  ")
  329.           if p2attack ~= "N" then
  330.             roll()
  331.           end
  332.         end
  333.         redstone.setOutput(stopperside, true)
  334.       elseif redstone.testBundledInput(detectside, colors.green) then   -- Coin
  335.         if credits == 0 then
  336.           mon1.setCursorPos(1,1)
  337.           mon1.write("  ###  V S  ###  ")
  338.           mon1.setCursorPos(1,2)
  339.           mon1.write("  ###       ###  ")
  340.           mon1.setCursorPos(1,3)
  341.           mon1.write("  ### "..p1score.." : "..p2score.." ###  ")
  342.           mon2.setCursorPos(1,1)
  343.           mon2.write("  ###  V S  ###  ")
  344.           mon2.setCursorPos(1,2)
  345.           mon2.write("  ###       ###  ")
  346.           mon2.setCursorPos(1,3)
  347.           mon2.write("  ### "..p1score.." : "..p2score.." ###  ")
  348.           p1attack = "N"
  349.           p2attack = "N"
  350.         end
  351.  
  352.         credits = credits + creditspercoin
  353.  
  354.         if p1attack == "N" then
  355.           mon1.setCursorPos(1,5)
  356.           mon1.write("  Select Attack  ")
  357.         end
  358.         if p2attack == "N" then
  359.           mon2.setCursorPos(1,5)
  360.           mon2.write("  Select Attack  ")
  361.         end
  362.       elseif redstone.testBundledInput(detectside, colors.blue) then    -- P2 ROCK
  363.         redstone.setOutput(stopperside, false)
  364.         if credits > 0 then
  365.           p2attack = "R"
  366.           mon2.setCursorPos(1,5)
  367.           mon2.write(" Waiting for P1! ")
  368.           mon2.setCursorPos(1,1)
  369.           mon2.write("  ###  V S  "..drawRA.."  ")
  370.           mon2.setCursorPos(1,2)
  371.           mon2.write("  ###       "..drawRB.."  ")
  372.           mon2.setCursorPos(1,3)
  373.           mon2.write("  ### "..p1score.." : "..p2score.." "..drawRC.."  ")
  374.           if p1attack ~= "N" then
  375.             roll()
  376.           end
  377.         end
  378.         redstone.setOutput(stopperside, true)
  379.       elseif redstone.testBundledInput(detectside, colors.black) then   -- P2 PAPER
  380.         redstone.setOutput(stopperside, false)
  381.         if credits > 0 then
  382.           p2attack = "P"
  383.           mon2.setCursorPos(1,5)
  384.           mon2.write(" Waiting for P1! ")
  385.           mon2.setCursorPos(1,1)
  386.           mon2.write("  ###  V S  "..drawPA.."  ")
  387.           mon2.setCursorPos(1,2)
  388.           mon2.write("  ###       "..drawPB.."  ")
  389.           mon2.setCursorPos(1,3)
  390.           mon2.write("  ### "..p1score.." : "..p2score.." "..drawPC.."  ")
  391.           if p1attack ~= "N" then
  392.             roll()
  393.           end
  394.         end
  395.         redstone.setOutput(stopperside, true)
  396.       elseif redstone.testBundledInput(detectside, colors.white) then   -- P2 SCISSORS
  397.         redstone.setOutput(stopperside, false)
  398.         if credits > 0 then
  399.           p2attack = "S"
  400.           mon2.setCursorPos(1,5)
  401.           mon2.write(" Waiting for P1! ")
  402.           mon2.setCursorPos(1,1)
  403.           mon2.write("  ###  V S  "..drawSA.."  ")
  404.           mon2.setCursorPos(1,2)
  405.           mon2.write("  ###       "..drawSB.."  ")
  406.           mon2.setCursorPos(1,3)
  407.           mon2.write("  ### "..p1score.." : "..p2score.." "..drawSC.."  ")
  408.           if p1attack ~= "N" then
  409.             roll()
  410.           end
  411.         end
  412.         redstone.setOutput(stopperside, true)
  413.       end
  414.     end
  415.   end
  416. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement