Advertisement
AdventurousMR

Space Invaders

Mar 2nd, 2022 (edited)
642
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 5.60 KB | None | 0 0
  1. term.clear()
  2.  
  3. function split (inputstr, sep)
  4.     if sep == nil then
  5.             sep = "%s"
  6.     end
  7.     local t={}
  8.     for str in string.gmatch(inputstr, "([^"..sep.."]+)") do
  9.             table.insert(t, str)
  10.     end
  11.     return t
  12. end
  13.  
  14. -- ^^^ DON'T TOUCH THIS FUTURE ME ^^^ ---
  15.  
  16. _rendertable = {}
  17. _rendertable.aliens = {"1 1","2 1","3 1"}
  18. _rendertable.structures = {"2 17","2 16","2 15","3 15","4 15","5 15","6 15","7 15","7 16","7 17",
  19. "16 17","16 16","16 15","17 15","18 15","19 15","20 15","21 15","21 16","21 17",
  20. "50 17","50 16","50 15","49 15","48 15","47 15","46 15","45 15","45 16","45 17",
  21. "31 17","31 16","31 15","32 15","33 15","34 15","35 15","36 15","36 16","36 17",
  22. } --Table that holds all X and Y coordinates for a singular pixel (Thanks prince :) )
  23. _rendertable.playerpos = {"25 19","26 19","27 19"}
  24. _rendertable.bulletpos = {}
  25. playerpos = 26
  26. alienpos = 2
  27. alienleft = 0
  28.  
  29. function alienbody()
  30.     while true do
  31.         if alienpos == 50 then
  32.             alienleft = 1
  33.         elseif alienpos == 2 then
  34.             alienleft = 0
  35.         end
  36.             alienpos = alienpos
  37.             sleep(1)
  38.         if _rendertable.aliens[1] ~= "0 0" and _rendertable.aliens[2] ~= "0 0" and _rendertable.aliens[3] ~= "0 0" and alienleft == 0 then
  39.             alienpos = alienpos + 1
  40.             _rendertable.aliens = {tostring(alienpos-1).." 1",tostring(alienpos).." 1",tostring(alienpos+1).." 1"}
  41.         end
  42.         if _rendertable.aliens[1] ~= "0 0" and _rendertable.aliens[2] ~= "0 0" and _rendertable.aliens[3] ~= "0 0" and alienleft == 1 then
  43.             alienpos = alienpos - 1
  44.             _rendertable.aliens = {tostring(alienpos-1).." 1",tostring(alienpos).." 1",tostring(alienpos+1).." 1"}
  45.         end
  46.  
  47.         sleep()
  48.     end
  49. end
  50.  
  51. function playerbody()
  52.     while true do
  53.         playerpos = playerpos
  54.         local event, key = os.pullEvent("key")
  55.         if key == keys.d and playerpos <= 49 then
  56.             playerpos = playerpos + 1
  57.             _rendertable.playerpos = {tostring(playerpos-1).." 19",tostring(playerpos).." 19",tostring(playerpos+1).." 19"}
  58.         end
  59.         if key == keys.a and playerpos >= 3 then
  60.             playerpos = playerpos - 1
  61.             _rendertable.playerpos = {tostring(playerpos-1).." 19",tostring(playerpos).." 19",tostring(playerpos+1).." 19"}
  62.         end
  63.         if key == keys.space and textutils.serialise(_rendertable.bulletpos) == "{}" then
  64.             table.insert(_rendertable.bulletpos,tostring(playerpos).." 18")
  65.         end
  66.         sleep()
  67.     end
  68. end
  69.  
  70. function bulletbody()
  71.     while true do
  72.         for x=1,#_rendertable.bulletpos do
  73.             _rendertable.bulletpos = {tostring(tonumber(split(_rendertable.bulletpos[x]," ")[1])).." "..tostring(tonumber(split(_rendertable.bulletpos[x]," ")[2])-1)}
  74.             for y=1,#_rendertable.structures do
  75.                 if _rendertable.structures[y] == _rendertable.bulletpos[x] then
  76.                     _rendertable.bulletpos[x] = "0 0"
  77.                     _rendertable.structures[y] = "0 0"
  78.                     -- table.remove(_rendertable.bulletpos, x)
  79.                     -- table.remove(_rendertable.structures, y)
  80.                 end
  81.             end
  82.             for y=1,#_rendertable.aliens do
  83.                 if _rendertable.aliens[y] == _rendertable.bulletpos[x] then
  84.                     _rendertable.bulletpos[x] = "0 0"
  85.                     _rendertable.aliens = {"0 0","0 0","0 0"}
  86.                     -- table.remove(_rendertable.bulletpos, x)
  87.                     -- table.remove(_rendertable.structures, y)
  88.                 end
  89.             end
  90.             if tonumber(split(_rendertable.bulletpos[x]," ")[2]) <= 0 then
  91.                 _rendertable.bulletpos = {}
  92.             end
  93.         end
  94.         sleep(0.075)
  95.     end
  96. end
  97.  
  98. function render() --Function that will render (duh) everything in the _rendertable variable (WILL RUN FOREVER)
  99.     while true do
  100.         _rendertable = _rendertable
  101.         _rendertable.playerpos = _rendertable.playerpos
  102.         term.setBackgroundColor(colors.black)
  103.         term.clear()
  104.         -- print(#_rendertable.playerpos)
  105.         if #_rendertable > 0 then
  106.             for x=1,#_rendertable do
  107.                 paintutils.drawPixel(tonumber(split(_rendertable[x]," ")[1]),tonumber(split(_rendertable[x]," ")[2]),colors.white)
  108.             end
  109.         end
  110.         if #_rendertable.structures > 0 then
  111.             for x=1,#_rendertable.structures do
  112.                 paintutils.drawPixel(tonumber(split(_rendertable.structures[x]," ")[1]),tonumber(split(_rendertable.structures[x]," ")[2]),colors.white)
  113.             end
  114.         end
  115.         if #_rendertable.playerpos > 0 then
  116.             for x=1,#_rendertable.playerpos do
  117.                 paintutils.drawPixel(tonumber(split(_rendertable.playerpos[x]," ")[1]),tonumber(split(_rendertable.playerpos[x]," ")[2]),colors.white)
  118.             end
  119.         end
  120.         if #_rendertable.bulletpos > 0 then
  121.             for x=1,#_rendertable.bulletpos do
  122.                 paintutils.drawPixel(tonumber(split(_rendertable.bulletpos[x]," ")[1]),tonumber(split(_rendertable.bulletpos[x]," ")[2]),colors.white)
  123.             end
  124.         end
  125.         if #_rendertable.aliens > 0 then
  126.             for x=1,#_rendertable.aliens do
  127.                 paintutils.drawPixel(tonumber(split(_rendertable.aliens[x]," ")[1]),tonumber(split(_rendertable.aliens[x]," ")[2]),colors.white)
  128.             end
  129.         end
  130.         sleep()
  131.     end
  132. end
  133.  
  134. function drawEntites01()
  135.     parallel.waitForAll(playerbody,bulletbody)
  136. end
  137. function drawEntites02()
  138.     parallel.waitForAll(drawEntites01,alienbody)
  139. end
  140.  
  141. parallel.waitForAll(drawEntites02,render)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement