48 lines
2.3 KiB
Text
48 lines
2.3 KiB
Text
-- A maze, from the catalogue: corridors that are a walk area, a hero sent by clicks, dots that
|
|
-- are eaten on touch, and a ghost that follows the hero across the mesh.
|
|
return {
|
|
title = "Author test: maze",
|
|
size = { w = 720, h = 480 },
|
|
layers = { { kind = "overlay" } },
|
|
vars = { score = 0, eaten = 0 },
|
|
|
|
types = {
|
|
walls = { look = { kind = "grid", file = "testScripts/checker.png", tile = 32, columns = 2, map = "1 1 1 1 1 1 1 1 1 1 1; 1 0 0 0 0 0 0 0 0 0 1; 1 0 1 1 1 0 1 1 1 0 1; 1 0 0 0 0 0 0 0 0 0 1; 1 1 1 1 1 1 1 1 1 1 1" } },
|
|
hero = { look = { kind = "box", w = 24, h = 24, r = 255, g = 230, b = 60 }, behaviours = { { kind = "walker", speed = 140, radius = 6 } } },
|
|
ghost = { look = { kind = "box", w = 24, h = 24, r = 90, g = 120, b = 255 }, behaviours = { { kind = "walker", speed = 90, radius = 6, follow = "hero", every = 0.3, stopAt = 10 } } },
|
|
dot = { look = { kind = "box", w = 8, h = 8, r = 255, g = 255, b = 255 } },
|
|
readout = { look = { kind = "text", text = "", r = 235, g = 235, b = 245 } }
|
|
},
|
|
|
|
rooms = {
|
|
{ name = "maze",
|
|
walk = { { 40, 140, 360, 140, 360, 220, 40, 220 }, { 40, 220, 360, 220, 360, 300, 40, 300 } },
|
|
entities = {
|
|
{ type = "walls", id = "walls", x = 8, y = 100 },
|
|
{ type = "dot", id = "dot1", x = 150, y = 180 },
|
|
{ type = "dot", id = "dot2", x = 250, y = 180 },
|
|
{ type = "dot", id = "dot3", x = 250, y = 260 },
|
|
{ type = "hero", id = "hero", x = 60, y = 180 },
|
|
{ type = "ghost", id = "ghost", x = 340, y = 260 },
|
|
{ type = "readout", id = "readout", x = 12, y = 12 }
|
|
} }
|
|
},
|
|
|
|
rules = {
|
|
{ note = "A click sends the hero",
|
|
on = "pressed", switch = "SWITCH_BUTTON3", interrupt = true,
|
|
act = { { "walkToPointer", entity = "hero", player = 1 } } },
|
|
|
|
{ note = "A dot is eaten",
|
|
on = "collision", a = "hero", b = "dot",
|
|
act = { { "destroy", entity = "other" }, { "addScore", amount = 10 }, { "addVar", name = "eaten", amount = 1 } } },
|
|
|
|
{ note = "Caught",
|
|
on = "collision", a = "ghost", b = "hero",
|
|
act = { { "setVar", name = "caught", value = true } } },
|
|
|
|
{ note = "The readout, every frame",
|
|
on = "frame",
|
|
act = { { "setText", entity = "readout", text = '"score " .. score .. " eaten " .. eaten' } } }
|
|
}
|
|
}
|