pxt-arcade 1.7.3 → 1.7.4

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.
Files changed (149) hide show
  1. package/built/target.js +69 -68
  2. package/built/target.json +69 -68
  3. package/built/targetlight.json +4 -4
  4. package/built/theme.json +2 -1
  5. package/docs/hour-of-code/educators-2021.html +366 -0
  6. package/docs/hour-of-code-2021.html +239 -140
  7. package/docs/hour-of-code.html +11 -11
  8. package/docs/index-ref.json +1 -1
  9. package/docs/multipart-tutorials.md +0 -8
  10. package/docs/projects/SUMMARY.md +3 -2
  11. package/docs/recipes.md +0 -7
  12. package/docs/skillmap/clicker/clicker1.md +7 -7
  13. package/docs/skillmap/clicker/clicker2.md +9 -9
  14. package/docs/skillmap/clicker/clicker3.md +8 -8
  15. package/docs/skillmap/clicker/clicker4.md +8 -8
  16. package/docs/skillmap/clicker/clicker4a.md +7 -7
  17. package/docs/skillmap/clicker/clicker5.md +3 -3
  18. package/docs/skillmap/clicker-themed/clickert1.md +8 -8
  19. package/docs/skillmap/clicker-themed/clickert2.md +10 -10
  20. package/docs/skillmap/clicker-themed/clickert3.md +8 -8
  21. package/docs/skillmap/clicker-themed/clickert4.md +8 -8
  22. package/docs/skillmap/collector/collector1.md +11 -11
  23. package/docs/skillmap/collector/collector1a.md +8 -8
  24. package/docs/skillmap/collector/collector2.md +8 -8
  25. package/docs/skillmap/collector/collector3.md +8 -8
  26. package/docs/skillmap/collector/collector3a.md +7 -7
  27. package/docs/skillmap/collector/collector4.md +8 -8
  28. package/docs/skillmap/collector/collector5.md +2 -2
  29. package/docs/skillmap/collector-themed/collectort1.md +14 -14
  30. package/docs/skillmap/collector-themed/collectort2.md +9 -9
  31. package/docs/skillmap/collector-themed/collectort3.md +11 -11
  32. package/docs/skillmap/collector-themed/collectort4.md +11 -11
  33. package/docs/skillmap/collector-themed/collectort4old.md +8 -8
  34. package/docs/skillmap/collector-themed/collectort5.md +2 -2
  35. package/docs/skillmap/educator-info/forest-map-info.md +8 -8
  36. package/docs/skillmap/educator-info/racer-map-info.md +105 -0
  37. package/docs/skillmap/educator-info/simple-shark-map-info.md +101 -0
  38. package/docs/skillmap/forest/forest1.md +1 -69
  39. package/docs/skillmap/forest/forest2.md +3 -67
  40. package/docs/skillmap/forest/forest3.md +1 -174
  41. package/docs/skillmap/forest/forest4.md +2 -336
  42. package/docs/skillmap/forest/forest5.md +1 -396
  43. package/docs/skillmap/forest/forest6.md +6 -372
  44. package/docs/skillmap/forest.md +2 -2
  45. package/docs/skillmap/interface/activity1.md +14 -14
  46. package/docs/skillmap/jungle/jungle1.md +48 -28
  47. package/docs/skillmap/jungle/jungle2.md +50 -26
  48. package/docs/skillmap/jungle/jungle3.md +48 -27
  49. package/docs/skillmap/jungle/jungle4.md +76 -58
  50. package/docs/skillmap/jungle/jungle5.md +31 -25
  51. package/docs/skillmap/jungle/jungle6.md +34 -28
  52. package/docs/skillmap/jungle/jungle7.md +36 -24
  53. package/docs/skillmap/jungle/jungle8.md +27 -25
  54. package/docs/skillmap/jungle.md +7 -3
  55. package/docs/skillmap/long-shark.md +119 -0
  56. package/docs/skillmap/racer.md +7 -7
  57. package/docs/skillmap/rockstar/rockstar1.md +32 -13
  58. package/docs/skillmap/rockstar/rockstar2.md +43 -25
  59. package/docs/skillmap/rockstar/rockstar3.md +43 -25
  60. package/docs/skillmap/rockstar.md +3 -1
  61. package/docs/skillmap/shark/shark1-simple.md +151 -0
  62. package/docs/skillmap/shark/shark2-simple.md +203 -0
  63. package/docs/skillmap/shark/shark3-simple.md +204 -0
  64. package/docs/skillmap/shark/shark4-simple.md +246 -0
  65. package/docs/skillmap/shark/shark4a-simple.md +244 -0
  66. package/docs/skillmap/shark.md +25 -58
  67. package/docs/skillmap/space/space1.md +62 -28
  68. package/docs/skillmap/space/space2.md +33 -24
  69. package/docs/skillmap/space/space3.md +85 -68
  70. package/docs/skillmap/space/space4.md +95 -64
  71. package/docs/skillmap/space/space4a.md +32 -24
  72. package/docs/skillmap/space/space5.md +77 -41
  73. package/docs/skillmap/space/space6.md +56 -78
  74. package/docs/skillmap/space.md +8 -5
  75. package/docs/skillmap/story/card.md +6 -6
  76. package/docs/skillmap/story/card2.md +6 -6
  77. package/docs/skillmap/story/story1.md +7 -7
  78. package/docs/skillmap/story/story2.md +11 -11
  79. package/docs/skillmap/story/story3.md +10 -10
  80. package/docs/skillmap/story/story4.md +10 -10
  81. package/docs/skillmap/zoo/zoo1.md +31 -16
  82. package/docs/skillmap/zoo/zoo2.md +45 -30
  83. package/docs/skillmap/zoo/zoo2a.md +51 -36
  84. package/docs/skillmap/zoo/zoo3.md +8 -7
  85. package/docs/skillmap/zoo/zoo4.md +61 -32
  86. package/docs/skillmap/zoo/zoo5.md +41 -31
  87. package/docs/skillmap/zoo.md +2 -2
  88. package/docs/skillmaps.md +20 -4
  89. package/docs/static/experiments/accessibleblocks.png +0 -0
  90. package/docs/static/experiments/blockserrorlist.png +0 -0
  91. package/docs/static/hour-of-code/2021/beginner-skillmap.png +0 -0
  92. package/docs/static/hour-of-code/2021/favicon.png +0 -0
  93. package/docs/static/hour-of-code/2021/forest-skillmap-game.gif +0 -0
  94. package/docs/static/hour-of-code/2021/global-game-jam.png +0 -0
  95. package/docs/static/hour-of-code/2021/header.gif +0 -0
  96. package/docs/static/hour-of-code/2021/hoc-2020.png +0 -0
  97. package/docs/static/hour-of-code/2021/hoc-card.png +0 -0
  98. package/docs/static/hour-of-code/2021/microbit.png +0 -0
  99. package/docs/static/hour-of-code/2021/styles.css +269 -21
  100. package/docs/static/skillmap/assets/my-assets-three.png +0 -0
  101. package/docs/static/skillmap/backgrounds/jungle-bg.png +0 -0
  102. package/docs/static/skillmap/backgrounds/jungle-map.png +0 -0
  103. package/docs/static/skillmap/backgrounds/rock-map.png +0 -0
  104. package/docs/static/skillmap/backgrounds/rockstar-card.gif +0 -0
  105. package/docs/static/skillmap/backgrounds/space-comp.png +0 -0
  106. package/docs/static/skillmap/backgrounds/space.png +0 -0
  107. package/docs/static/skillmap/certificates/forest-cert.pdf +0 -0
  108. package/docs/static/skillmap/certificates/forest-cert.png +0 -0
  109. package/docs/static/skillmap/certificates/jungle-cert.pdf +0 -0
  110. package/docs/static/skillmap/certificates/jungle-cert.png +0 -0
  111. package/docs/static/skillmap/certificates/rockstar-cert.pdf +0 -0
  112. package/docs/static/skillmap/certificates/rockstar-cert.png +0 -0
  113. package/docs/static/skillmap/certificates/shark-cert.pdf +0 -0
  114. package/docs/static/skillmap/certificates/shark-cert.png +0 -0
  115. package/docs/static/skillmap/certificates/space-cert.pdf +0 -0
  116. package/docs/static/skillmap/certificates/space-cert.png +0 -0
  117. package/docs/static/skillmap/racer/racer1.gif +0 -0
  118. package/docs/static/skillmap/racer/racer2.gif +0 -0
  119. package/docs/static/skillmap/racer/racer3.gif +0 -0
  120. package/docs/static/skillmap/rockstar/rockstar1.gif +0 -0
  121. package/docs/static/skillmap/rockstar/rockstar2.gif +0 -0
  122. package/docs/static/skillmap/rockstar/rockstar3.gif +0 -0
  123. package/docs/static/skillmap/shark/shark1-simple.gif +0 -0
  124. package/docs/static/skillmap/shark/shark4a-simple.gif +0 -0
  125. package/docs/static/skillmap/zoo/overlaps-food-sprite.gif +0 -0
  126. package/docs/tutorials/hundred.md +400 -0
  127. package/package.json +1 -1
  128. package/pxtarget.json +2 -1
  129. package/targetconfig.json +4 -1
  130. package/docs/recipes/wonder-woman-1984/01-maze.md +0 -291
  131. package/docs/recipes/wonder-woman-1984/02-artifact.md +0 -70
  132. package/docs/recipes/wonder-woman-1984/03-enemies.md +0 -65
  133. package/docs/skillmap/forest/forest9.md +0 -714
  134. package/docs/static/hour-of-code/ww-maze.png +0 -0
  135. package/docs/static/recipes/wonder-woman-1984/artifact-preview.png +0 -0
  136. package/docs/static/recipes/wonder-woman-1984/artifacts-location.gif +0 -0
  137. package/docs/static/recipes/wonder-woman-1984/draw-maze-backup.png +0 -0
  138. package/docs/static/recipes/wonder-woman-1984/draw-walls-backup.png +0 -0
  139. package/docs/static/recipes/wonder-woman-1984/end-position.png +0 -0
  140. package/docs/static/recipes/wonder-woman-1984/enemies-location.gif +0 -0
  141. package/docs/static/recipes/wonder-woman-1984/enemies-preview.png +0 -0
  142. package/docs/static/recipes/wonder-woman-1984/fill-maze.gif +0 -0
  143. package/docs/static/recipes/wonder-woman-1984/fill-walls.gif +0 -0
  144. package/docs/static/recipes/wonder-woman-1984/wonder-woman3.png +0 -0
  145. package/docs/static/recipes/wonder-woman-1984/ww-splash3.gif +0 -0
  146. package/docs/static/recipes/wonder-woman-1984/ww-splash3.mp4 +0 -0
  147. package/docs/static/ww84-background.png +0 -0
  148. package/docs/static/ww84-header.png +0 -0
  149. package/docs/ww84.html +0 -276
