diff options
author | ubq323 <ubq323@ubq323.website> | 2022-03-27 23:10:56 +0100 |
---|---|---|
committer | ubq323 <ubq323@ubq323.website> | 2022-03-27 23:10:56 +0100 |
commit | 2ebd13947d71d78892690c45690fa49157ac4612 (patch) | |
tree | c0858d0e1c6157284a7111c860e4edfe29b481dc /src/main.lua |
first !!!
Diffstat (limited to 'src/main.lua')
-rw-r--r-- | src/main.lua | 132 |
1 files changed, 132 insertions, 0 deletions
diff --git a/src/main.lua b/src/main.lua new file mode 100644 index 0000000..20c532a --- /dev/null +++ b/src/main.lua @@ -0,0 +1,132 @@ +local plr={ + x=250, + y=250, +} + +local bump = require "bump" + + +local PL_SPEED = 170 +local PL_SPRINT_SPEED = 280 + +local font, title +local world +local jerma +function love.load() + font = love.graphics.newFont("APL333.ttf",72) + title = love.graphics.newText(font, "room A9") + jerma = love.graphics.newImage("jerma.jpg") + world = bump.newWorld() + world:add("player", plr.x, plr.y, 10,10) + world:add("jerma", 30,400, 400, 50) +end + +local function player_movement(dt) + local speed = + (love.keyboard.isScancodeDown("lshift","rshift") and PL_SPRINT_SPEED or PL_SPEED) + local vx = 0 + local vy = 0 + + if love.keyboard.isScancodeDown('w','up') then vy = vy - 1 end + if love.keyboard.isScancodeDown('s','down') then vy = vy + 1 end + if love.keyboard.isScancodeDown('a','left') then vx = vx - 1 end + if love.keyboard.isScancodeDown('d','right') then vx = vx + 1 end + + local sf = math.sqrt(vx*vx+vy*vy) + if sf == 0 then return end + vx = vx / sf + vy = vy / sf + + local tx = plr.x + vx * dt * speed + local ty = plr.y + vy * dt * speed + + local ax, ay = world:move("player",tx,ty) + plr.x = ax + plr.y = ay + +end + +local function draw_player() + love.graphics.setColor(0.91,0.62,0) + love.graphics.rectangle("fill", plr.x,plr.y, 10,10) +end + +local function draw_room() + love.graphics.setColor(0.8,0.8,0.8) + love.graphics.setLineWidth(10) + love.graphics.rectangle("line",30,80,580,370) + love.graphics.draw(title,610-title:getWidth(),-10) +end + +local draw_thing = coroutine.wrap(function() + local t = 0 + local angry = false + + local tri_a = 100 + local tri_h = (math.sqrt(3)/2)*tri_a + + local ell_l = 20 + local ell_r = 30 + + while true do + local theta = t/10 + local c = math.cos(theta) + local s = math.sin(theta) + + local dist = math.sqrt((420-plr.x)^2 + (240-plr.y)^2) + if not angry and dist < 100 then + angry = true + elseif angry and dist > 200 then + angry = false + end + + + love.graphics.push() + love.graphics.translate(420,240) + + love.graphics.push() + love.graphics.setLineWidth(10) + love.graphics.setColor(angry and {1,0,0,0.8} or {0.7,0,0.5,0.8}) + love.graphics.rotate(-theta/1.618) + love.graphics.polygon("line", -tri_a/2,-tri_h/3, tri_a/2,-tri_h/3, 0,2*tri_h/3) + love.graphics.pop() + + love.graphics.setLineWidth(7) + love.graphics.setColor(0.8,0.8,0,0.7) + love.graphics.ellipse("line", ell_l*c,ell_l*s, ell_r,2*ell_r) + love.graphics.setColor(0,0.8,0.8,0.7) + love.graphics.ellipse("line", -ell_l*c,-ell_l*s, ell_r,2*ell_r) + + love.graphics.pop() + + + + t = t + (angry and 1.8 or 1) + + coroutine.yield() + end +end) + +function draw_jerma() + love.graphics.setColor(1,1,1,1) + local sx = 400/jerma:getWidth() + local sy = 50/jerma:getHeight() + local px = + love.graphics.draw(jerma,30,400, 0, sx,sy) +end + +function love.update(dt) + player_movement(dt) +end + +function love.draw() + love.graphics.clear(1,1,1) + love.graphics.setColor(0,0,0) + -- love.graphics.print("bees "..plr.x.." "..plr.y,10,10) + draw_room() + draw_jerma() + draw_player() + draw_thing() + + +end |