260 lines
6.4 KiB
Plaintext
260 lines
6.4 KiB
Plaintext
-- some examples that each get loaded into a pane
|
|
-- each example has a name, so we can avoid bringing back up an example someone deleted.
|
|
-- Be careful not to rename example panes; that will cause them to pop up again and annoy people who've already deleted them.
|
|
-- If you delete a name, be careful not to reuse it in future.
|
|
Example_panes = {
|
|
{
|
|
name='expr',
|
|
lines={
|
|
'-- Some examples; feel free to delete.',
|
|
'-- First example: you can perform',
|
|
'-- simple calculations.',
|
|
'',
|
|
'2+3',
|
|
'',
|
|
"-- Try hitting the 'run' button above.",
|
|
"-- When you're done, tap on the",
|
|
'-- right margin to go to the next',
|
|
'-- example.',
|
|
}
|
|
},
|
|
{
|
|
name='print',
|
|
lines={
|
|
'-- print() calls show up in the area',
|
|
"-- below. Hit 'run' and then try scrolling",
|
|
'-- through the results.',
|
|
'for i=1,20 do',
|
|
' print(i)',
|
|
'end',
|
|
},
|
|
},
|
|
{
|
|
name='draw',
|
|
lines={
|
|
'-- You can draw on the screen.',
|
|
"-- After you hit 'run', try hitting 'hide'.",
|
|
'-- The editor will disappear. Hit show',
|
|
"-- to bring it back.",
|
|
'love.graphics.line(100,100, 200,300)',
|
|
},
|
|
},
|
|
{
|
|
name='pattern',
|
|
lines={
|
|
'-- A larger drawing: A checkerboard',
|
|
'-- Notice Safe_width and Safe_height',
|
|
'-- for the bounds of the screen.',
|
|
'n = 100',
|
|
'for x=0,Safe_width,n do',
|
|
' for y=0,Safe_height,n do',
|
|
' if (x+y)/n%2 == 0 then',
|
|
' love.graphics.setColor(0.9, 0.7, 0.7)',
|
|
' else',
|
|
' love.graphics.setColor(0.7, 0.7, 0.9)',
|
|
' end',
|
|
" love.graphics.rectangle('fill', x,y, n,n)",
|
|
' end',
|
|
'end',
|
|
},
|
|
},
|
|
{
|
|
name='animation',
|
|
lines={
|
|
'-- For animations, you can define various',
|
|
'-- functions that will get called for you.',
|
|
'-- LÖVE looks for functions called',
|
|
'-- love.draw, love.update, etc.',
|
|
"-- You can't define those directly (they",
|
|
'-- contain Carousel code), but you can',
|
|
'-- define car.draw, car.update,etc.',
|
|
'Radius, dRadius = 100, 10',
|
|
'function car.draw()',
|
|
" love.graphics.circle('fill', 100,100, Radius)",
|
|
'end',
|
|
'',
|
|
'function car.update(dt)',
|
|
' Radius = Radius+dRadius',
|
|
' if Radius > 500 then dRadius = -dRadius end',
|
|
' if Radius < 30 then dRadius = -dRadius end',
|
|
'end',
|
|
},
|
|
},
|
|
{
|
|
name='interactive',
|
|
lines={
|
|
'-- For interactivity, LÖVE provides',
|
|
'-- functions like love.keypressed,',
|
|
'-- love.mousepressed, etc.',
|
|
'-- As before, define car.keypressed,',
|
|
'-- car.mousepressed, etc.',
|
|
'-- These interactive events only activate',
|
|
'-- when the editor is hidden using the',
|
|
"-- 'hide' button above.",
|
|
'--',
|
|
'-- Try running this example and then',
|
|
'-- pressing and holding the mouse and',
|
|
'-- typing keys.',
|
|
'-- Then try again after hiding the editor.',
|
|
'X, Y, dX = 100, 0, 10',
|
|
"Log = ''",
|
|
'',
|
|
'function car.draw()',
|
|
' love.graphics.line(X,Y, X,Y+300)',
|
|
' love.graphics.print(Log, 50,50)',
|
|
'end',
|
|
'',
|
|
'function car.update(dt)',
|
|
' if X > 500 then dX = -dX end',
|
|
' if X < 100 then dX = -dX end',
|
|
' X = X+dX',
|
|
'end',
|
|
'',
|
|
'function car.mousepressed(x,y, button)',
|
|
' Y = y',
|
|
'end',
|
|
'',
|
|
'function car.mousereleased(x,y, button)',
|
|
' Y = 0',
|
|
'end',
|
|
'',
|
|
'function car.keypressed(key)',
|
|
' Log = Log..key',
|
|
'end',
|
|
},
|
|
},
|
|
{
|
|
name='abbreviations',
|
|
lines={
|
|
'-- Some abbreviations to reduce typing.',
|
|
'g = love.graphics',
|
|
'pt, line = g.points, g.line',
|
|
'rect, poly = g.rectangle, g.polygon',
|
|
'circle, arc, ellipse = g.circle, g.arc, g.ellipse',
|
|
'color = g.setColor',
|
|
'min, max = math.min, math.max',
|
|
'abs, rand = math.abs, math.random',
|
|
"-- Hit 'run', Now they're available to other",
|
|
'-- panes.',
|
|
},
|
|
},
|
|
{
|
|
name='circ',
|
|
lines={
|
|
'-- a snazzy circle',
|
|
'cx, cy, N = 30, 100, 100',
|
|
'function dist2(x1,y1, x2,y2)',
|
|
' return (x2-x1)^2 + (y2-y1)^2',
|
|
'end',
|
|
'',
|
|
'function car.draw()',
|
|
' for x=cx-N,cx+N do',
|
|
' for y=cy-N,cy+N do',
|
|
' if dist2(cx,cy, x,y) < N*N then',
|
|
' color(abs(x-cx)/N, abs(y-cy)/N, 0.5)',
|
|
' pt(x,y)',
|
|
'end end end end',
|
|
'',
|
|
'function car.mousepressed(x,y, b)',
|
|
' cx,cy = x,y',
|
|
'end',
|
|
},
|
|
},
|
|
{
|
|
name='pacman',
|
|
lines={
|
|
'-- pacman',
|
|
'function init_balls()',
|
|
' balls = {}',
|
|
' for x=50,Safe_width-1,50 do',
|
|
' for y=30,Safe_height-1,50 do',
|
|
' table.insert(balls, {x=x, y=y, show = true})',
|
|
'end end end',
|
|
'init_balls()',
|
|
'',
|
|
'function eat_ball()',
|
|
' for _,b in ipairs(balls) do',
|
|
' if b.x == x and b.y == y then',
|
|
' b.show = false',
|
|
'end end end',
|
|
'',
|
|
'x, y = 30, 30',
|
|
'dx = 5',
|
|
'dang = 0 -- change in mouth angle',
|
|
'',
|
|
'function car.draw()',
|
|
' color(0.8, 0.8, 0)',
|
|
" arc('fill', x,y, 20, dang + 0.5, dang + 2*math.pi - 0.5)",
|
|
' for _,b in ipairs(balls) do',
|
|
' if b.show then',
|
|
" circle('fill', b.x, b.y, 10)",
|
|
'end end end',
|
|
'',
|
|
'function car.update(dt)',
|
|
' x = x+dx',
|
|
' eat_ball()',
|
|
' if x > Safe_width then',
|
|
' y, dx = y+50, -5',
|
|
' dang = math.pi',
|
|
' elseif x < 0 then',
|
|
' y, dx = y+50, 5',
|
|
' dang = 0',
|
|
' end',
|
|
' if y > Safe_height then',
|
|
' y = 30',
|
|
' init_balls()',
|
|
' end',
|
|
'end',
|
|
},
|
|
},
|
|
{
|
|
name='trails',
|
|
lines={
|
|
'-- sweep trails with your finger',
|
|
'-- (fingers on a phone or tablet)',
|
|
'W,H = g.getDimensions()',
|
|
'T = 0.1 -- seconds',
|
|
'U = 0',
|
|
'',
|
|
'trails = {}',
|
|
'',
|
|
'function car.draw()',
|
|
' for _,trail in pairs(trails) do',
|
|
' color(trail.r, trail.g,trail.b)',
|
|
' for _,c in ipairs(trail) do',
|
|
" circle('fill', c.x,c.y, c.r)",
|
|
'end end end',
|
|
'',
|
|
'function car.update(dt)',
|
|
' U = U + dt',
|
|
' if U < T then return end',
|
|
' U = U - T',
|
|
' local touches = love.touch.getTouches()',
|
|
' for _,id in ipairs(touches) do',
|
|
' local x,y = love.touch.getPosition(id)',
|
|
' if trails[id] then',
|
|
' table.insert(trails[id], 1, {x=x, y=y, r=100})',
|
|
'end end',
|
|
' for id,trail in pairs(trails) do',
|
|
' for i=#trail,1,-1 do',
|
|
' local c = trail[i]',
|
|
' c.r = c.r - 10',
|
|
' if c.r <= 0 then table.remove(trail, i) end',
|
|
' end',
|
|
' if #trail == 0 then trails[id] = nil end',
|
|
' end',
|
|
'end',
|
|
'',
|
|
'function car.touchpressed(id, x,y, ...)',
|
|
' trails[id] = {r=rand(), g=rand(), b=rand()}',
|
|
'end',
|
|
},
|
|
},
|
|
{
|
|
name='beginning',
|
|
lines={
|
|
"-- Over to you. We hope you enjoy Lua Carousel!",
|
|
'',
|
|
},
|
|
},
|
|
} |