@@ -78,7 +78,7 @@ forever(function () {
78
78
  ```
79
79
 
80
80
 
81
- ## Intro @showdialog
81
+ ## {Intro @showdialog}
82
82
 
83
83
  Collecting things is great, but let's also add an element of **DANGER!**
84
84
 
@@ -86,14 +86,14 @@ This tutorial will show you how to add cars to the road.
86
86
 
87
87
  ![Avoid the cars](/static/skillmap/collector/collectort3.gif "Stay safe!" )
88
88
 
89
- ## Step 2
89
+ ## {Step 2}
90
90
 
91
91
  The code for a collector game is already in the workspace.
92
92
  🕹️ Play your game to help you remember what each chunk of code does.
93
93
 
94
94
 
95
95
 
96
- ## Step 3
96
+ ## {Step 3}
97
97
 
98
98
  Let's start by adding a new kind of projectile, an ``||sprites:Enemy||``!
99
99
 
@@ -116,7 +116,7 @@ forever(function () {
116
116
  ```
117
117
 
118
118
 
119
- ## Step 4
119
+ ## {Step 4}
120
120
 
121
121
  ► Click the empty grey box and toggle to **My Assets** to select the blue car.
122
122
 
@@ -130,7 +130,7 @@ forever(function () {
130
130
  ```
131
131
 
132
132
 
133
- ## Step 4
133
+ ## {Step 4}
134
134
 
135
135
  **Our new enemy isn't quite ready.**
136
136
  We still have to set the vertical positions on the screen and add a pause to the loop.
@@ -152,7 +152,7 @@ forever(function () {
152
152
  })
153
153
  ```
154
154
 
155
- ## Step 5
155
+ ## {Step 5}
156
156
 
157
157
  ► Add ``||loops:pause [100] ms||`` to the bottom of this ``||loops:forever||`` loop.
158
158
 
@@ -168,7 +168,7 @@ forever(function () {
168
168
  })
169
169
  ```
170
170
 
171
- ## Step 6
171
+ ## {Step 6}
172
172
 
173
173
 
174
174
  **🎮 Now try your game on the game screen 🎮**
@@ -177,7 +177,7 @@ How is it working?
177
177
 
178
178
 
179
179
 
180
- ## Step 7
180
+ ## {Step 7}
181
181
 
182
182
  **😲 Uh-Oh 😲**
183
183
 
@@ -204,7 +204,7 @@ forever(function () {
204
204
  })
205
205
  ```
206
206
 
207
- ## Step 8
207
+ ## {Step 8}
208
208
 
209
209
  **😈 Wicked 😈**
210
210
 
@@ -229,7 +229,7 @@ sprites.onOverlap(SpriteKind.Player, SpriteKind.Enemy, function (sprite, otherSp
229
229
  ```
230
230
 
231
231
 
232
- ## Step 9
232
+ ## {Step 9}
233
233
 
234
234
  At this point, the player is still awarded points when they hit a car.
235
235
 
@@ -253,7 +253,7 @@ sprites.onOverlap(SpriteKind.Player, SpriteKind.Enemy, function (sprite, otherSp
253
253
  ```
254
254
 
255
255
 
256
- ## Step 8
256
+ ## {Step 8}
257
257
 
258
258
  **What an amazing creation!**
259
259
 
@@ -79,7 +79,7 @@ forever(function () {
79
79
  ```
80
80
 
81
81
 
82
- ## Intro @showdialog
82
+ ## {Intro @showdialog}
83
83
 
84
84
  A fantastic game can be made even better by adding small details.
85
85
 
@@ -88,14 +88,14 @@ This tutorial will show you how to animate your characters.
88
88
  ![Mama dino looks like she's walking](/static/skillmap/collector/collectort4.gif "One foot in front of the other." )
89
89
 
90
90
 
91
- ## Step 2
91
+ ## {Step 2}
92
92
 
93
93
  The code for **Dino Mama** is already in the workspace.
94
94
  🕹️ Play your game to remember what the code does.
95
95
 
96
96
 
97
97
 
98
- ## Step 3 @showdialog
98
+ ## {Step 3 @showdialog}
99
99
 
100
100
  Let's start by animating Mama Dino!
101
101
 
@@ -106,7 +106,7 @@ Let's start by animating Mama Dino!
106
106
 
107
107
 
108
108
 
109
- ## Step 4
109
+ ## {Step 4}
110
110
 
111
111
 
112
112
  ► In the toolbox, click **Advanced** to reveal the ``||animation:Animation||`` category.
@@ -150,7 +150,7 @@ true
150
150
  ```
151
151
 
152
152
 
153
- ## Step 5
153
+ ## {Step 5}
154
154
 
155
155
  **🎥 Let's get animating 🎥**
156
156
 
@@ -177,7 +177,7 @@ true
177
177
  )
178
178
  ```
179
179
 
180
- ## Step 6
180
+ ## {Step 6}
181
181
 
182
182
  **Watch your speed!**
183
183
 
@@ -206,7 +206,7 @@ true
206
206
  ```
207
207
 
208
208
 
209
- ## Step 7
209
+ ## {Step 7}
210
210
 
211
211
 
212
212
  **🎮 Now try your game on the game screen 🎮**
@@ -215,7 +215,7 @@ How cool is that?!?
215
215
 
216
216
 
217
217
 
218
- ## Step 8
218
+ ## {Step 8}
219
219
 
220
220
  **🔁 Let's do it again 🔁**
221
221
 
@@ -248,7 +248,7 @@ true
248
248
  ```
249
249
 
250
250
 
251
- ## Step 9
251
+ ## {Step 9}
252
252
 
253
253
 
254
254
  **🎮 Try your project on the game screen! 🎮**
@@ -257,7 +257,7 @@ Looking good!
257
257
 
258
258
 
259
259
 
260
- ## Step 10
260
+ ## {Step 10}
261
261
 
262
262
  **😈 Wicked 😈**
263
263
 
@@ -290,7 +290,7 @@ true
290
290
 
291
291
 
292
292
 
293
- ## Step 8
293
+ ## {Step 8}
294
294
 
295
295
  **Now that's an exciting game!**
296
296
 
@@ -191,7 +191,7 @@ forever(function () {
191
191
 
192
192
 
193
193
 
194
- ## Intro @showdialog
194
+ ## {Intro @showdialog}
195
195
 
196
196
  Ready to give your game some extra life?
197
197
 
@@ -200,7 +200,7 @@ Ready to give your game some extra life?
200
200
 
201
201
 
202
202
 
203
- ## Step 1
203
+ ## {Step 1}
204
204
 
205
205
  The code for a collector game is already in the workspace.
206
206
 
@@ -249,7 +249,7 @@ forever(function () {
249
249
  ```
250
250
 
251
251
 
252
- ## Step 2
252
+ ## {Step 2}
253
253
 
254
254
  **The extra life isn't quite ready.**
255
255
 
@@ -297,7 +297,7 @@ forever(function () {
297
297
  ```
298
298
 
299
299
 
300
- ## Step 3
300
+ ## {Step 3}
301
301
 
302
302
  Extra lives are supposed to be special, but they appear just as much
303
303
  as the other two projectiles right now.
@@ -341,7 +341,7 @@ forever(function () {
341
341
 
342
342
 
343
343
 
344
- ## Step 4
344
+ ## {Step 4}
345
345
 
346
346
  **Play through your game once or twice. Notice anything wrong?**
347
347
 
@@ -369,7 +369,7 @@ sprites.onOverlap(SpriteKind.Player, SpriteKind.Food, function (sprite, otherSpr
369
369
  ```
370
370
 
371
371
 
372
- ## Step 6
372
+ ## {Step 6}
373
373
 
374
374
  The extra life is still **subtracting** a life when collected.
375
375
 
@@ -401,7 +401,7 @@ sprites.onOverlap(SpriteKind.Player, SpriteKind.Food, function (sprite, otherSpr
401
401
 
402
402
 
403
403
 
404
- ## Step 7
404
+ ## {Step 7}
405
405
 
406
406
  ► The new **mySprite say** block is pointed toward the wrong sprite. To fix that,
407
407
  drag the ``||variables:otherSprite||`` argument out of the header of the
@@ -422,7 +422,7 @@ sprites.onOverlap(SpriteKind.Player, SpriteKind.Food, function (sprite, otherSpr
422
422
 
423
423
  ```
424
424
 
425
- ## Step 8
425
+ ## {Step 8}
426
426
 
427
427
 
428
428
  **There you go!**
@@ -472,7 +472,7 @@ forever(function () {
472
472
 
473
473
  ```
474
474
 
475
- ## Intro @showdialog
475
+ ## {Intro @showdialog}
476
476
 
477
477
  You've learned everything you know to make an exciting collector game. Now put it all together to create something that's all your own!
478
478
 
@@ -481,7 +481,7 @@ You've learned everything you know to make an exciting collector game. Now put
481
481
 
482
482
 
483
483
 
484
- ## Step 1
484
+ ## {Step 1}
485
485
 
486
486
  The code for a collector game is already in the workspace.
487
487
 
@@ -42,49 +42,49 @@ Specifically, they will experience the following topics:
42
42
  As students progress through these projects, they will progressively build a game where their plane shoots water at flames to weaken them until they eventually extinguish.
43
43
 
44
44
  ```package
45
- pxt-tilemaps=github:microsoft/pxt-tilemaps/
45
+ pxt-forest-special=github:kiki-lee/forest-special/
46
46
  ```
47
47
 
48
48
  #### 1. Prepare Your Plane
49
49
  | Activity | Prepare Your Plane (7 min) |
50
50
  |---|---|
51
51
  | ![Prepare Your Plane thumbnail](/static/skillmap/forest/forest1.gif) | Set up your plane to make sure you can get everywhere you need to be! |
52
- | Blocks used | ``[let mySprite = sprites.create(img`.`, SpriteKind.Player)]``<br/>``[let mySprite: Sprite=null; controller.moveSprite(mySprite)]``<br/>``[tiles.placeOnRandomTile()]``<br/>``[let mySprite: Sprite=null; scene.cameraFollowSprite(mySprite)]`` |
52
+ | Blocks used | ``[let mySprite = sprites.create(img`.`, SpriteKind.Player)]``<br/>``[let mySprite: Sprite=null; controller.moveSprite(mySprite)]``<br/>``[let mySprite: Sprite=null; scene.cameraFollowSprite(mySprite)]`` |
53
53
  | Solution option | [Prepare Your Plane Project](https://makecode.com/_0CbLhcf6TW1W) |
54
54
 
55
55
  #### 2. Burning Issues
56
56
  | Activity | Burning Issues (8 min) |
57
57
  |---|---|
58
58
  | ![Burning Issues thumbnail](/static/skillmap/forest/forest2.gif) | Use loops to add random fires to your map! |
59
- | Blocks used | ``[scene.onOverlapTile()]``<br/>``[tiles.setTileAt(location, assets.tile`transparency16`)]``<br/>``[info.changeScoreBy(1)]``<br/>``[game.over(true)]`` |
59
+ | Blocks used | ``[for (let index = 0; index < 4; index++) {}]``<br/>``[newFire = sprites.create(img`.`, SpriteKind.Player)]``<br/>``[tiles.placeOnRandomTile(newFire, assets.tile`transparency16`)]``<br/>``[sprites.onCreated()]``<br/>``[let sprite: Sprite=null; sprite.startEffect(effects.fire)]`` |
60
60
  | Solution option | [Burning Issues Project](https://makecode.com/_EdjVbU6eMTPW) |
61
61
 
62
62
  #### 3. Fire Fighting
63
63
  | Activity | Fire Fighting (10 min) |
64
64
  |---|---|
65
65
  | ![Fire Fighting! thumbnail](/static/skillmap/forest/forest3.gif) | Add a water hose to your plane so you can keep your fires under control. |
66
- | Blocks used | ``[scene.onOverlapTile()]``<br/>``[tiles.setTileAt(location, assets.tile`transparency16`)]``<br/>``[info.changeScoreBy(-1)]``<br/>``[info.startCountdown(0)]`` |
66
+ | Blocks used | ``[controller.A.onEvent(ControllerButtonEvent.Repeated, function () {})]``<br/>``[let mySprite: Sprite=null; sprites.spray(mySprite, img`.`)]``<br/>``[sprites.set_flame_strength(sprite, 10)]``<br/>``[sprites.onOverlap()]``<br/>``[let sprite: Sprite=null; sprite.destroy()]``<br/>``[sprites.change_flame_strength_by(sprite, -1)]`` |
67
67
  | Solution option | [Fire Fighting Project](https://makecode.com/_9p32WzfzX1uv) |
68
68
 
69
69
  #### 4. Spreads Like Wildfire
70
70
  | Activity | Spreads Like Wildfire (10 min) |
71
71
  |---|---|
72
- | ![Spreads Like Wildfire thumbnail](/static/skillmap/forest/forest4.gif) | Conditions in the weather and environment such as drought, winds, vegetation density and dryness can cause fires to spread more quickly.  Lets simulate these conditions in our game. |
73
- | Blocks used | ``[scene.onOverlapTile()]``<br/>``[tiles.setTileAt(location, assets.tile`transparency16`)]``<br/>``[info.changeScoreBy(-1)]``<br/>``[info.startCountdown(0)]`` |
72
+ | ![Spreads Like Wildfire thumbnail](/static/skillmap/forest/forest4.gif) | Conditions in the weather and environment such as drought, winds, vegetation density and dryness can cause fires to spread more quickly.  Let's simulate these conditions in our game. |
73
+ | Blocks used | ``[game.set_health_of_trees(7)]``<br/>``[game.set_strength_of_wind(3)]``<br/>``[game.set_dryness_of_grass(3)]``<br/>``[game.onUpdate(function () {})]``<br/>``[sprites.random_spread(img`.`]``<br/>``[sprites.onDestroyed(SpriteKind.Player, function (sprite) {})]``<br/>``[tiles.setTileAt(tiles.locationOfSprite(sprite), assets.tile`transparency16`)]``<br/>``[scene.onOverlapTile()]``<br/>``[sprites.onOverlap()]``<br/>``[let otherSprite: Sprite=null; otherSprite.destroy()]``<br/> |
74
74
  | Solution option | [Spreads Like Wildfire Project](https://makecode.com/_ifR6pigEHKP7) |
75
75
 
76
76
  #### 5. Head's Up!
77
77
  | Activity | Head's Up! (9 min) |
78
78
  |---|---|
79
79
  | ![Head's Up!](/static/skillmap/forest/forest5.gif) | Computer science is more important to firefighting than ever before. Let's add a heads-up-display (HUD) to help the pilot get information from their fire database in real-time. |
80
- | Blocks used | ``[scene.onOverlapTile()]``<br/>``[tiles.setTileAt(location, assets.tile`transparency16`)]``<br/>``[info.changeScoreBy(-1)]``<br/>``[info.startCountdown(0)]`` |
80
+ | Blocks used | ``[hud.forest_hud(true)]``<br/>``[hud.danger_hud(true)]``<br/>``[hud.forest_hud(true)]`` |
81
81
  | Solution option | [Head's Up Project](https://makecode.com/_77cLwx4b120o) |
82
82
 
83
83
  #### 4. Keep Going
84
84
  | Activity | Keep Going (10 min) |
85
85
  |---|---|
86
86
  | ![Keep Going thumbnail](/static/skillmap/forest/forest6.gif) | Add more to your game! Experiment with sounds and animation to make your game truly unique. |
87
- | Blocks used | ``[scene.onOverlapTile()]``<br/>``[tiles.setTileAt(location, assets.tile`transparency16`)]``<br/>``[info.changeScoreBy(-1)]``<br/>``[info.startCountdown(0)]`` |
87
+ | Blocks used | ``[controller.left.onEvent(ControllerButtonEvent.Pressed, function () {})]``<br/>``[animation.runImageAnimation()]``<br/>``[music.thump.play()]`` |
88
88
  | Solution option | [Keep Going Project](https://makecode.com/_0kzFyAgPMa4A) |
89
89
 
90
90
  ##### Game Mod Ideas
@@ -0,0 +1,105 @@
1
+ # About Save the Forest!
2
+
3
+ **A page for Educators & Parents**
4
+
5
+ The **Save the Forest!** map uses basic code blocks and extensions in MakeCode Arcade to implement simple game concepts.
6
+
7
+ In this short set of activities, students code a game that recreates the conditions for a forest fire, and then code a fire-fighting airtanker plane to spray water and put out the flames! This map is intended for students who are new to MakeCode with little or no previous coding experience.
8
+
9
+ Designed for students between the ages of 11 & 18, this experience contains a total of 6 tutorials (approximating 54 minutes of instruction). At the end of the learning path, students receive a certificate of completion.
10
+
11
+ | | Minutes* | Game Type | Key Concepts |
12
+ | --------------- | -------- | --------- | ------------ |
13
+ | Prepare Your Plane | 7 | Intro | movement, sprites |
14
+ | Burning Issues | 8 | Maze | events, loops, random |
15
+ | Fire Fighting | 10 | Maze | events, projectiles |
16
+ | Spreads Like Wildfire | 10 | Maze | events, variables, collisions |
17
+ | Head's Up! | 9 | Maze | displays, customization |
18
+ | Keep Going | 10 | Maze | animations, sounds |
19
+
20
+ \* Minutes are approximate, based on time to follow instructions as written. Times do not include time spent on designing elements or re-aquainting with previously-written code. Providing extra time for creativity and debugging is encouraged.
21
+
22
+ ### Objectives
23
+
24
+ After completing Save the Forest, students will have gained exposure to computer science and game design elements using MakeCode Arcade.
25
+
26
+ Specifically, they will experience the following topics:
27
+
28
+ - Loops
29
+ - Events
30
+ - Variables
31
+ - Tilemaps
32
+ - Movement
33
+ - Collisions
34
+ - Projectiles
35
+ - Animation
36
+ - Sounds
37
+ - Strength/Life Mechanics
38
+
39
+
40
+ ### Projects
41
+
42
+ As students progress through these projects, they will progressively build a game where their plane shoots water at flames to weaken them until they eventually extinguish.
43
+
44
+ ```package
45
+ pxt-forest-special=github:kiki-lee/forest-special/
46
+ ```
47
+
48
+ #### 1. Prepare Your Plane
49
+ | Activity | Prepare Your Plane (7 min) |
50
+ |---|---|
51
+ | ![Prepare Your Plane thumbnail](/static/skillmap/forest/forest1.gif) | Set up your plane to make sure you can get everywhere you need to be! |
52
+ | Blocks used | ``[let mySprite = sprites.create(img`.`, SpriteKind.Player)]``<br/>``[let mySprite: Sprite=null; controller.moveSprite(mySprite)]``<br/>``[let mySprite: Sprite=null; scene.cameraFollowSprite(mySprite)]`` |
53
+ | Solution option | [Prepare Your Plane Project](https://makecode.com/_0CbLhcf6TW1W) |
54
+
55
+ #### 2. Burning Issues
56
+ | Activity | Burning Issues (8 min) |
57
+ |---|---|
58
+ | ![Burning Issues thumbnail](/static/skillmap/forest/forest2.gif) | Use loops to add random fires to your map! |
59
+ | Blocks used | ``[for (let index = 0; index < 4; index++) {}]``<br/>``[newFire = sprites.create(img`.`, SpriteKind.Player)]``<br/>``[tiles.placeOnRandomTile(newFire, assets.tile`transparency16`)]``<br/>``[sprites.onCreated()]``<br/>``[let sprite: Sprite=null; sprite.startEffect(effects.fire)]`` |
60
+ | Solution option | [Burning Issues Project](https://makecode.com/_EdjVbU6eMTPW) |
61
+
62
+ #### 3. Fire Fighting
63
+ | Activity | Fire Fighting (10 min) |
64
+ |---|---|
65
+ | ![Fire Fighting! thumbnail](/static/skillmap/forest/forest3.gif) | Add a water hose to your plane so you can keep your fires under control. |
66
+ | Blocks used | ``[controller.A.onEvent(ControllerButtonEvent.Repeated, function () {})]``<br/>``[let mySprite: Sprite=null; sprites.spray(mySprite, img`.`)]``<br/>``[sprites.set_flame_strength(sprite, 10)]``<br/>``[sprites.onOverlap()]``<br/>``[let sprite: Sprite=null; sprite.destroy()]``<br/>``[sprites.change_flame_strength_by(sprite, -1)]`` |
67
+ | Solution option | [Fire Fighting Project](https://makecode.com/_9p32WzfzX1uv) |
68
+
69
+ #### 4. Spreads Like Wildfire
70
+ | Activity | Spreads Like Wildfire (10 min) |
71
+ |---|---|
72
+ | ![Spreads Like Wildfire thumbnail](/static/skillmap/forest/forest4.gif) | Conditions in the weather and environment such as drought, winds, vegetation density and dryness can cause fires to spread more quickly.  Let's simulate these conditions in our game. |
73
+ | Blocks used | ``[game.set_health_of_trees(7)]``<br/>``[game.set_strength_of_wind(3)]``<br/>``[game.set_dryness_of_grass(3)]``<br/>``[game.onUpdate(function () {})]``<br/>``[sprites.random_spread(img`.`]``<br/>``[sprites.onDestroyed(SpriteKind.Player, function (sprite) {})]``<br/>``[tiles.setTileAt(tiles.locationOfSprite(sprite), assets.tile`transparency16`)]``<br/>``[scene.onOverlapTile()]``<br/>``[sprites.onOverlap()]``<br/>``[let otherSprite: Sprite=null; otherSprite.destroy()]``<br/> |
74
+ | Solution option | [Spreads Like Wildfire Project](https://makecode.com/_ifR6pigEHKP7) |
75
+
76
+ #### 5. Head's Up!
77
+ | Activity | Head's Up! (9 min) |
78
+ |---|---|
79
+ | ![Head's Up!](/static/skillmap/forest/forest5.gif) | Computer science is more important to firefighting than ever before. Let's add a heads-up-display (HUD) to help the pilot get information from their fire database in real-time. |
80
+ | Blocks used | ``[hud.forest_hud(true)]``<br/>``[hud.danger_hud(true)]``<br/>``[hud.forest_hud(true)]`` |
81
+ | Solution option | [Head's Up Project](https://makecode.com/_77cLwx4b120o) |
82
+
83
+ #### 4. Keep Going
84
+ | Activity | Keep Going (10 min) |
85
+ |---|---|
86
+ | ![Keep Going thumbnail](/static/skillmap/forest/forest6.gif) | Add more to your game! Experiment with sounds and animation to make your game truly unique. |
87
+ | Blocks used | ``[controller.left.onEvent(ControllerButtonEvent.Pressed, function () {})]``<br/>``[animation.runImageAnimation()]``<br/>``[music.thump.play()]`` |
88
+ | Solution option | [Keep Going Project](https://makecode.com/_0kzFyAgPMa4A) |
89
+
90
+ ##### Game Mod Ideas
91
+
92
+ As students work on **Keep Going**, we encourage them to plan out ways they can dive even deeper using the full editor after opening their game using the [SAVE TO MY PROJECTS] button.
93
+
94
+ - What other environment could my plane explore? Neighborhoods? The desert?
95
+ - What could pop-up randomly instead of fires? Fish? Mice? Snowmen?
96
+ - What could you move around instead of an airplane? A boat? A magnifying glass?
97
+
98
+ ##### What's Next?
99
+
100
+ When students are finished with **Save the Forest!** consider graduating them to another map to work on skills further.
101
+
102
+ - [Try the Beginner Skillmap](/skillmap/beginner)
103
+ - [Try the Jungle Monkey Skillmap](/skillmap/jungle)
104
+ - [Try the Space Explorer Map](/skillmap/space)
105
+ - [Try our Time Flies Tutorial](/tutorials/froggy)
@@ -0,0 +1,101 @@
1
+ # About Shark Splash
2
+
3
+ **A page for Educators & Parents**
4
+
5
+ **Shark Splash** introduces a number of MakeCode Arcade game design elements.
6
+
7
+ In this set of activities, students will create a MakeCode Arcade game that involves protecting their shark from submarines while it hunts for food. This activity is intended for students who are new to MakeCode with little to moderate previous coding experience. Through step-by-step instructions, students will focus on game creation across 3 primary topics: destroying enemies, collecting food, and custom modification.
8
+
9
+ Designed for students between the ages of 10 & 16, this experience contains a total of 5 tutorials (approximating at least 32 minutes of instruction). At the end of the learning path, students receive a certificate of completion.
10
+
11
+ | | Minutes* | Game Type | Key Concepts |
12
+ | --------------- | -------- | --------- | ------------ |
13
+ | **Day 1** | | | |
14
+ | Set the Scene | 7 | Intro | movement, events, projectiles |
15
+ | Food not Friends | 7 | Collector | events, positioning, random numbers, movement |
16
+ | Eat Up! | 8 | Collector | events, destroying, game score |
17
+ | Under the Sea | 8 | Collector | loops, design, positioning, random numbers |
18
+ | Let's Get Animated! | 10+ | Design | art design, effects |
19
+
20
+
21
+ \* Minutes are approximate, based on time to follow instructions as written. Times do not include time spent on designing elements or re-aquainting with previously-written code. Providing extra time for creativity and debugging is encouraged.
22
+
23
+ ### Objectives
24
+
25
+ After completing Shark Splash, students will have gained exposure to multiple classic arcade game concepts using MakeCode Arcade.
26
+
27
+ Specifically, they will experience the following topics:
28
+
29
+ #### Computer Science Concepts
30
+
31
+ - Events
32
+ - Loops
33
+ - Variables
34
+
35
+ #### Game Design Concepts
36
+
37
+ - Movement
38
+ - Positioning
39
+ - Randomization
40
+ - Effects
41
+ - Game Score
42
+ - Velocity
43
+ - Art Design
44
+
45
+
46
+
47
+ #### 1. Set the Scene
48
+
49
+ | Activity | Set The Scene (7 min) |
50
+ |---|---|
51
+ | ![Set the Scene thumbnail](/static/skillmap/shark/shark1.gif) | Set up your laser-firing ocean shark. |
52
+ | Blocks used | ``[scene.setBackgroundColor(0)]``<br/>``[let mySprite = sprites.create(img`.`, SpriteKind.Player)]``<br/>``[controller.moveSprite(mySprite)]``<br/>``[let mySprite: Sprite = null; mySprite.setStayInScreen(true)]``<br>``[controller.A.onEvent(ControllerButtonEvent.Pressed, function () {})]``<br/>``[projectile = sprites.createProjectileFromSprite(img`.`, mySprite)]``|
53
+ | Solution option | [Set the Scene Project](https://makecode.com/_ghyiPCDsJLAC) |
54
+
55
+
56
+
57
+
58
+ #### 2. Food not Friends
59
+
60
+ | Activity | Food not Friends (7 min) |
61
+ |---|---|
62
+ | ![Food not Friends thumbnail](/static/skillmap/shark/shark2.gif) | Back to an enemy-free ocean, this tutorial will go over spawing some food for your shark. |
63
+ | Blocks used | ``[game.onUpdateInterval()]``<br/>``[myFood = sprites.create(img`.`, SpriteKind.Food)]``<br/>``[let myFood: Sprite = null; let mySprite: Sprite = null; myFood.setPosition(0 + mySprite.x, randint())]``<br/>``[let myFood: Sprite = null; myFood.vx = 0]``|
64
+ | Solution option | [Food not Friends Project](https://makecode.com/_dLJHiifhR2ev) |
65
+
66
+ #### 3. Eat Up!
67
+
68
+ | Activity | Eat Up! (8 min) |
69
+ |---|---|
70
+ | ![Eat Up! thumbnail](/static/skillmap/shark/shark3.gif) | This game builds off the last level. Animate and gamify your shark's consumption of fish. |
71
+ | Blocks used | ``[sprites.onOverlap(SpriteKind.Player, SpriteKind.Food, function (sprite, otherSprite) {})]``<br/>``[let otherSprite: Sprite = null; otherSprite.destroy(effects.disintegrate,)]``<br/>``[info.changeScoreBy()]``<br/>``[info.startCountdown()]``<br/>``[info.onCountdownEnd(function () {})]``<br/>``[game.over(true)]``|
72
+ | Solution option | [Eat Up! Project](https://makecode.com/_WM31H3Uur331) |
73
+
74
+ #### 4. Under the Sea
75
+
76
+ | Activity | Under the Sea (8 min) |
77
+ |---|---|
78
+ | ![Under the Sea thumbnail](/static/skillmap/shark/shark4.gif) | Building off the previous level, this level mixes design with automated generation to create a unique sea environment for your shark. |
79
+ | Blocks used | ``[scene.setBackgroundImage(img`.`)]``<br/>``[for (let index = 0; index < 10; index++) {}]``<br/>``[myDecor = sprites.create(img`.`,)]``<br/>``[let myDecor: Sprite = null; myDecor.setPosition(randint())]`` |
80
+ | Solution option | [Under the Sea Project](https://makecode.com/_2D9JL6Rm36yC) |
81
+
82
+
83
+ #### 5. Let's Get Animated!
84
+
85
+ | Activity | Let's Get Animated! (15+) |
86
+ |---|---|
87
+ | ![Let's Get Animated! thumbnail](/static/skillmap/shark/shark4a.gif) | Animate your sprites for a more life-like game! |
88
+ | Blocks used | _None_ |
89
+ | Solution option | N/A |
90
+
91
+
92
+
93
+ ##### Game Mod Ideas
94
+
95
+ After students work on "Let's Get Animated!", we encourage them to plan out how they want to modify this game to best suit their interests. Consider the following questions:
96
+
97
+ - What is an activity that I really like? How does that tell me who my hero should be?
98
+ - When I do this activity, what supplies do I need? Replace the fishy food with these supplies!
99
+ - What environment do I usually do this activity in? Replace the background with something similar!
100
+
101
+ Don't forget to save this activity to projects and keep building!
@@ -84,7 +84,7 @@ to **the end** of the
84
84
  ``||loops:on start||``
85
85
  container.
86
86
 
87
- _💡 Remember, the bubble on the left shows the icon of the toolbox category for the block you need._
87
+ _💡 Remember, the icon to the left of the instructions shows the same icon as the toolbox category for the block you need._
88
88
 
89
89
  - :paint brush: To choose your plane, click the empty grey box, then toggle to **My Assets** and choose your aircraft.
90
90
 
@@ -173,74 +173,6 @@ head to the next activity where you'll add the 🔥🔥🔥.
173
173
 
174
174
 
175
175
 
176
-
177
- ```package
178
- pxt-tilemaps=github:microsoft/pxt-tilemaps/
179
- pxt-text=github:microsoft/arcade-text
180
- arcade-premium-life=github:jwunderl/arcade-premium-life/
181
- pxt-characterAnimations=github:microsoft/arcade-character-animations/
182
- pxt-data=github:microsoft/arcade-sprite-data/
183
- pxt-story=github:microsoft/arcade-storytelling/
184
- arcade-sprite-util=github:jwunderl/arcade-sprite-util/
185
- pxt-status-bar=github:jwunderl/pxt-status-bar
186
- ```
187
-
188
-
189
- ```customts
190
-
191
- let statusbar = statusbars.create(82, 4, StatusBarKind.Health)
192
- statusbar.top = 12
193
- statusbar.left = 4
194
- statusbar.max = tiles.tilemapRows() * tiles.tilemapColumns()
195
- let statusLabel = textsprite.create("Healthy Forest", 0, 1)
196
- statusLabel.setFlag(SpriteFlag.RelativeToCamera, true)
197
- statusLabel.top = 2
198
- statusLabel.left = 4
199
- statusbar.setColor(7, 14)
200
- let fireLabel = textsprite.create("Fires:")
201
- fireLabel.right = 145
202
- fireLabel.top = 2
203
- fireLabel.setMaxFontHeight(4)
204
- fireLabel.setFlag(SpriteFlag.RelativeToCamera, true)
205
- statusLabel.setFlag(SpriteFlag.Invisible, true)
206
- statusbar.setFlag(SpriteFlag.Invisible, true)
207
- fireLabel.setFlag(SpriteFlag.Invisible, true)
208
- info.showScore(false)
209
-
210
-
211
-
212
- namespace animation {
213
- /*
214
- * Loops the passed frames on the sprite at the given interval whenever
215
- * the specified rule is true for that sprite.
216
- *
217
- * If more than one rule applies, the most specific rule will be used.
218
- * If multiple rules are equally specific, the currently executing rule
219
- * is favored (or one is chosen at random).
220
- *
221
- * @param sprite the sprite to animate
222
- * @param frames the images that make up that animation
223
- * @param frame Interval the amount of time to spend on each frame in milliseconds
224
- * @param rule the rule that decides when this animation will play
225
- */
226
- //% blockId=arcade_character_loop_frames2
227
- //% block="animate $sprite loop frames $frames interval (ms) $frameInterval when $rule"
228
- //% sprite.defl=mySprite
229
- //% frames.defl=Fire Plane Right
230
- //% sprite.shadow=variables_get
231
- //% frames.shadow=animation_editor
232
- //% frameInterval.shadow=timePicker
233
- //% rule.shadow=arcade_character_make_rule
234
- //% weight=100
235
- //% blockGap=8
236
- //% help=github:arcade-character-animations/docs/loop-character-animation
237
- export function loopFrames2(sprite: Sprite, frames: Image[], frameInterval: number, rule: number) {
238
- characterAnimations.loopFrames(sprite, frames, frameInterval, rule);
239
- }
240
- }
241
- ```
242
-
243
-
244
176
  ```assetjson
245
177
  {
246
178
  "README.md": " ",