pxt-arcade 1.7.3 → 1.7.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/built/common-sim.d.ts +2 -0
- package/built/common-sim.js +4 -0
- package/built/target.js +1788 -236
- package/built/target.json +1788 -236
- package/built/targetlight.json +5 -5
- package/built/theme.json +3 -2
- package/docs/gamejam/global-2021.html +459 -0
- package/docs/hour-of-code/all.md +27 -0
- package/docs/hour-of-code/{educators.html → educators-2020.html} +25 -25
- package/docs/hour-of-code/educators-2021.html +625 -0
- package/docs/{hour-of-code.html → hour-of-code-2020.html} +37 -37
- package/docs/hour-of-code-2021.html +438 -183
- package/docs/hour-of-code-ref.json +3 -0
- package/docs/index-ref.json +1 -1
- package/docs/multipart-tutorials.md +0 -8
- package/docs/projects/SUMMARY.md +3 -2
- package/docs/recipes.md +0 -7
- package/docs/skillmap/clicker/clicker1.md +7 -7
- package/docs/skillmap/clicker/clicker2.md +9 -9
- package/docs/skillmap/clicker/clicker3.md +8 -8
- package/docs/skillmap/clicker/clicker4.md +8 -8
- package/docs/skillmap/clicker/clicker4a.md +7 -7
- package/docs/skillmap/clicker/clicker5.md +3 -3
- package/docs/skillmap/clicker-themed/clickert1.md +66 -38
- package/docs/skillmap/clicker-themed/clickert2.md +77 -58
- package/docs/skillmap/clicker-themed/clickert3.md +75 -55
- package/docs/skillmap/clicker-themed/clickert4.md +105 -118
- package/docs/skillmap/collector/collector1.md +11 -11
- package/docs/skillmap/collector/collector1a.md +8 -8
- package/docs/skillmap/collector/collector2.md +8 -8
- package/docs/skillmap/collector/collector3.md +8 -8
- package/docs/skillmap/collector/collector3a.md +7 -7
- package/docs/skillmap/collector/collector4.md +8 -8
- package/docs/skillmap/collector/collector5.md +2 -2
- package/docs/skillmap/collector-themed/collectort1.md +107 -88
- package/docs/skillmap/collector-themed/collectort2.md +109 -87
- package/docs/skillmap/collector-themed/collectort3.md +138 -115
- package/docs/skillmap/collector-themed/collectort4.md +130 -118
- package/docs/skillmap/collector-themed/collectort4old.md +23 -23
- package/docs/skillmap/collector-themed/collectort5.md +2 -2
- package/docs/skillmap/educator-info/forest-map-info.md +34 -25
- package/docs/skillmap/educator-info/pongo-map-info.md +55 -0
- package/docs/skillmap/educator-info/racer-map-info.md +105 -0
- package/docs/skillmap/educator-info/rockstar-map-info.md +1 -1
- package/docs/skillmap/educator-info/simple-shark-map-info.md +101 -0
- package/docs/skillmap/forest/forest1.md +1 -69
- package/docs/skillmap/forest/forest2.md +5 -65
- package/docs/skillmap/forest/forest3.md +1 -174
- package/docs/skillmap/forest/forest4.md +2 -336
- package/docs/skillmap/forest/forest5.md +1 -396
- package/docs/skillmap/forest/forest6.md +6 -372
- package/docs/skillmap/forest-old.md +92 -0
- package/docs/skillmap/forest.md +9 -9
- package/docs/skillmap/forest_new/forest1.md +191 -0
- package/docs/skillmap/forest_new/forest2.md +217 -0
- package/docs/skillmap/forest_new/forest3.md +333 -0
- package/docs/skillmap/forest_new/forest4.md +196 -0
- package/docs/skillmap/forest_new/forest5.md +291 -0
- package/docs/skillmap/forest_new/forest6.md +272 -0
- package/docs/skillmap/interface/activity1.md +41 -49
- package/docs/skillmap/jungle/jungle1.md +48 -28
- package/docs/skillmap/jungle/jungle2.md +50 -26
- package/docs/skillmap/jungle/jungle3.md +48 -27
- package/docs/skillmap/jungle/jungle4.md +76 -58
- package/docs/skillmap/jungle/jungle5.md +31 -25
- package/docs/skillmap/jungle/jungle6.md +34 -28
- package/docs/skillmap/jungle/jungle7.md +36 -24
- package/docs/skillmap/jungle/jungle8.md +27 -25
- package/docs/skillmap/jungle.md +7 -3
- package/docs/skillmap/long-shark.md +119 -0
- package/docs/skillmap/pongo/pongo1.md +256 -0
- package/docs/skillmap/pongo/pongo2.md +179 -0
- package/docs/skillmap/pongo/pongo3.md +177 -0
- package/docs/skillmap/pongo.md +59 -0
- package/docs/skillmap/racer.md +7 -7
- package/docs/skillmap/rockstar/rockstar1.md +32 -41
- package/docs/skillmap/rockstar/rockstar2.md +45 -27
- package/docs/skillmap/rockstar/rockstar3.md +45 -27
- package/docs/skillmap/rockstar.md +3 -1
- package/docs/skillmap/shark/shark1-simple.md +151 -0
- package/docs/skillmap/shark/shark2-simple.md +203 -0
- package/docs/skillmap/shark/shark3-simple.md +204 -0
- package/docs/skillmap/shark/shark4-simple.md +246 -0
- package/docs/skillmap/shark/shark4a-simple.md +244 -0
- package/docs/skillmap/shark.md +25 -58
- package/docs/skillmap/space/space1.md +63 -29
- package/docs/skillmap/space/space2.md +34 -25
- package/docs/skillmap/space/space3.md +86 -69
- package/docs/skillmap/space/space4.md +96 -65
- package/docs/skillmap/space/space4a.md +34 -25
- package/docs/skillmap/space/space5.md +81 -45
- package/docs/skillmap/space/space6.md +59 -81
- package/docs/skillmap/space.md +8 -5
- package/docs/skillmap/story/card.md +6 -6
- package/docs/skillmap/story/card2.md +6 -6
- package/docs/skillmap/story/story1.md +60 -175
- package/docs/skillmap/story/story2.md +89 -327
- package/docs/skillmap/story/story3.md +238 -228
- package/docs/skillmap/story/story4.md +23 -23
- package/docs/skillmap/zoo/zoo1.md +31 -16
- package/docs/skillmap/zoo/zoo2.md +45 -30
- package/docs/skillmap/zoo/zoo2a.md +51 -36
- package/docs/skillmap/zoo/zoo3.md +8 -7
- package/docs/skillmap/zoo/zoo4.md +61 -32
- package/docs/skillmap/zoo/zoo5.md +41 -31
- package/docs/skillmap/zoo.md +2 -2
- package/docs/skillmaps.md +20 -4
- package/docs/static/experiments/accessibleblocks.png +0 -0
- package/docs/static/experiments/blockserrorlist.png +0 -0
- package/docs/static/gamejam/jams/global-2021/assets/banner.png +0 -0
- package/docs/static/gamejam/jams/global-2021/info.json +10 -0
- package/docs/static/gamejam/jams/global-2021/rules.md +22 -0
- package/docs/static/gamejam/jams/global-2021/style.css +141 -0
- package/docs/static/gamejam/lib/gamejam.d.ts +1 -0
- package/docs/static/gamejam/lib/gamejam.js +34 -24
- package/docs/static/gamejam/lib/gamejam.ts +35 -24
- package/docs/static/hero-gallery/stream.png +0 -0
- package/docs/static/hour-of-code/{apple.png → 2020/apple.png} +0 -0
- package/docs/static/hour-of-code/{arcade.png → 2020/arcade.png} +0 -0
- package/docs/static/hour-of-code/{asphodel.png → 2020/asphodel.png} +0 -0
- package/docs/static/hour-of-code/{card.png → 2020/card.png} +0 -0
- package/docs/static/hour-of-code/{chase-the-pizza.png → 2020/chase-the-pizza.png} +0 -0
- package/docs/static/hour-of-code/{clovers.png → 2020/clovers.png} +0 -0
- package/docs/static/hour-of-code/{design.png → 2020/design.png} +0 -0
- package/docs/static/hour-of-code/{educators → 2020/educators}/asphodel-level1.png +0 -0
- package/docs/static/hour-of-code/{educators → 2020/educators}/asphodel-level4.png +0 -0
- package/docs/static/hour-of-code/{educators → 2020/educators}/asphodel-level6.png +0 -0
- package/docs/static/hour-of-code/{educators → 2020/educators}/asphodel-level7.png +0 -0
- package/docs/static/hour-of-code/{educators → 2020/educators}/asphodel-level9.png +0 -0
- package/docs/static/hour-of-code/{educators → 2020/educators}/clover-design.gif +0 -0
- package/docs/static/hour-of-code/{educators → 2020/educators}/shark-attack-tutorial.png +0 -0
- package/docs/static/hour-of-code/{galga.png → 2020/galga.png} +0 -0
- package/docs/static/hour-of-code/{lemon-leak.png → 2020/lemon-leak.png} +0 -0
- package/docs/static/hour-of-code/{micro-bit.png → 2020/micro-bit.png} +0 -0
- package/docs/static/hour-of-code/{minecraft.png → 2020/minecraft.png} +0 -0
- package/docs/static/hour-of-code/{nfl.png → 2020/nfl.png} +0 -0
- package/docs/static/hour-of-code/{ocean-jam.png → 2020/ocean-jam.png} +0 -0
- package/docs/static/hour-of-code/{pixel-background-primary.png → 2020/pixel-background-primary.png} +0 -0
- package/docs/static/hour-of-code/{pixel-background-secondary.png → 2020/pixel-background-secondary.png} +0 -0
- package/docs/static/hour-of-code/{shadowed-aside-frame.png → 2020/shadowed-aside-frame.png} +0 -0
- package/docs/static/hour-of-code/{shadowed-button-frame.png → 2020/shadowed-button-frame.png} +0 -0
- package/docs/static/hour-of-code/{shadowed-primary-frame.png → 2020/shadowed-primary-frame.png} +0 -0
- package/docs/static/hour-of-code/{shark-attack.png → 2020/shark-attack.png} +0 -0
- package/docs/static/hour-of-code/{simulator.gif → 2020/simulator.gif} +0 -0
- package/docs/static/hour-of-code/{simulator.png → 2020/simulator.png} +0 -0
- package/docs/static/hour-of-code/{styles.css → 2020/styles.css} +1 -1
- package/docs/static/hour-of-code/2021/Rowdies/OFL.txt +93 -0
- package/docs/static/hour-of-code/2021/Rowdies/Rowdies-Bold.ttf +0 -0
- package/docs/static/hour-of-code/2021/Rowdies/Rowdies-Regular.ttf +0 -0
- package/docs/static/hour-of-code/2021/beginner-skillmap.png +0 -0
- package/docs/static/hour-of-code/2021/favicon.png +0 -0
- package/docs/static/hour-of-code/2021/forest-skillmap-game.gif +0 -0
- package/docs/static/hour-of-code/2021/game-jam-hero.png +0 -0
- package/docs/static/hour-of-code/2021/hoc-2020.png +0 -0
- package/docs/static/hour-of-code/2021/hoc-card.png +0 -0
- package/docs/static/hour-of-code/2021/hoc-header-educators.png +0 -0
- package/docs/static/hour-of-code/2021/hoc-header-plane.gif +0 -0
- package/docs/static/hour-of-code/2021/hoc-header-scene.gif +0 -0
- package/docs/static/hour-of-code/2021/jungle-skillmap.png +0 -0
- package/docs/static/hour-of-code/2021/makecode-example.png +0 -0
- package/docs/static/hour-of-code/2021/microbit.png +0 -0
- package/docs/static/hour-of-code/2021/minecraft.png +0 -0
- package/docs/static/hour-of-code/2021/rockstar-skillmap.png +0 -0
- package/docs/static/hour-of-code/2021/styles.css +660 -62
- package/docs/static/logo.png +0 -0
- package/docs/static/skillmap/assets/my-assets-three.png +0 -0
- package/docs/static/skillmap/assets/sprite-from-container.gif +0 -0
- package/docs/static/skillmap/backgrounds/jungle-bg.png +0 -0
- package/docs/static/skillmap/backgrounds/jungle-map.png +0 -0
- package/docs/static/skillmap/backgrounds/rock-map.png +0 -0
- package/docs/static/skillmap/backgrounds/rockstar-card.gif +0 -0
- package/docs/static/skillmap/backgrounds/space-comp.png +0 -0
- package/docs/static/skillmap/backgrounds/space.png +0 -0
- package/docs/static/skillmap/certificates/forest-cert.pdf +0 -0
- package/docs/static/skillmap/certificates/forest-cert.png +0 -0
- package/docs/static/skillmap/certificates/jungle-cert.pdf +0 -0
- package/docs/static/skillmap/certificates/jungle-cert.png +0 -0
- package/docs/static/skillmap/certificates/rockstar-cert.pdf +0 -0
- package/docs/static/skillmap/certificates/rockstar-cert.png +0 -0
- package/docs/static/skillmap/certificates/shark-cert.pdf +0 -0
- package/docs/static/skillmap/certificates/shark-cert.png +0 -0
- package/docs/static/skillmap/certificates/space-cert.pdf +0 -0
- package/docs/static/skillmap/certificates/space-cert.png +0 -0
- package/docs/static/skillmap/pongo/pongo1.gif +0 -0
- package/docs/static/skillmap/pongo/pongo2gif +0 -0
- package/docs/static/skillmap/pongo/pongo3.gif +0 -0
- package/docs/static/skillmap/racer/racer1.gif +0 -0
- package/docs/static/skillmap/racer/racer2.gif +0 -0
- package/docs/static/skillmap/racer/racer3.gif +0 -0
- package/docs/static/skillmap/rockstar/rockstar1.gif +0 -0
- package/docs/static/skillmap/rockstar/rockstar2.gif +0 -0
- package/docs/static/skillmap/rockstar/rockstar3.gif +0 -0
- package/docs/static/skillmap/shark/shark1-simple.gif +0 -0
- package/docs/static/skillmap/shark/shark4a-simple.gif +0 -0
- package/docs/static/skillmap/zoo/overlaps-food-sprite.gif +0 -0
- package/docs/tutorials/barrel-dodger.md +4 -4
- package/docs/tutorials/collect-the-clovers.md +2 -2
- package/docs/tutorials/froggy.md +105 -90
- package/docs/tutorials/hundred.md +400 -0
- package/package.json +3 -3
- package/pxtarget.json +3 -2
- package/targetconfig.json +4 -1
- package/docs/recipes/wonder-woman-1984/01-maze.md +0 -291
- package/docs/recipes/wonder-woman-1984/02-artifact.md +0 -70
- package/docs/recipes/wonder-woman-1984/03-enemies.md +0 -65
- package/docs/skillmap/forest/forest9.md +0 -714
- package/docs/static/hour-of-code/2021/placeholder.png +0 -0
- package/docs/static/hour-of-code/ww-maze.png +0 -0
- package/docs/static/recipes/wonder-woman-1984/artifact-preview.png +0 -0
- package/docs/static/recipes/wonder-woman-1984/artifacts-location.gif +0 -0
- package/docs/static/recipes/wonder-woman-1984/draw-maze-backup.png +0 -0
- package/docs/static/recipes/wonder-woman-1984/draw-walls-backup.png +0 -0
- package/docs/static/recipes/wonder-woman-1984/end-position.png +0 -0
- package/docs/static/recipes/wonder-woman-1984/enemies-location.gif +0 -0
- package/docs/static/recipes/wonder-woman-1984/enemies-preview.png +0 -0
- package/docs/static/recipes/wonder-woman-1984/fill-maze.gif +0 -0
- package/docs/static/recipes/wonder-woman-1984/fill-walls.gif +0 -0
- package/docs/static/recipes/wonder-woman-1984/wonder-woman3.png +0 -0
- package/docs/static/recipes/wonder-woman-1984/ww-splash3.gif +0 -0
- package/docs/static/recipes/wonder-woman-1984/ww-splash3.mp4 +0 -0
- package/docs/static/ww84-background.png +0 -0
- package/docs/static/ww84-header.png +0 -0
- package/docs/ww84.html +0 -276
- package/sim/public/locales/zh-CN/bundled-strings.json +0 -1800
- package/sim/public/locales/zh-CN/target-strings.json +0 -13
- package/sim/public/locales/zh-TW/bundled-strings.json +0 -1903
- package/sim/public/locales/zh-TW/target-strings.json +0 -8
|
@@ -9,14 +9,14 @@ This tutorial will show you how to level-up after earning 10 points.
|
|
|
9
9
|

