Dungeon Crawler with MakeCode Arcade
Create the first level of a dungeon crawler game in MakeCode Arcade with variables, namespaces, and functions!
Written By: Cherie Tan
Difficulty
Medium
Steps
16
A dungeon crawler is a type of RPG where players explore a labyrinth environment, battle enemies, avoid traps, solve puzzles, and find treasure!
In this guide, we'll show you how to get started with creating your own Dungeon Crawler in MakeCode Arcade with Javascript and TypeScript. You will gain familiarity with using variables, functions, namespaces.
Complete this guide to create your first Javascript-based game in MakeCode Arcade.
In this guide, we'll show you how to get started with creating your own Dungeon Crawler in MakeCode Arcade with Javascript and TypeScript. You will gain familiarity with using variables, functions, namespaces.
Complete this guide to create your first Javascript-based game in MakeCode Arcade.
A dungeon crawler is a type of RPG where players explore a labyrinth environment, battle enemies, avoid traps, solve puzzles, and find treasure!
In this guide, we'll show you how to get started with creating your own Dungeon Crawler in MakeCode Arcade with Javascript and TypeScript. You will gain familiarity with using variables, functions, and namespaces.
This guide continues on from Player Selection Screen with MakeCode Arcade. Using the Javascript interface, we will create custom art, variables, namespaces, and functions for a simple dungeon crawler arcade game.
let selectionBox: Sprite = null; let playerSprite: Sprite = null; let boySprite: Sprite = null; let doorSprite: Sprite = null; let userName = game.askForString("What is your name?"); let intro = "Hello, " + userName + ", you are about to embark on an adventure!";
Add the following variables at the very beginning.
Some of these variables have been set to null, which means they don't yet have a value. Later, we will add values to them.
namespace customArt { export const Chest = img` . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . f f f f f f f f f f . . . . . f f b b b b b b b b f f . . . f f b c c c c c c c c b f f . . f b c c c c c c c c c c b f . f f c c c c c c c c c c c c f f f c c c c c c 9 9 c c c c c c f f 9 9 9 9 9 a f f a 9 9 9 9 9 f f b b b b b a f f a b b b b b f f c c c c c a a a a c c c c c f f b b b b b b b b b b b b b b f f 9 9 c c c c c c c c c c 9 9 f f a a b b b b b b b b b b a a f f f f f f f f f f f f f f f f f `; export const Wall = img` . f f f f f f f f f f f f f f . f 7 7 7 7 7 7 7 7 7 7 7 7 7 7 f f 7 f 7 7 7 7 7 7 7 7 7 7 f 7 f f 7 7 7 7 7 7 7 7 7 7 7 7 7 7 f f 7 7 7 7 7 7 7 7 7 7 7 7 7 7 f f 7 7 7 7 7 7 7 7 7 7 7 7 7 7 f f 7 7 7 7 7 7 7 7 7 7 7 7 7 7 f f 7 7 7 7 7 7 7 7 7 7 7 7 7 7 f f 7 7 7 7 7 7 7 7 7 7 7 7 7 7 f f 7 7 7 7 7 7 7 7 7 7 7 7 7 7 f f 7 7 7 7 7 7 7 7 7 7 7 7 7 7 f f 7 7 7 7 7 7 7 7 7 7 7 7 7 7 f f 7 7 7 7 7 7 7 7 7 7 7 7 7 7 f f 7 f 7 7 7 7 7 7 7 7 7 7 f 7 f f 7 7 7 7 7 7 7 7 7 7 7 7 7 7 f . f f f f f f f f f f f f f f . `; export const Door = img` . f f f f f f f f f f f f f f . f b b b c b b b c b b b c b b f f b b b c a a a a a a a c b b f f b b b c a 9 9 9 9 9 a c b b f f c b b c a 9 9 9 9 9 a c b b f f c b b c a 9 9 9 9 9 a c b b f f b b b c a a a a a a a c b a f f b b b c b b b c b b b c a 9 f f b b b c b b b c b b b c a 9 f f b b b c b b b c b b b c b a f f c b b c b b b c b b b c b b f f c b b c b b b c b b b c b b f f b b b c b b b c b b b c b b f f b b b c b b b c b b b c b b f f b b b c b b b c b b b c b b f . f f f f f f f f f f f f f f . `; export const boySprite = img` . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . f f . . . . . . . . . . . . . . . . . . . . . . . . . . f f f f 9 9 f f . . . . . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 9 9 9 9 9 . . . . . . . . . . . . . . . . . . . . f 9 9 9 d d 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . f 9 9 d d d d d d 9 9 9 f . . . . . . . . . . . . . . . . . . f d 9 d d d d d d d d 9 9 d f . . . . . . . . . . . . . . . . . f d f d d f d d d f d d f d f . . . . . . . . . . . . . . . . . f d d d d f d d d f d d d d f . . . . . . . . . . . . . . . . . . f d d d d d d d d d d d f . . . . . . . . . . . . . . . . . . . . f d d d d d d d d d f . . . . . . . . . . . . . . . . . . . . . . f d d f f f d d f . . . . . . . . . . . . . . . . . . . . . . . . f d d d d d f . . . . . . . . . . . . . . . . . . . . . . . . f 8 f f d f f 8 f . . . . . . . . . . . . . . . . . . . . . . f c c 8 8 8 8 8 8 c f . . . . . . . . . . . . . . . . . . . . . f 8 c c c c c c c d f . . . . . . . . . . . . . . . . . . . . . f d f 8 8 8 8 8 8 d f . . . . . . . . . . . . . . . . . . . . . f d d f c c c c c d f . . . . . . . . . . . . . . . . . . . . . f d d f 7 f 7 7 7 f . . . . . . . . . . . . . . . . . . . . . . . f 7 7 7 f f 7 7 f . . . . . . . . . . . . . . . . . . . . . . . f f 7 7 f f 7 7 f f f . . . . . . . . . . . . . . . . . . . . . f 7 7 f f f 7 c c a f . . . . . . . . . . . . . . . . . . . . f a b b f . . f b b f . . . . . . . . . . . . . . . . . . . . . . f f f f . . . f f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . `; }
First, create a new namespace and name it customArt. In this guide, we've moved some of the previously created sprite art into this namespace - the boy's face and the full body sprite. We've also created chest and wall block sprites.
This is where we will place all the custom made sprite art for our game. We can then refer to it outside of the namespace. For example, to use the Chest sprite art, add the namespace followed by the const variable like so: customArt.Chest
In TypeScript, const stands for constant which means the variable cannot be reassigned at a later time. Remember to use the export keyword to make these values accessible outside the namespace.
namespace SpriteKind { export const Boy = SpriteKind.create(); export const Treasure = SpriteKind.create(); export const Goal = SpriteKind.create(); }
Add a new kind of sprite in the namespace SpriteKind. Name it, Treasure.
Create a new sprite kind and name it Goal.
As these values will be accessed outside the namespace, make sure to use export again.
game.splash(intro); createPlayer(); createLevel();
In this guide, we will focus on just the one player character, the boy sprite. So go ahead and remove the playerSelection function, as well as the call to that function.
Then call the createLevel and createPlayer functions after game.splash(intro);
function createLevel() { scene.setBackgroundImage(img` e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e `); scene.setTileMap(img` c c c c c c c c c c c c c c c c c c a c c . . . . . . . . c . . . . . . . . . c c . b . . . . . . c . . . . . . . . . c c . . . . . . . . c . . . . . . . . . c c . . . . . . . . c . . . . . . . . . c c . . . . . . . . c . . . . c c c c c c c c c c c c c . . . . . . . . . . . . c c . . . . . c . . . . . . . . . . . . c c . . . . . c . . . . c . . . . . . . c c . . c c c c . . . . c . . . . . . . c c . . . . . . . . . . c . . . . . . . c c . . . . . . . . . . c . . . . . . . c c . . . . . . . . . . c . . . . . . . c c . . . . . . . . . . c . . . . . . . c c c c c c c c c c c c c c c c c c c c c `); scene.setTile(11, customArt.Chest, true); scene.setTile(12, customArt.Wall, true); doorSprite = sprites.create(customArt.Door, SpriteKind.Goal); doorSprite.setPosition(296, 8); }
Update the background image with scene.setBackGroundImage
Create a tile map with scene.setTileMap
Set the custom made tiles - the wall blocks as well as the one chest block with scene.setTile
scene.setTile accepts three parameters. For example with scene.setTile(12, customArt.Chest, true):
The first parameter refers to the colour from our custom palette that has been used to indicate the wall block in our tile map.
The second parameter refers to the Chest sprite art contained in our customArt namespace.
The third parameter indicates whether or not the tile block ...
The first parameter refers to the colour from our custom palette that has been used to indicate the wall block in our tile map.
The second parameter refers to the Chest sprite art contained in our customArt namespace.
The third parameter indicates whether or not the tile block ...
Create and position the door sprite, this will be the goal of our game. Once the player character reaches it, the win game condition is triggered.
function createPlayer() { playerSprite = sprites.create(customArt.boySprite, SpriteKind.Boy); controller.moveSprite(playerSprite, 100, 100); info.setLife(3); scene.cameraFollowSprite(playerSprite); }
Create the player sprite with sprites.create
The first parameter refers to the sprite art boySprite in the customArt namespace. The second parameter indicates the sprite kind.
Next, to control the sprite using direction buttons, add controller.moveSprite(playerSprite, 100, 100);
Set the player life to three with info.setLife(3);
Lastly, for the camera to follow the player sprite throughout the tile map, use:
scene.cameraFollowSprite(playerSprite);
scene.cameraFollowSprite(playerSprite);
To animate the player sprite, we require more sprite art! In this guide, we've created sprite art inspired by the classic SNES game, Earthbound.
Feel free to create your own player sprites.
In this guide, there will be three frames for each walking animation in the directions: up, down, left, and right. So in total, there are twelve separate .png files that have been created.
Feel free to create your own player sprites.
In this guide, there will be three frames for each walking animation in the directions: up, down, left, and right. So in total, there are twelve separate .png files that have been created.
Next, import your created sprite art into MakeCode Arcade with the MakeCode Arcade Asset Tool.
Next, add the Animation extension!
First, click on the Extensions button.
First, click on the Extensions button.
Click on animation
You should then see Animation-specific blocks found in the Animation tab over in the Javascript interface.
namespace customArt { export const Chest = img` . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . f f f f f f f f f f . . . . . f f b b b b b b b b f f . . . f f b c c c c c c c c b f f . . f b c c c c c c c c c c b f . f f c c c c c c c c c c c c f f f c c c c c c 9 9 c c c c c c f f 9 9 9 9 9 a f f a 9 9 9 9 9 f f b b b b b a f f a b b b b b f f c c c c c a a a a c c c c c f f b b b b b b b b b b b b b b f f 9 9 c c c c c c c c c c 9 9 f f a a b b b b b b b b b b a a f f f f f f f f f f f f f f f f f `; export const Wall = img` . f f f f f f f f f f f f f f . f 7 7 7 7 7 7 7 7 7 7 7 7 7 7 f f 7 f 7 7 7 7 7 7 7 7 7 7 f 7 f f 7 7 7 7 7 7 7 7 7 7 7 7 7 7 f f 7 7 7 7 7 7 7 7 7 7 7 7 7 7 f f 7 7 7 7 7 7 7 7 7 7 7 7 7 7 f f 7 7 7 7 7 7 7 7 7 7 7 7 7 7 f f 7 7 7 7 7 7 7 7 7 7 7 7 7 7 f f 7 7 7 7 7 7 7 7 7 7 7 7 7 7 f f 7 7 7 7 7 7 7 7 7 7 7 7 7 7 f f 7 7 7 7 7 7 7 7 7 7 7 7 7 7 f f 7 7 7 7 7 7 7 7 7 7 7 7 7 7 f f 7 7 7 7 7 7 7 7 7 7 7 7 7 7 f f 7 f 7 7 7 7 7 7 7 7 7 7 f 7 f f 7 7 7 7 7 7 7 7 7 7 7 7 7 7 f . f f f f f f f f f f f f f f . `; export const Door = img` . f f f f f f f f f f f f f f . f b b b c b b b c b b b c b b f f b b b c a a a a a a a c b b f f b b b c a 9 9 9 9 9 a c b b f f c b b c a 9 9 9 9 9 a c b b f f c b b c a 9 9 9 9 9 a c b b f f b b b c a a a a a a a c b a f f b b b c b b b c b b b c a 9 f f b b b c b b b c b b b c a 9 f f b b b c b b b c b b b c b a f f c b b c b b b c b b b c b b f f c b b c b b b c b b b c b b f f b b b c b b b c b b b c b b f f b b b c b b b c b b b c b b f f b b b c b b b c b b b c b b f . f f f f f f f f f f f f f f . `; export const boySprite = img` . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . f f . . . . . . . . . . . . . . . . . . . . . . . . . . f f f f 9 9 f f . . . . . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 9 9 9 9 9 . . . . . . . . . . . . . . . . . . . . f 9 9 9 d d 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . f 9 9 d d d d d d 9 9 9 f . . . . . . . . . . . . . . . . . . f d 9 d d d d d d d d 9 9 d f . . . . . . . . . . . . . . . . . f d f d d f d d d f d d f d f . . . . . . . . . . . . . . . . . f d d d d f d d d f d d d d f . . . . . . . . . . . . . . . . . . f d d d d d d d d d d d f . . . . . . . . . . . . . . . . . . . . f d d d d d d d d d f . . . . . . . . . . . . . . . . . . . . . . f d d f f f d d f . . . . . . . . . . . . . . . . . . . . . . . . f d d d d d f . . . . . . . . . . . . . . . . . . . . . . . . f 8 f f d f f 8 f . . . . . . . . . . . . . . . . . . . . . . f c c 8 8 8 8 8 8 c f . . . . . . . . . . . . . . . . . . . . . f 8 c c c c c c c d f . . . . . . . . . . . . . . . . . . . . . f d f 8 8 8 8 8 8 d f . . . . . . . . . . . . . . . . . . . . . f d d f c c c c c d f . . . . . . . . . . . . . . . . . . . . . f d d f 7 f 7 7 7 f . . . . . . . . . . . . . . . . . . . . . . . f 7 7 7 f f 7 7 f . . . . . . . . . . . . . . . . . . . . . . . f f 7 7 f f 7 7 f f f . . . . . . . . . . . . . . . . . . . . . f 7 7 f f f 7 c c a f . . . . . . . . . . . . . . . . . . . . f a b b f . . f b b f . . . . . . . . . . . . . . . . . . . . . . f f f f . . . f f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . `; export const right1 = img` . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . f f . . . . . . . . . . . . . . . . . . . . . . . . . . . f f f 9 9 f . . . . . . . . . . . . . . . . . . . . . . . f f f 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 9 d d 9 9 f . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 d d d d d f . . . . . . . . . . . . . . . . . . . f 9 9 d 9 d d d d d d d f . . . . . . . . . . . . . . . . . . . f 9 9 d 9 d d d d d f d f . . . . . . . . . . . . . . . . . . . . f 9 d d d d d d d f d d f . . . . . . . . . . . . . . . . . . . f 9 9 d d d d d d d d f . . . . . . . . . . . . . . . . . . . . . f d d d d d d d d d f . . . . . . . . . . . . . . . . . . . . . . f d d d d d f d f . . . . . . . . . . . . . . . . . . . . . . . . f d d d d d f . . . . . . . . . . . . . . . . . . . . . . . . . . f f d d f . . . . . . . . . . . . . . . . . . . . . . . . . . f c c 8 8 c f . . . . . . . . . . . . . . . . . . . . . . . . . f 8 8 c c c d f . . . . . . . . . . . . . . . . . . . . . . . f d d f 8 8 8 f d f . . . . . . . . . . . . . . . . . . . . . . f d f c c c c f d f . . . . . . . . . . . . . . . . . . . . . . . f f 7 7 7 7 f f a f . . . . . . . . . . . . . . . . . . . . . f b 7 7 f 7 7 f 7 a f . . . . . . . . . . . . . . . . . . . . . f b b f . f f c b a f . . . . . . . . . . . . . . . . . . . . . . f f f . . f b b f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . f f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . `; export const right2 = img` . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . f f . . . . . . . . . . . . . . . . . . . . . . . . . . . f f f 9 9 f . . . . . . . . . . . . . . . . . . . . . . . f f f 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 9 d d 9 9 f . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 d d d d d d f . . . . . . . . . . . . . . . . . . . f 9 9 d 9 d d d d d d d f . . . . . . . . . . . . . . . . . . . f 9 9 d d d d d d d f d f . . . . . . . . . . . . . . . . . . . . f 9 d d d d d d d f d d f . . . . . . . . . . . . . . . . . . . f 9 9 d d d d d d d d f . . . . . . . . . . . . . . . . . . . . . f d d d d d d d d d f . . . . . . . . . . . . . . . . . . . . . . f d d d d d f d f . . . . . . . . . . . . . . . . . . . . . . . . f d d d d d f . . . . . . . . . . . . . . . . . . . . . . . . . . f f d d f . . . . . . . . . . . . . . . . . . . . . . . . . . f c c 8 8 f . . . . . . . . . . . . . . . . . . . . . . . . . . f 8 8 c c c f . . . . . . . . . . . . . . . . . . . . . . . . f d d f 8 8 8 f . . . . . . . . . . . . . . . . . . . . . . . . f d d f c c c f . . . . . . . . . . . . . . . . . . . . . . . . f d d f 7 7 7 f . . . . . . . . . . . . . . . . . . . . . . . . . f f f 7 7 7 f . . . . . . . . . . . . . . . . . . . . . . . . . f 7 7 7 7 f . . . . . . . . . . . . . . . . . . . . . . . . . . . f c c f f f . . . . . . . . . . . . . . . . . . . . . . . . . . f b b a a f . . . . . . . . . . . . . . . . . . . . . . . . . . . f f f f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . `; export const right3 = img` . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . f f . . . . . . . . . . . . . . . . . . . . . . . . . . . f f f 9 9 f . . . . . . . . . . . . . . . . . . . . . . . f f f 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 9 d d 9 9 f . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 d d d d d d f . . . . . . . . . . . . . . . . . . . f 9 9 d 9 d d d d d d d f . . . . . . . . . . . . . . . . . . . f 9 9 d d d d d d d f d f . . . . . . . . . . . . . . . . . . . . f 9 9 d d d d d d f d d f . . . . . . . . . . . . . . . . . . . f d d d d d d d d d d f . . . . . . . . . . . . . . . . . . . . . f d d d d d d d d d f . . . . . . . . . . . . . . . . . . . . . . f d d d d d f d f . . . . . . . . . . . . . . . . . . . . . . . . f d d d d d f . . . . . . . . . . . . . . . . . . . . . . . . . . f f d d f . . . . . . . . . . . . . . . . . . . . . . . . . . f 8 8 c c e e f . . . . . . . . . . . . . . . . . . . . . . . f f c c c 8 d f f . . . . . . . . . . . . . . . . . . . . . . f d f 8 8 8 f d d d f . . . . . . . . . . . . . . . . . . . . . f f 7 c c c f f d d f . . . . . . . . . . . . . . . . . . . . . . f 7 7 7 7 7 7 f f f . . . . . . . . . . . . . . . . . . . . . . f c 7 7 f 7 7 f 7 b f . . . . . . . . . . . . . . . . . . . . . f b a f . f f c b b f . . . . . . . . . . . . . . . . . . . . . . f f f . . f b b f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . f f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . `; export const left1 = img` . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . f f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . f 9 9 f f f . . . . . . . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 f f f . . . . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . . f 9 9 9 d 9 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . . f d d d d d d d 9 d 9 9 f . . . . . . . . . . . . . . . . . . . f d d d d d d d 9 d 9 9 f . . . . . . . . . . . . . . . . . . . f d f d d d d d d d 9 9 f . . . . . . . . . . . . . . . . . . f d d f d d d d d d d 9 f . . . . . . . . . . . . . . . . . . . . f d d d d d d d d 9 9 f . . . . . . . . . . . . . . . . . . . . f d d d d d d d d d f . . . . . . . . . . . . . . . . . . . . . . f d f d d d d d f . . . . . . . . . . . . . . . . . . . . . . . . f d d d d d f . . . . . . . . . . . . . . . . . . . . . . . . . . f d d f f . . . . . . . . . . . . . . . . . . . . . . . . . . f e 8 8 c c f . . . . . . . . . . . . . . . . . . . . . . . . f d c c c 8 8 f . . . . . . . . . . . . . . . . . . . . . . . f d f 8 8 8 f d d f . . . . . . . . . . . . . . . . . . . . . . f d f c c c c f d f . . . . . . . . . . . . . . . . . . . . . f a f f 7 7 7 7 f f . . . . . . . . . . . . . . . . . . . . . . f a 7 f 7 7 f 7 7 b f . . . . . . . . . . . . . . . . . . . . . f b b c f f . f b b f . . . . . . . . . . . . . . . . . . . . . . f b b f . . f f f . . . . . . . . . . . . . . . . . . . . . . . . f f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . `; export const left2 = img` . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . f f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . f 9 9 f f f . . . . . . . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 f f f . . . . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . . f 9 9 d d 9 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . . f d d d d d d d 9 9 9 9 f . . . . . . . . . . . . . . . . . . . f d d d d d d d 9 d 9 9 f . . . . . . . . . . . . . . . . . . . f d f d d d d d d d 9 9 f . . . . . . . . . . . . . . . . . . f d d f d d d d d d d 9 f . . . . . . . . . . . . . . . . . . . . f d d d d d d d d 9 9 f . . . . . . . . . . . . . . . . . . . . f d d d d d d d d d f . . . . . . . . . . . . . . . . . . . . . . f d f d d d d d f . . . . . . . . . . . . . . . . . . . . . . . . f d d d d d f . . . . . . . . . . . . . . . . . . . . . . . . . . f d d f f . . . . . . . . . . . . . . . . . . . . . . . . . . . f 8 8 c c f . . . . . . . . . . . . . . . . . . . . . . . . . f c c c 8 8 f . . . . . . . . . . . . . . . . . . . . . . . . . f 8 8 8 f d d f . . . . . . . . . . . . . . . . . . . . . . . . f c c c f d d f . . . . . . . . . . . . . . . . . . . . . . . . f 7 7 7 f d d f . . . . . . . . . . . . . . . . . . . . . . . . f 7 7 7 f f f . . . . . . . . . . . . . . . . . . . . . . . . . . f 7 7 7 7 f . . . . . . . . . . . . . . . . . . . . . . . . . f f f c c f . . . . . . . . . . . . . . . . . . . . . . . . . . f a a b b f . . . . . . . . . . . . . . . . . . . . . . . . . . . f f f f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . `; export const left3 = img` . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . f f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . f 9 9 f f f . . . . . . . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 f f f . . . . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . . f 9 9 d d 9 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . . f d d d d d d 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . f d d d d d d d 9 d 9 9 f . . . . . . . . . . . . . . . . . . . f d f d d d d d d d 9 9 f . . . . . . . . . . . . . . . . . . f d d f d d d d d d d 9 f . . . . . . . . . . . . . . . . . . . . f d d d d d d d d 9 9 f . . . . . . . . . . . . . . . . . . . . f d d d d d d d d d f . . . . . . . . . . . . . . . . . . . . . . f d f d d d d d f . . . . . . . . . . . . . . . . . . . . . . . . f d d d d d f . . . . . . . . . . . . . . . . . . . . . . . . . . f d d f f . . . . . . . . . . . . . . . . . . . . . . . . . f 7 7 c c 8 8 f . . . . . . . . . . . . . . . . . . . . . . . . f f d 8 c c c f f . . . . . . . . . . . . . . . . . . . . . . f d d d f 8 8 8 f d f . . . . . . . . . . . . . . . . . . . . . f d d f f c c c 6 f f . . . . . . . . . . . . . . . . . . . . . f f f 6 6 6 6 6 6 f . . . . . . . . . . . . . . . . . . . . . f b 7 f 6 6 f 7 6 c f . . . . . . . . . . . . . . . . . . . . . f b b c f f . f a b f . . . . . . . . . . . . . . . . . . . . . . f b b f . . f f f . . . . . . . . . . . . . . . . . . . . . . . . f f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . `; export const up1 = img` . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . f f . . . . . . . . . . . . . . . . . . . . . . . . . . . f f f 9 9 f . . . . . . . . . . . . . . . . . . . . . . . . f f 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . . f f 9 9 9 9 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . f f 9 9 9 9 9 9 9 9 9 9 9 f f . . . . . . . . . . . . . . . . . f d 9 9 9 9 9 9 9 9 9 9 9 d f . . . . . . . . . . . . . . . . . f d 9 9 9 9 9 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . f d 9 9 9 9 9 9 9 9 9 d f . . . . . . . . . . . . . . . . . . . f f d 9 9 9 9 9 9 9 d f f . . . . . . . . . . . . . . . . . . . . f f d d d d d d d f f . . . . . . . . . . . . . . . . . . . . . . . f d d d d d f . . . . . . . . . . . . . . . . . . . . . . . . f 8 f f f f f 8 f . . . . . . . . . . . . . . . . . . . . . . f c c 8 8 8 8 8 c c f . . . . . . . . . . . . . . . . . . . . f d 8 c c c c c c c 8 d f . . . . . . . . . . . . . . . . . . f d d 8 8 8 8 8 8 8 8 8 d f . . . . . . . . . . . . . . . . . . f d d f c c c c c c c c d f . . . . . . . . . . . . . . . . . . . f f f 7 7 7 7 7 7 7 f d f . . . . . . . . . . . . . . . . . . . . f f 7 7 7 7 7 7 7 f f . . . . . . . . . . . . . . . . . . . . . f b f 7 7 f 7 7 f . . . . . . . . . . . . . . . . . . . . . . . . f b b f f f c c f f . . . . . . . . . . . . . . . . . . . . . . . f f . . f b b a f . . . . . . . . . . . . . . . . . . . . . . . . . . . f f f f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . `; export const up2 = img` . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . f f . . . . . . . . . . . . . . . . . . . . . . . . . . . f f f 9 9 f . . . . . . . . . . . . . . . . . . . . . . . . f f 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . . f f 9 9 9 9 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . f f 9 9 9 9 9 9 9 9 9 9 9 f f . . . . . . . . . . . . . . . . . f d 9 9 9 9 9 9 9 9 9 9 9 d f . . . . . . . . . . . . . . . . . f d 9 9 9 9 9 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . f d 9 9 9 9 9 9 9 9 9 d f . . . . . . . . . . . . . . . . . . . f f d 9 9 9 9 9 9 9 d f f . . . . . . . . . . . . . . . . . . . . f f d d d d d d d f f . . . . . . . . . . . . . . . . . . . . . . . f d d d d d f . . . . . . . . . . . . . . . . . . . . . . . . f 8 f f f f f 8 f . . . . . . . . . . . . . . . . . . . . . . f c c 8 8 8 8 8 c c f . . . . . . . . . . . . . . . . . . . . . f 8 c c c c c c c 8 f . . . . . . . . . . . . . . . . . . . . f d 8 8 8 8 8 8 8 8 8 d f . . . . . . . . . . . . . . . . . . . f d c c c c c c c c c d f . . . . . . . . . . . . . . . . . . . f d f 7 7 7 7 7 7 7 f d f . . . . . . . . . . . . . . . . . . . . f f 7 7 7 7 7 7 7 f f . . . . . . . . . . . . . . . . . . . . . . . f 7 7 f 7 7 f . . . . . . . . . . . . . . . . . . . . . . . f f c c f f f c c f f . . . . . . . . . . . . . . . . . . . . . f a b b f . f b b a f . . . . . . . . . . . . . . . . . . . . . . f f f f . f f f f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . `; export const up3 = img` . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . f f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . f 9 9 f f f . . . . . . . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 f f . . . . . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 9 9 9 9 f f . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . f f 9 9 9 9 9 9 9 9 9 9 9 f f . . . . . . . . . . . . . . . . . f d 9 9 9 9 9 9 9 9 9 9 9 d f . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 9 9 9 9 9 d f . . . . . . . . . . . . . . . . . . f d 9 9 9 9 9 9 9 9 9 d f . . . . . . . . . . . . . . . . . . . f f d 9 9 9 9 9 9 9 d f f . . . . . . . . . . . . . . . . . . . . f f d d d d d d d f f . . . . . . . . . . . . . . . . . . . . . . . f d d d d d f . . . . . . . . . . . . . . . . . . . . . . . . f 8 f f f f f 8 f . . . . . . . . . . . . . . . . . . . . . . f c c 8 8 8 8 8 c c f . . . . . . . . . . . . . . . . . . . . f d 8 c c c c c c c 8 d f . . . . . . . . . . . . . . . . . . . f d 8 8 8 8 8 8 8 8 8 d d f . . . . . . . . . . . . . . . . . . f d c c c c c c c c f d d f . . . . . . . . . . . . . . . . . . f d f 7 7 7 7 7 7 7 f f f . . . . . . . . . . . . . . . . . . . . f f 7 7 7 7 7 7 7 f f . . . . . . . . . . . . . . . . . . . . . . . f 7 7 f 7 7 f b f . . . . . . . . . . . . . . . . . . . . . f f c c f f f b b f . . . . . . . . . . . . . . . . . . . . . . f a b b f . . f f . . . . . . . . . . . . . . . . . . . . . . . . f f f f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . `; export const down1 = img` . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . f f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . f 9 9 f f f . . . . . . . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 f f . . . . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . f 9 9 9 d d 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . f d 9 9 d d d d d d d 9 9 9 f . . . . . . . . . . . . . . . . . f d f d d f d d d f d d 9 d f . . . . . . . . . . . . . . . . . f d d d d f d d d f d d d d f . . . . . . . . . . . . . . . . . . f d d d d d d d d d d d f . . . . . . . . . . . . . . . . . . . . f d d d d d d d d d f . . . . . . . . . . . . . . . . . . . . . . f d d f f f d d f . . . . . . . . . . . . . . . . . . . . . . . . f d d d d d f . . . . . . . . . . . . . . . . . . . . . . . . f 8 f f d f f 8 f . . . . . . . . . . . . . . . . . . . . . . f c 8 8 8 8 8 8 c c f . . . . . . . . . . . . . . . . . . . . . f d c c c c c c c 8 f . . . . . . . . . . . . . . . . . . . . . f d 8 8 8 8 8 8 f d f . . . . . . . . . . . . . . . . . . . . . f d c c c c c f d d f . . . . . . . . . . . . . . . . . . . . . . f 7 7 7 f 7 f d d f . . . . . . . . . . . . . . . . . . . . . . f 7 7 f f 7 7 7 f . . . . . . . . . . . . . . . . . . . . . f f f 7 7 f f 7 7 f f . . . . . . . . . . . . . . . . . . . . . f a c c 7 f f f 7 7 f . . . . . . . . . . . . . . . . . . . . . . f b b f . . f b b a f . . . . . . . . . . . . . . . . . . . . . . f f . . . f f f f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . `; export const down2 = img` . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . f f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . f 9 9 f f f . . . . . . . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 f f . . . . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . . . 9 9 9 9 9 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . f 9 9 d d d 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . f d 9 9 d d d d d d d 9 9 9 f . . . . . . . . . . . . . . . . . f d f d d f d d d f d d 9 d f . . . . . . . . . . . . . . . . . f d d d d f d d d f d d d d f . . . . . . . . . . . . . . . . . . f d d d d d d d d d d d f . . . . . . . . . . . . . . . . . . . . f d d d d d d d d d f . . . . . . . . . . . . . . . . . . . . . . f d d f f f d d f . . . . . . . . . . . . . . . . . . . . . . . . f d d d d d f . . . . . . . . . . . . . . . . . . . . . . . . f 8 f f d f f 8 f . . . . . . . . . . . . . . . . . . . . . . f c c 8 8 8 8 8 c c f . . . . . . . . . . . . . . . . . . . . . f 8 c c c c c c c 8 f . . . . . . . . . . . . . . . . . . . . f d b 8 8 8 8 8 8 8 b d f . . . . . . . . . . . . . . . . . . . f d b c c c c c c c b d f . . . . . . . . . . . . . . . . . . . f d b 7 7 7 f 7 7 7 b d f . . . . . . . . . . . . . . . . . . . . f 7 7 7 7 f 7 7 7 7 f . . . . . . . . . . . . . . . . . . . . . . f f 7 7 f 7 7 f f . . . . . . . . . . . . . . . . . . . . . . . f c c f f f c c f . . . . . . . . . . . . . . . . . . . . . . f a b b f . f b b a f . . . . . . . . . . . . . . . . . . . . . . f f f f . f f f f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . `; export const down3 = img` . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . f f . . . . . . . . . . . . . . . . . . . . . . . . . . f f f f 9 9 f f . . . . . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 9 9 9 9 9 . . . . . . . . . . . . . . . . . . . . f 9 9 9 d d 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . f 9 9 d d d d d d 9 9 9 f . . . . . . . . . . . . . . . . . . f d 9 d d d d d d d d 9 9 d f . . . . . . . . . . . . . . . . . f d f d d f d d d f d d f d f . . . . . . . . . . . . . . . . . f d d d d f d d d f d d d d f . . . . . . . . . . . . . . . . . . f d d d d d d d d d d d f . . . . . . . . . . . . . . . . . . . . f d d d d d d d d d f . . . . . . . . . . . . . . . . . . . . . . f d d f f f d d f . . . . . . . . . . . . . . . . . . . . . . . . f d d d d d f . . . . . . . . . . . . . . . . . . . . . . . . f 8 f f d f f 8 f . . . . . . . . . . . . . . . . . . . . . . f c c 8 8 8 8 8 8 c f . . . . . . . . . . . . . . . . . . . . . f 8 c c c c c c c d f . . . . . . . . . . . . . . . . . . . . . f d f 8 8 8 8 8 8 d f . . . . . . . . . . . . . . . . . . . . . f d d f c c c c c d f . . . . . . . . . . . . . . . . . . . . . f d d f 7 f 7 7 7 f . . . . . . . . . . . . . . . . . . . . . . . f 7 7 7 f f 7 7 f . . . . . . . . . . . . . . . . . . . . . . . f f 7 7 f f 7 7 f f f . . . . . . . . . . . . . . . . . . . . . f 7 7 f f f 7 c c a f . . . . . . . . . . . . . . . . . . . . f a b b f . . f b b f . . . . . . . . . . . . . . . . . . . . . . f f f f . . . f f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . `; export const idle = img` . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . f f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . f 9 9 f f f . . . . . . . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 f f . . . . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . . . 9 9 9 9 9 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . f 9 9 d d d 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . f d 9 9 d d d d d d d 9 9 9 f . . . . . . . . . . . . . . . . . f d f d d f d d d f d d 9 d f . . . . . . . . . . . . . . . . . f d d d d f d d d f d d d d f . . . . . . . . . . . . . . . . . . f d d d d d d d d d d d f . . . . . . . . . . . . . . . . . . . . f d d d d d d d d d f . . . . . . . . . . . . . . . . . . . . . . f d d f f f d d f . . . . . . . . . . . . . . . . . . . . . . . . f d d d d d f . . . . . . . . . . . . . . . . . . . . . . . . f 8 f f d f f 8 f . . . . . . . . . . . . . . . . . . . . . . f c c 8 8 8 8 8 c c f . . . . . . . . . . . . . . . . . . . . . f 8 c c c c c c c 8 f . . . . . . . . . . . . . . . . . . . . f d b 8 8 8 8 8 8 8 b d f . . . . . . . . . . . . . . . . . . . f d b c c c c c c c b d f . . . . . . . . . . . . . . . . . . . f d b 7 7 7 f 7 7 7 b d f . . . . . . . . . . . . . . . . . . . . f 7 7 7 7 f 7 7 7 7 f . . . . . . . . . . . . . . . . . . . . . . f f 7 7 f 7 7 f f . . . . . . . . . . . . . . . . . . . . . . . f c c f f f c c f . . . . . . . . . . . . . . . . . . . . . . f a b b f . f b b a f . . . . . . . . . . . . . . . . . . . . . . f f f f . f f f f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . `; }
Make sure export is used, this will allow the sprites to be accessed outside of the customArt namespace.
Next, add the newly made sprites into the customArt namespace.
In this guide, there are will be three frames for each animation walk cycle in either directions: up, down, left, and right.
enum ActionKind { Walking, Idle }
Before we start adding code for the animations, create two different kinds of actions: Walking and Idle. These will classify the different animations we will be creating later on.
In TypeScript, an enum enables a collection of values to be used by name, which makes our code more readable and ensures a fixed set of values are used consistently.
First use the enum keyword, followed by a name, then followed by a list of values in curly braces as shown on the left.
First use the enum keyword, followed by a name, then followed by a list of values in curly braces as shown on the left.
namespace animation { controller.right.onEvent(ControllerButtonEvent.Pressed, function () { let rightAnim = animation.createAnimation(0, 150); animation.attachAnimation(playerSprite, rightAnim); rightAnim.addAnimationFrame(customArt.right1); rightAnim.addAnimationFrame(customArt.right2); rightAnim.addAnimationFrame(customArt.right3); animation.setAction(playerSprite, ActionKind.Walking); }) controller.left.onEvent(ControllerButtonEvent.Pressed, function () { let leftAnim = animation.createAnimation(0, 150); animation.attachAnimation(playerSprite, leftAnim); leftAnim.addAnimationFrame(customArt.left1); leftAnim.addAnimationFrame(customArt.left2); leftAnim.addAnimationFrame(customArt.left3); animation.setAction(playerSprite, ActionKind.Walking); }) controller.up.onEvent(ControllerButtonEvent.Pressed, function () { let upAnim = animation.createAnimation(0, 150); animation.attachAnimation(playerSprite, upAnim); upAnim.addAnimationFrame(customArt.up1); upAnim.addAnimationFrame(customArt.up2); upAnim.addAnimationFrame(customArt.up3); animation.setAction(playerSprite, ActionKind.Walking); }) controller.down.onEvent(ControllerButtonEvent.Pressed, function () { let downAnim = animation.createAnimation(0, 150); animation.attachAnimation(playerSprite, downAnim); downAnim.addAnimationFrame(customArt.down1); downAnim.addAnimationFrame(customArt.down2); downAnim.addAnimationFrame(customArt.down3); animation.setAction(playerSprite, ActionKind.Walking); }) controller.anyButton.onEvent(ControllerButtonEvent.Released, function () { let idleAnim = animation.createAnimation(0, 150); animation.attachAnimation(playerSprite, idleAnim); idleAnim.addAnimationFrame(customArt.idle); animation.setAction(playerSprite, ActionKind.Idle); }) }
Now for the animation! First, create a new namespace and name it Animation.
Next, create an onEvent controller function for each direction: up, down, left and right. Make sure they are set to ControllerButtonEvent.Pressed
To create an animation sequence, first use let to create a variable. Next, assign it to animation.createAnimation(0, 150);
To change the interval of the animation sequence, decrease or increase the value of the second parameter.
The animation sequence will need to be attached to a particular sprite. In this case, we want to attach it to playerSprite. So go ahead and use animation.attachAnimation
For each animation sequence, there will be three frames. To create a single frame, for instance in the down animation sequence, use the name of the animation sequence followed by addAnimationFrame like so: downAnim.addAnimationFrame.
This accepts one parameter, which is the sprite art to be used for the particular frame
This accepts one parameter, which is the sprite art to be used for the particular frame
To set the action kind for the animation sequence, use animation.setAction
Here, controller.anyButton.onEvent is used to detect when any button has been released. If so, the idle animation will be played instead
sprites.onOverlap(SpriteKind.Boy, SpriteKind.Goal, function (sprite: Sprite, otherSprite: Sprite) { game.over(true); })
Set game.over to true for the win game condition.
To trigger the win game condition, we will use Overlap events on two sprite kinds.
The first parameter of sprites.onOverlap will be the first sprite kind, and the second parameter will be the second sprite kind.
let selectionBox: Sprite = null; let playerSprite: Sprite = null; let boySprite: Sprite = null; let doorSprite: Sprite = null; let userName = game.askForString("What is your name?"); let intro = "Hello, " + userName + ", you are about to embark on an adventure!"; enum ActionKind { Walking, Idle } namespace SpriteKind { export const Boy = SpriteKind.create(); export const Treasure = SpriteKind.create(); export const Goal = SpriteKind.create(); } namespace customArt { export const Chest = img` . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . f f f f f f f f f f . . . . . f f b b b b b b b b f f . . . f f b c c c c c c c c b f f . . f b c c c c c c c c c c b f . f f c c c c c c c c c c c c f f f c c c c c c 9 9 c c c c c c f f 9 9 9 9 9 a f f a 9 9 9 9 9 f f b b b b b a f f a b b b b b f f c c c c c a a a a c c c c c f f b b b b b b b b b b b b b b f f 9 9 c c c c c c c c c c 9 9 f f a a b b b b b b b b b b a a f f f f f f f f f f f f f f f f f `; export const Wall = img` . f f f f f f f f f f f f f f . f 7 7 7 7 7 7 7 7 7 7 7 7 7 7 f f 7 f 7 7 7 7 7 7 7 7 7 7 f 7 f f 7 7 7 7 7 7 7 7 7 7 7 7 7 7 f f 7 7 7 7 7 7 7 7 7 7 7 7 7 7 f f 7 7 7 7 7 7 7 7 7 7 7 7 7 7 f f 7 7 7 7 7 7 7 7 7 7 7 7 7 7 f f 7 7 7 7 7 7 7 7 7 7 7 7 7 7 f f 7 7 7 7 7 7 7 7 7 7 7 7 7 7 f f 7 7 7 7 7 7 7 7 7 7 7 7 7 7 f f 7 7 7 7 7 7 7 7 7 7 7 7 7 7 f f 7 7 7 7 7 7 7 7 7 7 7 7 7 7 f f 7 7 7 7 7 7 7 7 7 7 7 7 7 7 f f 7 f 7 7 7 7 7 7 7 7 7 7 f 7 f f 7 7 7 7 7 7 7 7 7 7 7 7 7 7 f . f f f f f f f f f f f f f f . `; export const Door = img` . f f f f f f f f f f f f f f . f b b b c b b b c b b b c b b f f b b b c a a a a a a a c b b f f b b b c a 9 9 9 9 9 a c b b f f c b b c a 9 9 9 9 9 a c b b f f c b b c a 9 9 9 9 9 a c b b f f b b b c a a a a a a a c b a f f b b b c b b b c b b b c a 9 f f b b b c b b b c b b b c a 9 f f b b b c b b b c b b b c b a f f c b b c b b b c b b b c b b f f c b b c b b b c b b b c b b f f b b b c b b b c b b b c b b f f b b b c b b b c b b b c b b f f b b b c b b b c b b b c b b f . f f f f f f f f f f f f f f . `; export const boySprite = img` . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . f f . . . . . . . . . . . . . . . . . . . . . . . . . . f f f f 9 9 f f . . . . . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 9 9 9 9 9 . . . . . . . . . . . . . . . . . . . . f 9 9 9 d d 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . f 9 9 d d d d d d 9 9 9 f . . . . . . . . . . . . . . . . . . f d 9 d d d d d d d d 9 9 d f . . . . . . . . . . . . . . . . . f d f d d f d d d f d d f d f . . . . . . . . . . . . . . . . . f d d d d f d d d f d d d d f . . . . . . . . . . . . . . . . . . f d d d d d d d d d d d f . . . . . . . . . . . . . . . . . . . . f d d d d d d d d d f . . . . . . . . . . . . . . . . . . . . . . f d d f f f d d f . . . . . . . . . . . . . . . . . . . . . . . . f d d d d d f . . . . . . . . . . . . . . . . . . . . . . . . f 8 f f d f f 8 f . . . . . . . . . . . . . . . . . . . . . . f c c 8 8 8 8 8 8 c f . . . . . . . . . . . . . . . . . . . . . f 8 c c c c c c c d f . . . . . . . . . . . . . . . . . . . . . f d f 8 8 8 8 8 8 d f . . . . . . . . . . . . . . . . . . . . . f d d f c c c c c d f . . . . . . . . . . . . . . . . . . . . . f d d f 7 f 7 7 7 f . . . . . . . . . . . . . . . . . . . . . . . f 7 7 7 f f 7 7 f . . . . . . . . . . . . . . . . . . . . . . . f f 7 7 f f 7 7 f f f . . . . . . . . . . . . . . . . . . . . . f 7 7 f f f 7 c c a f . . . . . . . . . . . . . . . . . . . . f a b b f . . f b b f . . . . . . . . . . . . . . . . . . . . . . f f f f . . . f f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . `; export const right1 = img` . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . f f . . . . . . . . . . . . . . . . . . . . . . . . . . . f f f 9 9 f . . . . . . . . . . . . . . . . . . . . . . . f f f 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 9 d d 9 9 f . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 d d d d d f . . . . . . . . . . . . . . . . . . . f 9 9 d 9 d d d d d d d f . . . . . . . . . . . . . . . . . . . f 9 9 d 9 d d d d d f d f . . . . . . . . . . . . . . . . . . . . f 9 d d d d d d d f d d f . . . . . . . . . . . . . . . . . . . f 9 9 d d d d d d d d f . . . . . . . . . . . . . . . . . . . . . f d d d d d d d d d f . . . . . . . . . . . . . . . . . . . . . . f d d d d d f d f . . . . . . . . . . . . . . . . . . . . . . . . f d d d d d f . . . . . . . . . . . . . . . . . . . . . . . . . . f f d d f . . . . . . . . . . . . . . . . . . . . . . . . . . f c c 8 8 c f . . . . . . . . . . . . . . . . . . . . . . . . . f 8 8 c c c d f . . . . . . . . . . . . . . . . . . . . . . . f d d f 8 8 8 f d f . . . . . . . . . . . . . . . . . . . . . . f d f c c c c f d f . . . . . . . . . . . . . . . . . . . . . . . f f 7 7 7 7 f f a f . . . . . . . . . . . . . . . . . . . . . f b 7 7 f 7 7 f 7 a f . . . . . . . . . . . . . . . . . . . . . f b b f . f f c b a f . . . . . . . . . . . . . . . . . . . . . . f f f . . f b b f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . f f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . `; export const right2 = img` . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . f f . . . . . . . . . . . . . . . . . . . . . . . . . . . f f f 9 9 f . . . . . . . . . . . . . . . . . . . . . . . f f f 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 9 d d 9 9 f . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 d d d d d d f . . . . . . . . . . . . . . . . . . . f 9 9 d 9 d d d d d d d f . . . . . . . . . . . . . . . . . . . f 9 9 d d d d d d d f d f . . . . . . . . . . . . . . . . . . . . f 9 d d d d d d d f d d f . . . . . . . . . . . . . . . . . . . f 9 9 d d d d d d d d f . . . . . . . . . . . . . . . . . . . . . f d d d d d d d d d f . . . . . . . . . . . . . . . . . . . . . . f d d d d d f d f . . . . . . . . . . . . . . . . . . . . . . . . f d d d d d f . . . . . . . . . . . . . . . . . . . . . . . . . . f f d d f . . . . . . . . . . . . . . . . . . . . . . . . . . f c c 8 8 f . . . . . . . . . . . . . . . . . . . . . . . . . . f 8 8 c c c f . . . . . . . . . . . . . . . . . . . . . . . . f d d f 8 8 8 f . . . . . . . . . . . . . . . . . . . . . . . . f d d f c c c f . . . . . . . . . . . . . . . . . . . . . . . . f d d f 7 7 7 f . . . . . . . . . . . . . . . . . . . . . . . . . f f f 7 7 7 f . . . . . . . . . . . . . . . . . . . . . . . . . f 7 7 7 7 f . . . . . . . . . . . . . . . . . . . . . . . . . . . f c c f f f . . . . . . . . . . . . . . . . . . . . . . . . . . f b b a a f . . . . . . . . . . . . . . . . . . . . . . . . . . . f f f f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . `; export const right3 = img` . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . f f . . . . . . . . . . . . . . . . . . . . . . . . . . . f f f 9 9 f . . . . . . . . . . . . . . . . . . . . . . . f f f 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 9 d d 9 9 f . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 d d d d d d f . . . . . . . . . . . . . . . . . . . f 9 9 d 9 d d d d d d d f . . . . . . . . . . . . . . . . . . . f 9 9 d d d d d d d f d f . . . . . . . . . . . . . . . . . . . . f 9 9 d d d d d d f d d f . . . . . . . . . . . . . . . . . . . f d d d d d d d d d d f . . . . . . . . . . . . . . . . . . . . . f d d d d d d d d d f . . . . . . . . . . . . . . . . . . . . . . f d d d d d f d f . . . . . . . . . . . . . . . . . . . . . . . . f d d d d d f . . . . . . . . . . . . . . . . . . . . . . . . . . f f d d f . . . . . . . . . . . . . . . . . . . . . . . . . . f 8 8 c c e e f . . . . . . . . . . . . . . . . . . . . . . . f f c c c 8 d f f . . . . . . . . . . . . . . . . . . . . . . f d f 8 8 8 f d d d f . . . . . . . . . . . . . . . . . . . . . f f 7 c c c f f d d f . . . . . . . . . . . . . . . . . . . . . . f 7 7 7 7 7 7 f f f . . . . . . . . . . . . . . . . . . . . . . f c 7 7 f 7 7 f 7 b f . . . . . . . . . . . . . . . . . . . . . f b a f . f f c b b f . . . . . . . . . . . . . . . . . . . . . . f f f . . f b b f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . f f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . `; export const left1 = img` . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . f f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . f 9 9 f f f . . . . . . . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 f f f . . . . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . . f 9 9 9 d 9 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . . f d d d d d d d 9 d 9 9 f . . . . . . . . . . . . . . . . . . . f d d d d d d d 9 d 9 9 f . . . . . . . . . . . . . . . . . . . f d f d d d d d d d 9 9 f . . . . . . . . . . . . . . . . . . f d d f d d d d d d d 9 f . . . . . . . . . . . . . . . . . . . . f d d d d d d d d 9 9 f . . . . . . . . . . . . . . . . . . . . f d d d d d d d d d f . . . . . . . . . . . . . . . . . . . . . . f d f d d d d d f . . . . . . . . . . . . . . . . . . . . . . . . f d d d d d f . . . . . . . . . . . . . . . . . . . . . . . . . . f d d f f . . . . . . . . . . . . . . . . . . . . . . . . . . f e 8 8 c c f . . . . . . . . . . . . . . . . . . . . . . . . f d c c c 8 8 f . . . . . . . . . . . . . . . . . . . . . . . f d f 8 8 8 f d d f . . . . . . . . . . . . . . . . . . . . . . f d f c c c c f d f . . . . . . . . . . . . . . . . . . . . . f a f f 7 7 7 7 f f . . . . . . . . . . . . . . . . . . . . . . f a 7 f 7 7 f 7 7 b f . . . . . . . . . . . . . . . . . . . . . f b b c f f . f b b f . . . . . . . . . . . . . . . . . . . . . . f b b f . . f f f . . . . . . . . . . . . . . . . . . . . . . . . f f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . `; export const left2 = img` . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . f f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . f 9 9 f f f . . . . . . . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 f f f . . . . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . . f 9 9 d d 9 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . . f d d d d d d d 9 9 9 9 f . . . . . . . . . . . . . . . . . . . f d d d d d d d 9 d 9 9 f . . . . . . . . . . . . . . . . . . . f d f d d d d d d d 9 9 f . . . . . . . . . . . . . . . . . . f d d f d d d d d d d 9 f . . . . . . . . . . . . . . . . . . . . f d d d d d d d d 9 9 f . . . . . . . . . . . . . . . . . . . . f d d d d d d d d d f . . . . . . . . . . . . . . . . . . . . . . f d f d d d d d f . . . . . . . . . . . . . . . . . . . . . . . . f d d d d d f . . . . . . . . . . . . . . . . . . . . . . . . . . f d d f f . . . . . . . . . . . . . . . . . . . . . . . . . . . f 8 8 c c f . . . . . . . . . . . . . . . . . . . . . . . . . f c c c 8 8 f . . . . . . . . . . . . . . . . . . . . . . . . . f 8 8 8 f d d f . . . . . . . . . . . . . . . . . . . . . . . . f c c c f d d f . . . . . . . . . . . . . . . . . . . . . . . . f 7 7 7 f d d f . . . . . . . . . . . . . . . . . . . . . . . . f 7 7 7 f f f . . . . . . . . . . . . . . . . . . . . . . . . . . f 7 7 7 7 f . . . . . . . . . . . . . . . . . . . . . . . . . f f f c c f . . . . . . . . . . . . . . . . . . . . . . . . . . f a a b b f . . . . . . . . . . . . . . . . . . . . . . . . . . . f f f f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . `; export const left3 = img` . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . f f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . f 9 9 f f f . . . . . . . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 f f f . . . . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . . f 9 9 d d 9 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . . f d d d d d d 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . f d d d d d d d 9 d 9 9 f . . . . . . . . . . . . . . . . . . . f d f d d d d d d d 9 9 f . . . . . . . . . . . . . . . . . . f d d f d d d d d d d 9 f . . . . . . . . . . . . . . . . . . . . f d d d d d d d d 9 9 f . . . . . . . . . . . . . . . . . . . . f d d d d d d d d d f . . . . . . . . . . . . . . . . . . . . . . f d f d d d d d f . . . . . . . . . . . . . . . . . . . . . . . . f d d d d d f . . . . . . . . . . . . . . . . . . . . . . . . . . f d d f f . . . . . . . . . . . . . . . . . . . . . . . . . f 7 7 c c 8 8 f . . . . . . . . . . . . . . . . . . . . . . . . f f d 8 c c c f f . . . . . . . . . . . . . . . . . . . . . . f d d d f 8 8 8 f d f . . . . . . . . . . . . . . . . . . . . . f d d f f c c c 6 f f . . . . . . . . . . . . . . . . . . . . . f f f 6 6 6 6 6 6 f . . . . . . . . . . . . . . . . . . . . . f b 7 f 6 6 f 7 6 c f . . . . . . . . . . . . . . . . . . . . . f b b c f f . f a b f . . . . . . . . . . . . . . . . . . . . . . f b b f . . f f f . . . . . . . . . . . . . . . . . . . . . . . . f f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . `; export const up1 = img` . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . f f . . . . . . . . . . . . . . . . . . . . . . . . . . . f f f 9 9 f . . . . . . . . . . . . . . . . . . . . . . . . f f 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . . f f 9 9 9 9 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . f f 9 9 9 9 9 9 9 9 9 9 9 f f . . . . . . . . . . . . . . . . . f d 9 9 9 9 9 9 9 9 9 9 9 d f . . . . . . . . . . . . . . . . . f d 9 9 9 9 9 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . f d 9 9 9 9 9 9 9 9 9 d f . . . . . . . . . . . . . . . . . . . f f d 9 9 9 9 9 9 9 d f f . . . . . . . . . . . . . . . . . . . . f f d d d d d d d f f . . . . . . . . . . . . . . . . . . . . . . . f d d d d d f . . . . . . . . . . . . . . . . . . . . . . . . f 8 f f f f f 8 f . . . . . . . . . . . . . . . . . . . . . . f c c 8 8 8 8 8 c c f . . . . . . . . . . . . . . . . . . . . f d 8 c c c c c c c 8 d f . . . . . . . . . . . . . . . . . . f d d 8 8 8 8 8 8 8 8 8 d f . . . . . . . . . . . . . . . . . . f d d f c c c c c c c c d f . . . . . . . . . . . . . . . . . . . f f f 7 7 7 7 7 7 7 f d f . . . . . . . . . . . . . . . . . . . . f f 7 7 7 7 7 7 7 f f . . . . . . . . . . . . . . . . . . . . . f b f 7 7 f 7 7 f . . . . . . . . . . . . . . . . . . . . . . . . f b b f f f c c f f . . . . . . . . . . . . . . . . . . . . . . . f f . . f b b a f . . . . . . . . . . . . . . . . . . . . . . . . . . . f f f f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . `; export const up2 = img` . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . f f . . . . . . . . . . . . . . . . . . . . . . . . . . . f f f 9 9 f . . . . . . . . . . . . . . . . . . . . . . . . f f 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . . f f 9 9 9 9 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . f f 9 9 9 9 9 9 9 9 9 9 9 f f . . . . . . . . . . . . . . . . . f d 9 9 9 9 9 9 9 9 9 9 9 d f . . . . . . . . . . . . . . . . . f d 9 9 9 9 9 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . f d 9 9 9 9 9 9 9 9 9 d f . . . . . . . . . . . . . . . . . . . f f d 9 9 9 9 9 9 9 d f f . . . . . . . . . . . . . . . . . . . . f f d d d d d d d f f . . . . . . . . . . . . . . . . . . . . . . . f d d d d d f . . . . . . . . . . . . . . . . . . . . . . . . f 8 f f f f f 8 f . . . . . . . . . . . . . . . . . . . . . . f c c 8 8 8 8 8 c c f . . . . . . . . . . . . . . . . . . . . . f 8 c c c c c c c 8 f . . . . . . . . . . . . . . . . . . . . f d 8 8 8 8 8 8 8 8 8 d f . . . . . . . . . . . . . . . . . . . f d c c c c c c c c c d f . . . . . . . . . . . . . . . . . . . f d f 7 7 7 7 7 7 7 f d f . . . . . . . . . . . . . . . . . . . . f f 7 7 7 7 7 7 7 f f . . . . . . . . . . . . . . . . . . . . . . . f 7 7 f 7 7 f . . . . . . . . . . . . . . . . . . . . . . . f f c c f f f c c f f . . . . . . . . . . . . . . . . . . . . . f a b b f . f b b a f . . . . . . . . . . . . . . . . . . . . . . f f f f . f f f f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . `; export const up3 = img` . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . f f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . f 9 9 f f f . . . . . . . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 f f . . . . . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 9 9 9 9 f f . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . f f 9 9 9 9 9 9 9 9 9 9 9 f f . . . . . . . . . . . . . . . . . f d 9 9 9 9 9 9 9 9 9 9 9 d f . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 9 9 9 9 9 d f . . . . . . . . . . . . . . . . . . f d 9 9 9 9 9 9 9 9 9 d f . . . . . . . . . . . . . . . . . . . f f d 9 9 9 9 9 9 9 d f f . . . . . . . . . . . . . . . . . . . . f f d d d d d d d f f . . . . . . . . . . . . . . . . . . . . . . . f d d d d d f . . . . . . . . . . . . . . . . . . . . . . . . f 8 f f f f f 8 f . . . . . . . . . . . . . . . . . . . . . . f c c 8 8 8 8 8 c c f . . . . . . . . . . . . . . . . . . . . f d 8 c c c c c c c 8 d f . . . . . . . . . . . . . . . . . . . f d 8 8 8 8 8 8 8 8 8 d d f . . . . . . . . . . . . . . . . . . f d c c c c c c c c f d d f . . . . . . . . . . . . . . . . . . f d f 7 7 7 7 7 7 7 f f f . . . . . . . . . . . . . . . . . . . . f f 7 7 7 7 7 7 7 f f . . . . . . . . . . . . . . . . . . . . . . . f 7 7 f 7 7 f b f . . . . . . . . . . . . . . . . . . . . . f f c c f f f b b f . . . . . . . . . . . . . . . . . . . . . . f a b b f . . f f . . . . . . . . . . . . . . . . . . . . . . . . f f f f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . `; export const down1 = img` . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . f f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . f 9 9 f f f . . . . . . . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 f f . . . . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . f 9 9 9 d d 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . f d 9 9 d d d d d d d 9 9 9 f . . . . . . . . . . . . . . . . . f d f d d f d d d f d d 9 d f . . . . . . . . . . . . . . . . . f d d d d f d d d f d d d d f . . . . . . . . . . . . . . . . . . f d d d d d d d d d d d f . . . . . . . . . . . . . . . . . . . . f d d d d d d d d d f . . . . . . . . . . . . . . . . . . . . . . f d d f f f d d f . . . . . . . . . . . . . . . . . . . . . . . . f d d d d d f . . . . . . . . . . . . . . . . . . . . . . . . f 8 f f d f f 8 f . . . . . . . . . . . . . . . . . . . . . . f c 8 8 8 8 8 8 c c f . . . . . . . . . . . . . . . . . . . . . f d c c c c c c c 8 f . . . . . . . . . . . . . . . . . . . . . f d 8 8 8 8 8 8 f d f . . . . . . . . . . . . . . . . . . . . . f d c c c c c f d d f . . . . . . . . . . . . . . . . . . . . . . f 7 7 7 f 7 f d d f . . . . . . . . . . . . . . . . . . . . . . f 7 7 f f 7 7 7 f . . . . . . . . . . . . . . . . . . . . . f f f 7 7 f f 7 7 f f . . . . . . . . . . . . . . . . . . . . . f a c c 7 f f f 7 7 f . . . . . . . . . . . . . . . . . . . . . . f b b f . . f b b a f . . . . . . . . . . . . . . . . . . . . . . f f . . . f f f f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . `; export const down2 = img` . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . f f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . f 9 9 f f f . . . . . . . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 f f . . . . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . . . 9 9 9 9 9 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . f 9 9 d d d 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . f d 9 9 d d d d d d d 9 9 9 f . . . . . . . . . . . . . . . . . f d f d d f d d d f d d 9 d f . . . . . . . . . . . . . . . . . f d d d d f d d d f d d d d f . . . . . . . . . . . . . . . . . . f d d d d d d d d d d d f . . . . . . . . . . . . . . . . . . . . f d d d d d d d d d f . . . . . . . . . . . . . . . . . . . . . . f d d f f f d d f . . . . . . . . . . . . . . . . . . . . . . . . f d d d d d f . . . . . . . . . . . . . . . . . . . . . . . . f 8 f f d f f 8 f . . . . . . . . . . . . . . . . . . . . . . f c c 8 8 8 8 8 c c f . . . . . . . . . . . . . . . . . . . . . f 8 c c c c c c c 8 f . . . . . . . . . . . . . . . . . . . . f d b 8 8 8 8 8 8 8 b d f . . . . . . . . . . . . . . . . . . . f d b c c c c c c c b d f . . . . . . . . . . . . . . . . . . . f d b 7 7 7 f 7 7 7 b d f . . . . . . . . . . . . . . . . . . . . f 7 7 7 7 f 7 7 7 7 f . . . . . . . . . . . . . . . . . . . . . . f f 7 7 f 7 7 f f . . . . . . . . . . . . . . . . . . . . . . . f c c f f f c c f . . . . . . . . . . . . . . . . . . . . . . f a b b f . f b b a f . . . . . . . . . . . . . . . . . . . . . . f f f f . f f f f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . `; export const down3 = img` . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . f f . . . . . . . . . . . . . . . . . . . . . . . . . . f f f f 9 9 f f . . . . . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 9 9 9 9 9 . . . . . . . . . . . . . . . . . . . . f 9 9 9 d d 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . f 9 9 d d d d d d 9 9 9 f . . . . . . . . . . . . . . . . . . f d 9 d d d d d d d d 9 9 d f . . . . . . . . . . . . . . . . . f d f d d f d d d f d d f d f . . . . . . . . . . . . . . . . . f d d d d f d d d f d d d d f . . . . . . . . . . . . . . . . . . f d d d d d d d d d d d f . . . . . . . . . . . . . . . . . . . . f d d d d d d d d d f . . . . . . . . . . . . . . . . . . . . . . f d d f f f d d f . . . . . . . . . . . . . . . . . . . . . . . . f d d d d d f . . . . . . . . . . . . . . . . . . . . . . . . f 8 f f d f f 8 f . . . . . . . . . . . . . . . . . . . . . . f c c 8 8 8 8 8 8 c f . . . . . . . . . . . . . . . . . . . . . f 8 c c c c c c c d f . . . . . . . . . . . . . . . . . . . . . f d f 8 8 8 8 8 8 d f . . . . . . . . . . . . . . . . . . . . . f d d f c c c c c d f . . . . . . . . . . . . . . . . . . . . . f d d f 7 f 7 7 7 f . . . . . . . . . . . . . . . . . . . . . . . f 7 7 7 f f 7 7 f . . . . . . . . . . . . . . . . . . . . . . . f f 7 7 f f 7 7 f f f . . . . . . . . . . . . . . . . . . . . . f 7 7 f f f 7 c c a f . . . . . . . . . . . . . . . . . . . . f a b b f . . f b b f . . . . . . . . . . . . . . . . . . . . . . f f f f . . . f f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . `; export const idle = img` . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . f f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . f 9 9 f f f . . . . . . . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 f f . . . . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . . . 9 9 9 9 9 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . f 9 9 9 9 9 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . . f 9 9 d d d 9 9 9 9 9 9 f . . . . . . . . . . . . . . . . . . f d 9 9 d d d d d d d 9 9 9 f . . . . . . . . . . . . . . . . . f d f d d f d d d f d d 9 d f . . . . . . . . . . . . . . . . . f d d d d f d d d f d d d d f . . . . . . . . . . . . . . . . . . f d d d d d d d d d d d f . . . . . . . . . . . . . . . . . . . . f d d d d d d d d d f . . . . . . . . . . . . . . . . . . . . . . f d d f f f d d f . . . . . . . . . . . . . . . . . . . . . . . . f d d d d d f . . . . . . . . . . . . . . . . . . . . . . . . f 8 f f d f f 8 f . . . . . . . . . . . . . . . . . . . . . . f c c 8 8 8 8 8 c c f . . . . . . . . . . . . . . . . . . . . . f 8 c c c c c c c 8 f . . . . . . . . . . . . . . . . . . . . f d b 8 8 8 8 8 8 8 b d f . . . . . . . . . . . . . . . . . . . f d b c c c c c c c b d f . . . . . . . . . . . . . . . . . . . f d b 7 7 7 f 7 7 7 b d f . . . . . . . . . . . . . . . . . . . . f 7 7 7 7 f 7 7 7 7 f . . . . . . . . . . . . . . . . . . . . . . f f 7 7 f 7 7 f f . . . . . . . . . . . . . . . . . . . . . . . f c c f f f c c f . . . . . . . . . . . . . . . . . . . . . . f a b b f . f b b a f . . . . . . . . . . . . . . . . . . . . . . f f f f . f f f f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . `; } namespace animation { controller.right.onEvent(ControllerButtonEvent.Pressed, function () { let rightAnim = animation.createAnimation(0, 150); animation.attachAnimation(playerSprite, rightAnim); rightAnim.addAnimationFrame(customArt.right1); rightAnim.addAnimationFrame(customArt.right2); rightAnim.addAnimationFrame(customArt.right3); animation.setAction(playerSprite, ActionKind.Walking); }) controller.left.onEvent(ControllerButtonEvent.Pressed, function () { let leftAnim = animation.createAnimation(0, 150); animation.attachAnimation(playerSprite, leftAnim); leftAnim.addAnimationFrame(customArt.left1); leftAnim.addAnimationFrame(customArt.left2); leftAnim.addAnimationFrame(customArt.left3); animation.setAction(playerSprite, ActionKind.Walking); }) controller.up.onEvent(ControllerButtonEvent.Pressed, function () { let upAnim = animation.createAnimation(0, 150); animation.attachAnimation(playerSprite, upAnim); upAnim.addAnimationFrame(customArt.up1); upAnim.addAnimationFrame(customArt.up2); upAnim.addAnimationFrame(customArt.up3); animation.setAction(playerSprite, ActionKind.Walking); }) controller.down.onEvent(ControllerButtonEvent.Pressed, function () { let downAnim = animation.createAnimation(0, 150); animation.attachAnimation(playerSprite, downAnim); downAnim.addAnimationFrame(customArt.down1); downAnim.addAnimationFrame(customArt.down2); downAnim.addAnimationFrame(customArt.down3); animation.setAction(playerSprite, ActionKind.Walking); }) controller.anyButton.onEvent(ControllerButtonEvent.Released, function () { let idleAnim = animation.createAnimation(0, 150); animation.attachAnimation(playerSprite, idleAnim); idleAnim.addAnimationFrame(customArt.idle); animation.setAction(playerSprite, ActionKind.Idle); }) } function createLevel() { scene.setBackgroundImage(img` e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e `); scene.setTileMap(img` c c c c c c c c c c c c c c c c c c a c c . . . . . . . . c . . . . . . . . . c c . b . . . . . . c . . . . . . . . . c c . . . . . . . . c . . . . . . . . . c c . . . . . . . . c . . . . . . . . . c c . . . . . . . . c . . . . c c c c c c c c c c c c c . . . . . . . . . . . . c c . . . . . c . . . . . . . . . . . . c c . . . . . c . . . . c . . . . . . . c c . . c c c c . . . . c . . . . . . . c c . . . . . . . . . . c . . . . . . . c c . . . . . . . . . . c . . . . . . . c c . . . . . . . . . . c . . . . . . . c c . . . . . . . . . . c . . . . . . . c c c c c c c c c c c c c c c c c c c c c `); scene.setTile(11, customArt.Chest, true); scene.setTile(12, customArt.Wall, true); doorSprite = sprites.create(customArt.Door, SpriteKind.Goal); doorSprite.setPosition(296, 8); } function createPlayer() { playerSprite = sprites.create(customArt.boySprite, SpriteKind.Boy); controller.moveSprite(playerSprite, 100, 100); info.setLife(3); scene.cameraFollowSprite(playerSprite); } sprites.onOverlap(SpriteKind.Boy, SpriteKind.Goal, function (sprite: Sprite, otherSprite: Sprite) { game.over(true); }) game.splash(intro); createPlayer(); createLevel();
Once complete, the code should look similar to what is on the left.
Click on the Download button
Click on Meowbit
Drag and drop the arcade-dungeon-crawler.uf2 file to ARCADE-F4
Want the guide's .uf2 file? Feel free to download a copy of the game here.
We're done with the first level of our Dungeon Crawler game! In the next guide, we'll show you how to create multiple levels, projectiles and enemies in Javascript and TypeScript.
Check out our guides over at https://www.littlebird.com.au/a/how-to/#micro-bit to learn even more. Happy gaming!