From 1d3672146eae755181cb581be3782d843735c498 Mon Sep 17 00:00:00 2001 From: Kiki Date: Tue, 14 Nov 2023 17:19:59 -0800 Subject: [PATCH] Pizza, GameJam, and Hoc Home Page --- docs/gamejam/dec2023.md | 60 ++ docs/graveyard/tutorials/chase-the-pizza.md | 295 ++++++++++ docs/hour-of-code/all.md | 28 +- .../gamejam/jams/holding/gamejambanner.png | Bin 0 -> 11640 bytes docs/static/hour-of-code/2021/forest.png | Bin 0 -> 24123 bytes docs/static/hour-of-code/2022/booth.png | Bin 0 -> 10789 bytes docs/static/hour-of-code/2023/jr.png | Bin 0 -> 31862 bytes docs/static/hour-of-code/2023/sparks.gif | Bin 0 -> 37159 bytes docs/test/tutorials/chase-the-pizza.md | 17 +- docs/test/tutorials/turkey-jr.md | 338 +++++++++++ docs/tutorials/chase-the-pizza.md | 552 +++++++++++++----- 11 files changed, 1146 insertions(+), 144 deletions(-) create mode 100644 docs/gamejam/dec2023.md create mode 100644 docs/graveyard/tutorials/chase-the-pizza.md create mode 100644 docs/static/gamejam/jams/holding/gamejambanner.png create mode 100644 docs/static/hour-of-code/2021/forest.png create mode 100644 docs/static/hour-of-code/2022/booth.png create mode 100644 docs/static/hour-of-code/2023/jr.png create mode 100644 docs/static/hour-of-code/2023/sparks.gif create mode 100755 docs/test/tutorials/turkey-jr.md diff --git a/docs/gamejam/dec2023.md b/docs/gamejam/dec2023.md new file mode 100644 index 00000000000..832f27fa185 --- /dev/null +++ b/docs/gamejam/dec2023.md @@ -0,0 +1,60 @@ +# MakeCode Arcade Game Jam + +![Image of dinosaurs and a volcano with the text 'MakeCode Arcade Prehistoric Jam'](/static/gamejam/jams/holding/gamejambanner.png) + +## It's game jam time! + +Welcome to the 9th Official Microsoft MakeCode Game Jam! + +This is a fun competition where you can pit your game development skills against others to build a game using [MakeCode Arcade](https://arcade.makecode.com), a game engine for retro pixel-art games that run in the browser or on handheld game devices. + +--- + +### Theme + +Come back on Monday, December 4th to find out what the theme will be for this competition. + +--- + +### About + +You have until December 17th to create and submit your +game with the chance to be featured on the Game Jam page, +MakeCode live stream and social media channels! + + +#### Social + +Share your game with us on social media. Tag us in your +creations using @MSMakecode or the hashtag #makecode. + +Don't forget to follow us on Twitter to find out about the +newest MakeCode Arcade updates, games, and competitions! + +[YouTube](https://www.youtube.com/microsoftmakecode) | [Twitter](https://twitter.com/msmakecode) | [Twitch](https://www.twitch.tv/msmakecode) + + + #### Rules + +- Games must be built in MakeCode Arcade +- Your game must relate to the provided theme. +- Keep the games PG: no inappropriate, offensive, or excessively violent content. +- All games must be submitted by 11:59 pm PST on **December 17th**. +- You are welcome to work together with others on a game. +- All games must be submitted by someone who is at least 13 years old. + (Students under 13 can participate, but someone 13 or over must submit their game.) + +--- + +### Submissions + +Don’t to forget to submit your game before +**December 17th** +for your chance to be featured! + +Standout games will be +highlighted here and on MakeCode social media channels. + +Follow us on [YouTube](https://www.youtube.com/microsoftmakecode), [Twitter](https://twitter.com/msmakecode), or [Twitch](https://www.twitch.tv/msmakecode) to find out who made our list of favorites. + + diff --git a/docs/graveyard/tutorials/chase-the-pizza.md b/docs/graveyard/tutorials/chase-the-pizza.md new file mode 100644 index 00000000000..f2edaa3682b --- /dev/null +++ b/docs/graveyard/tutorials/chase-the-pizza.md @@ -0,0 +1,295 @@ +# Chase the Pizza + +### ~button /#tutorial:/tutorials/chase-the-pizza + +Try this tutorial! + +### ~ + +## {Introduction @unplugged} + +![Game animation](/static/tutorials/chase-the-pizza.gif) + +In this tutorial you will create a game with 2 sprites, a ``||sprites:Player||`` sprite and a ``||sprites:Food||`` sprite. The goal of the game is to eat as much pizza as you can before the time runs out! Each time your player catches the pizza, you gain points and the countdown is restarted. + +## {Step 1} + +Open the ``||scene:Scene||`` Toolbox drawer and drag the ``||scene:set background color||`` block into the ``||loops:on start||`` block on your Workspace. Click **Next** to go to the next step in the Tutorial. + +```blocks +// @highlight +scene.setBackgroundColor(0) +``` + +## {Step 2} + +In the ``||scene:set background color||`` block, click on the grey color oval to open the color palette and select a background color. To see what this looks like in your game, look at the Game Simulator window. + +![Choose background color](/static/tutorials/chase-the-pizza/background-color.jpg) + +## {Step 3} + +Open the ``||sprites:Sprites||`` Toolbox drawer and drag the first block, ``||variables(sprites):set mySprite||`` into the ``||loops:on start||`` block on your Workspace. This will create a new ``||sprites:Player||`` character for your game. + +```blocks +let mySprite: Sprite = null +scene.setBackgroundColor(7) +// @highlight +mySprite = sprites.create(img` +. . . . . . . . . . . . . . . . +. . . . . . . . . . . . . . . . +. . . . . . . . . . . . . . . . +. . . . . . . . . . . . . . . . +. . . . . . . . . . . . . . . . +. . . . . . . . . . . . . . . . +. . . . . . . . . . . . . . . . +. . . . . . . . . . . . . . . . +. . . . . . . . . . . . . . . . +. . . . . . . . . . . . . . . . +. . . . . . . . . . . . . . . . +. . . . . . . . . . . . . . . . +. . . . . . . . . . . . . . . . +. . . . . . . . . . . . . . . . +. . . . . . . . . . . . . . . . +. . . . . . . . . . . . . . . . +`, SpriteKind.Player) +``` + +## {Step 4} + +Draw your ``||sprites:Player||`` character by clicking on the grey square in the ``||variables(sprites):set mySprite||`` block to open the Sprite Editor. Use the color palette and design tools to draw an image on the canvas. Click **Done** when you are finished. + +![Image editor](/static/tutorials/chase-the-pizza/image-editor.gif) + +## {Step 5} + +Open the ``||controller:Controller||`` Toolbox drawer and drag the ``||controller:move mySprite with buttons||`` block after the ``||variables(sprites):set mySprite||`` block. This will allow you to move your ``||sprites:Player||`` sprite around the screen with the arrow keys. Try it out in the Game Simulator + +```blocks +let mySprite: Sprite = null +scene.setBackgroundColor(7) +mySprite = sprites.create(img` +. . . . . 5 5 5 5 5 5 . . . . . +. . . 5 5 5 5 5 5 5 5 5 5 . . . +. . 5 5 5 5 5 5 5 5 5 5 5 5 . . +. 5 5 5 5 5 5 5 5 5 5 5 5 5 5 . +. 5 5 5 f f 5 5 5 5 f f 5 5 5 . +5 5 5 5 f f 5 5 5 5 f f 5 5 5 5 +5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 +5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 +5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 +5 5 f 5 5 5 5 5 5 5 5 5 5 f 5 5 +5 5 5 f 5 5 5 5 5 5 5 5 f 5 5 5 +. 5 5 5 f 5 5 5 5 5 5 f 5 5 5 . +. 5 5 5 5 f f f f f f 5 5 5 5 . +. . 5 5 5 5 5 5 5 5 5 5 5 5 . . +. . . 5 5 5 5 5 5 5 5 5 5 . . . +. . . . . 5 5 5 5 5 5 . . . . . +`, SpriteKind.Player) +// @highlight +controller.moveSprite(mySprite) +``` + +## {Step 6} + +Open the ``||sprites:Sprites||`` Toolbox drawer and drag another ``||variables(sprites):set mySprite2||`` block into the ``||loops:on start||`` block on your Workspace. This will be the **pizza** sprite in our game. + +```blocks +let mySprite: Sprite = null +let mySprite2: Sprite = null +scene.setBackgroundColor(7) +mySprite = sprites.create(img` +. . . . . 5 5 5 5 5 5 . . . . . +. . . 5 5 5 5 5 5 5 5 5 5 . . . +. . 5 5 5 5 5 5 5 5 5 5 5 5 . . +. 5 5 5 5 5 5 5 5 5 5 5 5 5 5 . +. 5 5 5 f f 5 5 5 5 f f 5 5 5 . +5 5 5 5 f f 5 5 5 5 f f 5 5 5 5 +5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 +5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 +5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 +5 5 f 5 5 5 5 5 5 5 5 5 5 f 5 5 +5 5 5 f 5 5 5 5 5 5 5 5 f 5 5 5 +. 5 5 5 f 5 5 5 5 5 5 f 5 5 5 . +. 5 5 5 5 f f f f f f 5 5 5 5 . +. . 5 5 5 5 5 5 5 5 5 5 5 5 . . +. . . 5 5 5 5 5 5 5 5 5 5 . . . +. . . . . 5 5 5 5 5 5 . . . . . +`, SpriteKind.Player) +controller.moveSprite(mySprite) +// @highlight +mySprite2 = sprites.create(img` +. . . . . . . . . . . . . . . . +. . . . . . . . . . . . . . . . +. . . . . . . . . . . . . . . . +. . . . . . . . . . . . . . . . +. . . . . . . . . . . . . . . . +. . . . . . . . . . . . . . . . +. . . . . . . . . . . . . . . . +. . . . . . . . . . . . . . . . +. . . . . . . . . . . . . . . . +. . . . . . . . . . . . . . . . +. . . . . . . . . . . . . . . . +. . . . . . . . . . . . . . . . +. . . . . . . . . . . . . . . . +. . . . . . . . . . . . . . . . +. . . . . . . . . . . . . . . . +. . . . . . . . . . . . . . . . +`, SpriteKind.Player) +``` + +## {Step 7} + +In the ``||variables(sprites):set mySprite2||`` block, click on ``||variables(noclick):mySprite2||`` to open the menu, and select ``Rename variable...`` Type in ``pizza`` as the new sprite name and click **Ok**. + +![Rename mySprite2](/static/tutorials/chase-the-pizza/rename-mysprite2.gif) + +## {Step 8} + +In the ``||variables(noclick):set pizza||`` block, click on the ``||sprites:Player||`` kind to open the menu of different Sprite kinds. Select ``||sprites:Food||`` as your ``||variables(noclick):pizza||`` sprite kind. + +![Set sprite kind](/static/tutorials/chase-the-pizza/sprite-kind.jpg) + +## {Step 9} + +Click on the grey box for ``||variables(noclick):set pizza||`` and then select the **Gallery** view. Scroll to find the image of a small pizza (or any other image you like!) and select it to load into the image editor. + +![Image gallery](/static/tutorials/chase-the-pizza/image-gallery.gif) + +## {Step 10} + +Open the ``||sprites:Sprites||`` Toolbox drawer and drag the ``||sprites:on sprite overlaps otherSprite||`` block onto your Workspace (you can place this anywhere). + +```blocks +// @highlight +sprites.onOverlap(SpriteKind.Player, SpriteKind.Player, function (sprite, otherSprite) { + +}) +``` + +## {Step 11} + +In the ``||sprites:on sprite overlaps otherSprite||`` block, click on the second ``||sprites:Player||`` kind after ``||variables(noclick):otherSprite||`` to open the menu. Select ``||sprites:Food||`` as its kind. + +![Overlap sprite kind](/static/tutorials/chase-the-pizza/overlap-kind-sprite.png) + +## {Step 12} + +When our ``||sprites:Player||`` overlaps with the ``||variables(noclick):pizza||`` sprite, let’s add a point to our game score. Open the ``||info:Info||`` Toolbox drawer and drag the ``||info:change score||`` block into the ``||sprites:on sprite overlaps otherSprite||`` block. + +```blocks +sprites.onOverlap(SpriteKind.Player, SpriteKind.Food, function (sprite, otherSprite) { + // @highlight + info.changeScoreBy(1) +}) +``` + +## {Step 13} + +Let’s set the position for ``||variables(noclick):pizza||`` to random locations around the screen. Open the ``||sprites:Sprites||`` Toolbox drawer and drag the ``||sprites:set mySprite position||`` block into the ``||sprites:on sprite overlaps otherSprite||`` block on your Workspace. + +```blocks +let mySprite: Sprite = null +sprites.onOverlap(SpriteKind.Player, SpriteKind.Food, function (sprite, otherSprite) { + info.changeScoreBy(1) + // @highlight + mySprite.setPosition(0, 0) +}) +``` + +## {Step 14} + +In the ``||sprites:set mySprite position||`` block, click on the ``||variables(noclick):mySprite||`` variable to open the menu, and select your ``||variables(noclick):pizza||`` sprite. + +![Change mySprite to pizza](/static/tutorials/chase-the-pizza/sprite-position-rename.png) + +## {Step 15} + +Open the ``||math:Math||`` Toolbox drawer and drag two ``||math:pick random||`` blocks onto the Workspace. Drop one into the ``x`` coordinate of the ``||sprites:set pizza position||`` block, and the other into the ``y`` coordinate replacing the ``0`` values. + +```blocks +let pizza: Sprite = null +sprites.onOverlap(SpriteKind.Player, SpriteKind.Food, function (sprite, otherSprite) { + info.changeScoreBy(1) + pizza.setPosition(randint(0, 10), randint(0, 10)) +}) +``` + +## {Step 16} + +The Arcade game screen is `160` pixels wide, and `120` pixels high. In the first ``||math:pick random||`` block in the `x` coordinate of the ``||sprites:set pizza position||`` block, change the maximum value from ``10`` to **160**. In the second ``||math:pick random||`` block in the ``y`` coordinate, change the maximum value from ``10`` to **120**. + +```blocks +let pizza: Sprite = null +sprites.onOverlap(SpriteKind.Player, SpriteKind.Food, function (sprite, otherSprite) { + info.changeScoreBy(1) + pizza.setPosition(randint(0, 160), randint(0, 120)) +}) +``` + +## {Step 17} + +Let’s restart our countdown each time. Open the ``||info:Info||`` Toolbox drawer and drag a ``||info:start countdown||`` block into the ``||sprites:on sprite overlaps otherSprite||`` block on your Workspace. + +```blocks +let pizza: Sprite = null +sprites.onOverlap(SpriteKind.Player, SpriteKind.Food, function (sprite, otherSprite) { + info.changeScoreBy(1) + pizza.setPosition(randint(0, 160), randint(0, 120)) + // @highlight + info.startCountdown(10) +}) +``` +## {Complete} + +Congratulations, you have completed your game! Use the Game Simulator to play by moving your ``||sprites:Player||`` around the screen to try and eat as much pizza as possible before the time runs out. What’s your high score? + +```blocks +let pizza: Sprite = null +let mySprite: Sprite = null +scene.setBackgroundColor(7) +mySprite = sprites.create(img` +. . . . . 5 5 5 5 5 5 . . . . . +. . . 5 5 5 5 5 5 5 5 5 5 . . . +. . 5 5 5 5 5 5 5 5 5 5 5 5 . . +. 5 5 5 5 5 5 5 5 5 5 5 5 5 5 . +. 5 5 5 f f 5 5 5 5 f f 5 5 5 . +5 5 5 5 f f 5 5 5 5 f f 5 5 5 5 +5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 +5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 +5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 +5 5 f 5 5 5 5 5 5 5 5 5 5 f 5 5 +5 5 5 f 5 5 5 5 5 5 5 5 f 5 5 5 +. 5 5 5 f 5 5 5 5 5 5 f 5 5 5 . +. 5 5 5 5 f f f f f f 5 5 5 5 . +. . 5 5 5 5 5 5 5 5 5 5 5 5 . . +. . . 5 5 5 5 5 5 5 5 5 5 . . . +. . . . . 5 5 5 5 5 5 . . . . . +`, SpriteKind.Player) +controller.moveSprite(mySprite) +pizza = sprites.create(img` +. . . . . . b b b b . . . . . . +. . . . . . b 4 4 4 b . . . . . +. . . . . . b b 4 4 4 b . . . . +. . . . . b 4 b b b 4 4 b . . . +. . . . b d 5 5 5 4 b 4 4 b . . +. . . . b 3 2 3 5 5 4 e 4 4 b . +. . . b d 2 2 2 5 7 5 4 e 4 4 e +. . . b 5 3 2 3 5 5 5 5 e e e e +. . b d 7 5 5 5 3 2 3 5 5 e e e +. . b 5 5 5 5 5 2 2 2 5 5 d e e +. b 3 2 3 5 7 5 3 2 3 5 d d e 4 +. b 2 2 2 5 5 5 5 5 5 d d e 4 . +b d 3 2 d 5 5 5 d d d 4 4 . . . +b 5 5 5 5 d d 4 4 4 4 . . . . . +4 d d d 4 4 4 . . . . . . . . . +4 4 4 4 . . . . . . . . . . . . +`, SpriteKind.Food) + +sprites.onOverlap(SpriteKind.Player, SpriteKind.Food, function (sprite, otherSprite) { + info.changeScoreBy(1) + pizza.setPosition(randint(0, 160), randint(0, 120)) + // @highlight + info.startCountdown(10) +}) +``` diff --git a/docs/hour-of-code/all.md b/docs/hour-of-code/all.md index d9f43230924..bb6084f77fe 100644 --- a/docs/hour-of-code/all.md +++ b/docs/hour-of-code/all.md @@ -2,7 +2,26 @@ Join us in celebrating Computer Science Education Week by playing, designing, and coding your very own retro arcade games! -## Activities +## New for 2023 + +```codecard +[ + { + "name": "Sparks Flying", + "description": "Create a game that challenges you to light a fire to keep yourself warm, but be careful! It's not as easy as it sounds.", + "url": "aka.ms/prehistoric", + "imageUrl": "/static/hour-of-code/2023/sparks.gif" + }, { + "name": "Sparks Flying (Jr)", + "description": "This simplified version of Sparks Flying allows students as young as kindergarten to experience the joy of coding their own game in MakeCode Arcade.", + "url": "aka.ms/sparky", + "imageUrl": "/static/hour-of-code/2023/jr.png" + } +] +``` + +## Previous Activities + ```codecard [ @@ -10,12 +29,12 @@ Join us in celebrating Computer Science Education Week by playing, designing, an "name": "2022 Hour of Code", "description": "Code your own classroom carnival with games like Whack-the-Mole, Burstin' Balloons, and Target Practice", "url": "/hour-of-code-2022", - "imageUrl": "/static/hour-of-code/2022/boothAni.gif" + "imageUrl": "/static/hour-of-code/2022/booth.png" }, { "name": "2021 Hour of Code", "description": "Code a fire-fighting airtanker plane with Microsoft MakeCode Arcade that sprays water to put out the forest fires", "url": "/hour-of-code-2021", - "imageUrl": "/static/hour-of-code/2021/forest-skillmap-game.gif" + "imageUrl": "/static/hour-of-code/2021/forest.png" }, { "name": "2020 Hour of Code", @@ -26,8 +45,11 @@ Join us in celebrating Computer Science Education Week by playing, designing, an ] ``` + ## See also +[Sparks Flying](aka.ms/prehistoric)
+[Sparks Flying JR](aka.ms/sparky)
[2022 Hour of Code](/hour-of-code-2022)
[2021 Hour of Code](/hour-of-code-2021)
[2020 Hour of Code](/hour-of-code-2020) diff --git a/docs/static/gamejam/jams/holding/gamejambanner.png b/docs/static/gamejam/jams/holding/gamejambanner.png new file mode 100644 index 0000000000000000000000000000000000000000..6182bb29b199ef03d865fdbc193a215f5e830306 GIT binary patch literal 11640 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 SHvzOP9JoGs9cRt%lm7#*U5&^9 literal 0 HcmV?d00001 diff --git a/docs/static/hour-of-code/2021/forest.png b/docs/static/hour-of-code/2021/forest.png new file mode 100644 index 0000000000000000000000000000000000000000..921341d3277b1df931a75154f4837853b03d6703 GIT binary patch literal 24123 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 literal 0 HcmV?d00001 diff --git a/docs/static/hour-of-code/2022/booth.png b/docs/static/hour-of-code/2022/booth.png new file mode 100644 index 0000000000000000000000000000000000000000..dfcb7fe95a69fa3a5556a2fba7a3ee5f6da61978 GIT binary patch literal 10789 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 M{ERE^=#_u}A03hltpET3 literal 0 HcmV?d00001 diff --git a/docs/static/hour-of-code/2023/jr.png b/docs/static/hour-of-code/2023/jr.png new file mode 100644 index 0000000000000000000000000000000000000000..b302ef4694d198663a05cca627ac32b489e6bc5e GIT binary patch literal 31862 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 P9725H1 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 literal 0 HcmV?d00001 diff --git a/docs/test/tutorials/chase-the-pizza.md b/docs/test/tutorials/chase-the-pizza.md index fab61dd8c3c..e9ba72d1651 100644 --- a/docs/test/tutorials/chase-the-pizza.md +++ b/docs/test/tutorials/chase-the-pizza.md @@ -44,6 +44,8 @@ scene.setBackgroundColor(13) hint~ +💡 _Feel free to choose your own color if you don't like the swatch in the block._ + --- @@ -154,7 +156,7 @@ mySprite = sprites.create(img` into **the end of** the
``||loops(noclick):on start||`` block already in your workspace. -Now you can move your sprite around the screen using the arrow keys. +Now you can move your sprite around the screen using the arrow buttons on the game pad or your keyboard. ~hint Show me 🔍 @@ -198,7 +200,7 @@ controller.moveSprite(mySprite) - :binoculars: Test your project in the game window! -You should be able to move your sprite with the arrow keys. +You should be able to move your sprite with the joypad or arrow keys on your keyboard. ![Look for the game window in the lower right](/static/tutorials/chase-the-pizza/game.png) @@ -271,7 +273,7 @@ pizza = sprites.create(img`.`, SpriteKind.Food) ## {Step 8} -- :mouse pointer: Draw your sprite by clicking the empty grey square inside
+- :mouse pointer: Choose your pizza by clicking the empty grey square inside
``||variables(noclick):set [pizza] to sprite [ ] of kind [Food]||``
to open the **Sprite Editor**. @@ -287,6 +289,9 @@ to open the **Sprite Editor**. hint~ + +💡 _Feel free to draw your own pizza if you prefer!_ + ```blockconfig.local let pizza = sprites.create(img`.`, SpriteKind.Player) ``` @@ -349,6 +354,10 @@ b 5 5 5 5 d d 4 4 4 4 . . . . . container into **an empty area** of the workspace. +🤷🏽‍♀️ _Need help? Click the lightbulb in the circle below to see what blocks you need in this step._ + + + ```blockconfig.local let pizza = sprites.create(img`.`, SpriteKind.Player) ``` @@ -422,7 +431,7 @@ In Arcade, we use this block: randint(0, scene.screenWidth()) ``` -to ask for a random number that between **1** and the **width of the screen**. +to ask for a random number between **0** and the **width of the screen**. hint~ diff --git a/docs/test/tutorials/turkey-jr.md b/docs/test/tutorials/turkey-jr.md new file mode 100755 index 00000000000..95f3a6a60da --- /dev/null +++ b/docs/test/tutorials/turkey-jr.md @@ -0,0 +1,338 @@ +# Move the Turkey +### @explicitHints true + + +## Welcome @showdialog + +Happy **Turkey Day!** + +This activity will show you how to make a jumpy +platform game. + +![An anigif of the game we're about to build](/static/skillmap/turkey/turkey1.gif "Look what we're about to do today!") + +Click "Ok" to get started. + + + + +## {2. We need a HERO} + +**Where's the turkey??** + +Let's create a turkey sprite and get it moving before we do anything else. + +~hint What's a sprite? 💡 + +--- + +In Arcade, each character or image that does something is called a **SPRITE**. + +Sprites have properties that you can use and change -- things like scale, position, and lifespan are all properties of sprites. + +Our turkey will be a sprite, too. + +hint~ + +- :paper plane: From the ``||sprites:Sprites||`` category, +grab
+```block +let bigTurkey = sprites.create(img`.`, SpriteKind.Player) +``` +
and snap it inside and at **the end** of the ``||loops(noclick):on start||`` container. + + + +#### ~ tutorialhint +```blocks + +// @highlight +let bigTurkey = sprites.create(img`.`, SpriteKind.Player) +``` + + +## {3. We need a Turkey} + + +- :paint brush: To choose the image of the big turkey, click the empty grey box, +then switch to **My Assets** and click the turkey named **player**. + +![Pick player from My Assets](/static/skillmap/turkey/pick-player.gif "Toggle to My Assets and choose player") + +#### ~ tutorialhint +```blocks + +// @highlight +let bigTurkey = sprites.create(assets.image`player`, SpriteKind.Player) +``` + + + +## {4. Control the Player} + +**Time to get the player moving** + +--- + +- :game: From the ``||controller:Controller||`` category, grab
+```block +controller.moveSprite(bigTurkey, 100, 0) +``` +
and drag it into **the end** of the
+``||loops(noclick):on start||`` +
container. + +This block is set in a way that lets you move the turkey left and right, but not up or down. + +#### ~ tutorialhint + +```blocks + +let bigTurkey = sprites.create(assets.image`player`, SpriteKind.Player) +// @highlight +controller.moveSprite(bigTurkey, 100, 0) +``` + + +## Try It + +**Check the Game Window** + +The turkey should move left when you click the left arrow and move right with the right arrow. + + +## {6. Add gravity} + +**To make the game playable, it needs gravity.** + +For that, we'll add acceleration. + +~hint What is acceleration?💡 + +--- + +Acceleration controls how speed changes in a direction. + +We need to play with the turkey's speed in the vertical (up & down) direction. + +hint~ + +- :paper plane: From the ``||sprites:Sprites||`` category, grab
+ +```block +let bigTurkey: Sprite = null +bigTurkey.ay = 500 +``` + +
and snap it inside at **the end** of the +``||loops(noclick):on start||`` container. + + +#### ~ tutorialhint + +```blocks + +let bigTurkey = sprites.create(assets.image`player`, SpriteKind.Player) +controller.moveSprite(bigTurkey, 100, 0) +// @highlight +bigTurkey.ay = 500 +``` + +## {7. Follow with Camera} + +**Oops! The turkey falls off-screen!** + +--- + +- :tree: To keep the turkey in sight go to ``||scene:Scene||`` and drag
+```block +scene.cameraFollowSprite(bigTurkey) +``` +
to **the end** of the +``||loops(noclick):on start||`` container. + +#### ~ tutorialhint + +```blocks + +let bigTurkey = sprites.create(assets.image`player`, SpriteKind.Player) +controller.moveSprite(bigTurkey, 100, 0) +bigTurkey.ay = 500 +// @highlight +scene.cameraFollowSprite(bigTurkey) + +``` + + +## Look Again + +🕹️ 🕹️ 🕹️ +**Look at your game to make sure you can see the turkey land on a platform.** + + + +## {9. Start at the Bottom} + +**The turkey landed, but it's already near the top of the tilemap!** + +Let's move it to a special tile on the ground. + +--- + +- :tree: From ``||scene:Scene||``, drag
+ +```block +tiles.placeOnRandomTile(bigTurkey, assets.tile`transparency16`) +``` + +
into **the end** of the +``||loops(noclick):on start||`` container. + + + +#### ~ tutorialhint + +```blocks + +let bigTurkey = sprites.create(assets.image`player`, SpriteKind.Player) +controller.moveSprite(bigTurkey, 100, 0) +bigTurkey.ay = 500 +scene.cameraFollowSprite(bigTurkey) +//@highlight +tiles.placeOnRandomTile(bigTurkey, assets.tile`transparency16`) +``` + +## {10. Start at the Bottom} + + +- :mouse pointer: Click the checkered square and select the **start** tile, +which looks like a purple line at the bottom of the square. +![The start tile for the turkey](/static/skillmap/turkey/start-tile.png "Choose the first non-empty tile.") + + + +#### ~ tutorialhint + +```blocks + +let bigTurkey = sprites.create(assets.image`player`, SpriteKind.Player) +controller.moveSprite(bigTurkey, 100, 0) +bigTurkey.ay = 500 +scene.cameraFollowSprite(bigTurkey) +//@highlight +tiles.placeOnRandomTile(bigTurkey, assets.tile`start`) +``` + +## {11. Jump} + +Now that the turkey is on the ground, +we need to make it jump using the **A** button! + +--- + +- :game: From ``||controller:Controller||``, drag
+```blocks +controller.A.onEvent(ControllerButtonEvent.Pressed, function () { + let bigTurkey: Sprite = null + bigTurkey.vy = -300 +}) +``` +
into **an empty area** of the workspace. + +This bundle of code will change the velocity of the turkey for a moment each time you press the A button (or space bar on your keyboard.) + +~hint What is velocity? 💡 + +--- + +Velocity is the speed that something is traveling in a specific direction. + +In this step, we're changing the speed that the turkey moves in the up/down direction. + +hint~ + +#### ~ tutorialhint + +```blocks +let bigTurkey: Sprite = null + +controller.A.onEvent(ControllerButtonEvent.Pressed, function () { + bigTurkey.vy = -300 +}) +``` + +## Play your game! + +Give your game a try using the arrow keys and A button (or space bar.) + +Can you get your turkey to the top? + + + +## Finale + +When you're finished playing your game, click **Done** +to return to the main skillmap and continue to find out how to rescue your turkey friends from their cages! + + + +```blockconfig.global +let bigTurkey = sprites.create(img`.`, SpriteKind.Player) + +tiles.placeOnRandomTile(bigTurkey, assets.tile`start`) + +scene.cameraFollowSprite(bigTurkey) +controller.moveSprite(bigTurkey, 100, 0) +bigTurkey.ay = 500 +controller.A.onEvent(ControllerButtonEvent.Pressed, function () { + bigTurkey.vy = -300 +}) +``` + +```package +carnival=github:microsoft/arcade-carnival#v0.0.7 +``` + + + +```ghost + +controller.A.onEvent(ControllerButtonEvent.Pressed, function () { + bigTurkey.vy = -300 +}) + +let bigTurkey: Sprite = null + +bigTurkey = sprites.create(assets.image`player`, SpriteKind.Player) +tiles.placeOnRandomTile(bigTurkey, assets.tile`start`) +bigTurkey.ay = 500 +controller.moveSprite(bigTurkey, 100, 0) +scene.cameraFollowSprite(bigTurkey) + +``` + + +```customts +scene.setBackgroundColor(9) +tiles.setTilemap(tilemap`level1`) + +namespace SpriteKind { + //% isKind + export const Rescued = SpriteKind.create() +} +``` + + +```assetjson +{ + "README.md": " ", + "assets.json": "", + "images.g.jres": "{\n \"image2\": {\n \"data\": \"hwQYABgAAAAAAAC7AAC7CwAAAAAAALC7uwAruwAAAAAAALBLtAsrsrALAAAAAAC7RAsrsrsLAAAAAACwS7QrsksLAAAAsLu7u7QrS0QLAAAAsCIisksrRL28AAAAsLsiIksrRNy9CwAAALC7K0vk7s69uwAAAAAAK0Lk7t7cvAAAAAAAsCLi7u7MvAsAAAAAAOvs7u7LzAsAALC7vczu7u7NzAsAALvu7rvu7u7ezAsAsOvu7u7u7u7szAsAsN7R7u7uzszszAsAsB7/7u7u7u7uvgsAu/6/Ti7u7u7uvgSwvu7eRCLu7u7uvgTgu+7dRCLu7u7uuwCwANtERC677u6+CwAAAPBMRAsAu7u7AAAAAAAAtAAAAAAAAAAAAAAACwAAAAAAAAA=\",\n \"mimeType\": \"image/x-mkcd-f4\",\n \"displayName\": \"player\"\n },\n \"image1\": {\n \"data\": \"hwQeABQAAAAAAAC7AAC7CwAAAAAAALC7uwAruwAAAAAAALBLtAsrsrALAAAAAAC7RAsrsrsLAAAAAACwS7QrsksLAAAAsLu7u7Qru8wLAAAAsCIisksr7r0MAAAAsLsiItvr7tzNAAAAALC7K9vt7s69AAAAAAAAu9vu7t7cAAAAAACwu73u7u7cAAAAAAC77r7u7u7bAAAAALDr7u7uu73dAAAAALDe0e7u7u7eAAAAALAe/+7u7u7uAAAAALv+v07u7u7uAAAAsL7u3kTi7u7uAAAA4Lvu3UTi7u5OAAAAsADbRESwu7tNAAAAAADwTEQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=\",\n \"mimeType\": \"image/x-mkcd-f4\",\n \"displayName\": \"turkey\"\n },\n \"*\": {\n \"mimeType\": \"image/x-mkcd-f4\",\n \"dataEncoding\": \"base64\",\n \"namespace\": \"myImages\"\n }\n}", + "images.g.ts": "// Auto-generated code. Do not edit.\nnamespace myImages {\n\n helpers._registerFactory(\"image\", function(name: string) {\n switch(helpers.stringTrim(name)) {\n case \"image2\":\n case \"player\":return img`\n........................\n..................beb...\n.................beb....\n.....bbb......bbbbbb....\n.....b2b.....bbeeeeeb...\n.bb..b2bb...bbed1feedf..\nbbbb.b22b...bee1ffed4c..\nbb4bbb22b...beedfbdd44..\n.b44bb22bb..deeeee44444b\n.bb44bb222b.beeee44444b.\n..bb44bbb22bcbeeee22eb..\n....bb44442ecbeee2222...\nbbbbbbbb442ceeeeeeeeb...\nb2222222eeeeeeeeeeeeb...\nbb222b44eeeeeeeeeeeeeb..\n.bbbb444eeeeeeeceeeeeb..\n...bb4dceeeeeeeceeeeeb..\n..bb44bdcdeeeeeceeeeeb..\n..bbbbcddccbdecceeeeeb..\n......bbbdcccdeeeeeebb..\n.......bbccccccceeebb...\n........bbbcccccbbbb....\n..........bbbbbbb44.....\n........................\n`;\n case \"image1\":\n case \"turkey\":return img`\n..............................\n..............................\n..............................\n.....bbb........beb...........\n.....b2b.......beb............\n.bb..b2bb...bbbbbb............\nbbbb.b22b..bbeeeeeb...........\nbb4bbb22b.bbed1feedf..........\n.b44bb22bbbee1ffed4c..........\n.bb44bb22bbeedfbdd44..........\n..bb44bbbbdeeeee44444.........\n....bb4dddbbeee44444..........\nbbbbbbbbdeeeeeee22............\nb222222eeeeeeeeeeeb...........\nbb222beeeeeebeeeeeb...........\n.bbbbbeeeeeebeeeeeb...........\n...bbcdceeeedeeeeeb...........\n..bb4cbdcdeebeeeeeb...........\n..bbbbcddccbdeeeeed...........\n.......cbdddddeee44...........\n`;\n }\n return null;\n })\n\n helpers._registerFactory(\"animation\", function(name: string) {\n switch(helpers.stringTrim(name)) {\n\n }\n return null;\n })\n\n}\n// Auto-generated code. Do not edit.\n", + "main.blocks": "PlayerProjectileFoodEnemyTurkeybigTurkeyfollowTurkeymyEnemy", + "main.ts": "\n", + "pxt.json": "{\n \"name\": \"turkey day assets only\",\n \"description\": \"\",\n \"dependencies\": {\n \"device\": \"*\"\n },\n \"files\": [\n \"main.blocks\",\n \"main.ts\",\n \"README.md\",\n \"assets.json\",\n \"tilemap.g.jres\",\n \"tilemap.g.ts\",\n \"images.g.jres\",\n \"images.g.ts\"\n ],\n \"targetVersions\": {\n \"branch\": \"v1.6.24\",\n \"tag\": \"v1.6.24\",\n \"commits\": \"https://github.com/microsoft/pxt-arcade/commits/5bea1575ea693e0648a647cbd86cda9776d58f48\",\n \"target\": \"1.6.24\",\n \"pxt\": \"7.2.25\"\n },\n \"preferredEditor\": \"tsprj\"\n}\n", + "tilemap.g.jres": "{\n \"transparency16\": {\n \"data\": \"hwQQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==\",\n \"mimeType\": \"image/x-mkcd-f4\",\n \"tilemapTile\": true\n },\n \"tile1\": {\n \"data\": \"hwQQABAAAAAAAAAAAAAAuwAAAAAAAADbAAAAAAAAANsAAAAAAAAA2wAAAAAAAADbAAAAAAAAANsAAAAAAAAA2wAAAAAAAADbAAAAAAAAANsAAAAAAAAA2wAAAAAAAADbAAAAAAAAANsAAAAAAAAA2wAAAAAAAADbAAAAAAAAANsAAAAAAAAAuw==\",\n \"mimeType\": \"image/x-mkcd-f4\",\n \"tilemapTile\": true,\n \"displayName\": \"start\"\n },\n \"tile2\": {\n \"data\": \"hwQQABAAAADMzMzMzMzMzNzd3d3d3d3N3LBLtLAiu8vcALtEuyK7xMzMzMzMzMzM3N3d3dzd3M3cKyKy3O7czdy7u7Lc7tzM3ACwu9zu3M3MzMzM3O7cztzd3d3c7tzO3Lvu7ty+3Mvc6x3t3O7cztzr8e/c7tzOzMzMzMz8zMzc3d3d3f3dzQ==\",\n \"mimeType\": \"image/x-mkcd-f4\",\n \"tilemapTile\": true,\n \"displayName\": \"cage\"\n },\n \"level1\": {\n \"id\": \"level1\",\n \"mimeType\": \"application/mkcd-tilemap\",\n \"data\": \"MTAxMDAwYTAwMDAyMDcwNzA3MDcwNzA3MDcwNzA3MDcwNzA3MDcwNzAxMDIwNzA3MDcwNzA3MDcwNzA3MDcwNzA3MDcwNzA3MDEwMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDIwNjAwMDAwMDAwMDAwMDAwMDAwMDA1MDQwNDA2MDEwMjA5MDAwMDAwMDAwMDA1MDQwNDA0MDQwNDA0MDYwMTAyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDIwNTA0MDYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAyMDAwMDAwMDAwMDAwMDUwNjAwMDAwMDAwMDAwMDAxMDIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAyMDAwNTA0MDYwMDAwMDAwMDAwMDAwNTA0MDQwNjAxMDIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMjAwMDAwMDAwMDAwMDA1MDYwMDAwMDAwMDAwMDAwMTAyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMjAwMDAwMDAwMDAwMDAwMDUwNDA0MDYwMDAwMDAwMTAyMDAwMDAwMDAwMDAwMDUwNjAwMDAwMDAwMDkwMDAxMDIwMDAwMDAwMDAwMDAwMDAwMDAwMDA1MDQwNDA2MDEwMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAyMDQwNDA0MDQwNjAwMDAwMDAwMDAwMDAwMDAwMDAxMDIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMjAwMDAwMDAwMDAwMDAwMDAwNTA0MDYwMDAwMDAwMTAyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMjAwMDAwMDAwMDAwNTA0MDQwNjAwMDAwMDAwMDAwMTAyMDAwMDAwMDUwNjAwMDAwMDAwMDAwMDAwMDAwMDAxMDIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMjA2MDAwMDAwMDAwMDAwMDAwMDAwMDUwNjAwMDAwMTAyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDIwOTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMjAwMDUwNjAwMDAwMDAwMDAwMDAwMDAwNTA0MDYwMTAyMDAwMDA1MDYwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMjAwMDAwMDA1MDQwNjAwMDAwMDAwMDAwMDAwMDAwMTAyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDIwMDAwMDAwMDAwMDAwMDAwMDUwNjAwMDAwMDAwMDEwMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDUwNjAwMDAwMTAyMDUwNDA0MDQwNjAwMDAwMDAwMDAwMDAwMDAwMDAxMDIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA1MDYwMTAyMDAwMDAwMDAwMDAwMDkwMDAwMDUwNjAwMDAwMDAxMDIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMjAwMDAwMDAwMDAwNTA0MDYwMDAwMDAwMDAwMDAwMTAyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDIwMDAwMDAwMDAwMDAwMDAwMDAwMDA1MDQwNDA2MDEwMjAwMDUwNDA2MDAwMDAwMDUwNjAwMDAwMDAwMDAwMTAyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMjAwMDAwMDAwMDAwMDA1MDQwNjAwMDAwMDAwMDAwMTAyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMjAwMDAwMDAwMDAwMDAwMDAwMDA1MDYwMDAwMDAwMTAyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDIwNTA0MDYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMjAwMDAwMDAwMDAwMDA1MDQwNjAwMDAwMDAwMDAwMTAyMDAwMDAwMDkwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDIwMDAwMDAwMDAwMDAwMDAwMDAwMDA1MDQwNDA2MDEwMjAwMDAwMDA1MDYwMDAwMDAwMDAwMDAwMDAwMDAwMTAyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMjAwMDAwNTA2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAyMDAwMDAwMDUwNjAwMDAwMDAwMDAwMDAwMDAwMDAxMDIwMDAwMDAwMDA1MDQwNDA2MDAwMDAwMDAwMDAwMDEwMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAyMDUwNDA2MDAwMDAwMDAwMDAwMDUwNjAwMDAwMDAxMDIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAyMDAwMDAwMDAwMDA1MDYwMDAwMDAwNTA0MDQwNjAxMDIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAyMDAwMDA1MDQwNDA0MDQwNDA2MDAwMDAwMDAwMDAxMDIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDUwNjAwMDAwMTAyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDIwMDAwMDAwMDAwMDAwMDA5MDAwMDAwMDAwMDAwMDEwMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDUwMTAyMDAwMDAwMDAwMDA1MDQwNDA2MDAwMDAwMDAwMDAxMDIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNTA2MDAwMTAyMDAwNTA0MDYwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMjAwMDAwMDAwMDAwMDAwMDUwNjAwMDAwMDAwMDAwMTAyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMjAwMDAwOTAwMDAwMDAwMDUwNDA0MDQwNjAwMDAwMTAyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDIwNTA0MDQwNDA2MDAwMDAwMDAwMDAwMDAwMDAwMDEwMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDIwMDAwMDAwMDAwMDAwNTA2MDAwMDAwMDAwMDAwMDEwMjAwMDAwMDAwMDAwNTA2MDAwMDAwMDAwMDAwMDAwMTAyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDIwMDAwMDAwMDAwMDAwMDAwMDAwNTA0MDQwNDA0MDEwMjAwMDUwNDA2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMjAwMDAwMDAwMDAwNTA2MDAwMDAwMDkwMDAwMDAwMTAyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDIwMDAwMDAwMDAwMDAwMDAwMDAwMDA1MDQwNjAwMDEwMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAyMDAwMDAwMDAwNTA0MDYwMDAwMDAwMDAwMDAwMDAxMDIwNTA0MDQwNjAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAyMDAwMDAwMDAwMDAwMDAwMDAwMDUwNDA2MDAwMDAxMDIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAyMDAwMDAwMDAwMDA1MDQwNjAwMDAwMDAwMDAwMDAxMDIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDIwMDAwMDAwMDA1MDQwNjAwMDAwMDAwMDAwMDAwMDEwMjAwMDkwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDIwNDA2MDAwMDAwMDAwMDA1MDYwMDAwMDkwMDAwMDEwMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAyMDAwMDAwMDAwMDAwMDAwMDAwMDAwNTA0MDQwNjAxMDIwMDAwMDAwNTA0MDYwMDAwMDAwMDAwMDAwMDAwMDEwMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMjAwMDAwNTA2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAyMDAwMDAwMDAwMDAwMDUwNDA0MDYwMDAwMDAwMDAxMDIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNTA0MDYwMTAyMDUwNDA2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDIwMDAwMDAwMDAwMDAwMDA5MDAwMDAwMDAwMDAwMDEwMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAyMDAwMDAwMDAwMDA1MDQwNDA2MDAwMDAwMDAwMDAxMDIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA1MDYwMDAxMDIwMDAwMDkwMDAwMDAwNTA0MDQwNjAwMDAwMDAwMDEwMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAyMDAwMDA1MDYwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAyMDAwMDAwMDUwNDA2MDAwMDAwMDAwMDAwMDAwMDAxMDIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAyMDAwMDAwMDAwMDAwMDUwNDA2MDAwMDA5MDAwMDAxMDIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDUwNDA0MDYwMTAyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDIwMDAwMDAwNTA0MDQwNjAwMDAwMDAwMDAwMDAwMDEwMjAwMDAwOTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDIwNDA0MDYwMDAwMDAwMDAwMDUwNDA2MDAwMDAwMDEwMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDIwMDAwMDAwMDA1MDQwNjAwMDAwMDAwMDAwMDAwMDEwMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDkwMDAwMDAwMTAyMDAwMDAwMDAwMDAwMDAwMDAwMDUwNjAwMDAwMDAxMDIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAyMDAwNTA0MDQwNjAwMDAwMDA1MDQwNDA0MDYwMDAxMDIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMjAwMDAwMDAwMDAwMDA4MDAwMDAwMDAwMDAwMDAwMTAyMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDIwMDAwMDAwMDAwMDAyMDAyMDAwMDAwMDAwMDAwMjAwMjAwMDAwMDAwMDAwMDIwMDIwMDAwMDAwMDAwMDAyMDIyMDAwMDAwMDAyMDIyMjIwMjAwMDAyMDIyMjIyMjIyMDIwMDAwMDAwMDAwMDAyMDIyMjIwMDAwMDAwMDAwMjAwMjAwMDAwMDAwMDAwMDIwMDIwMDAwMjAwMjAwMDAyMDAyMDAwMDAwMDAwMDAwMjAwMjAwMDAwMDAwMDAwMDIwMDIyMjAyMDAwMDIwMjIyMjAyMDAwMDAwMDAwMDAwMjAwMjAwMDAyMDAyMDAwMDIwMDIwMDAwMDAwMDAwMDAyMDAyMDAwMDAwMDAwMDAwMjAwMjAwMDAwMDIyMjIwMDIwMDIwMDAwMjAwMjAwMDAyMDAyMDAwMDAwMDAyMDIyMjIwMjAwMDAwMDAwMDAwMDIwMjIyMjIyMDAwMDAwMDAyMDAyMDAwMDAwMDAwMDAwMjAwMjAwMDAwMDIwMjIwMDIwMDIwMDAwMDAwMDAwMDAyMDAyMDAwMDAwMDAwMDAwMjAwMjAwMDAyMjIyMDAwMDIwMDIwMDIyMDAwMDAwMDAyMDAyMDAwMDAwMDAwMDAwMjAyMjAwMDAwMDAwMjAwMjIwMDIwMDAwMDAwMDAwMDAyMDAyMDAwMDAwMDAwMDAwMjAwMjIyMDAwMDAwMDAyMjIyMDIyMDAyMDAwMDAwMDAyMDAyMDAwMDAwMDAwMDAwMjAwMjAwMjIwMjAwMDAwMDIwMDIwMDAwMDAwMDAwMDAyMDAyMDAwMDAwMjAwMjAwMjAwMjAwMDAwMDAwMjAwMjIwMjIyMjIyMDAwMDAwMDAyMDAyMDAwMDAwMDAwMDAwMjAwMjAwMDAwMDAwMDAyMDIyMDIwMDAwMDAwMDIyMDAyMDAyMDAwMDAwMDAwMDAwMjAwMjAwMDAyMjAyMDAwMDIwMDIwMDAwMDAwMDAwMDAyMDAyMDAwMDAwMDAyMDIyMjIwMjIyMDIwMDIyMDAwMDIwMDIwMDAwMDAwMDAwMDAyMDAyMDAwMDAwMDAwMDAwMjAwMjAwMDAyMDIyMDAwMDIwMDIwMDAwMDAwMDAwMDAyMDAyMDAwMDAwMDAwMDAwMjAwMjAwMDAwMDAwMjIwMDIwMDIwMDAwMDAwMDAwMDAyMDIyMjIwMDAwMDAwMDAwMjAwMjAwMDAyMDIyMDAwMDIwMDIwMDAwMDAwMDAwMDAyMDAyMDAwMDAwMDAyMDIyMjIwMjAwMjIwMDAwMDAwMDIwMDIwMDAwMDAwMDAwMDAyMDAyMDAwMDAwMDAwMDAwMjAwMjIwMDIwMDAwMDAwMDIwMDIwMDIyMDAwMDAwMDAyMDAyMDAyMDIyMDIwMDAwMjAwMjAwMDAwMDAwMDAwMDIwMjIyMjAwMDAwMDIyMDAyMDAyMDAwMDAwMDAwMDAwMjAwMjAwMDAwMDAwMDAwMDIwMDIwMDAwMjIwMDIwMjIyMjAyMDAwMDAwMDAwMDAwMjAwMjAwMDAwMDAwMDAwMDIwMDIyMDIyMjIyMjAwMDAyMDAyMDAwMDAwMDAwMDAwMjAwMjAwMDAwMDAwMjAwMjIwMDIwMDAwMDAwMDAwMDAyMDAyMDAwMDAwMDAwMDAwMjAwMjAwMDAwMDAwMDAwMDIyMDIwMDAwMjIyMjAwMDAyMDAyMDAwMDAwMDAwMDAwMjAwMjAwMDAwMDAwMDAyMjIwMDIyMjAyMDAwMDAwMDAyMDAyMDAwMDAwMDAwMDAwMjAwMjAwMDAwMDIyMDAwMDIwMDIwMDAwMDAwMDAwMDAyMDAyMDAwMDAwMDAwMDAwMjAwMjAwMDAwMDIyMjIwMjIwMDIwMDAwMDAwMDAwMDAyMDIyMjIyMjAwMDAwMDAwMjAwMjAwMDAwMDAwMDAwMDIwMDIwMDAwMDAwMDAwMDAyMDAyMDAwMDIwMDIwMDAwMjAwMjAwMDAyMjAwMDAwMDIwMDIwMDAwMDAwMDAwMDAyMDAyMDAwMDAwMDAyMjIyMjIwMjIyMDIwMDAwMDAwMDIwMDIwMDAwMDAwMDAwMDAyMDAyMDAwMDAwMDAwMDAwMjAwMjAwMDAyMjAwMDAwMDIwMDIwMDAwMDAwMDAwMDAyMDAyMDAwMDAwMDAyMDIyMjAwMjAwMDAwMDAwMDAwMDIwMDIwMDIwMjIwMDAwMDAyMDIyMjIwMjAwMDAwMDAwMjAwMjAwMDAwMDAwMDAwMDIwMDIwMDAwMDAwMDIyMDIyMDAyMDAwMDAwMDAwMDAwMjAwMjAwMDAwMDAwMDAwMDIwMDIwMDAwMjIwMjAwMDAyMDAyMDAwMDAwMDAwMDAwMjAwMjAwMDAwMDAwMDAwMDIwMDIwMDAwMDAwMDAwMDAyMDAyMDAyMDIyMDAwMDAwMjAwMjAwMDAwMDAwMDAwMDIwMDIwMDAwMDAwMDAwMDAyMDIyMDIwMDAwMjIwMDAwMjAwMjAwMDAwMDAwMDAwMDIwMDIwMDAwMDAwMDIwMjIyMjAyMDAyMjAyMDAwMDAwMjAwMjAwMDAwMDAwMDAwMDIwMDIwMDAwMDAwMDAwMDAyMDAyMDAwMDAwMDAwMDAwMjAwMjIwMDIwMDAwMDAwMDIwMDIwMDAwMjAyMjAyMDAyMDAyMDAwMDAwMDAwMDAwMjAwMjAwMDAwMDAwMDAyMjIyMjIyMjAwMDAwMDAwMDAyMDAyMDAwMDAwMDAwMDAwMjAwMjAwMDAwMDAwMDAwMDIwMDIwMDAwMjIyMjAwMDAyMDAyMDAwMDAwMDAwMDAwMjAwMjAwMDAwMDAwMDAwMDIwMDIwMDAwMDAwMDAwMjIyMDAyMDAwMDIwMjIwMjAwMjAwMjAwMDAwMDAwMDAwMDIwMDIyMDAyMDAwMDAwMDAyMDAyMDAwMDAwMDAwMDAwMjAwMjAwMDAwMDAwMDAwMDIwMDIwMDIyMDIwMDAwMDAyMDAyMDAwMDAwMDAwMDAwMjAwMjAwMDAwMDAwMDAwMDIwMDIwMDAwMjAyMjAwMDAyMDAyMDAwMDAwMDAwMDAwMjAwMjAwMDAwMDAwMjAyMjIyMDIwMDAwMDAwMDAwMDAyMDAyMDAyMjIyMDAwMDAwMjAwMjAwMDAwMDAwMDAwMDIwMDIwMDAwMDAwMDAwMDAyMDIyMjIwMDAwMjAyMjAwMjAwMjAwMDAwMDAwMDAwMDIwMDIwMDAwMDAwMDAwMDAyMDAyMDAyMDIyMDAwMDAwMjAwMjAwMDAwMDAwMDAwMDIwMDIwMDAwMDAwMDIyMDAyMDAyMDAwMDAwMDAwMDAwMjAwMjAwMDAwMDAwMDAwMDIwMDIyMjIyMDAyMDIyMjIyMDAyMDAwMDAwMDAwMDAwMjAwMjAwMDAwMDAwMDAwMDIwMjIyMjIyMjIyMjIyMjIyMg==\",\n \"tileset\": [\n \"myTiles.transparency16\",\n \"sprites.skillmap.islandTile3\",\n \"sprites.skillmap.islandTile5\",\n \"sprites.skillmap.islandTile1\",\n \"sprites.castle.tilePath2\",\n \"sprites.castle.tilePath1\",\n \"sprites.castle.tilePath3\",\n \"sprites.swamp.swampTile16\",\n \"myTiles.tile1\",\n \"myTiles.tile2\"\n ],\n \"displayName\": \"level1\"\n },\n \"*\": {\n \"mimeType\": \"image/x-mkcd-f4\",\n \"dataEncoding\": \"base64\",\n \"namespace\": \"myTiles\"\n }\n}", + "tilemap.g.ts": "// Auto-generated code. Do not edit.\nnamespace myTiles {\n //% fixedInstance jres blockIdentity=images._tile\n export const transparency16 = image.ofBuffer(hex``);\n //% fixedInstance jres blockIdentity=images._tile\n export const tile1 = image.ofBuffer(hex``);\n //% fixedInstance jres blockIdentity=images._tile\n export const tile2 = image.ofBuffer(hex``);\n\n helpers._registerFactory(\"tilemap\", function(name: string) {\n switch(helpers.stringTrim(name)) {\n case \"level1\":\n case \"level1\":return tiles.createTilemap(hex`1000a00002070707070707070707070707070701020707070707070707070707070707010200000000000000000000000000000102000000000000000000000000000001020600000000000000000005040406010209000000000005040404040404060102000000000000000000000000000001020504060000000000000000000000010200000000000000000000000000000102000000000000050600000000000001020000000000000000000000000000010200000000000000000000000000000102000504060000000000000504040601020000000000000000000000000000010200000000000005060000000000000102000000000000000000000000000001020000000000000000000000000000010200000000000000050404060000000102000000000000050600000000090001020000000000000000000005040406010200000000000000000000000000000102040404040600000000000000000001020000000000000000000000000000010200000000000000000504060000000102000000000000000000000000000001020000000000000000000000000000010200000000000504040600000000000102000000050600000000000000000001020000000000000000000000000000010206000000000000000000050600000102000000000000000000000000000001020900000000000000000000000000010200050600000000000000000504060102000005060000000000000000000001020000000000000000000000000000010200000005040600000000000000000102000000000000000000000000000001020000000000000000050600000000010200000000000000000000050600000102050404040600000000000000000001020000000000000000000000000000010200000000000000000000000005060102000000000000090000050600000001020000000000000000000000000000010200000000000504060000000000000102000000000000000000000000000001020000000000000000000005040406010200050406000000050600000000000102000000000000000000000000000001020000000000000000000000000000010200000000000005040600000000000102000000000000000000000000000001020000000000000000000000000000010200000000000000000005060000000102000000000000000000000000000001020504060000000000000000000000010200000000000005040600000000000102000000090000000000000000000001020000000000000000000005040406010200000005060000000000000000000102000000000000000000000000000001020000000000000000000000000000010200000506000000000000000000000102000000050600000000000000000001020000000005040406000000000000010200000000000000000000000000000102050406000000000000050600000001020000000000000000000000000000010200000000000000000000000000000102000000000005060000000504040601020000000000000000000000000000010200000000000000000000000000000102000005040404040406000000000001020000000000000000000000000000010200000000000000000000050600000102000000000000000000000000000001020000000000000009000000000000010200000000000000000000000000050102000000000005040406000000000001020000000000000000000000000000010200000000000000000000000506000102000504060000000000000000000001020000000000000000000000000000010200000000000000050600000000000102000000000000000000000000000001020000000000000000000000000000010200000900000000050404040600000102000000000000000000000000000001020504040406000000000000000000010200000000000000000000000000000102000000000000000000000000000001020000000000000506000000000000010200000000000506000000000000000102000000000000000000000000000001020000000000000000000504040404010200050406000000000000000000000102000000000000000000000000000001020000000000000000000000000000010200000000000506000000090000000102000000000000000000000000000001020000000000000000000005040600010200000000000000000000000000000102000000000504060000000000000001020504040600000000000000000000010200000000000000000000000000000102000000000000000000050406000001020000000000000000000000000000010200000000000000000000000000000102000000000005040600000000000001020000000000000000000000000000010200000000000000000000000000000102000000000000000000000000000001020000000005040600000000000000010200090000000000000000000000000102000000000000000000000000000001020406000000000005060000090000010200000000000000000000000000000102000000000000000000000504040601020000000504060000000000000000010200000000000000000000000000000102000000000000000000000000000001020000000000000000000000000000010200000506000000000000000000000102000000000000050404060000000001020000000000000000000000000000010200000000000000000000000504060102050406000000000000000000000001020000000000000009000000000000010200000000000000000000000000000102000000000005040406000000000001020000000000000000000000000000010200000000000000000000000000000102000000000000000000000005060001020000090000000504040600000000010200000000000000000000000000000102000005060000000000000000000001020000000000000000000000000000010200000000000000000000000000000102000000050406000000000000000001020000000000000000000000000000010200000000000000000000000000000102000000000000050406000009000001020000000000000000000000000000010200000000000000000000050404060102000000000000000000000000000001020000000504040600000000000000010200000900000000000000000000000102000000000000000000000000000001020404060000000000050406000000010200000000000000000000000000000102000000000000000000000000000001020000000005040600000000000000010200000000000000000000090000000102000000000000000000050600000001020000000000000000000000000000010200000000000000000000000000000102000504040600000005040404060001020000000000000000000000000000010200000000000008000000000000000102030303030303030303030303030303`, img`\n2..............2\n2..............2\n2..............2\n2..............2\n22.........22222\n2......222222222\n2..............2\n2222...........2\n2..............2\n2......22......2\n2..............2\n2..............2\n2.222......22222\n2..............2\n2......22......2\n2..............2\n2..............2\n2.......2222...2\n2......22......2\n2..........22222\n2..............2\n222222.........2\n2..............2\n2........222...2\n2..............2\n2..............2\n2.....2222.....2\n2...22.........2\n2..............2\n22.........22..2\n2..............2\n2..............2\n2.22........2222\n2..22..........2\n2..............2\n2...222........2\n2..............2\n2........22....2\n2..........22..2\n222222.........2\n2..............2\n2............222\n2.........22...2\n2..............2\n2.....222......2\n2..............2\n2..........22222\n2.222...22.....2\n2..............2\n2..............2\n2......222.....2\n2..............2\n2..............2\n2.........22...2\n2..............2\n2222...........2\n2......222.....2\n2..............2\n2..........22222\n2...22.........2\n2..............2\n2..............2\n2..22..........2\n2...22.........2\n2....2222......2\n2..............2\n2222......22...2\n2..............2\n2..............2\n2.....22...22222\n2..............2\n2..............2\n2..2222222.....2\n2..............2\n2..........22..2\n2..............2\n2..............2\n2.............22\n2.....2222.....2\n2..............2\n2...........22.2\n2.222..........2\n2..............2\n2.......22.....2\n2..............2\n2..............2\n2.......22222..2\n2..............2\n222222.........2\n2..............2\n2..............2\n2......22......2\n2.....22.......2\n2..............2\n2.........222222\n2.222..........2\n2..............2\n2..............2\n2.....22.......2\n2..............2\n2..........222.2\n2..............2\n2....222.......2\n22222..........2\n2..............2\n2.........222..2\n2..............2\n2..............2\n2.....222......2\n2..............2\n2..............2\n2..............2\n2....222.......2\n2..............2\n2..............2\n222.....22.....2\n2..............2\n2..........22222\n2...222........2\n2..............2\n2..............2\n2..............2\n2..22..........2\n2......2222....2\n2..............2\n2...........2222\n2222...........2\n2..............2\n2..............2\n2.....2222.....2\n2..............2\n2..............2\n2...........22.2\n2......2222....2\n2..............2\n2..22..........2\n2..............2\n2..............2\n2...222........2\n2..............2\n2..............2\n2......222.....2\n2..............2\n2..........22222\n2..............2\n2...2222.......2\n2..............2\n2..............2\n2222.....222...2\n2..............2\n2..............2\n2....222.......2\n2..............2\n2.........22...2\n2..............2\n2..............2\n2.2222...22222.2\n2..............2\n2..............2\n2222222222222222\n`, [myTiles.transparency16,sprites.skillmap.islandTile3,sprites.skillmap.islandTile5,sprites.skillmap.islandTile1,sprites.castle.tilePath2,sprites.castle.tilePath1,sprites.castle.tilePath3,sprites.swamp.swampTile16,myTiles.tile1,myTiles.tile2], TileScale.Sixteen);\n }\n return null;\n })\n\n helpers._registerFactory(\"tile\", function(name: string) {\n switch(helpers.stringTrim(name)) {\n case \"transparency16\":return transparency16;\n case \"start\":\n case \"tile1\":return tile1;\n case \"cage\":\n case \"tile2\":return tile2;\n }\n return null;\n })\n\n}\n// Auto-generated code. Do not edit.\n" +} +``` diff --git a/docs/tutorials/chase-the-pizza.md b/docs/tutorials/chase-the-pizza.md index f2edaa3682b..e9ba72d1651 100644 --- a/docs/tutorials/chase-the-pizza.md +++ b/docs/tutorials/chase-the-pizza.md @@ -1,4 +1,6 @@ # Chase the Pizza +### @explicitHints true + ### ~button /#tutorial:/tutorials/chase-the-pizza @@ -6,177 +8,389 @@ Try this tutorial! ### ~ -## {Introduction @unplugged} +## Introduction @showdialog + +![Game animation](/static/tutorials/chase-the-pizza/chasing.gif) + +Create a game where the goal is to eat as much pizza as you can +before the time runs out! + + +## {Step 2} + +**Set the background color** + +--- + +- :tree: Open the
+``||scene:Scene||``
+toolbox drawer and drag
+``||scene:set background color [ ]||``
+into **the empty** ``||loops(noclick):on start||`` container already in your workspace. + +~hint What does that mean? 🤷🏽 + +--- + +When giving instructions, we'll highlight some text to give you a better idea of what you are looking for. + +For example, when we suggest the
+``||scene:set background color to [ ]||``
+block, we are pointing you toward
+ +```block +scene.setBackgroundColor(13) +``` -![Game animation](/static/tutorials/chase-the-pizza.gif) +hint~ -In this tutorial you will create a game with 2 sprites, a ``||sprites:Player||`` sprite and a ``||sprites:Food||`` sprite. The goal of the game is to eat as much pizza as you can before the time runs out! Each time your player catches the pizza, you gain points and the countdown is restarted. +💡 _Feel free to choose your own color if you don't like the swatch in the block._ -## {Step 1} -Open the ``||scene:Scene||`` Toolbox drawer and drag the ``||scene:set background color||`` block into the ``||loops:on start||`` block on your Workspace. Click **Next** to go to the next step in the Tutorial. +--- +- :mouse pointer: Click the button that says **Next** to go to the +next step of the tutorial. + + +#### ~ tutorialhint ```blocks // @highlight -scene.setBackgroundColor(0) +scene.setBackgroundColor(13) ``` -## {Step 2} -In the ``||scene:set background color||`` block, click on the grey color oval to open the color palette and select a background color. To see what this looks like in your game, look at the Game Simulator window. +## {Step 3} -![Choose background color](/static/tutorials/chase-the-pizza/background-color.jpg) +Add a player **sprite**. -## {Step 3} +--- + +- :paper plane: Open the ``||sprites:Sprites||`` drawer and drag
+``||variables(sprites):set [mySprite] to sprite [ ] of kind [Player]||``
+into **the end of** the ``||loops(noclick):on start||`` block already in your workspace. + +--- + + +~hint What's a sprite? 💡 + +--- + +In Arcade, each character or image that does something is called a **SPRITE**. + +Sprites have properties that you can use and change — +things like scale, position, and lifespan are all properties of sprites. + +Our player will be a sprite, too. + +hint~ -Open the ``||sprites:Sprites||`` Toolbox drawer and drag the first block, ``||variables(sprites):set mySprite||`` into the ``||loops:on start||`` block on your Workspace. This will create a new ``||sprites:Player||`` character for your game. +~hint Show me 🔍 + +![Add a sprite block](/static/tutorials/chase-the-pizza/mySprite.gif) + +hint~ + + +#### ~ tutorialhint ```blocks let mySprite: Sprite = null -scene.setBackgroundColor(7) +scene.setBackgroundColor(13) // @highlight -mySprite = sprites.create(img` -. . . . . . . . . . . . . . . . -. . . . . . . . . . . . . . . . -. . . . . . . . . . . . . . . . -. . . . . . . . . . . . . . . . -. . . . . . . . . . . . . . . . -. . . . . . . . . . . . . . . . -. . . . . . . . . . . . . . . . -. . . . . . . . . . . . . . . . -. . . . . . . . . . . . . . . . -. . . . . . . . . . . . . . . . -. . . . . . . . . . . . . . . . -. . . . . . . . . . . . . . . . -. . . . . . . . . . . . . . . . -. . . . . . . . . . . . . . . . -. . . . . . . . . . . . . . . . -. . . . . . . . . . . . . . . . -`, SpriteKind.Player) +mySprite = sprites.create(img`.`, SpriteKind.Player) ``` ## {Step 4} -Draw your ``||sprites:Player||`` character by clicking on the grey square in the ``||variables(sprites):set mySprite||`` block to open the Sprite Editor. Use the color palette and design tools to draw an image on the canvas. Click **Done** when you are finished. +- :mouse pointer: Draw your sprite by clicking on the empty grey square in the
+``||variables(sprites):set [mySprite] to sprite [ ] of kind [Player]||``
+block to open the **Sprite Editor**. + + +- :mouse pointer: Click **Done** when you are finished drawing. + +~hint Show me 🔍 + +![Image editor](/static/tutorials/chase-the-pizza/draw.gif) + +hint~ + + + +#### ~ tutorialhint +```blocks +let mySprite: Sprite = null +scene.setBackgroundColor(13) +// @highlight +mySprite = sprites.create(img` +. . . . . 5 5 5 5 5 5 5 . . . . +. . . 5 5 5 5 5 5 5 5 5 5 5 . . +. . 5 5 5 5 5 5 5 5 5 5 5 5 5 . +. . 5 5 5 5 5 5 5 5 5 5 5 5 5 . +. 5 5 5 5 f 5 5 5 5 f 5 5 5 5 5 +. 5 5 5 5 f f 5 5 5 f f 5 5 5 5 +. 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 +. 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 +. 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 +. 5 5 5 f f f f f f f f f 5 5 5 +. 5 5 5 5 f b b b b b f 5 5 5 5 +. . 5 5 5 5 f b b b f 5 5 5 5 . +. . 5 5 5 5 5 f f f 5 5 5 5 5 . +. . . 5 5 5 5 5 5 5 5 5 5 5 . . +. . . . . 5 5 5 5 5 5 5 . . . . +. . . . . . . . . . . . . . . . +`, SpriteKind.Player) +``` -![Image editor](/static/tutorials/chase-the-pizza/image-editor.gif) ## {Step 5} -Open the ``||controller:Controller||`` Toolbox drawer and drag the ``||controller:move mySprite with buttons||`` block after the ``||variables(sprites):set mySprite||`` block. This will allow you to move your ``||sprites:Player||`` sprite around the screen with the arrow keys. Try it out in the Game Simulator +**Make the sprite move** + +--- + +- :game: Open ``||controller:Controller||`` and drag
+``||controller:move [mySprite] with buttons||``
+into **the end of** the
+``||loops(noclick):on start||`` block already in your workspace. +Now you can move your sprite around the screen using the arrow buttons on the game pad or your keyboard. + + +~hint Show me 🔍 + +![Add the move block](/static/tutorials/chase-the-pizza/move.gif) + +hint~ + + +#### ~ tutorialhint ```blocks let mySprite: Sprite = null -scene.setBackgroundColor(7) +scene.setBackgroundColor(13) mySprite = sprites.create(img` -. . . . . 5 5 5 5 5 5 . . . . . -. . . 5 5 5 5 5 5 5 5 5 5 . . . -. . 5 5 5 5 5 5 5 5 5 5 5 5 . . -. 5 5 5 5 5 5 5 5 5 5 5 5 5 5 . -. 5 5 5 f f 5 5 5 5 f f 5 5 5 . -5 5 5 5 f f 5 5 5 5 f f 5 5 5 5 -5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 -5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 -5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 -5 5 f 5 5 5 5 5 5 5 5 5 5 f 5 5 -5 5 5 f 5 5 5 5 5 5 5 5 f 5 5 5 -. 5 5 5 f 5 5 5 5 5 5 f 5 5 5 . -. 5 5 5 5 f f f f f f 5 5 5 5 . -. . 5 5 5 5 5 5 5 5 5 5 5 5 . . -. . . 5 5 5 5 5 5 5 5 5 5 . . . -. . . . . 5 5 5 5 5 5 . . . . . +. . . . . 5 5 5 5 5 5 5 . . . . +. . . 5 5 5 5 5 5 5 5 5 5 5 . . +. . 5 5 5 5 5 5 5 5 5 5 5 5 5 . +. . 5 5 5 5 5 5 5 5 5 5 5 5 5 . +. 5 5 5 5 f 5 5 5 5 f 5 5 5 5 5 +. 5 5 5 5 f f 5 5 5 f f 5 5 5 5 +. 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 +. 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 +. 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 +. 5 5 5 f f f f f f f f f 5 5 5 +. 5 5 5 5 f b b b b b f 5 5 5 5 +. . 5 5 5 5 f b b b f 5 5 5 5 . +. . 5 5 5 5 5 f f f 5 5 5 5 5 . +. . . 5 5 5 5 5 5 5 5 5 5 5 . . +. . . . . 5 5 5 5 5 5 5 . . . . +. . . . . . . . . . . . . . . . `, SpriteKind.Player) // @highlight controller.moveSprite(mySprite) ``` + + + ## {Step 6} -Open the ``||sprites:Sprites||`` Toolbox drawer and drag another ``||variables(sprites):set mySprite2||`` block into the ``||loops:on start||`` block on your Workspace. This will be the **pizza** sprite in our game. +- :binoculars: Test your project in the game window! + +You should be able to move your sprite with the joypad or arrow keys on your keyboard. + + +![Look for the game window in the lower right](/static/tutorials/chase-the-pizza/game.png) + + + + + + + +## {Step 7} + +**Add some pizza** + +--- + +- :paper plane: Open ``||sprites:Sprites||`` and drag
+``||variables(sprites):set [pizza] to sprite [ ] of kind [Player]||``
+into **the end of** the
+``||loops(noclick):on start||`` block already in your workspace. + + +- :mouse pointer: Click **Player** in
+``||variables(noclick):set [pizza] to sprite [ ] of kind [Player]||``
+and choose **Food** instead. + +--- + +~hint Show me 🔍 + +![Change the pizza to food](/static/tutorials/chase-the-pizza/food.gif) + +hint~ + + +```blockconfig.local +let pizza = sprites.create(img`.`, SpriteKind.Player) +``` + + +#### ~ tutorialhint ```blocks let mySprite: Sprite = null -let mySprite2: Sprite = null -scene.setBackgroundColor(7) +let pizza: Sprite = null +scene.setBackgroundColor(13) mySprite = sprites.create(img` -. . . . . 5 5 5 5 5 5 . . . . . -. . . 5 5 5 5 5 5 5 5 5 5 . . . -. . 5 5 5 5 5 5 5 5 5 5 5 5 . . -. 5 5 5 5 5 5 5 5 5 5 5 5 5 5 . -. 5 5 5 f f 5 5 5 5 f f 5 5 5 . -5 5 5 5 f f 5 5 5 5 f f 5 5 5 5 -5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 -5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 -5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 -5 5 f 5 5 5 5 5 5 5 5 5 5 f 5 5 -5 5 5 f 5 5 5 5 5 5 5 5 f 5 5 5 -. 5 5 5 f 5 5 5 5 5 5 f 5 5 5 . -. 5 5 5 5 f f f f f f 5 5 5 5 . -. . 5 5 5 5 5 5 5 5 5 5 5 5 . . -. . . 5 5 5 5 5 5 5 5 5 5 . . . -. . . . . 5 5 5 5 5 5 . . . . . +. . . . 5 5 5 5 5 5 5 . . . . . +. . 5 5 5 5 5 5 5 5 5 5 5 . . . +. 5 5 5 5 5 5 5 5 5 5 5 5 5 . . +. 5 5 5 5 5 5 5 5 5 5 5 5 5 . . +5 5 5 5 f 5 5 5 5 f 5 5 5 5 5 . +5 5 5 5 f f 5 5 5 f f 5 5 5 5 . +5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 . +5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 . +5 5 5 f f f f f f f f f 5 5 5 . +5 5 5 5 f b b b b b f 5 5 5 5 . +5 5 5 5 5 f b b b f 5 5 5 5 5 . +. 5 5 5 5 5 f f f 5 5 5 5 5 . . +. 5 5 5 5 5 5 5 5 5 5 5 5 5 . . +. . 5 5 5 5 5 5 5 5 5 5 5 . . . +. . . . 5 5 5 5 5 5 5 . . . . . +. . . . . . . . . . . . . . . . `, SpriteKind.Player) controller.moveSprite(mySprite) // @highlight -mySprite2 = sprites.create(img` -. . . . . . . . . . . . . . . . -. . . . . . . . . . . . . . . . -. . . . . . . . . . . . . . . . -. . . . . . . . . . . . . . . . -. . . . . . . . . . . . . . . . -. . . . . . . . . . . . . . . . -. . . . . . . . . . . . . . . . -. . . . . . . . . . . . . . . . -. . . . . . . . . . . . . . . . -. . . . . . . . . . . . . . . . -. . . . . . . . . . . . . . . . -. . . . . . . . . . . . . . . . -. . . . . . . . . . . . . . . . -. . . . . . . . . . . . . . . . -. . . . . . . . . . . . . . . . -. . . . . . . . . . . . . . . . -`, SpriteKind.Player) +pizza = sprites.create(img`.`, SpriteKind.Food) ``` -## {Step 7} -In the ``||variables(sprites):set mySprite2||`` block, click on ``||variables(noclick):mySprite2||`` to open the menu, and select ``Rename variable...`` Type in ``pizza`` as the new sprite name and click **Ok**. +## {Step 8} + -![Rename mySprite2](/static/tutorials/chase-the-pizza/rename-mysprite2.gif) +- :mouse pointer: Choose your pizza by clicking the empty grey square inside
+``||variables(noclick):set [pizza] to sprite [ ] of kind [Food]||``
+to open the **Sprite Editor**. -## {Step 8} +- :mouse pointer: Switch to the **Gallery** tab at the top. +![Select the gallery](/static/skillmap/assets/gallery.png) + + +- :mouse pointer: Choose your pizza, then click **Done**. + +~hint Show me 🔍 + +![Image gallery](/static/tutorials/chase-the-pizza/gallery.gif) + +hint~ + + +💡 _Feel free to draw your own pizza if you prefer!_ + +```blockconfig.local +let pizza = sprites.create(img`.`, SpriteKind.Player) +``` + + +#### ~ tutorialhint +```blocks +let pizza: Sprite = null +let mySprite: Sprite = null +scene.setBackgroundColor(13) +mySprite = sprites.create(img` +. . . . 5 5 5 5 5 5 5 . . . . . +. . 5 5 5 5 5 5 5 5 5 5 5 . . . +. 5 5 5 5 5 5 5 5 5 5 5 5 5 . . +. 5 5 5 5 5 5 5 5 5 5 5 5 5 . . +5 5 5 5 f 5 5 5 5 f 5 5 5 5 5 . +5 5 5 5 f f 5 5 5 f f 5 5 5 5 . +5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 . +5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 . +5 5 5 f f f f f f f f f 5 5 5 . +5 5 5 5 f b b b b b f 5 5 5 5 . +5 5 5 5 5 f b b b f 5 5 5 5 5 . +. 5 5 5 5 5 f f f 5 5 5 5 5 . . +. 5 5 5 5 5 5 5 5 5 5 5 5 5 . . +. . 5 5 5 5 5 5 5 5 5 5 5 . . . +. . . . 5 5 5 5 5 5 5 . . . . . +. . . . . . . . . . . . . . . . +`, SpriteKind.Player) +controller.moveSprite(mySprite) +pizza = sprites.create(img` +. . . . . . b b b b . . . . . . +. . . . . . b 4 4 4 b . . . . . +. . . . . . b b 4 4 4 b . . . . +. . . . . b 4 b b b 4 4 b . . . +. . . . b d 5 5 5 4 b 4 4 b . . +. . . . b 3 2 3 5 5 4 e 4 4 b . +. . . b d 2 2 2 5 7 5 4 e 4 4 e +. . . b 5 3 2 3 5 5 5 5 e e e e +. . b d 7 5 5 5 3 2 3 5 5 e e e +. . b 5 5 5 5 5 2 2 2 5 5 d e e +. b 3 2 3 5 7 5 3 2 3 5 d d e 4 +. b 2 2 2 5 5 5 5 5 5 d d e 4 . +b d 3 2 d 5 5 5 d d d 4 4 . . . +b 5 5 5 5 d d 4 4 4 4 . . . . . +4 d d d 4 4 4 . . . . . . . . . +4 4 4 4 . . . . . . . . . . . . +`, SpriteKind.Food) +``` -In the ``||variables(noclick):set pizza||`` block, click on the ``||sprites:Player||`` kind to open the menu of different Sprite kinds. Select ``||sprites:Food||`` as your ``||variables(noclick):pizza||`` sprite kind. -![Set sprite kind](/static/tutorials/chase-the-pizza/sprite-kind.jpg) ## {Step 9} -Click on the grey box for ``||variables(noclick):set pizza||`` and then select the **Gallery** view. Scroll to find the image of a small pizza (or any other image you like!) and select it to load into the image editor. +**Make something happen when the sprites overlap!** -![Image gallery](/static/tutorials/chase-the-pizza/image-gallery.gif) +--- -## {Step 10} +- :paper plane: Open ``||sprites:Sprites||`` and drag the
+``||sprites:on [sprite] of kind [Player] overlaps [otherSprite] of kind [Food]||``
+container into **an empty area** of the workspace. + + +🤷🏽‍♀️ _Need help? Click the lightbulb in the circle below to see what blocks you need in this step._ + + + +```blockconfig.local +let pizza = sprites.create(img`.`, SpriteKind.Player) +``` -Open the ``||sprites:Sprites||`` Toolbox drawer and drag the ``||sprites:on sprite overlaps otherSprite||`` block onto your Workspace (you can place this anywhere). +#### ~ tutorialhint ```blocks // @highlight -sprites.onOverlap(SpriteKind.Player, SpriteKind.Player, function (sprite, otherSprite) { +sprites.onOverlap(SpriteKind.Player, SpriteKind.Food, function (sprite, otherSprite) { }) ``` -## {Step 11} -In the ``||sprites:on sprite overlaps otherSprite||`` block, click on the second ``||sprites:Player||`` kind after ``||variables(noclick):otherSprite||`` to open the menu. Select ``||sprites:Food||`` as its kind. -![Overlap sprite kind](/static/tutorials/chase-the-pizza/overlap-kind-sprite.png) +## {Step 10} -## {Step 12} +**Add a point when the sprites overlap** -When our ``||sprites:Player||`` overlaps with the ``||variables(noclick):pizza||`` sprite, let’s add a point to our game score. Open the ``||info:Info||`` Toolbox drawer and drag the ``||info:change score||`` block into the ``||sprites:on sprite overlaps otherSprite||`` block. +--- +- :id card: Open ``||info:Info||`` and drag
+``||info:change score by [1]||``
+into **the empty**
+``||sprites(noclick):on [sprite] ... overlaps [otherSprite]||``
+container already in the workspace. + + +```blockconfig.local +let pizza = sprites.create(img`.`, SpriteKind.Player) +``` + +#### ~ tutorialhint ```blocks sprites.onOverlap(SpriteKind.Player, SpriteKind.Food, function (sprite, otherSprite) { // @highlight @@ -184,70 +398,119 @@ sprites.onOverlap(SpriteKind.Player, SpriteKind.Food, function (sprite, otherSpr }) ``` -## {Step 13} -Let’s set the position for ``||variables(noclick):pizza||`` to random locations around the screen. Open the ``||sprites:Sprites||`` Toolbox drawer and drag the ``||sprites:set mySprite position||`` block into the ``||sprites:on sprite overlaps otherSprite||`` block on your Workspace. -```blocks -let mySprite: Sprite = null -sprites.onOverlap(SpriteKind.Player, SpriteKind.Food, function (sprite, otherSprite) { - info.changeScoreBy(1) - // @highlight - mySprite.setPosition(0, 0) -}) -``` -## {Step 14} -In the ``||sprites:set mySprite position||`` block, click on the ``||variables(noclick):mySprite||`` variable to open the menu, and select your ``||variables(noclick):pizza||`` sprite. +## {Step 11} -![Change mySprite to pizza](/static/tutorials/chase-the-pizza/sprite-position-rename.png) -## {Step 15} +- :binoculars: Check your game! -Open the ``||math:Math||`` Toolbox drawer and drag two ``||math:pick random||`` blocks onto the Workspace. Drop one into the ``x`` coordinate of the ``||sprites:set pizza position||`` block, and the other into the ``y`` coordinate replacing the ``0`` values. +Notice that you get WAAAYYYYY too many points when your player +sprite overlaps the pizza? -```blocks -let pizza: Sprite = null -sprites.onOverlap(SpriteKind.Player, SpriteKind.Food, function (sprite, otherSprite) { - info.changeScoreBy(1) - pizza.setPosition(randint(0, 10), randint(0, 10)) -}) +We'll fix that in the next step. + + + + +## {Step 12} + +**Teleport the pizza to a random location each time the sprites overlap.** + +~hint What is random? 🤷🏽‍♀️ + +--- + +A "random" number is a value that you can't predict ahead of time. + +In Arcade, we use this block: + +```block +randint(0, scene.screenWidth()) ``` -## {Step 16} +to ask for a random number between **0** and the **width of the screen**. + +hint~ -The Arcade game screen is `160` pixels wide, and `120` pixels high. In the first ``||math:pick random||`` block in the `x` coordinate of the ``||sprites:set pizza position||`` block, change the maximum value from ``10`` to **160**. In the second ``||math:pick random||`` block in the ``y`` coordinate, change the maximum value from ``10`` to **120**. +--- +- :paper plane: Open ``||sprites:Sprites||``, and drag
+``||sprites:set [pizza] position to...||``
+into the **end of the**
+``||sprites(noclick):on [sprite] ... overlaps [otherSprite]||``
+container already in the workspace. + + +```blockconfig.local +let pizza = sprites.create(img`.`, SpriteKind.Player) +``` + +#### ~ tutorialhint ```blocks let pizza: Sprite = null sprites.onOverlap(SpriteKind.Player, SpriteKind.Food, function (sprite, otherSprite) { info.changeScoreBy(1) - pizza.setPosition(randint(0, 160), randint(0, 120)) + // @highlight + pizza.setPosition(randint(0, scene.screenWidth()), randint(0, scene.screenHeight())) }) ``` -## {Step 17} -Let’s restart our countdown each time. Open the ``||info:Info||`` Toolbox drawer and drag a ``||info:start countdown||`` block into the ``||sprites:on sprite overlaps otherSprite||`` block on your Workspace. + +## {Step 13} + +**Let’s start a countdown each time the sprites overlap.** + +--- + +- :id card: From ``||info:Info||``, drag
+``||info:start countdown [3] (s)||``
+into the **end of the**
+``||sprites(noclick):on [sprite] ... overlaps [otherSprite]||``
+container already in the workspace. + + +```blockconfig.local +let pizza = sprites.create(img`.`, SpriteKind.Player) +``` + +#### ~ tutorialhint ```blocks let pizza: Sprite = null sprites.onOverlap(SpriteKind.Player, SpriteKind.Food, function (sprite, otherSprite) { info.changeScoreBy(1) - pizza.setPosition(randint(0, 160), randint(0, 120)) + pizza.setPosition(randint(0, scene.screenWidth()), randint(0, scene.screenHeight())) // @highlight - info.startCountdown(10) + info.startCountdown(3) }) ``` -## {Complete} -Congratulations, you have completed your game! Use the Game Simulator to play by moving your ``||sprites:Player||`` around the screen to try and eat as much pizza as possible before the time runs out. What’s your high score? +## {Finale} + +**🎉 Great job! 🎉** + +You've made a **Chase the Pizza** game. + +Try playing your game. How many points can you get before time runs out? + +When you're finished playing, click **Done** to share your game with family and friends! + + + +```blockconfig.local +let pizza = sprites.create(img`.`, SpriteKind.Player) +``` + +#### ~ tutorialhint ```blocks let pizza: Sprite = null let mySprite: Sprite = null -scene.setBackgroundColor(7) +scene.setBackgroundColor(13) mySprite = sprites.create(img` . . . . . 5 5 5 5 5 5 . . . . . . . . 5 5 5 5 5 5 5 5 5 5 . . . @@ -288,8 +551,23 @@ b 5 5 5 5 d d 4 4 4 4 . . . . . sprites.onOverlap(SpriteKind.Player, SpriteKind.Food, function (sprite, otherSprite) { info.changeScoreBy(1) - pizza.setPosition(randint(0, 160), randint(0, 120)) - // @highlight - info.startCountdown(10) + pizza.setPosition(randint(0, scene.screenWidth()), randint(0, scene.screenHeight())) + info.startCountdown(3) }) ``` + + +```blockconfig.global +let pizza: Sprite = null + +scene.setBackgroundColor(13) +sprites.onOverlap(SpriteKind.Player, SpriteKind.Food, function (sprite, otherSprite) {}) +randint(0, scene.screenWidth()) +pizza.setPosition(randint(0, scene.screenWidth()), randint(0, scene.screenHeight())) +info.startCountdown(3) + +``` + +```package +chase-the-pizza=github:kiki-lee/chase-the-pizza +``` \ No newline at end of file