Guest program: bouncing balls
Lua Carousel » Devlog
I just received a very fun program from Origedit. Enjoy!
g=love.graphics rnd=math.random bs={} bs.gravity=10 function addb() local function dir() return (rnd()*2-1)*200 end table.insert(bs,{ x=rnd()*Safe_width, y=rnd()*Safe_height, sx=dir(), sy=dir(), r=20+rnd()*50, col={rnd(),rnd(),rnd()} }) end for i=1,30 do addb() end function movep(b,dt,p,s,max) b[p]=b[p]+b[s]*dt if b[p] < b.r then b[p]=b.r b[s]=math.abs(b[s]) elseif b[p] > max-b.r then b[p]=max-b.r b[s]=-math.abs(b[s]) end end function bdist(a,b) return math.pow(math.pow(a.x-b.x,2)+math.pow(a.y-b.y,2),0.5) end function bbounce(b, bb,d) local dx,dy=b.x-bb.x,b.y-bb.y local k= ((b.sx-bb.sx)*dx+ (b.sy-bb.sy)*dy)/ d/d local h=-(d-b.r-bb.r)/d/2 return b.sx-dx*k,b.sy-dy*k,b.x+dx*h,b.y+dy*h end function bcollide(b,i) for ii=i+1,#bs,1 do local bb=bs[ii] local d=bdist(b,bb) if d < b.r+bb.r then local vx,vy,x,y=bbounce(b,bb,d) bb.sx,bb.sy,bb.x,bb.y=bbounce(bb,b,d) b.sx,b.sy,b.x,b.y=vx,vy,x,y end end end function car.update(dt) for i,b in ipairs(bs) do movep(b,dt,"x","sx",Safe_width) movep(b,dt,"y","sy",Safe_height) b.sy=b.sy+bs.gravity bcollide(b,i) end end function car.draw() for i,b in ipairs(bs) do g.setColor(b.col) g.circle("fill",b.x,b.y,b.r) end end
If you have built anything with Lua Carousel and would like to show it here, please do what Origedit did, and send me a message.
Files
carousel-bj.love 118 kB
24 days ago
carousel-bj-safe.love 118 kB
24 days ago
Get Lua Carousel
Lua Carousel
Write programs on desktop and mobile
Status | In development |
Category | Tool |
Author | Kartik Agaram |
Tags | LÖVE |
More posts
- New version after 3 months, and turtle graphics24 days ago
- Interactively zooming in to the Mandelbrot set on a touchscreen43 days ago
- A little timer app44 days ago
- New version after 4 monthsJun 28, 2024
- Visualizing the digits of πMay 04, 2024
- A little recursion problemApr 15, 2024
- Drawing histogramsApr 03, 2024
- The simplest possible ditherMar 30, 2024
- All the 1-D cellular automataMar 23, 2024
Leave a comment
Log in with itch.io to leave a comment.