|
|
10
10
|
|
|
11
11
|
|
|
12
|
-
##
|
|
12
|
+
## 2. Look Around
|
|
13
13
|
**This game is amazing!**
|
|
14
14
|
|
|
15
|
-
Take a minute to look at each separate chunk of code. Can you remember what
|
|
15
|
+
Take a minute to look at each separate chunk of code. Can you remember what everything does?
|
|
16
16
|
|
|
17
17
|
---
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
- :binoculars: Find the value that sets the velocity of your enemy ship. How do you think you would make it go faster or slower?
|
|
20
20
|
|
|
21
21
|
|
|
22
22
|
|
|
@@ -25,32 +25,34 @@ Take a minute to look at each separate chunk of code. Can you remember what the
|
|
|
25
25
|
myEnemy = sprites.createProjectileFromSide(assets.image`Spider`, 0, 50)
|
|
26
26
|
```
|
|
27
27
|
|
|
28
|
-
##
|
|
28
|
+
## 3. Speed the Ships
|
|
29
29
|
|
|
30
30
|
**Leveling-up should make enemy ships faster.**
|
|
31
31
|
|
|
32
|
-
If we want to use a value for
|
|
32
|
+
If we want to use a value for enemy speed that changes
|
|
33
33
|
during game-play, we're going to need a [__*variable*__](#varied "a label that holds the place for something that can change").
|
|
34
34
|
|
|
35
35
|
---
|
|
36
36
|
|
|
37
|
-
|
|
37
|
+
- :align justify: Under the ``||variables:Variables||`` category, click inside the orange rectangle where it says
|
|
38
38
|
**Make a Variable...**.
|
|
39
39
|
|
|
40
|
-
|
|
40
|
+
- :mouse pointer: Name your new variable **enemySpeed** and click **Ok**.
|
|
41
41
|
|
|
42
42
|
|
|
43
43
|
|
|
44
|
-
##
|
|
44
|
+
## 4. Variable Value
|
|
45
45
|
|
|
46
46
|
**Before we can use the new variable, we need to give it a value.**
|
|
47
47
|
|
|
48
48
|
---
|
|
49
49
|
|
|
50
|
-
|
|
51
|
-
|
|
50
|
+
- :align justify: Grab
|
|
51
|
+
``||variables:set [enemySpeed] to [0]||``
|
|
52
|
+
and snap it into **the bottom** of the
|
|
53
|
+
``||loops:on start||`` container.
|
|
52
54
|
|
|
53
|
-
|
|
55
|
+
- :mouse pointer: Change the value from **0** to **50**.
|
|
54
56
|
|
|
55
57
|
|
|
56
58
|
```blocks
|
|
@@ -68,7 +70,7 @@ let enemySpeed = 50
|
|
|
68
70
|
```
|
|
69
71
|
|
|
70
72
|
|
|
71
|
-
##
|
|
73
|
+
## 5. Add Velocity
|
|
72
74
|
|
|
73
75
|
**🚀 Let's Fly 🚀**
|
|
74
76
|
|
|
@@ -77,10 +79,12 @@ to control the enemy ship's **vy** (vertical velocity).
|
|
|
77
79
|
|
|
78
80
|
---
|
|
79
81
|
|
|
80
|
-
|
|
82
|
+
- :mouse pointer: Go back to the
|
|
83
|
+
``||game:on game update every [2000]ms||``
|
|
84
|
+
container that's already in your workspace, and find the block that sets-up the
|
|
81
85
|
``||variables:myEnemy||`` projectile.
|
|
82
86
|
|
|
83
|
-
|
|
87
|
+
- :align justify: Grab ``||variables:enemySpeed||`` and snap it in to
|
|
84
88
|
replace the **vy** value of **50**.
|
|
85
89
|
|
|
86
90
|
|
|
@@ -94,15 +98,17 @@ game.onUpdateInterval(2000, function () {
|
|
|
94
98
|
})
|
|
95
99
|
```
|
|
96
100
|
|
|
97
|
-
##
|
|
101
|
+
## 6. Try it Out
|
|
98
102
|
|
|
99
103
|
**🕹️ Play your game and make sure it works exactly the same as before 🕹️**
|
|
100
104
|
|
|
105
|
+
---
|
|
106
|
+
|
|
101
107
|
You shouldn't notice any difference in the speed of the ship.
|
|
102
108
|
|
|
103
109
|
|
|
104
110
|
|
|
105
|
-
##
|
|
111
|
+
## 7. Trigger the Change
|
|
106
112
|
|
|
107
113
|
**👀 Watch the score 👀**
|
|
108
114
|
|
|
@@ -110,9 +116,13 @@ We need code that checks to see **if** the score is **10** every time the player
|
|
|
110
116
|
|
|
111
117
|
---
|
|
112
118
|
|
|
113
|
-
|
|
119
|
+
- :binoculars: Find the
|
|
120
|
+
``||sprites:on [sprite] of kind [Projectile] overlaps [otherSprite] of kind [Enemy]||``
|
|
121
|
+
container already in your workspace.
|
|
114
122
|
|
|
115
|
-
|
|
123
|
+
- :random: Drag out a
|
|
124
|
+
``||logic:if <true> then||``
|
|
125
|
+
container and snap it into **the bottom** of the
|
|
116
126
|
**on Projectile overlaps Enemy** container.
|
|
117
127
|
|
|
118
128
|
|
|
@@ -128,13 +138,15 @@ sprites.onOverlap(SpriteKind.Projectile, SpriteKind.Enemy, function (sprite, oth
|
|
|
128
138
|
```
|
|
129
139
|
|
|
130
140
|
|
|
131
|
-
##
|
|
141
|
+
## 8. Set the Points
|
|
132
142
|
|
|
133
|
-
|
|
143
|
+
- :random: Grab
|
|
144
|
+
``||logic:<[0] [=] [0]>||``
|
|
145
|
+
and snap it in to the **if statement** to replace **`<true>`**.
|
|
134
146
|
|
|
135
|
-
|
|
147
|
+
- :id card: Grab ``||info:score||`` and snap it in to replace the **0** to the left of the **=**.
|
|
136
148
|
|
|
137
|
-
|
|
149
|
+
- :mouse pointer: Change the **0** on the right of the **=** to **10**.
|
|
138
150
|
|
|
139
151
|
```blocks
|
|
140
152
|
sprites.onOverlap(SpriteKind.Projectile, SpriteKind.Enemy, function (sprite, otherSprite) {
|
|
@@ -149,16 +161,19 @@ sprites.onOverlap(SpriteKind.Projectile, SpriteKind.Enemy, function (sprite, oth
|
|
|
149
161
|
```
|
|
150
162
|
|
|
151
163
|
|
|
152
|
-
##
|
|
164
|
+
## 9. Level-Up
|
|
153
165
|
|
|
154
166
|
The first thing we should do when the score gets to **10** is give a level-up bonus!
|
|
155
167
|
|
|
156
168
|
---
|
|
157
169
|
|
|
158
|
-
|
|
159
|
-
``||
|
|
170
|
+
- :id card: Grab
|
|
171
|
+
``||info:change score by [1]||``
|
|
172
|
+
and snap it inside the empty
|
|
173
|
+
``||logic:if <[score] [=] [10]> then||``
|
|
174
|
+
logic container.
|
|
160
175
|
|
|
161
|
-
|
|
176
|
+
- :mouse pointer: Change the amount added to the score from **1** to **5**.
|
|
162
177
|
|
|
163
178
|
|
|
164
179
|
```blocks
|
|
@@ -173,7 +188,7 @@ sprites.onOverlap(SpriteKind.Projectile, SpriteKind.Enemy, function (sprite, oth
|
|
|
173
188
|
```
|
|
174
189
|
|
|
175
190
|
|
|
176
|
-
##
|
|
191
|
+
## 10. Bonus
|
|
177
192
|
|
|
178
193
|
**📢 Say it LOUD 📢**
|
|
179
194
|
|
|
@@ -181,12 +196,15 @@ Let the player know they've earned a bonus!
|
|
|
181
196
|
|
|
182
197
|
---
|
|
183
198
|
|
|
184
|
-
|
|
185
|
-
|
|
199
|
+
- :paper plane: Drag
|
|
200
|
+
``||sprites:[mySprite] say [":)"] ➕||``
|
|
201
|
+
into **the bottom** of the
|
|
202
|
+
``||logic:if <[score] [=] [10]> then||``
|
|
203
|
+
container.
|
|
186
204
|
|
|
187
|
-
|
|
205
|
+
- :mouse pointer: Change the message to say **"+5 Level-Up Bonus!"**.
|
|
188
206
|
|
|
189
|
-
|
|
207
|
+
- :mouse pointer: Click the ➕ to the right of the **say** block and change the length of the display from **500** ms to **2 seconds** (2000 ms).
|
|
190
208
|
|
|
191
209
|
|
|
192
210
|
|
|
@@ -199,12 +217,12 @@ sprites.onOverlap(SpriteKind.Projectile, SpriteKind.Enemy, function (sprite, oth
|
|
|
199
217
|
if (info.score() == 10) {
|
|
200
218
|
info.changeScoreBy(5)
|
|
201
219
|
//@highlight
|
|
202
|
-
mySprite.
|
|
220
|
+
mySprite.sayText("+5 Level-Up Bonus", 2000)
|
|
203
221
|
}
|
|
204
222
|
})
|
|
205
223
|
```
|
|
206
224
|
|
|
207
|
-
##
|
|
225
|
+
## 11. Speed It Up!
|
|
208
226
|
|
|
209
227
|
**Here comes the fun part!**
|
|
210
228
|
|
|
@@ -213,10 +231,13 @@ Time to speed up the enemy ships!
|
|
|
213
231
|
---
|
|
214
232
|
|
|
215
233
|
|
|
216
|
-
|
|
217
|
-
|
|
234
|
+
- :align justify: Grab
|
|
235
|
+
``||variables:set [enemySpeed] to [0]||``
|
|
236
|
+
and snap it in to **the bottom** of the
|
|
237
|
+
``||logic:if <[score] [=] [10]> then||``
|
|
238
|
+
container.
|
|
218
239
|
|
|
219
|
-
|
|
240
|
+
- :mouse pointer: Change the value from **0** to **70**.
|
|
220
241
|
|
|
221
242
|
```blocks
|
|
222
243
|
let mySprite: Sprite = null
|
|
@@ -225,7 +246,7 @@ sprites.onOverlap(SpriteKind.Projectile, SpriteKind.Enemy, function (sprite, oth
|
|
|
225
246
|
otherSprite.destroy()
|
|
226
247
|
info.changeScoreBy(1)
|
|
227
248
|
if (info.score() == 10) {
|
|
228
|
-
mySprite.
|
|
249
|
+
mySprite.sayText("+5 Level-Up Bonus", 2000)
|
|
229
250
|
info.changeScoreBy(5)
|
|
230
251
|
//@highlight
|
|
231
252
|
enemySpeed = 70
|
|
@@ -233,26 +254,27 @@ sprites.onOverlap(SpriteKind.Projectile, SpriteKind.Enemy, function (sprite, oth
|
|
|
233
254
|
})
|
|
234
255
|
```
|
|
235
256
|
|
|
236
|
-
##
|
|
257
|
+
## 12. Play Your Game
|
|
237
258
|
**That's it! That's all you needed to do.**
|
|
238
259
|
|
|
239
|
-
Since we already have the ``||variables:enemySpeed||`` variable in place for the projectile's **vy**,
|
|
240
|
-
it will automatically update when we change the speed in another part of the program!
|
|
260
|
+
Since we already have the ``||variables:enemySpeed||`` variable in place for the projectile's **vy**, it will automatically update when we change the speed in another part of the program!
|
|
241
261
|
|
|
242
262
|
---
|
|
243
263
|
|
|
244
|
-
|
|
264
|
+
Play your finished game and see if you can get 10 points to level-up!
|
|
245
265
|
|
|
246
266
|
|
|
247
267
|
## Finale
|
|
248
268
|
|
|
249
269
|
**Congratulations!!**
|
|
250
270
|
|
|
251
|
-
|
|
271
|
+
---
|
|
272
|
+
|
|
273
|
+
Click **Done** to return to the main skillmap where you can get your completion certificate before completing one last level that teaches you to customize your darts!
|
|
252
274
|
|
|
253
275
|
|
|
254
276
|
```package
|
|
255
|
-
arcade-background-scroll=github:microsoft/arcade-background-scroll/
|
|
277
|
+
arcade-background-scroll=github:microsoft/arcade-background-scroll#926e12eefffd09d453c7cde73f8d6ebd0e666d9d/
|
|
256
278
|
pxt-status-bar=github:jwunderl/pxt-status-bar
|
|
257
279
|
```
|
|
258
280
|
|
|
@@ -280,6 +302,7 @@ sprites.onOverlap(SpriteKind.Projectile, SpriteKind.Enemy, function (sprite, oth
|
|
|
280
302
|
sprites.onOverlap(SpriteKind.Player, SpriteKind.Enemy, function (sprite, otherSprite) {
|
|
281
303
|
info.changeLifeBy(-1)
|
|
282
304
|
otherSprite.destroy(effects.disintegrate, 200)
|
|
305
|
+
scene.cameraShake(4, 500)
|
|
283
306
|
})
|
|
284
307
|
let myEnemy: Sprite = null
|
|
285
308
|
let myFuel: Sprite = null
|
|
@@ -290,7 +313,14 @@ scene.setBackgroundImage(assets.image`Galaxy`)
|
|
|
290
313
|
scroller.scrollBackgroundWithSpeed(0, 10)
|
|
291
314
|
mySprite = sprites.create(assets.image`Rocket`, SpriteKind.Player)
|
|
292
315
|
controller.moveSprite(mySprite)
|
|
316
|
+
|
|
293
317
|
mySprite.setStayInScreen(true)
|
|
318
|
+
animation.runImageAnimation(
|
|
319
|
+
mySprite,
|
|
320
|
+
assets.animation`Flying Rocket`,
|
|
321
|
+
100,
|
|
322
|
+
true
|
|
323
|
+
)
|
|
294
324
|
|
|
295
325
|
statusbar = statusbars.create(20, 4, StatusBarKind.Energy)
|
|
296
326
|
statusbar.attachToSprite(mySprite, -25, 0)
|
|
@@ -299,11 +329,17 @@ game.onUpdateInterval(5000, function () {
|
|
|
299
329
|
myFuel.x = randint(5, 155)
|
|
300
330
|
myFuel.setKind(SpriteKind.Gas)
|
|
301
331
|
})
|
|
332
|
+
|
|
302
333
|
game.onUpdateInterval(2000, function () {
|
|
303
334
|
myEnemy = sprites.createProjectileFromSide(assets.image`Spider`, 0, 50)
|
|
304
335
|
myEnemy.x = randint(5, 155)
|
|
305
336
|
myEnemy.setKind(SpriteKind.Enemy)
|
|
306
|
-
|
|
337
|
+
animation.runImageAnimation(
|
|
338
|
+
myEnemy,
|
|
339
|
+
assets.animation`Flying Spider`,
|
|
340
|
+
100,
|
|
341
|
+
true
|
|
342
|
+
)
|
|
307
343
|
})
|
|
308
344
|
game.onUpdateInterval(300, function () {
|
|
309
345
|
statusbar.value += -1
|
|
@@ -375,7 +411,7 @@ game.onUpdateInterval(300, function () {
|
|
|
375
411
|
})
|
|
376
412
|
forever(function () {
|
|
377
413
|
if (info.score() == 10) {
|
|
378
|
-
mySprite.
|
|
414
|
+
mySprite.sayText("+5 Level-Up Bonus", 2000)
|
|
379
415
|
info.changeScoreBy(5)
|
|
380
416
|
enemySpeed = 70
|
|
381
417
|
}
|
|
@@ -9,7 +9,7 @@ This tutorial will show you how to send an array of different darts when you fir
|
|
|
9
9
|

|
|
10
10
|
|
|
11
11
|
|
|
12
|
-
##
|
|
12
|
+
## 2. Start the Darts
|
|
13
13
|
|
|
14
14
|
**🎯 Take aim! 🎯**
|
|
15
15
|
|
|
@@ -18,11 +18,13 @@ of darts.
|
|
|
18
18
|
|
|
19
19
|
---
|
|
20
20
|
|
|
21
|
-
|
|
22
|
-
``||arrays:Arrays||``.
|
|
21
|
+
- :chevron down: Expand the ``||statusbars:Advanced||`` category in the toolbox and click ``||arrays:Arrays||``.
|
|
23
22
|
|
|
24
|
-
|
|
25
|
-
``||
|
|
23
|
+
- :list ol: Drag
|
|
24
|
+
``||variables:set [list] to array of [0] [1]||``
|
|
25
|
+
into **the top** of the
|
|
26
|
+
``||controller:on [A] button [pressed]||``
|
|
27
|
+
container already in the workspace.
|
|
26
28
|
|
|
27
29
|
|
|
28
30
|
```block
|
|
@@ -34,16 +36,17 @@ controller.A.onEvent(ControllerButtonEvent.Pressed, function () {
|
|
|
34
36
|
})
|
|
35
37
|
```
|
|
36
38
|
|
|
37
|
-
##
|
|
39
|
+
## 3. List of Darts
|
|
38
40
|
|
|
39
41
|
Right now, we have a **list** of numbers. Let's make it a list of darts.
|
|
40
42
|
|
|
41
43
|
---
|
|
42
44
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
+
- :mouse pointer: Click the name **list** inside
|
|
46
|
+
``||variables:set [list] to array of [0] [1]||``
|
|
47
|
+
and choose "Rename variable..." from the dropdown menu.
|
|
45
48
|
|
|
46
|
-
|
|
49
|
+
- :mouse pointer: Call your list **darts** and click **Ok**.
|
|
47
50
|
|
|
48
51
|
```block
|
|
49
52
|
controller.A.onEvent(ControllerButtonEvent.Pressed, function () {
|
|
@@ -54,100 +57,56 @@ controller.A.onEvent(ControllerButtonEvent.Pressed, function () {
|
|
|
54
57
|
})
|
|
55
58
|
```
|
|
56
59
|
|
|
57
|
-
##
|
|
60
|
+
## 4. Prepare the Images
|
|
58
61
|
|
|
59
|
-
|
|
62
|
+
- :image: Beneath the ``||statusbars:Advanced||`` category in the toolbox, click
|
|
60
63
|
``||images:Images||``.
|
|
61
64
|
|
|
62
|
-
|
|
65
|
+
- :image: Drag out **3** empty grey image boxes into the workspace (we'll use them in
|
|
63
66
|
the next step).
|
|
64
67
|
|
|
65
68
|
|
|
66
69
|
|
|
67
|
-
##
|
|
70
|
+
## 5. Dart Images
|
|
68
71
|
|
|
69
|
-
|
|
70
|
-
|
|
72
|
+
- :mouse pointer: Snap the first two grey image boxes into
|
|
73
|
+
``||variables:set [list] to array of [0] [1]||``
|
|
74
|
+
to replace the numbers **0** and **1**.
|
|
71
75
|
|
|
72
|
-
|
|
76
|
+
- :mouse pointer: Add space for the new image box by clicking the ➕ symbol at the right of
|
|
73
77
|
the block, then snap the last image box into place.
|
|
74
78
|
|
|
75
79
|
|
|
76
80
|
```blocks
|
|
77
81
|
controller.A.onEvent(ControllerButtonEvent.Pressed, function () {
|
|
78
82
|
let darts = [img`
|
|
79
|
-
|
|
80
|
-
. . . . . . . . . . . . . . . .
|
|
81
|
-
. . . . . . . . . . . . . . . .
|
|
82
|
-
. . . . . . . . . . . . . . . .
|
|
83
|
-
. . . . . . . . . . . . . . . .
|
|
84
|
-
. . . . . . . . . . . . . . . .
|
|
85
|
-
. . . . . . . . . . . . . . . .
|
|
86
|
-
. . . . . . . . . . . . . . . .
|
|
87
|
-
. . . . . . . . . . . . . . . .
|
|
88
|
-
. . . . . . . . . . . . . . . .
|
|
89
|
-
. . . . . . . . . . . . . . . .
|
|
90
|
-
. . . . . . . . . . . . . . . .
|
|
91
|
-
. . . . . . . . . . . . . . . .
|
|
92
|
-
. . . . . . . . . . . . . . . .
|
|
93
|
-
. . . . . . . . . . . . . . . .
|
|
94
|
-
. . . . . . . . . . . . . . . .
|
|
83
|
+
.
|
|
95
84
|
`, img`
|
|
96
|
-
.
|
|
97
|
-
. . . . . . . . . . . . . . . .
|
|
98
|
-
. . . . . . . . . . . . . . . .
|
|
99
|
-
. . . . . . . . . . . . . . . .
|
|
100
|
-
. . . . . . . . . . . . . . . .
|
|
101
|
-
. . . . . . . . . . . . . . . .
|
|
102
|
-
. . . . . . . . . . . . . . . .
|
|
103
|
-
. . . . . . . . . . . . . . . .
|
|
104
|
-
. . . . . . . . . . . . . . . .
|
|
105
|
-
. . . . . . . . . . . . . . . .
|
|
106
|
-
. . . . . . . . . . . . . . . .
|
|
107
|
-
. . . . . . . . . . . . . . . .
|
|
108
|
-
. . . . . . . . . . . . . . . .
|
|
109
|
-
. . . . . . . . . . . . . . . .
|
|
110
|
-
. . . . . . . . . . . . . . . .
|
|
111
|
-
. . . . . . . . . . . . . . . .
|
|
85
|
+
.
|
|
112
86
|
`, img`
|
|
113
|
-
.
|
|
114
|
-
. . . . . . . . . . . . . . . .
|
|
115
|
-
. . . . . . . . . . . . . . . .
|
|
116
|
-
. . . . . . . . . . . . . . . .
|
|
117
|
-
. . . . . . . . . . . . . . . .
|
|
118
|
-
. . . . . . . . . . . . . . . .
|
|
119
|
-
. . . . . . . . . . . . . . . .
|
|
120
|
-
. . . . . . . . . . . . . . . .
|
|
121
|
-
. . . . . . . . . . . . . . . .
|
|
122
|
-
. . . . . . . . . . . . . . . .
|
|
123
|
-
. . . . . . . . . . . . . . . .
|
|
124
|
-
. . . . . . . . . . . . . . . .
|
|
125
|
-
. . . . . . . . . . . . . . . .
|
|
126
|
-
. . . . . . . . . . . . . . . .
|
|
127
|
-
. . . . . . . . . . . . . . . .
|
|
128
|
-
. . . . . . . . . . . . . . . .
|
|
87
|
+
.
|
|
129
88
|
`]
|
|
130
89
|
let projectile = sprites.createProjectileFromSprite(assets.image`Dart1`, mySprite, 0, -150)
|
|
131
90
|
projectile.startEffect(effects.ashes)
|
|
132
91
|
})
|
|
133
92
|
```
|
|
134
93
|
|
|
135
|
-
##
|
|
94
|
+
## 6. Choose Wisely
|
|
136
95
|
|
|
137
96
|
**⤅ Time to choose the darts ⬶**
|
|
138
97
|
|
|
139
98
|
---
|
|
140
99
|
|
|
141
|
-
|
|
100
|
+
- :paint brush: Click the first empty grey image box and toggle to **My Assets** to select **Dart1**.
|
|
142
101
|
|
|
143
|
-
|
|
102
|
+
- :paint brush: Click the second empty grey image box and toggle to **My Assets** to select **Dart2**.
|
|
144
103
|
|
|
145
|
-
|
|
104
|
+
- :paint brush: In the final box, draw your own dart!
|
|
146
105
|
|
|
147
106
|
---
|
|
148
107
|
|
|
149
|
-
|
|
150
|
-
What do you think will happen if you make yours larger or smaller?
|
|
108
|
+
_💡 Keep in mind that the provided darts are both 3px by 4px in size.
|
|
109
|
+
What do you think will happen if you make yours larger or smaller?_
|
|
151
110
|
|
|
152
111
|
```blocks
|
|
153
112
|
controller.A.onEvent(ControllerButtonEvent.Pressed, function () {
|
|
@@ -162,16 +121,20 @@ controller.A.onEvent(ControllerButtonEvent.Pressed, function () {
|
|
|
162
121
|
})
|
|
163
122
|
```
|
|
164
123
|
|
|
165
|
-
##
|
|
124
|
+
## 7. Random Darts
|
|
166
125
|
|
|
167
126
|
**Tell the computer you want a random dart from the array each time you fire!**
|
|
168
127
|
|
|
169
128
|
---
|
|
170
129
|
|
|
171
|
-
|
|
172
|
-
|
|
130
|
+
- :align justify: From ``||arrays:Arrays||``, drag
|
|
131
|
+
``||arrays:get random value from [list]||``
|
|
132
|
+
in to replace the current
|
|
133
|
+
dart image in the
|
|
134
|
+
``||variables:set [projectile] to ...||``
|
|
135
|
+
block (just beneath the list you have created.)
|
|
173
136
|
|
|
174
|
-
|
|
137
|
+
- :mouse pointer: Click **list** and change it to **darts** using the dropdown menu.
|
|
175
138
|
|
|
176
139
|
|
|
177
140
|
```blocks
|
|
@@ -188,7 +151,7 @@ controller.A.onEvent(ControllerButtonEvent.Pressed, function () {
|
|
|
188
151
|
```
|
|
189
152
|
|
|
190
153
|
|
|
191
|
-
##
|
|
154
|
+
## 8. Play Your Game!
|
|
192
155
|
|
|
193
156
|
**🎮 Now give your project a try on the game screen 🎮**
|
|
194
157
|
|
|
@@ -201,14 +164,16 @@ If there's anything you don't like, now is a great time to dig in and change it!
|
|
|
201
164
|
|
|
202
165
|
**You've done it!!**
|
|
203
166
|
|
|
167
|
+
---
|
|
168
|
+
|
|
204
169
|
You've finished your Space Explorer game!
|
|
205
170
|
|
|
206
171
|
When you're done playing with it, click **Done** to return to the main
|
|
207
|
-
page where you can add this game to your gallery to keep building
|
|
172
|
+
page where you can share with family and friends, then add this game to your gallery to keep building!
|
|
208
173
|
|
|
209
174
|
|
|
210
175
|
```package
|
|
211
|
-
arcade-background-scroll=github:microsoft/arcade-background-scroll/
|
|
176
|
+
arcade-background-scroll=github:microsoft/arcade-background-scroll#926e12eefffd09d453c7cde73f8d6ebd0e666d9d/
|
|
212
177
|
pxt-status-bar=github:jwunderl/pxt-status-bar
|
|
213
178
|
```
|
|
214
179
|
|
|
@@ -236,6 +201,7 @@ sprites.onOverlap(SpriteKind.Projectile, SpriteKind.Enemy, function (sprite, oth
|
|
|
236
201
|
sprites.onOverlap(SpriteKind.Player, SpriteKind.Enemy, function (sprite, otherSprite) {
|
|
237
202
|
info.changeLifeBy(-1)
|
|
238
203
|
otherSprite.destroy(effects.disintegrate, 200)
|
|
204
|
+
scene.cameraShake(4, 500)
|
|
239
205
|
})
|
|
240
206
|
let myEnemy: Sprite = null
|
|
241
207
|
let myFuel: Sprite = null
|
|
@@ -246,7 +212,14 @@ scene.setBackgroundImage(assets.image`Galaxy`)
|
|
|
246
212
|
scroller.scrollBackgroundWithSpeed(0, 10)
|
|
247
213
|
mySprite = sprites.create(assets.image`Rocket`, SpriteKind.Player)
|
|
248
214
|
controller.moveSprite(mySprite)
|
|
215
|
+
|
|
249
216
|
mySprite.setStayInScreen(true)
|
|
217
|
+
animation.runImageAnimation(
|
|
218
|
+
mySprite,
|
|
219
|
+
assets.animation`Flying Rocket`,
|
|
220
|
+
100,
|
|
221
|
+
true
|
|
222
|
+
)
|
|
250
223
|
|
|
251
224
|
statusbar = statusbars.create(20, 4, StatusBarKind.Energy)
|
|
252
225
|
statusbar.attachToSprite(mySprite, -25, 0)
|
|
@@ -257,17 +230,22 @@ game.onUpdateInterval(5000, function () {
|
|
|
257
230
|
myFuel.setKind(SpriteKind.Gas)
|
|
258
231
|
})
|
|
259
232
|
game.onUpdateInterval(2000, function () {
|
|
260
|
-
myEnemy = sprites.createProjectileFromSide(assets.image`Spider`, 0,
|
|
233
|
+
myEnemy = sprites.createProjectileFromSide(assets.image`Spider`, 0, 50)
|
|
261
234
|
myEnemy.x = randint(5, 155)
|
|
262
235
|
myEnemy.setKind(SpriteKind.Enemy)
|
|
263
|
-
|
|
236
|
+
animation.runImageAnimation(
|
|
237
|
+
myEnemy,
|
|
238
|
+
assets.animation`Flying Spider`,
|
|
239
|
+
100,
|
|
240
|
+
true
|
|
241
|
+
)
|
|
264
242
|
})
|
|
265
243
|
game.onUpdateInterval(300, function () {
|
|
266
244
|
statusbar.value += -1
|
|
267
245
|
})
|
|
268
246
|
forever(function () {
|
|
269
247
|
if (info.score() == 10) {
|
|
270
|
-
mySprite.
|
|
248
|
+
mySprite.sayText("+5 Level-Up Bonus", 2000)
|
|
271
249
|
info.changeScoreBy(5)
|
|
272
250
|
enemySpeed = 70
|
|
273
251
|
}
|
|
@@ -339,7 +317,7 @@ game.onUpdateInterval(2000, function () {
|
|
|
339
317
|
})
|
|
340
318
|
forever(function () {
|
|
341
319
|
if (info.score() == 10) {
|
|
342
|
-
mySprite.
|
|
320
|
+
mySprite.sayText("+5 Level-Up Bonus", 2000)
|
|
343
321
|
info.changeScoreBy(5)
|
|
344
322
|
enemySpeed = 70
|
|
345
323
|
}
|
package/docs/skillmap/space.md
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
# Space Adventure
|
|
1
|
+
# Create a Space Adventure
|
|
2
2
|
* name: Create a Space Adventure Game
|
|
3
|
-
* description:
|
|
3
|
+
* description: Make a Galaga-style game by following this short series of tutorials. You will create a rocket that fires projectiles at enemies, design your outerspace view, create amazing animations, and MORE! What are you waiting for? Double-click the first level to begin!
|
|
4
4
|
* infoUrl: skillmap/educator-info/space-map-info
|
|
5
5
|
* bannerUrl: /static/skillmap/space/spacet6.gif
|
|
6
|
-
* backgroundurl: /static/skillmap/backgrounds/space-comp.
|
|
6
|
+
* backgroundurl: /static/skillmap/backgrounds/space-comp.png
|
|
7
7
|
* primarycolor: #2EA9B0
|
|
8
8
|
* secondarycolor: #d6f7fa
|
|
9
9
|
* tertiarycolor: #5d416b
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
* description: Watch out for danger! Add enemies and countdown lives in your game.
|
|
43
43
|
* type: tutorial
|
|
44
44
|
* tags: intermediate, enemies, kinds
|
|
45
|
-
* next: space-
|
|
45
|
+
* next: space-activity4a
|
|
46
46
|
* url: /skillmap/space/space3
|
|
47
47
|
* imageUrl: /static/skillmap/space/spacet3.gif
|
|
48
48
|
* position: 2 1
|
|
@@ -94,7 +94,10 @@
|
|
|
94
94
|
* kind: completion
|
|
95
95
|
* type: certificate
|
|
96
96
|
* imageUrl: /static/skillmap/certificates/space-cert.png
|
|
97
|
-
* url: /static/skillmap/certificates/
|
|
97
|
+
* url: /static/skillmap/certificates/space-cert.pdf
|
|
98
98
|
* position: 5 0
|
|
99
|
+
* map: [Try 80s Rockstar Maze](/skillmap/rockstar)
|
|
100
|
+
* map: [Try Jungle Monkey Jump](/skillmap/jungle)
|
|
101
|
+
* editor: [Edit Your Project with a Full Toolbox](/)
|
|
99
102
|
|
|
100
103
|
|
|
@@ -249,7 +249,7 @@ let mySprite = sprites.create(img`
|
|
|
249
249
|
music.playMelody("G B A G C5 B A B ", 120)
|
|
250
250
|
```
|
|
251
251
|
|
|
252
|
-
## Intro @unplugged
|
|
252
|
+
## {Intro @unplugged}
|
|
253
253
|
|
|
254
254
|
Are you ready to make greeting cards for your friends and family?
|
|
255
255
|
|
|
@@ -257,7 +257,7 @@ Follow these quick steps and you'll have one in no time!
|
|
|
257
257
|
|
|
258
258
|

|
|
259
259
|
|
|
260
|
-
## Step 1
|
|
260
|
+
## {Step 1}
|
|
261
261
|
|
|
262
262
|
🎨 This card centers around an artistic background 🎨
|
|
263
263
|
|
|
@@ -391,7 +391,7 @@ scene.setBackgroundImage(img`
|
|
|
391
391
|
```
|
|
392
392
|
|
|
393
393
|
|
|
394
|
-
## Step 2
|
|
394
|
+
## {Step 2}
|
|
395
395
|
|
|
396
396
|
💛 Let's add a heartfelt greeting 💛
|
|
397
397
|
|
|
@@ -647,7 +647,7 @@ let mySprite = sprites.create(img`
|
|
|
647
647
|
|
|
648
648
|
```
|
|
649
649
|
|
|
650
|
-
## Step 3
|
|
650
|
+
## {Step 3}
|
|
651
651
|
|
|
652
652
|
🎉 Time for a celebration 🎉
|
|
653
653
|
|
|
@@ -905,7 +905,7 @@ let mySprite = sprites.create(img`
|
|
|
905
905
|
```
|
|
906
906
|
|
|
907
907
|
|
|
908
|
-
## Step 4
|
|
908
|
+
## {Step 4}
|
|
909
909
|
|
|
910
910
|
Add a personal 🎵 note 🎵 using ``||music:play melody [ ] at tempo [120] (bpm)||``!
|
|
911
911
|
You can create your own song, or choose one from our gallery!
|
|
@@ -1161,7 +1161,7 @@ let mySprite = sprites.create(img`
|
|
|
1161
1161
|
music.playMelody("G B A G C5 B A B ", 120)
|
|
1162
1162
|
```
|
|
1163
1163
|
|
|
1164
|
-
## Finish
|
|
1164
|
+
## {Finish}
|
|
1165
1165
|
|
|
1166
1166
|
Congratulations, you've finished your greeting card!
|
|
1167
1167
|
|