Advertisement
HangMan23

Labirint.lua

Sep 3rd, 2019
157
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 4.12 KB | None | 0 0
  1. local drawing = require("drawing")
  2. local EU = require("ExtraUtilits")
  3. local computer = require("computer")
  4. local gpu = require("component").gpu
  5. local term = require("term")
  6.  
  7. local boosts = {
  8. ["health"] = {color = 0x00ffff, func = }
  9. }
  10.  
  11. local background = 0x323232
  12.  
  13. local close
  14.  
  15. local res = {}
  16.  
  17. local l = 1
  18.  
  19. local level
  20.  
  21. local timing = computer.uptime()
  22.  
  23. res.w, res.h = gpu.getResolution()
  24.  
  25. local player, x, y
  26.  
  27. local function loadLevel(path)
  28.  
  29.   level = drawing.load(path)
  30.   player = drawing.pixel(0xff0000, 0x000000, " ")
  31.  
  32.   x, y = res.w / 2 - level.width / 2, res.h / 2 - level.height / 2 + 1
  33.   player.x, player.y = 3, 2
  34.  
  35. end
  36.  
  37. loadLevel("/game.app/level_" .. l)
  38.  
  39. local score = 0
  40.  
  41. local boosted = false
  42.  
  43. local function setScore(vol)
  44.  
  45.   score = score + vol
  46.  
  47.   gpu.setBackground(background)
  48.   gpu.setForeground(0xffffff)
  49.   gpu.set(1, 1, tostring("score: " .. score))
  50.  
  51.   if score < 0 then
  52.  
  53.     close = true
  54.  
  55.     gpu.setBackground(0x000000)
  56.     term.clear()
  57.  
  58.   end
  59.  
  60. end
  61.  
  62. local function gameOver()
  63.  
  64.   computer.beep(100, 0)
  65.   computer.beep(100, 0)
  66.  
  67.   drawing.draw(x, y, level)
  68.  
  69.   player.x, player.y = 3, 2
  70.   drawing.drawPixel(x + player.x - 1, y + player.y - 1, player)
  71.  
  72.   setScore(-1)
  73.  
  74. end
  75.  
  76. local function win()
  77.  
  78.   computer.beep(306, 0)
  79.   computer.beep(410, 0.2)
  80.  
  81.   l = l + 1
  82.  
  83.   loadLevel("/game.app/level_" .. l)
  84.  
  85.   drawing.draw(x, y, level)
  86.  
  87.   player.x, player.y = 3, 2
  88.   drawing.drawPixel(x + player.x - 1, y + player.y - 1, player)
  89.  
  90.   setScore(1)
  91.  
  92. end
  93.  
  94. local function boost(bst)
  95.  
  96.   boosted = bst
  97.   player.color.background.color = boosts[bst].color
  98.   drawing.drawPixel(x + player.x - 1, y + player.y - 1, player)
  99.   level = drawing.setPixel(level, player.x, player.y, drawing.pixel(0xffffff, 0x000000, " "))
  100.   computer.beep(500)
  101.   computer.beep(430)
  102.   computer.beep(460)
  103.  
  104. end
  105.  
  106. local function move(px, py)
  107.  
  108.   drawing.drawPixel(x + player.x - 1, y + player.y - 1, drawing.pixel(0xffffff, 0x000000, " "))
  109.  
  110.   player.x = player.x + px
  111.   player.y = player.y + py
  112.  
  113.   drawing.drawPixel(x + player.x - 1, y + player.y - 1, player)
  114.  
  115.   if drawing.getPixel(level, player.x, player.y).color.background.color == 0x000000 then
  116.  
  117.     if not boosted then
  118.  
  119.       gameOver()
  120.  
  121.     else
  122.  
  123.       computer.beep(200, 0)
  124.  
  125.       boosted = false
  126.       player.color.background.color = 0xff0000
  127.       player.x = player.x - px
  128.       player.y = player.y - py
  129.       drawing.drawPixel(player.x + x - 1, player.y + y - 1, player)
  130.  
  131.     end
  132.  
  133.   elseif drawing.getPixel(level, player.x, player.y).color.background.color == 0x0000ff then
  134.  
  135.     win()
  136.  
  137.   elseif drawing.getPixel(level, player.x, player.y).color.background.color == 0x00ffff then
  138.  
  139.     boost()
  140.  
  141.   end
  142.  
  143. end
  144.  
  145. local keys = {}
  146.  
  147. keys["w"] = function() move(0, -1) end
  148. keys["a"] = function() move(-1, 0) end
  149. keys["s"] = function() move(0, 1) end
  150. keys["d"] = function() move(1, 0) end
  151.  
  152. keys["m"] = function()
  153.  
  154.   local buttons = {}
  155.  
  156.   local function exit()
  157.  
  158.     buttons.close = true
  159.     close = true
  160.  
  161.   end
  162.  
  163.   local function restart()
  164.  
  165.     buttons.close = true
  166.     loadLevel("/game.app/level_1")
  167.  
  168.     drawing.draw(x, y, level)
  169.  
  170.     player.x, player.y = 3, 2
  171.     drawing.drawPixel(x + player.x - 1, y + player.y - 1, player)
  172.  
  173.     setScore(-score)
  174.  
  175.   end
  176.  
  177.   buttons = {
  178.   {res.w / 2 - 10, res.h / 2 - 1, 10, 1, 0x646464, 0xffffff, "Exit", exit},
  179.   {res.w / 2 - 10, res.h / 2, 10, 1, 0x646464, 0xffffff, "Restart", restart}
  180.   }
  181.  
  182.   EU.screenBackup(function()
  183.  
  184.     EU.draw(buttons)
  185.     EU.buttonPress(buttons)
  186.  
  187.   end)
  188.  
  189. end
  190.  
  191. local function pull(ev)
  192.  
  193.   local evt, _, key = table.unpack(ev)
  194.  
  195.   if evt == "key_down" then
  196.  
  197.     local char = string.char(key)
  198.  
  199.     if keys[char] then
  200.    
  201.       keys[char]()
  202.  
  203.     end
  204.  
  205.   end
  206.  
  207. end
  208.  
  209. gpu.setBackground(background)
  210. term.clear()
  211.  
  212. drawing.draw(x, y, level)
  213. drawing.drawPixel(x + player.x - 1, y + player.y - 1, player)
  214. gpu.setBackground(background)
  215. gpu.setForeground(0xffffff)
  216. gpu.set(1, 1, tostring("score: " .. score))
  217.  
  218. while not close do
  219.  
  220.   pull({computer.pullSignal()})
  221.  
  222. end
  223.  
  224. gpu.setBackground(0x000000)
  225. gpu.setForeground(0xffffff)
  226. term.clear()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement