-
Notifications
You must be signed in to change notification settings - Fork 0
/
gravity.lua
65 lines (51 loc) · 1.08 KB
/
gravity.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
-- gravity.
--
-- @jamesedge
-- https://www.lexaloffle.com/bbs/?tid=36182
--
-- ported by @eigen
-- ------------------------------------------------------------------------
-- init
include('p8/lib/p8')
include('p8/lib/physics')
function init()
screen.aa(1)
screen.line_width(1)
init_scene()
end
local fps = 30
redraw_clock = clock.run(
function()
local step_s = 1 / fps
while true do
clock.sleep(step_s)
redraw()
end
end)
function cleanup()
clock.cancel(redraw_clock)
end
-- ------------------------------------------------------------------------
-- cart
function init_scene()
ppx_init(5)
shape = px_convex(10, 10)
for _,c in pairs(shape) do
if c[1]>0 then c[1], c[2] = 0.5*c[1]+20, 0.5*c[2] end
end
for i=1,5 do
body = ppx.body(i*20, rnd(64)-32, 1, shape, -3, 0)
body.a = rnd(TWOPI)
end
ppx.boundary(64, 64, 0, -1)
ppx.boundary(0, 64, 1, 0)
ppx.boundary(127, 64, -1, 0)
end
function redraw()
screen.clear()
ppx.update()
for i,body in pairs(ppx.bodies) do
draw_body(body, (i+6)%15+1)
end
screen.update()
end