Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local drawing = require("drawing")
- local EU = require("ExtraUtilits")
- local computer = require("computer")
- local gpu = require("component").gpu
- local term = require("term")
- local boosts = {
- ["health"] = {color = 0x00ffff, func = }
- }
- local background = 0x323232
- local close
- local res = {}
- local l = 1
- local level
- local timing = computer.uptime()
- res.w, res.h = gpu.getResolution()
- local player, x, y
- local function loadLevel(path)
- level = drawing.load(path)
- player = drawing.pixel(0xff0000, 0x000000, " ")
- x, y = res.w / 2 - level.width / 2, res.h / 2 - level.height / 2 + 1
- player.x, player.y = 3, 2
- end
- loadLevel("/game.app/level_" .. l)
- local score = 0
- local boosted = false
- local function setScore(vol)
- score = score + vol
- gpu.setBackground(background)
- gpu.setForeground(0xffffff)
- gpu.set(1, 1, tostring("score: " .. score))
- if score < 0 then
- close = true
- gpu.setBackground(0x000000)
- term.clear()
- end
- end
- local function gameOver()
- computer.beep(100, 0)
- computer.beep(100, 0)
- drawing.draw(x, y, level)
- player.x, player.y = 3, 2
- drawing.drawPixel(x + player.x - 1, y + player.y - 1, player)
- setScore(-1)
- end
- local function win()
- computer.beep(306, 0)
- computer.beep(410, 0.2)
- l = l + 1
- loadLevel("/game.app/level_" .. l)
- drawing.draw(x, y, level)
- player.x, player.y = 3, 2
- drawing.drawPixel(x + player.x - 1, y + player.y - 1, player)
- setScore(1)
- end
- local function boost(bst)
- boosted = bst
- player.color.background.color = boosts[bst].color
- drawing.drawPixel(x + player.x - 1, y + player.y - 1, player)
- level = drawing.setPixel(level, player.x, player.y, drawing.pixel(0xffffff, 0x000000, " "))
- computer.beep(500)
- computer.beep(430)
- computer.beep(460)
- end
- local function move(px, py)
- drawing.drawPixel(x + player.x - 1, y + player.y - 1, drawing.pixel(0xffffff, 0x000000, " "))
- player.x = player.x + px
- player.y = player.y + py
- drawing.drawPixel(x + player.x - 1, y + player.y - 1, player)
- if drawing.getPixel(level, player.x, player.y).color.background.color == 0x000000 then
- if not boosted then
- gameOver()
- else
- computer.beep(200, 0)
- boosted = false
- player.color.background.color = 0xff0000
- player.x = player.x - px
- player.y = player.y - py
- drawing.drawPixel(player.x + x - 1, player.y + y - 1, player)
- end
- elseif drawing.getPixel(level, player.x, player.y).color.background.color == 0x0000ff then
- win()
- elseif drawing.getPixel(level, player.x, player.y).color.background.color == 0x00ffff then
- boost()
- end
- end
- local keys = {}
- keys["w"] = function() move(0, -1) end
- keys["a"] = function() move(-1, 0) end
- keys["s"] = function() move(0, 1) end
- keys["d"] = function() move(1, 0) end
- keys["m"] = function()
- local buttons = {}
- local function exit()
- buttons.close = true
- close = true
- end
- local function restart()
- buttons.close = true
- loadLevel("/game.app/level_1")
- drawing.draw(x, y, level)
- player.x, player.y = 3, 2
- drawing.drawPixel(x + player.x - 1, y + player.y - 1, player)
- setScore(-score)
- end
- buttons = {
- {res.w / 2 - 10, res.h / 2 - 1, 10, 1, 0x646464, 0xffffff, "Exit", exit},
- {res.w / 2 - 10, res.h / 2, 10, 1, 0x646464, 0xffffff, "Restart", restart}
- }
- EU.screenBackup(function()
- EU.draw(buttons)
- EU.buttonPress(buttons)
- end)
- end
- local function pull(ev)
- local evt, _, key = table.unpack(ev)
- if evt == "key_down" then
- local char = string.char(key)
- if keys[char] then
- keys[char]()
- end
- end
- end
- gpu.setBackground(background)
- term.clear()
- drawing.draw(x, y, level)
- drawing.drawPixel(x + player.x - 1, y + player.y - 1, player)
- gpu.setBackground(background)
- gpu.setForeground(0xffffff)
- gpu.set(1, 1, tostring("score: " .. score))
- while not close do
- pull({computer.pullSignal()})
- end
- gpu.setBackground(0x000000)
- gpu.setForeground(0xffffff)
- term.clear()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement