MagmaLP

Tik Tak Toe in lua v1

Feb 6th, 2022 (edited)
1,106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 6.34 KB | None | 0 0
  1. rednet.open("back")
  2. term.setBackgroundColor(32768)
  3. term.clear()
  4. begin = 1   --wer ist als nächstes dran | 1 = grün | 2 = rot
  5. a = 0       --belegte Felder | 0 = nicht belegt | 1 = grün belegt | 2 = rot belegt
  6. b = 0
  7. c = 0
  8. d = 0
  9. e = 0
  10. f = 0
  11. g = 0
  12. h = 0
  13. i = 0
  14.  
  15. function calc_color(color)
  16.     return math.pow(2, color - 1)
  17. end
  18.  
  19. function msg(gap, line, color, groundb, text)
  20.     term.setBackgroundColor(calc_color(groundb))
  21.     term.setCursorPos(gap,line)
  22.     term.setTextColor(calc_color(color))
  23.     text = term.write(text)
  24. end  
  25.  
  26.  
  27.     term.setBackgroundColor(32768)
  28.     term.clear()
  29.     msg(20,02,05,16,"Tik Tak Toe")
  30.     msg(14,04,01,16,"Color green will beginn")
  31.     msg(20,04,06,16,"green")
  32.     msg(14,06,06,16,"green")
  33.     msg(24,06,01,16,"<----")
  34.     msg(34,06,15,16,"red")
  35.     msg(19,08,09,16,"+---+---+---+")
  36.     msg(19,09,09,16,"|   |   |   |")    --1|2|3  --a|b|c
  37.     msg(19,10,09,16,"|   |   |   |")
  38.     msg(19,11,09,16,"+---+---+---+")
  39.     msg(19,12,09,16,"|   |   |   |")    --4|5|6  --d|e|f
  40.     msg(19,13,09,16,"|   |   |   |")
  41.     msg(19,14,09,16,"+---+---+---+")
  42.     msg(19,15,09,16,"|   |   |   |")    --7|8|9  --g|h|i
  43.     msg(19,16,09,16,"|   |   |   |")
  44.     msg(19,17,09,16,"+---+---+---+")
  45.     msg(20,19,15,01,"-> reset <-")
  46.  
  47. function green()
  48.     msg(20,19,06,16,"green wins")
  49.     turtlereset()
  50.     os.reboot()
  51. end
  52. function red()
  53.     msg(21,19,15,16,"red wins")
  54.     turtlereset()
  55.     os.reboot()
  56. end
  57. function draw()
  58.     msg(22,19,15,16,"no one wins")
  59.     turtlereset()
  60.     os.reboot()
  61. end
  62.  
  63. function turtlereset()
  64.     sleep(0.25)
  65.     rednet.send(8903,3)
  66.     sleep(0.25)
  67.     rednet.send(8913,3)
  68.     sleep(0.25)
  69.     rednet.send(8908,3)
  70.     sleep(0.25)
  71.     rednet.send(8911,3)
  72.     sleep(0.25)
  73.     rednet.send(8910,3)
  74.     sleep(0.25)
  75.     rednet.send(8905,3)
  76.     sleep(0.25)
  77.     rednet.send(8912,3)
  78.     sleep(0.25)
  79.     rednet.send(8909,3)
  80.     sleep(0.25)
  81.     rednet.send(8906,3)
  82.     sleep(0.25)
  83. end
  84.  
  85. function detect()   --gewinner/unentschieden erkennung
  86.     if a == 1 and b == 1 and c == 1 then
  87.         green()
  88.     elseif a == 2 and b == 2 and c == 2 then
  89.         red()
  90.     elseif d == 1 and e == 1 and f == 1 then
  91.         green()
  92.     elseif d == 2 and e == 2 and f == 2 then
  93.         red()
  94.     elseif g == 1 and h == 1 and i == 1 then
  95.         green()
  96.     elseif g == 2 and h == 2 and i == 2 then
  97.         red()
  98.     elseif a == 1 and d == 1 and g == 1 then
  99.         green()
  100.     elseif a == 2 and d == 2 and g == 2 then
  101.         red()
  102.     elseif b == 1 and e == 1 and h == 1 then
  103.         green()
  104.     elseif b == 2 and e == 2 and h == 2 then
  105.         red()
  106.     elseif c == 1 and f == 1 and i == 1 then
  107.         green()
  108.     elseif c == 2 and f == 2 and i == 2 then
  109.         red()
  110.     elseif a == 1 and e == 1 and i == 1 then
  111.         green()
  112.     elseif a == 2 and e == 2 and i == 2 then
  113.         red()
  114.     elseif c == 1 and e == 1 and g == 1 then
  115.         green()
  116.     elseif c == 2 and e == 2 and g == 2 then
  117.         red()
  118.     elseif a >= 1 and b >= 1 and c >= 1 and d >= 1 and e >= 1 and f >= 1 and g >= 1 and h >= 1 and i >= 1 then
  119.         draw()
  120.     end
  121. end
  122.  
  123. while true do
  124.     local event, button, X, Y = os.pullEvent("mouse_click")
  125.     if X >= 20 and X <= 22 and Y >= 09 and Y <= 10 and a == 0 then --Slot 1
  126.         if begin == 1 then
  127.             begin = 2
  128.             a = 1
  129.             msg(20,09,06,06,"   ")
  130.             msg(20,10,06,06,"   ")
  131.             rednet.send(8903,1)
  132.             detect()
  133.         elseif begin == 2 then
  134.             begin = 1
  135.             a = 2
  136.             msg(20,09,15,15,"   ")
  137.             msg(20,10,15,15,"   ")
  138.             rednet.send(8903,2)
  139.             detect()
  140.         end
  141.     elseif X >= 24 and X <= 26 and Y >= 09 and Y <= 10 and b == 0 then --Slot 2
  142.         if begin == 1 then
  143.             begin = 2
  144.             b = 1
  145.             msg(24,09,06,06,"   ")
  146.             msg(24,10,06,06,"   ")
  147.             rednet.send(8913,1)
  148.             detect()
  149.         elseif begin == 2 then
  150.             begin = 1
  151.             b = 2
  152.             msg(24,09,15,15,"   ")
  153.             msg(24,10,15,15,"   ")
  154.             rednet.send(8913,2)
  155.             detect()
  156.         end
  157.     elseif X >= 28 and X <= 30 and Y >= 09 and Y <= 10 and c == 0 then --Slot 3
  158.         if begin == 1 then
  159.             begin = 2
  160.             c = 1
  161.             msg(28,09,06,06,"   ")
  162.             msg(28,10,06,06,"   ")
  163.             rednet.send(8908,1)
  164.             detect()
  165.         elseif begin == 2 then
  166.             begin = 1
  167.             c = 2
  168.             msg(28,09,15,15,"   ")
  169.             msg(28,10,15,15,"   ")
  170.             rednet.send(8908,2)
  171.             detect()
  172.         end
  173.     elseif X >= 20 and X <= 22 and Y >= 12 and Y <= 13 and d == 0 then --Slot 4
  174.         if begin == 1 then
  175.             begin = 2
  176.             d = 1
  177.             msg(20,12,06,06,"   ")
  178.             msg(20,13,06,06,"   ")
  179.             rednet.send(8911,1)
  180.             detect()
  181.         elseif begin == 2 then
  182.             begin = 1
  183.             d = 2
  184.             msg(20,12,15,15,"   ")
  185.             msg(20,13,15,15,"   ")
  186.             rednet.send(8911,2)
  187.             detect()
  188.         end
  189.     elseif X >= 24 and X <= 26 and Y >= 12 and Y <= 13 and e == 0 then --Slot 5
  190.         if begin == 1 then
  191.             begin = 2
  192.             e = 1
  193.             msg(24,12,06,06,"   ")
  194.             msg(24,13,06,06,"   ")
  195.             rednet.send(8910,1)
  196.             detect()
  197.         elseif begin == 2 then
  198.             begin = 1
  199.             e = 2
  200.             msg(24,12,15,15,"   ")
  201.             msg(24,13,15,15,"   ")
  202.             rednet.send(8910,2)
  203.             detect()
  204.         end
  205.     elseif X >= 28 and X <= 30 and Y >= 12 and Y <= 13 and f == 0 then --Slot 6
  206.         if begin == 1 then
  207.             begin = 2
  208.             f = 1
  209.             msg(28,12,06,06,"   ")
  210.             msg(28,13,06,06,"   ")
  211.             rednet.send(8905,1)
  212.             detect()
  213.         elseif begin == 2 then
  214.             begin = 1
  215.             f = 2
  216.             msg(28,12,15,15,"   ")
  217.             msg(28,13,15,15,"   ")
  218.             rednet.send(8905,2)
  219.             detect()
  220.         end
  221.     elseif X >= 20 and X <= 22 and Y >= 15 and Y <= 16 and g == 0 then --Slot 7
  222.         if begin == 1 then
  223.             begin = 2
  224.             g = 1
  225.             msg(20,15,06,06,"   ")
  226.             msg(20,16,06,06,"   ")
  227.             rednet.send(8912,1)
  228.             detect()
  229.         elseif begin == 2 then
  230.             begin = 1
  231.             g = 2
  232.             msg(20,15,15,15,"   ")
  233.             msg(20,16,15,15,"   ")
  234.             rednet.send(8912,2)
  235.             detect()
  236.         end
  237.     elseif X >= 24 and X <= 26 and Y >= 15 and Y <= 16 and h == 0 then --Slot 8
  238.         if begin == 1 then
  239.             begin = 2
  240.             h = 1
  241.             msg(24,15,06,06,"   ")
  242.             msg(24,16,06,06,"   ")
  243.             rednet.send(8909,1)
  244.             detect()
  245.         elseif begin == 2 then
  246.             begin = 1
  247.             h = 2
  248.             msg(24,15,15,15,"   ")
  249.             msg(24,16,15,15,"   ")
  250.             rednet.send(8909,2)
  251.             detect()
  252.         end
  253.     elseif X >= 28 and X <= 30 and Y >= 15 and Y <= 16 and i == 0 then --Slot 9
  254.         if begin == 1 then
  255.             begin = 2
  256.             i = 1
  257.             msg(28,15,06,06,"   ")
  258.             msg(28,16,06,06,"   ")
  259.             rednet.send(8906,1)
  260.             detect()
  261.         elseif begin == 2 then
  262.             begin = 1
  263.             i = 2
  264.             msg(28,15,15,15,"   ")
  265.             msg(28,16,15,15,"   ")
  266.             rednet.send(8906,2)
  267.             detect()
  268.         end
  269.     elseif X >= 20 and X <= 30 and Y >= 19 and Y <= 19 then
  270.         term.setCursorPos(1,1)
  271.         term.setBackgroundColor(colors.black)
  272.         term.clear()
  273.         term.write("reboot...")
  274.         turtlereset()
  275.         os.reboot()
  276.     else
  277.         --
  278.     end
  279. end
  280.  
  281.  
  282.  
  283.  
  284.  
  285.  
Add Comment
Please, Sign In to add comment