Shapes

Make several shapes bounce around in the tilemap. Press the A button to spawn a new sprite with a random shape.

The purple circle is too large to fit within a single tile, so depending on the placement, it could spawn in an area that is too small for it to fit in. Move the player sprite around in the maze to set spawn locations of different size.

let shapes = [
    img`
        . . . . . . . . . . . . . . . .
        . . . . 7 7 7 7 7 7 7 . . . . .
        . . 7 7 7 7 7 7 7 7 7 7 7 . . .
        . 7 7 7 7 7 7 7 7 7 7 7 7 7 . .
        . 7 7 7 7 7 7 7 7 7 7 7 7 7 . .
        7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 .
        7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 .
        7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 .
        7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 .
        7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 .
        7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 .
        7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 .
        . 7 7 7 7 7 7 7 7 7 7 7 7 7 . .
        . 7 7 7 7 7 7 7 7 7 7 7 7 7 . .
        . . 7 7 7 7 7 7 7 7 7 7 7 . . .
        . . . . 7 7 7 7 7 7 7 . . . . .
    `,
    img`
        . . . . 9 9 9 9 9 9 9 . .
        . . . 9 9 9 9 9 9 9 9 9 .
        . . 9 9 9 9 9 9 9 9 9 9 9
        . . 9 9 9 9 9 9 9 9 9 9 9
        . . 9 9 9 9 9 9 9 9 9 9 9
        . . 9 9 9 9 9 9 9 9 9 9 9
        . . 9 9 9 9 9 9 9 9 9 9 9
        . . 9 9 9 9 9 9 9 9 9 9 9
        . . 9 9 9 9 9 9 9 9 9 9 9
        . . . 9 9 9 9 9 9 9 9 9 .
        . . . . 9 9 9 9 9 9 9 . .
    `,
    img`
        . . . . 5 5 5 5 5 5 5 . .
        . . . 5 5 5 5 5 5 5 5 5 .
        . . 5 5 5 5 5 5 5 5 5 5 5
        . . 5 5 5 5 5 5 5 5 5 5 5
        . . 5 5 5 5 5 5 5 5 5 5 5
        . . 5 5 5 5 5 5 5 5 5 5 5
    `,
    img`
        . 3 3 3 3 3 . .
        3 3 3 3 3 3 3 .
        3 3 3 3 3 3 3 .
        3 3 3 3 3 3 3 .
        3 3 3 3 3 3 3 .
        3 3 3 3 3 3 3 .
        . 3 3 3 3 3 . .
        . . . . . . . .
    `,
    img`
        . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
        . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
        . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
        . . . . . . . . . . a a a a a a a a a a a . . . . . . . . . . .
        . . . . . . . . a a a a a a a a a a a a a a a . . . . . . . . .
        . . . . . . . a a a a a a a a a a a a a a a a a . . . . . . . .
        . . . . . . a a a a a a a a a a a a a a a a a a a . . . . . . .
        . . . . . a a a a a a a a a a a a a a a a a a a a a . . . . . .
        . . . . a a a a a a a a a a a a a a a a a a a a a a a . . . . .
        . . . a a a a a a a a a a a a a a a a a a a a a a a a a . . . .
        . . . a a a a a a a a a a a a a a a a a a a a a a a a a . . . .
        . . a a a a a a a a a a a a a a a a a a a a a a a a a a a . . .
        . . a a a a a a a a a a a a a a a a a a a a a a a a a a a . . .
        . . a a a a a a a a a a a a a a a a a a a a a a a a a a a . . .
        . . a a a a a a a a a a a a a a a a a a a a a a a a a a a . . .
        . . a a a a a a a a a a a a a a a a a a a a a a a a a a a . . .
        . . a a a a a a a a a a a a a a a a a a a a a a a a a a a . . .
        . . a a a a a a a a a a a a a a a a a a a a a a a a a a a . . .
        . . a a a a a a a a a a a a a a a a a a a a a a a a a a a . . .
        . . a a a a a a a a a a a a a a a a a a a a a a a a a a a . . .
        . . a a a a a a a a a a a a a a a a a a a a a a a a a a a . . .
        . . a a a a a a a a a a a a a a a a a a a a a a a a a a a . . .
        . . . a a a a a a a a a a a a a a a a a a a a a a a a a . . . .
        . . . a a a a a a a a a a a a a a a a a a a a a a a a a . . . .
        . . . . a a a a a a a a a a a a a a a a a a a a a a a . . . . .
        . . . . . a a a a a a a a a a a a a a a a a a a a a . . . . . .
        . . . . . . a a a a a a a a a a a a a a a a a a a . . . . . . .
        . . . . . . . a a a a a a a a a a a a a a a a a . . . . . . . .
        . . . . . . . . a a a a a a a a a a a a a a a . . . . . . . . .
        . . . . . . . . . . a a a a a a a a a a a . . . . . . . . . . .
        . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
        . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    `
];
controller.A.onEvent(ControllerButtonEvent.Pressed, function () {
    const projectile = sprites.createProjectileFromSprite(
        Math.pickRandom(shapes),
        mySprite,
        randint(-150, 150),
        randint(-150, 150)
    );
    projectile.setFlag(SpriteFlag.DestroyOnWall, false);
    projectile.setBounceOnWall(true);
    projectile.setFlag(SpriteFlag.AutoDestroy, false);
});

const mySprite = sprites.create(img`
    . . . . . . . . . . . . . .
    . f f f . f f f f . f f f .
    f f f f f c c c c f f f f f
    f f f f b c c c c b f f f f
    f f f c 3 c c c c 3 c f f f
    . f 3 3 c c c c c c 3 3 f .
    . f c c c c 4 4 c c c c f .
    . f f c c 4 4 4 4 c c f f .
    . f f f b f 4 4 f b f f f .
    . f f 4 1 f d d f 1 4 f f .
    . . f f d d d d d 4 e f e .
    . f e f f b b b e d d 4 e .
    . e 4 f b 3 3 3 e d d e . .
    . . . f 6 6 6 6 f e e . . .
    . . . f f f f f f f . . . .
    . . . f f f . . . . . . . .
`, SpriteKind.Player);

controller.moveSprite(mySprite);
scene.setTileMap(img`
    f d f f d d d d f f
    f d d d d d d d d f
    d d f f f f f d d f
    d d f 3 d d f d d f
    d d f d f f f d f f
    d d f d d d d d d f
    f d d d d f d d d f
    f f d d f f f d f f
`);
scene.placeOnRandomTile(mySprite, 0x3);
scene.setTile(15, img`
    f f f f f f f f f f f f f f f f
    f f f f f f f f f f f f f f f f
    f f f f f f f f f f f f f f f f
    f f f f f f f f f f f f f f f f
    f f f f f f f f f f f f f f f f
    f f f f f f f f f f f f f f f f
    f f f f f f f f f f f f f f f f
    f f f f f f f f f f f f f f f f
    f f f f f f f f f f f f f f f f
    f f f f f f f f f f f f f f f f
    f f f f f f f f f f f f f f f f
    f f f f f f f f f f f f f f f f
    f f f f f f f f f f f f f f f f
    f f f f f f f f f f f f f f f f
    f f f f f f f f f f f f f f f f
    f f f f f f f f f f f f f f f f
`, true);
color-coded-tilemap