Initial commit
commit
603df5e639
|
@ -0,0 +1,129 @@
|
|||
function dump(o)
|
||||
s = "X: " .. o.x .. "\tY:" .. o.y
|
||||
return s
|
||||
end
|
||||
|
||||
function generate_ball(x, y, angle, dir, radius)
|
||||
local vel_x = math.sin(angle) * 100 * dir
|
||||
local vel_y = math.cos(angle) * 100
|
||||
return {
|
||||
x = x,
|
||||
y = y,
|
||||
vel_x = vel_x,
|
||||
vel_y = vel_y,
|
||||
radius = radius
|
||||
}
|
||||
end
|
||||
|
||||
function love.load()
|
||||
love.graphics.setBackgroundColor(0, 0, 0)
|
||||
love.window.setMode(500, 700, {resizable=false})
|
||||
player_x = 250
|
||||
player_y = 640
|
||||
flag = false
|
||||
is_active = false
|
||||
cursor_press = {}
|
||||
cursor_move = {}
|
||||
angle = 0
|
||||
dir = 0
|
||||
touch_id = nil
|
||||
total_balls = 10
|
||||
remaining_balls = 0
|
||||
balls = {}
|
||||
end
|
||||
|
||||
function love.draw()
|
||||
love.graphics.setColor(180, 180, 180, 255)
|
||||
-- love.graphics.circle("fill", ball_x, ball_y, 10)
|
||||
love.graphics.circle("fill", player_x, player_y, 10)
|
||||
if flag then
|
||||
love.graphics.setColor(180, 180, 180, 255)
|
||||
love.graphics.print("move " .. dump(cursor_move), 10, 10)
|
||||
love.graphics.print("press " .. dump(cursor_press), 10, 30)
|
||||
love.graphics.print("angle " .. angle, 10, 50)
|
||||
love.graphics.line(cursor_press.x, cursor_press.y, cursor_press.x, cursor_move.y, cursor_move.x, cursor_move.y, cursor_press.x, cursor_press.y)
|
||||
local point_x = player_x + (math.sin(angle) * 100) * dir
|
||||
local point_y = player_y + (math.cos(angle) * 100)
|
||||
love.graphics.line(player_x, player_y, point_x, point_y)
|
||||
end
|
||||
if active then
|
||||
for ball in balls do
|
||||
love.graphics.circle("fill", ball.x, ball.y, ball.radius)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function love.update(dt)
|
||||
if flag then
|
||||
if touch_id == nil then
|
||||
cursor_move = {x = love.mouse.getX(), y = love.mouse.getY()}
|
||||
else
|
||||
x, y = love.touch.getPosition(touch_id)
|
||||
cursor_move = {x = x, y = y}
|
||||
end
|
||||
if cursor_move.y <= cursor_press.y then
|
||||
angle = 0
|
||||
else
|
||||
catA = cursor_press.x - cursor_move.x
|
||||
catB = cursor_press.y - cursor_move.y
|
||||
hypo = math.sqrt(catA * catA + catB * catB)
|
||||
angle = math.acos(catB / hypo)
|
||||
if cursor_move.x <= cursor_press.x then
|
||||
dir = 1
|
||||
else
|
||||
dir = -1
|
||||
end
|
||||
end
|
||||
else
|
||||
angle = 0
|
||||
dir = 0
|
||||
end
|
||||
-- local width, height, _ = love.window.getMode()
|
||||
-- if ball_x <= (0 + 5) or ball_x >= (width - 5) then
|
||||
-- velocity_x = velocity_x * -1
|
||||
-- end
|
||||
-- if ball_y <= (0 + 5) then
|
||||
-- velocity_y = velocity_y * -1
|
||||
-- end
|
||||
-- if ball_y >= (height - 5) then
|
||||
-- active = false
|
||||
-- player_x = ball_x
|
||||
-- ball_y = 400
|
||||
-- end
|
||||
-- if active then
|
||||
-- ball_x = ball_x + velocity_x
|
||||
-- ball_y = ball_y + velocity_y
|
||||
-- end
|
||||
end
|
||||
|
||||
function love.mousepressed(x, y, button, istouch)
|
||||
pressed(x, y)
|
||||
end
|
||||
|
||||
function love.touchpressed(id, x, y, dx, dy, pressure)
|
||||
touch_id = id
|
||||
pressed(x, y)
|
||||
end
|
||||
|
||||
function love.mousereleased(x, y, button, istouch)
|
||||
released()
|
||||
end
|
||||
|
||||
function love.touchreleased(id, x, y, dx, dy, pressure)
|
||||
released()
|
||||
end
|
||||
|
||||
function pressed(x, y)
|
||||
if not active then
|
||||
cursor_press = {x = x, y = y}
|
||||
flag = true
|
||||
end
|
||||
end
|
||||
|
||||
function released()
|
||||
if flag then
|
||||
flag = false
|
||||
active = true
|
||||
remaining_balls = total_balls
|
||||
end
|
||||
end
|
Loading…
Reference in New Issue