Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- g_imgTable = {
- ["tank"] = nil,
- ['bullet'] = nil
- }
- g_fired = {
- }
- g_enems = {
- }
- cords = {['x'] = nil, ['y'] = nil}
- selfcords = {['x'] = 0, ['y'] = 0, ['dx'] = 0, ['dy'] = 0}
- screen = {['w'] = nil, ['h'] = nil}
- moveState = {up = nil, down = nil, left = nil, right = nil}
- step = 100
- speed = 300
- bulletCount = 0
- oldState = false
- function addEnemy() --todo
- end
- function setParent() --todo
- end
- function love.load()
- love.graphics.setBackgroundColor(255, 255, 255)
- screen.w = love.graphics.getWidth()
- screen.h = love.graphics.getHeight()
- selfcords.x = screen.w / 2
- selfcords.y = screen.h / 2
- g_imgTable["tank"] = love.graphics.newImage('tank.png')
- g_imgTable["bullet"] = love.graphics.newImage('bullet.png')
- end
- function love.update(dt)
- cords.x, cords.y = love.mouse.getPosition()
- interceptInput()
- for k, v in pairs(g_fired) do
- v.x = v.x + math.cos(v.ang) * speed * dt;
- v.y = v.y + math.sin(v.ang) * speed * dt;
- if v.x > screen.w or v.x < 0 or v.y > screen.h or v.y < 0 then
- releaseBullet(v)
- end
- end
- if selfcords.dx ~= 0 or selfcords.dy ~= 0 then
- selfcords.x = selfcords.x + selfcords.dx * dt
- selfcords.y = selfcords.y + selfcords.dy * dt
- if selfcords.dx < 0 then
- selfcords.dx = selfcords.dx + step
- elseif selfcords.dx > 0 then
- selfcords.dx = selfcords.dx - step
- end
- if selfcords.dy < 0 then
- selfcords.dy = selfcords.dy + step
- elseif selfcords.dy > 0 then
- selfcords.dy = selfcords.dy - step
- end
- end
- local curState = love.keyboard.isDown(' ')
- if curState and not oldState then
- createBullet()
- end
- bulletCount = bulletCount > 64 and 0 or bulletCount
- oldState = love.keyboard.isDown(' ')
- end
- function interceptInput()
- moveState.up = love.keyboard.isDown('w')
- moveState.down = love.keyboard.isDown('s')
- moveState.left = love.keyboard.isDown('a')
- moveState.right = love.keyboard.isDown('d')
- if moveState.up then
- selfcords.dy = selfcords.dy - step
- end
- if moveState.down then
- selfcords.dy = selfcords.dy + step
- end
- if moveState.left then
- selfcords.dx = selfcords.dx - step
- end
- if moveState.right then
- selfcords.dx = selfcords.dx + step
- end
- end
- function combineBullet(num, x, y, ang)
- return {['num'] = num, ['x'] = x, ['y'] = y, ['ang'] = ang}
- end
- function createBullet()
- local x, y = selfcords.x, selfcords.y
- local w, h = x - cords.x, y - cords.y
- local ang = math.atan2(h, w) + math.pi
- bulletCount = bulletCount + 1
- table.insert(g_fired, combineBullet(bulletCount, x + math.cos(ang) * 16, y + math.sin(ang) * 16, ang))
- end
- function releaseBullet(bullet)
- for k, v in ipairs(g_fired) do
- if v.num == bullet.num then
- table.remove(g_fired, k)
- end
- end
- end
- function love.draw()
- local x, y = selfcords.x, selfcords.y
- local w, h = x - cords.x, y - cords.y
- love.graphics.draw(g_imgTable["tank"], x, y, math.atan2(h, w) - math.pi / 2, 1, 1, 16, 16)
- for k, v in pairs(g_fired) do
- love.graphics.draw(g_imgTable["bullet"], v.x, v.y, 0, 1, 1, 8, 8)
- end
- love.graphics.setColor(0, 0, 0)
- love.graphics.print(#g_fired, 100, 100)
- love.graphics.setColor(255, 255, 255)
- end
Advertisement
Add Comment
Please, Sign In to add comment