Advertisement
egg651

main.lua

Apr 22nd, 2012
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 4.41 KB | None | 0 0
  1. function love.load()
  2.  
  3. ------------------------------
  4.   gravintensity = 4000
  5.   playerspeed = 8000
  6.   numberofballs = 4
  7.   planetrestitution = 0.75
  8.   lineardamping = 0.75
  9.   planetdensity = 0.75
  10. ------------------------------
  11.  
  12.   love.physics.setMeter(64)
  13.   world = love.physics.newWorld(0, 0, true)
  14.  
  15.   dynamicobjects = {}
  16.   sceneobjects = {}  
  17.  
  18.   GenerateBalls(numberofballs)
  19.  
  20.   sceneobjects.block1 = {}
  21.   sceneobjects.block1.body = love.physics.newBody(world, 0, 650/2, "static")
  22.   sceneobjects.block1.shape = love.physics.newRectangleShape(10, 650)
  23.   sceneobjects.block1.fixture = love.physics.newFixture(sceneobjects.block1.body, sceneobjects.block1.shape, 0)
  24.   love.graphics.setBackgroundColor(104, 136, 248)
  25.   love.graphics.setMode(650, 650, false, true, 0)
  26.  
  27.   sceneobjects.block2 = {}
  28.   sceneobjects.block2.body = love.physics.newBody(world, 650, 650/2, "static")
  29.   sceneobjects.block2.shape = love.physics.newRectangleShape(10, 650)
  30.   sceneobjects.block2.fixture = love.physics.newFixture(sceneobjects.block2.body, sceneobjects.block2.shape, 0)
  31.   love.graphics.setBackgroundColor(104, 136, 248)
  32.   love.graphics.setMode(650, 650, false, true, 0)
  33.  
  34.   sceneobjects.block3 = {}
  35.   sceneobjects.block3.body = love.physics.newBody(world, 650/2, 0, "static")
  36.   sceneobjects.block3.shape = love.physics.newRectangleShape(650, 10)
  37.   sceneobjects.block3.fixture = love.physics.newFixture(sceneobjects.block3.body, sceneobjects.block3.shape, 0)
  38.   love.graphics.setBackgroundColor(104, 136, 248)
  39.   love.graphics.setMode(650, 650, false, true, 0)
  40.  
  41.   sceneobjects.block4 = {}
  42.   sceneobjects.block4.body = love.physics.newBody(world, 650/2, 650, "static")
  43.   sceneobjects.block4.shape = love.physics.newRectangleShape(650, 10)
  44.   sceneobjects.block4.fixture = love.physics.newFixture(sceneobjects.block4.body, sceneobjects.block4.shape, 0)
  45.   love.graphics.setBackgroundColor(104, 136, 248)
  46.   love.graphics.setMode(650, 650, false, true, 0)
  47. end
  48.  
  49.  
  50. function love.update(dt)
  51.   world:update(dt)
  52.  
  53.   for i, ball in ipairs(dynamicobjects) do
  54.     for j, well in ipairs(dynamicobjects) do
  55.       if ball ~= well then
  56.         dy = ball.body:getY() - well.body:getY()
  57.         dx = ball.body:getX() - well.body:getX()
  58.  
  59.         angle = math.atan2(dy, dx)
  60.         dist = math.sqrt(dx * dx + dy * dy)
  61.        
  62.         ball.body:applyForce(ball.body:getMass() * ((-gravintensity / math.pow(dist, 1.25)) * math.cos(angle)), well.body:getMass() * ((-gravintensity / math.pow(dist, 1.25)) * math.sin(angle)))
  63.        end
  64.     end
  65.   end
  66.  
  67.   if love.keyboard.isDown("r") then
  68.     for k, ball in ipairs(dynamicobjects) do
  69.       ball.body:destroy()
  70.     end
  71.     dynamicobjects = {}
  72.     GenerateBalls(numberofballs)
  73.   end
  74.  
  75.   if love.keyboard.isDown("right") then
  76.     dynamicobjects[1].body:applyForce(playerspeed, 0)
  77.   end
  78.   if love.keyboard.isDown("left") then
  79.     dynamicobjects[1].body:applyForce(-playerspeed, 0)
  80.   end
  81.   if love.keyboard.isDown("up") then
  82.     dynamicobjects[1].body:applyForce(0, -playerspeed)
  83.   end
  84.   if love.keyboard.isDown("down") then
  85.     dynamicobjects[1].body:applyForce(0, playerspeed)
  86.   end
  87. end
  88.  
  89. function love.draw()
  90.   for i, ball in ipairs(dynamicobjects) do
  91.     love.graphics.setColor(ball.r, ball.g, ball.b)
  92.     love.graphics.circle("fill", ball.body:getX(), ball.body:getY(), ball.shape:getRadius())
  93.   end
  94.  
  95.   love.graphics.setColor(50, 50, 50)
  96.   love.graphics.polygon("fill", sceneobjects.block1.body:getWorldPoints(sceneobjects.block1.shape:getPoints()))
  97.   love.graphics.polygon("fill", sceneobjects.block2.body:getWorldPoints(sceneobjects.block2.shape:getPoints()))
  98.   love.graphics.polygon("fill", sceneobjects.block3.body:getWorldPoints(sceneobjects.block3.shape:getPoints()))
  99.   love.graphics.polygon("fill", sceneobjects.block4.body:getWorldPoints(sceneobjects.block4.shape:getPoints()))
  100. end
  101.  
  102. function GenerateBalls(count)
  103.   for i=0,count - 1 do
  104.     ball = {}
  105.     ball.body = love.physics.newBody(world, math.random(650), math.random(650), "dynamic")
  106.     ball.shape = love.physics.newCircleShape(math.random(5, 60))
  107.     ball.fixture = love.physics.newFixture(ball.body, ball.shape, planetdensity)
  108.     ball.fixture:setRestitution(planetrestitution)
  109.     ball.r = math.random(255)
  110.     ball.g = math.random(255)
  111.     ball.b = math.random(255)
  112.     ball.body:setMass(ball.shape:getRadius() * ball.fixture:getDensity())
  113.     ball.body:setLinearDamping(0.75)
  114.     ball.fixture:setUserData("ball")
  115.     table.insert(dynamicobjects, ball)
  116.   end
  117. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement