pxt-arcade 1.7.2 → 1.7.6

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 (235) hide show
  1. package/built/common-sim.d.ts +2 -0
  2. package/built/common-sim.js +4 -0
  3. package/built/target.js +1795 -242
  4. package/built/target.json +1795 -242
  5. package/built/targetlight.json +5 -5
  6. package/built/theme.json +3 -2
  7. package/docs/gamejam/global-2021.html +459 -0
  8. package/docs/hardware.md +1 -1
  9. package/docs/hour-of-code/all.md +27 -0
  10. package/docs/hour-of-code/{educators.html → educators-2020.html} +25 -25
  11. package/docs/hour-of-code/educators-2021.html +625 -0
  12. package/docs/{hour-of-code.html → hour-of-code-2020.html} +37 -37
  13. package/docs/hour-of-code-2021.html +438 -183
  14. package/docs/hour-of-code-ref.json +3 -0
  15. package/docs/index-ref.json +1 -1
  16. package/docs/multipart-tutorials.md +0 -8
  17. package/docs/projects/SUMMARY.md +4 -3
  18. package/docs/recipes.md +0 -7
  19. package/docs/skillmap/clicker/clicker1.md +7 -7
  20. package/docs/skillmap/clicker/clicker2.md +9 -9
  21. package/docs/skillmap/clicker/clicker3.md +8 -8
  22. package/docs/skillmap/clicker/clicker4.md +8 -8
  23. package/docs/skillmap/clicker/clicker4a.md +7 -7
  24. package/docs/skillmap/clicker/clicker5.md +3 -3
  25. package/docs/skillmap/clicker-themed/clickert1.md +66 -38
  26. package/docs/skillmap/clicker-themed/clickert2.md +77 -58
  27. package/docs/skillmap/clicker-themed/clickert3.md +75 -55
  28. package/docs/skillmap/clicker-themed/clickert4.md +105 -118
  29. package/docs/skillmap/collector/collector1.md +11 -11
  30. package/docs/skillmap/collector/collector1a.md +8 -8
  31. package/docs/skillmap/collector/collector2.md +8 -8
  32. package/docs/skillmap/collector/collector3.md +8 -8
  33. package/docs/skillmap/collector/collector3a.md +7 -7
  34. package/docs/skillmap/collector/collector4.md +8 -8
  35. package/docs/skillmap/collector/collector5.md +2 -2
  36. package/docs/skillmap/collector-themed/collectort1.md +107 -88
  37. package/docs/skillmap/collector-themed/collectort2.md +109 -87
  38. package/docs/skillmap/collector-themed/collectort3.md +138 -115
  39. package/docs/skillmap/collector-themed/collectort4.md +130 -118
  40. package/docs/skillmap/collector-themed/collectort4old.md +23 -23
  41. package/docs/skillmap/collector-themed/collectort5.md +2 -2
  42. package/docs/skillmap/educator-info/forest-map-info.md +70 -21
  43. package/docs/skillmap/educator-info/pongo-map-info.md +55 -0
  44. package/docs/skillmap/educator-info/racer-map-info.md +105 -0
  45. package/docs/skillmap/educator-info/rockstar-map-info.md +1 -1
  46. package/docs/skillmap/educator-info/simple-shark-map-info.md +101 -0
  47. package/docs/skillmap/forest/forest1.md +8 -75
  48. package/docs/skillmap/forest/forest2.md +7 -67
  49. package/docs/skillmap/forest/forest3.md +3 -176
  50. package/docs/skillmap/forest/forest4.md +9 -337
  51. package/docs/skillmap/forest/forest5.md +5 -398
  52. package/docs/skillmap/forest/forest6.md +11 -407
  53. package/docs/skillmap/forest-old.md +92 -0
  54. package/docs/skillmap/forest.md +10 -10
  55. package/docs/skillmap/forest_new/forest1.md +191 -0
  56. package/docs/skillmap/forest_new/forest2.md +217 -0
  57. package/docs/skillmap/forest_new/forest3.md +333 -0
  58. package/docs/skillmap/forest_new/forest4.md +196 -0
  59. package/docs/skillmap/forest_new/forest5.md +291 -0
  60. package/docs/skillmap/forest_new/forest6.md +272 -0
  61. package/docs/skillmap/interface/activity1.md +41 -49
  62. package/docs/skillmap/jungle/jungle1.md +48 -28
  63. package/docs/skillmap/jungle/jungle2.md +50 -26
  64. package/docs/skillmap/jungle/jungle3.md +48 -27
  65. package/docs/skillmap/jungle/jungle4.md +76 -58
  66. package/docs/skillmap/jungle/jungle5.md +31 -25
  67. package/docs/skillmap/jungle/jungle6.md +34 -28
  68. package/docs/skillmap/jungle/jungle7.md +36 -24
  69. package/docs/skillmap/jungle/jungle8.md +27 -25
  70. package/docs/skillmap/jungle.md +7 -3
  71. package/docs/skillmap/long-shark.md +119 -0
  72. package/docs/skillmap/pongo/pongo1.md +256 -0
  73. package/docs/skillmap/pongo/pongo2.md +179 -0
  74. package/docs/skillmap/pongo/pongo3.md +177 -0
  75. package/docs/skillmap/pongo.md +59 -0
  76. package/docs/skillmap/racer.md +7 -7
  77. package/docs/skillmap/rockstar/rockstar1.md +32 -41
  78. package/docs/skillmap/rockstar/rockstar2.md +45 -27
  79. package/docs/skillmap/rockstar/rockstar3.md +45 -27
  80. package/docs/skillmap/rockstar.md +3 -1
  81. package/docs/skillmap/shark/shark1-simple.md +151 -0
  82. package/docs/skillmap/shark/shark2-simple.md +203 -0
  83. package/docs/skillmap/shark/shark3-simple.md +204 -0
  84. package/docs/skillmap/shark/shark4-simple.md +246 -0
  85. package/docs/skillmap/shark/shark4a-simple.md +244 -0
  86. package/docs/skillmap/shark.md +25 -58
  87. package/docs/skillmap/space/space1.md +63 -29
  88. package/docs/skillmap/space/space2.md +34 -25
  89. package/docs/skillmap/space/space3.md +86 -69
  90. package/docs/skillmap/space/space4.md +96 -65
  91. package/docs/skillmap/space/space4a.md +34 -25
  92. package/docs/skillmap/space/space5.md +81 -45
  93. package/docs/skillmap/space/space6.md +59 -81
  94. package/docs/skillmap/space.md +8 -5
  95. package/docs/skillmap/story/card.md +6 -6
  96. package/docs/skillmap/story/card2.md +6 -6
  97. package/docs/skillmap/story/story1.md +60 -175
  98. package/docs/skillmap/story/story2.md +89 -327
  99. package/docs/skillmap/story/story3.md +238 -228
  100. package/docs/skillmap/story/story4.md +23 -23
  101. package/docs/skillmap/zoo/zoo1.md +31 -16
  102. package/docs/skillmap/zoo/zoo2.md +45 -30
  103. package/docs/skillmap/zoo/zoo2a.md +51 -36
  104. package/docs/skillmap/zoo/zoo3.md +8 -7
  105. package/docs/skillmap/zoo/zoo4.md +61 -32
  106. package/docs/skillmap/zoo/zoo5.md +41 -31
  107. package/docs/skillmap/zoo.md +2 -2
  108. package/docs/skillmaps.md +20 -4
  109. package/docs/static/experiments/accessibleblocks.png +0 -0
  110. package/docs/static/experiments/blockserrorlist.png +0 -0
  111. package/docs/static/gamejam/jams/global-2021/assets/banner.png +0 -0
  112. package/docs/static/gamejam/jams/global-2021/info.json +10 -0
  113. package/docs/static/gamejam/jams/global-2021/rules.md +22 -0
  114. package/docs/static/gamejam/jams/global-2021/style.css +141 -0
  115. package/docs/static/gamejam/lib/gamejam.d.ts +1 -0
  116. package/docs/static/gamejam/lib/gamejam.js +34 -24
  117. package/docs/static/gamejam/lib/gamejam.ts +35 -24
  118. package/docs/static/hero-gallery/stream.png +0 -0
  119. package/docs/static/hour-of-code/{apple.png → 2020/apple.png} +0 -0
  120. package/docs/static/hour-of-code/{arcade.png → 2020/arcade.png} +0 -0
  121. package/docs/static/hour-of-code/{asphodel.png → 2020/asphodel.png} +0 -0
  122. package/docs/static/hour-of-code/{card.png → 2020/card.png} +0 -0
  123. package/docs/static/hour-of-code/{chase-the-pizza.png → 2020/chase-the-pizza.png} +0 -0
  124. package/docs/static/hour-of-code/{clovers.png → 2020/clovers.png} +0 -0
  125. package/docs/static/hour-of-code/{design.png → 2020/design.png} +0 -0
  126. package/docs/static/hour-of-code/{educators → 2020/educators}/asphodel-level1.png +0 -0
  127. package/docs/static/hour-of-code/{educators → 2020/educators}/asphodel-level4.png +0 -0
  128. package/docs/static/hour-of-code/{educators → 2020/educators}/asphodel-level6.png +0 -0
  129. package/docs/static/hour-of-code/{educators → 2020/educators}/asphodel-level7.png +0 -0
  130. package/docs/static/hour-of-code/{educators → 2020/educators}/asphodel-level9.png +0 -0
  131. package/docs/static/hour-of-code/{educators → 2020/educators}/clover-design.gif +0 -0
  132. package/docs/static/hour-of-code/{educators → 2020/educators}/shark-attack-tutorial.png +0 -0
  133. package/docs/static/hour-of-code/{galga.png → 2020/galga.png} +0 -0
  134. package/docs/static/hour-of-code/{lemon-leak.png → 2020/lemon-leak.png} +0 -0
  135. package/docs/static/hour-of-code/{micro-bit.png → 2020/micro-bit.png} +0 -0
  136. package/docs/static/hour-of-code/{minecraft.png → 2020/minecraft.png} +0 -0
  137. package/docs/static/hour-of-code/{nfl.png → 2020/nfl.png} +0 -0
  138. package/docs/static/hour-of-code/{ocean-jam.png → 2020/ocean-jam.png} +0 -0
  139. package/docs/static/hour-of-code/{pixel-background-primary.png → 2020/pixel-background-primary.png} +0 -0
  140. package/docs/static/hour-of-code/{pixel-background-secondary.png → 2020/pixel-background-secondary.png} +0 -0
  141. package/docs/static/hour-of-code/{shadowed-aside-frame.png → 2020/shadowed-aside-frame.png} +0 -0
  142. package/docs/static/hour-of-code/{shadowed-button-frame.png → 2020/shadowed-button-frame.png} +0 -0
  143. package/docs/static/hour-of-code/{shadowed-primary-frame.png → 2020/shadowed-primary-frame.png} +0 -0
  144. package/docs/static/hour-of-code/{shark-attack.png → 2020/shark-attack.png} +0 -0
  145. package/docs/static/hour-of-code/{simulator.gif → 2020/simulator.gif} +0 -0
  146. package/docs/static/hour-of-code/{simulator.png → 2020/simulator.png} +0 -0
  147. package/docs/static/hour-of-code/{styles.css → 2020/styles.css} +1 -1
  148. package/docs/static/hour-of-code/2021/Rowdies/OFL.txt +93 -0
  149. package/docs/static/hour-of-code/2021/Rowdies/Rowdies-Bold.ttf +0 -0
  150. package/docs/static/hour-of-code/2021/Rowdies/Rowdies-Regular.ttf +0 -0
  151. package/docs/static/hour-of-code/2021/beginner-skillmap.png +0 -0
  152. package/docs/static/hour-of-code/2021/favicon.png +0 -0
  153. package/docs/static/hour-of-code/2021/forest-skillmap-game.gif +0 -0
  154. package/docs/static/hour-of-code/2021/game-jam-hero.png +0 -0
  155. package/docs/static/hour-of-code/2021/hoc-2020.png +0 -0
  156. package/docs/static/hour-of-code/2021/hoc-card.png +0 -0
  157. package/docs/static/hour-of-code/2021/hoc-header-educators.png +0 -0
  158. package/docs/static/hour-of-code/2021/hoc-header-plane.gif +0 -0
  159. package/docs/static/hour-of-code/2021/hoc-header-scene.gif +0 -0
  160. package/docs/static/hour-of-code/2021/jungle-skillmap.png +0 -0
  161. package/docs/static/hour-of-code/2021/makecode-example.png +0 -0
  162. package/docs/static/hour-of-code/2021/microbit.png +0 -0
  163. package/docs/static/hour-of-code/2021/minecraft.png +0 -0
  164. package/docs/static/hour-of-code/2021/rockstar-skillmap.png +0 -0
  165. package/docs/static/hour-of-code/2021/styles.css +660 -62
  166. package/docs/static/logo.png +0 -0
  167. package/docs/static/skillmap/assets/my-assets-three.png +0 -0
  168. package/docs/static/skillmap/assets/my-assets.png +0 -0
  169. package/docs/static/skillmap/assets/sprite-from-container.gif +0 -0
  170. package/docs/static/skillmap/backgrounds/jungle-bg.png +0 -0
  171. package/docs/static/skillmap/backgrounds/jungle-map.png +0 -0
  172. package/docs/static/skillmap/backgrounds/rock-map.png +0 -0
  173. package/docs/static/skillmap/backgrounds/rockstar-card.gif +0 -0
  174. package/docs/static/skillmap/backgrounds/space-comp.png +0 -0
  175. package/docs/static/skillmap/backgrounds/space.png +0 -0
  176. package/docs/static/skillmap/certificates/forest-cert.pdf +0 -0
  177. package/docs/static/skillmap/certificates/forest-cert.png +0 -0
  178. package/docs/static/skillmap/certificates/jungle-cert.pdf +0 -0
  179. package/docs/static/skillmap/certificates/jungle-cert.png +0 -0
  180. package/docs/static/skillmap/certificates/rockstar-cert.pdf +0 -0
  181. package/docs/static/skillmap/certificates/rockstar-cert.png +0 -0
  182. package/docs/static/skillmap/certificates/shark-cert.pdf +0 -0
  183. package/docs/static/skillmap/certificates/shark-cert.png +0 -0
  184. package/docs/static/skillmap/certificates/space-cert.pdf +0 -0
  185. package/docs/static/skillmap/certificates/space-cert.png +0 -0
  186. package/docs/static/skillmap/forest/forest1.gif +0 -0
  187. package/docs/static/skillmap/forest/forest2.gif +0 -0
  188. package/docs/static/skillmap/forest/forest3.gif +0 -0
  189. package/docs/static/skillmap/forest/forest4.gif +0 -0
  190. package/docs/static/skillmap/forest/forest5.gif +0 -0
  191. package/docs/static/skillmap/forest/forest6.gif +0 -0
  192. package/docs/static/skillmap/pongo/pongo1.gif +0 -0
  193. package/docs/static/skillmap/pongo/pongo2gif +0 -0
  194. package/docs/static/skillmap/pongo/pongo3.gif +0 -0
  195. package/docs/static/skillmap/racer/racer1.gif +0 -0
  196. package/docs/static/skillmap/racer/racer2.gif +0 -0
  197. package/docs/static/skillmap/racer/racer3.gif +0 -0
  198. package/docs/static/skillmap/rockstar/rockstar1.gif +0 -0
  199. package/docs/static/skillmap/rockstar/rockstar2.gif +0 -0
  200. package/docs/static/skillmap/rockstar/rockstar3.gif +0 -0
  201. package/docs/static/skillmap/shark/shark1-simple.gif +0 -0
  202. package/docs/static/skillmap/shark/shark4a-simple.gif +0 -0
  203. package/docs/static/skillmap/zoo/overlaps-food-sprite.gif +0 -0
  204. package/docs/tutorials/barrel-dodger.md +4 -4
  205. package/docs/tutorials/collect-the-clovers.md +2 -2
  206. package/docs/tutorials/froggy.md +105 -90
  207. package/docs/tutorials/hundred.md +400 -0
  208. package/package.json +3 -3
  209. package/pxtarget.json +3 -2
  210. package/targetconfig.json +4 -1
  211. package/docs/recipes/wonder-woman-1984/01-maze.md +0 -291
  212. package/docs/recipes/wonder-woman-1984/02-artifact.md +0 -70
  213. package/docs/recipes/wonder-woman-1984/03-enemies.md +0 -65
  214. package/docs/skillmap/forest/forest9.md +0 -714
  215. package/docs/static/hour-of-code/2021/placeholder.png +0 -0
  216. package/docs/static/hour-of-code/ww-maze.png +0 -0
  217. package/docs/static/recipes/wonder-woman-1984/artifact-preview.png +0 -0
  218. package/docs/static/recipes/wonder-woman-1984/artifacts-location.gif +0 -0
  219. package/docs/static/recipes/wonder-woman-1984/draw-maze-backup.png +0 -0
  220. package/docs/static/recipes/wonder-woman-1984/draw-walls-backup.png +0 -0
  221. package/docs/static/recipes/wonder-woman-1984/end-position.png +0 -0
  222. package/docs/static/recipes/wonder-woman-1984/enemies-location.gif +0 -0
  223. package/docs/static/recipes/wonder-woman-1984/enemies-preview.png +0 -0
  224. package/docs/static/recipes/wonder-woman-1984/fill-maze.gif +0 -0
  225. package/docs/static/recipes/wonder-woman-1984/fill-walls.gif +0 -0
  226. package/docs/static/recipes/wonder-woman-1984/wonder-woman3.png +0 -0
  227. package/docs/static/recipes/wonder-woman-1984/ww-splash3.gif +0 -0
  228. package/docs/static/recipes/wonder-woman-1984/ww-splash3.mp4 +0 -0
  229. package/docs/static/ww84-background.png +0 -0
  230. package/docs/static/ww84-header.png +0 -0
  231. package/docs/ww84.html +0 -276
  232. package/sim/public/locales/zh-CN/bundled-strings.json +0 -1800
  233. package/sim/public/locales/zh-CN/target-strings.json +0 -13
  234. package/sim/public/locales/zh-TW/bundled-strings.json +0 -1903
  235. package/sim/public/locales/zh-TW/target-strings.json +0 -8
@@ -42,11 +42,12 @@ tiles.setTilemap(tilemap`level2`)
42
42
 
43
43
  ## 3. Set Your Map
44
44
 
45
- - :paint brush: Click the empty grey square in
46
- the
47
- ``||scene:set tilemap to []||``
45
+ - :paint brush: Click the empty grey square in
46
+ ``||scene:set tilemap to []||``
48
47
  and toggle to **My Assets** to select the tilemap called **level1**.
49
48
 
49
+ ![Toggle to My Assets](/static/skillmap/assets/my-assets.png "Resources have been provided for you!")
50
+
50
51
 
51
52
  ```blocks
52
53
  //@highlight
@@ -56,13 +57,13 @@ tiles.setTilemap(tilemap`level1`)
56
57
  ## 4. Take a Look!
57
58
 
58
59
  **Click the Game Window Tab (Above)**
59
- ![Click the Game Window tab to see your scene. ](/static/skillmap/assets/game-win-tab.png "Look what we're about to do today!")
60
+ ![Click the Game Window tab to see your scene. ](/static/skillmap/assets/game-win-tab.png "Don't forget to look at your game!")
60
61
 
61
62
  ---
62
63
 
63
64
  Open the game window to take a look at the scene you've just set up.
64
65
 
65
- When you're ready to continue, click back to the instructions tab for more!
66
+ When you're ready to continue, click into the instructions tab again!
66
67
 
67
68
 
68
69
 
@@ -73,7 +74,7 @@ When you're ready to continue, click back to the instructions tab for more!
73
74
  **We need a hero**
74
75
 
75
76
  Choose a [__*sprite*__](#sprote "a 2-D image that moves on the screen")
76
- for your aircraft that you will fly around the screen.
77
+ for your aircraft that will fly around the screen.
77
78
 
78
79
  ---
79
80
 
@@ -83,7 +84,7 @@ to **the end** of the
83
84
  ``||loops:on start||``
84
85
  container.
85
86
 
86
- _💡 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._
87
88
 
88
89
  - :paint brush: To choose your plane, click the empty grey box, then toggle to **My Assets** and choose your aircraft.
89
90
 
@@ -172,74 +173,6 @@ head to the next activity where you'll add the 🔥🔥🔥.
172
173
 
173
174
 
174
175
 
175
-
176
- ```package
177
- pxt-tilemaps=github:microsoft/pxt-tilemaps/
178
- pxt-text=github:microsoft/arcade-text
179
- arcade-premium-life=github:jwunderl/arcade-premium-life/
180
- pxt-characterAnimations=github:microsoft/arcade-character-animations/
181
- pxt-data=github:microsoft/arcade-sprite-data/
182
- pxt-story=github:microsoft/arcade-storytelling/
183
- arcade-sprite-util=github:jwunderl/arcade-sprite-util/
184
- pxt-status-bar=github:jwunderl/pxt-status-bar
185
- ```
186
-
187
-
188
- ```customts
189
-
190
- let statusbar = statusbars.create(82, 4, StatusBarKind.Health)
191
- statusbar.top = 12
192
- statusbar.left = 4
193
- statusbar.max = tiles.tilemapRows() * tiles.tilemapColumns()
194
- let statusLabel = textsprite.create("Healthy Forest", 0, 1)
195
- statusLabel.setFlag(SpriteFlag.RelativeToCamera, true)
196
- statusLabel.top = 2
197
- statusLabel.left = 4
198
- statusbar.setColor(7, 14)
199
- let fireLabel = textsprite.create("Fires:")
200
- fireLabel.right = 145
201
- fireLabel.top = 2
202
- fireLabel.setMaxFontHeight(4)
203
- fireLabel.setFlag(SpriteFlag.RelativeToCamera, true)
204
- statusLabel.setFlag(SpriteFlag.Invisible, true)
205
- statusbar.setFlag(SpriteFlag.Invisible, true)
206
- fireLabel.setFlag(SpriteFlag.Invisible, true)
207
- info.showScore(false)
208
-
209
-
210
-
211
- namespace animation {
212
- /*
213
- * Loops the passed frames on the sprite at the given interval whenever
214
- * the specified rule is true for that sprite.
215
- *
216
- * If more than one rule applies, the most specific rule will be used.
217
- * If multiple rules are equally specific, the currently executing rule
218
- * is favored (or one is chosen at random).
219
- *
220
- * @param sprite the sprite to animate
221
- * @param frames the images that make up that animation
222
- * @param frame Interval the amount of time to spend on each frame in milliseconds
223
- * @param rule the rule that decides when this animation will play
224
- */
225
- //% blockId=arcade_character_loop_frames2
226
- //% block="animate $sprite loop frames $frames interval (ms) $frameInterval when $rule"
227
- //% sprite.defl=mySprite
228
- //% frames.defl=Fire Plane Right
229
- //% sprite.shadow=variables_get
230
- //% frames.shadow=animation_editor
231
- //% frameInterval.shadow=timePicker
232
- //% rule.shadow=arcade_character_make_rule
233
- //% weight=100
234
- //% blockGap=8
235
- //% help=github:arcade-character-animations/docs/loop-character-animation
236
- export function loopFrames2(sprite: Sprite, frames: Image[], frameInterval: number, rule: number) {
237
- characterAnimations.loopFrames(sprite, frames, frameInterval, rule);
238
- }
239
- }
240
- ```
241
-
242
-
243
176
  ```assetjson
244
177
  {
245
178
  "README.md": " ",
@@ -38,7 +38,7 @@ container.
38
38
 
39
39
  - :paper plane: Add
40
40
  ``||variables:set [mySprite2] to sprite [ ] of kind [Player]||``
41
- to the end of the
41
+ to the empty
42
42
  ``||loops:repeat [4] times||``
43
43
  container.
44
44
 
@@ -133,7 +133,7 @@ for (let index = 0; index < 4; index++) {
133
133
 
134
134
 
135
135
 
136
- ## Try It
136
+ ## 6. Try It
137
137
 
138
138
  **🕹️ Test it out in the Game Window **
139
139
 
@@ -224,23 +224,14 @@ head to the next level and find out how to put the fires out!
224
224
 
225
225
 
226
226
 
227
- ```package
228
- pxt-tilemaps=github:microsoft/pxt-tilemaps/
229
- pxt-text=github:microsoft/arcade-text
230
- arcade-premium-life=github:jwunderl/arcade-premium-life/
231
- pxt-characterAnimations=github:microsoft/arcade-character-animations/
232
- pxt-data=github:microsoft/arcade-sprite-data/
233
- pxt-story=github:microsoft/arcade-storytelling/
234
- arcade-sprite-util=github:jwunderl/arcade-sprite-util/
235
- pxt-status-bar=github:jwunderl/pxt-status-bar
236
- ```
237
-
238
227
  ```template
239
228
  namespace SpriteKind {
229
+
230
+ export const Water = SpriteKind.create()
240
231
  export const Fire = SpriteKind.create()
241
232
  export const Burnt = SpriteKind.create()
242
- export const Water = SpriteKind.create()
243
233
  }
234
+
244
235
  tiles.setTilemap(tilemap`level1`)
245
236
  let mySprite = sprites.create(assets.image`Fire Plane Right`, SpriteKind.Player)
246
237
  controller.moveSprite(mySprite)
@@ -248,59 +239,8 @@ scene.cameraFollowSprite(mySprite)
248
239
 
249
240
  ```
250
241
 
251
- ```customts
252
-
253
- let statusbar = statusbars.create(82, 4, StatusBarKind.Health)
254
- statusbar.top = 12
255
- statusbar.left = 4
256
- statusbar.max = tiles.tilemapRows() * tiles.tilemapColumns()
257
- let statusLabel = textsprite.create("Healthy Forest", 0, 1)
258
- statusLabel.setFlag(SpriteFlag.RelativeToCamera, true)
259
- statusLabel.top = 2
260
- statusLabel.left = 4
261
- statusbar.setColor(7, 14)
262
- let fireLabel = textsprite.create("Fires:")
263
- fireLabel.right = 145
264
- fireLabel.top = 2
265
- fireLabel.setMaxFontHeight(4)
266
- fireLabel.setFlag(SpriteFlag.RelativeToCamera, true)
267
- statusLabel.setFlag(SpriteFlag.Invisible, true)
268
- statusbar.setFlag(SpriteFlag.Invisible, true)
269
- fireLabel.setFlag(SpriteFlag.Invisible, true)
270
- info.showScore(false)
271
-
272
-
273
-
274
-
275
- namespace animation {
276
- /*
277
- * Loops the passed frames on the sprite at the given interval whenever
278
- * the specified rule is true for that sprite.
279
- *
280
- * If more than one rule applies, the most specific rule will be used.
281
- * If multiple rules are equally specific, the currently executing rule
282
- * is favored (or one is chosen at random).
283
- *
284
- * @param sprite the sprite to animate
285
- * @param frames the images that make up that animation
286
- * @param frame Interval the amount of time to spend on each frame in milliseconds
287
- * @param rule the rule that decides when this animation will play
288
- */
289
- //% blockId=arcade_character_loop_frames2
290
- //% block="animate $sprite loop frames $frames interval (ms) $frameInterval when $rule"
291
- //% sprite.defl=mySprite
292
- //% frames.defl=Fire Plane Right
293
- //% sprite.shadow=variables_get
294
- //% frames.shadow=animation_editor
295
- //% frameInterval.shadow=timePicker
296
- //% rule.shadow=arcade_character_make_rule
297
- //% weight=100
298
- //% blockGap=8
299
- //% help=github:arcade-character-animations/docs/loop-character-animation
300
- export function loopFrames2(sprite: Sprite, frames: Image[], frameInterval: number, rule: number) {
301
- characterAnimations.loopFrames(sprite, frames, frameInterval, rule);
302
- }
303
- }
242
+ ```package
243
+ pxt-forest-special=github:kiki-lee/forest-special/
304
244
  ```
305
245
 
306
246
 
@@ -32,10 +32,10 @@ Let's add code that sprays water when you press the (A) button.
32
32
 
33
33
  - :game: Drag the
34
34
  ``||controller:on [A] button [pressed]||``
35
-
36
35
  container into an empty area in your workspace.
37
36
 
38
- - :mouse pointer: Change ``||controller:pressed||`` to ``||controller:repeat||`` to keep the water spraying as you hold the (A) button.
37
+ - :mouse pointer: Change ``||controller:pressed||`` to ``||controller:repeat||`` to keep the water spraying as you hold the (A) button.
38
+
39
39
  _💡 Find it too hard to keep (A) pressed? Try using the spacebar on your keyboard!_
40
40
 
41
41
 
@@ -233,24 +233,11 @@ keep moving through the skillmap so you can see how to make your fires spread.
233
233
 
234
234
 
235
235
 
236
-
237
236
  ```package
238
- pxt-tilemaps=github:microsoft/pxt-tilemaps/
239
- pxt-text=github:microsoft/arcade-text
240
- arcade-premium-life=github:jwunderl/arcade-premium-life/
241
- pxt-characterAnimations=github:microsoft/arcade-character-animations/
242
- pxt-data=github:microsoft/arcade-sprite-data/
243
- pxt-story=github:microsoft/arcade-storytelling/
244
- arcade-sprite-util=github:jwunderl/arcade-sprite-util/
245
- pxt-status-bar=github:jwunderl/pxt-status-bar
237
+ pxt-forest-special=github:kiki-lee/forest-special/
246
238
  ```
247
239
 
248
240
  ```template
249
- namespace SpriteKind {
250
- export const Water = SpriteKind.create()
251
- export const Fire = SpriteKind.create()
252
- export const Burnt = SpriteKind.create()
253
- }
254
241
 
255
242
  tiles.setTilemap(tilemap`level1`)
256
243
  let mySprite = sprites.create(assets.image`Fire Plane Right`, SpriteKind.Player)
@@ -271,166 +258,6 @@ sprites.onCreated(SpriteKind.Fire, function (sprite) {
271
258
 
272
259
 
273
260
 
274
- ```customts
275
-
276
-
277
- let spreadOptions: number[] = []
278
-
279
- let windSpeed = 5
280
- let tinder = 4
281
- let dryGrass = 5
282
- let spreadTimeBase = 2000
283
- let hoseDirection = 270
284
- let facing = 0
285
- let changeRate = 7
286
-
287
- let statusbar = statusbars.create(82, 4, StatusBarKind.Health)
288
- statusbar.top = 12
289
- statusbar.left = 4
290
- statusbar.max = tiles.tilemapRows() * tiles.tilemapColumns()
291
- statusbar.value = tiles.tilemapRows() * tiles.tilemapColumns()
292
-
293
- let statusLabel = textsprite.create("Healthy Forest", 0, 1)
294
- statusLabel.setFlag(SpriteFlag.RelativeToCamera, true)
295
- statusLabel.top = 2
296
- statusLabel.left = 4
297
- statusbar.setColor(7, 14)
298
- let fireLabel = textsprite.create("Fires:")
299
- fireLabel.right = 145
300
- fireLabel.top = 2
301
- fireLabel.setMaxFontHeight(4)
302
- fireLabel.setFlag(SpriteFlag.RelativeToCamera, true)
303
- statusLabel.setFlag(SpriteFlag.Invisible, true)
304
- statusbar.setFlag(SpriteFlag.Invisible, true)
305
- fireLabel.setFlag(SpriteFlag.Invisible, true)
306
- info.showScore(false)
307
-
308
- game.onUpdate(function () {
309
- spreadTimeBase = 4500 - (250 * windSpeed + 250 * dryGrass - 100 * tinder)
310
- })
311
-
312
-
313
-
314
-
315
- namespace animation {
316
- /*
317
- * Loops the passed frames on the sprite at the given interval whenever
318
- * the specified rule is true for that sprite.
319
- *
320
- * If more than one rule applies, the most specific rule will be used.
321
- * If multiple rules are equally specific, the currently executing rule
322
- * is favored (or one is chosen at random).
323
- *
324
- * @param sprite the sprite to animate
325
- * @param frames the images that make up that animation
326
- * @param frame Interval the amount of time to spend on each frame in milliseconds
327
- * @param rule the rule that decides when this animation will play
328
- */
329
- //% blockId=arcade_character_loop_frames2
330
- //% block="animate $sprite loop frames $frames interval (ms) $frameInterval when $rule"
331
- //% sprite.defl=mySprite
332
- //% frames.defl=Fire Plane Right
333
- //% sprite.shadow=variables_get
334
- //% frames.shadow=animation_editor
335
- //% frameInterval.shadow=timePicker
336
- //% rule.shadow=arcade_character_make_rule
337
- //% weight=100
338
- //% blockGap=8
339
- //% help=github:arcade-character-animations/docs/loop-character-animation
340
- export function loopFrames2(sprite: Sprite, frames: Image[], frameInterval: number, rule: number) {
341
- characterAnimations.loopFrames(sprite, frames, frameInterval, rule);
342
- }
343
- }
344
-
345
-
346
- namespace sprites {
347
- /*
348
- * Set how many "lives" a sprite has
349
- */
350
- //% block="set strength of $thisSprite=variables_get(mySprite) to $num"
351
- //% num.defl=10
352
- export function set_flame_strength (thisSprite: Sprite, num: number) {
353
- sprites.setDataNumber(thisSprite, "life", num)
354
- sprites.setDataNumber(thisSprite, "spreadTime", spreadTimeBase + 1000)
355
- }
356
-
357
-
358
- /*
359
- * Add or subtract "lives" from a sprite
360
- */
361
- //% block="change strength of $thisSprite=variables_get(mySprite) by $num"
362
- //% num.defl=-1
363
- export function change_flame_strength_by (thisSprite: Sprite, num: number) {
364
- sprites.changeDataNumberBy(thisSprite, "life", num)
365
- for (let value of sprites.allOfKind(SpriteKind.Fire)) {
366
- if (sprites.readDataNumber(value, "life") <= 0) {
367
- effects.clearParticles(value)
368
- value.destroy()
369
- }
370
- }
371
- }
372
-
373
- /*
374
- * Choose a sprite to "spray" an image (in sprite form.)
375
- */
376
- //% block="spray from $thisSprite=variables_get(mySprite) using $img=screen_image_picker"
377
- //% img.defl=water
378
- export function spray (thisSprite: Sprite, img: Image) {
379
-
380
- if (controller.up.isPressed()) {
381
- if (controller.left.isPressed()) {
382
- facing = 225
383
- } else if (controller.right.isPressed()) {
384
- facing = 315
385
- } else if (controller.down.isPressed()) {
386
-
387
- } else {
388
- facing = 270
389
- }
390
- } else if (controller.left.isPressed()) {
391
- if (controller.right.isPressed()) {
392
-
393
- } else if (controller.down.isPressed()) {
394
- facing = 135
395
- } else {
396
- facing = 180
397
- }
398
- } else if (controller.right.isPressed()) {
399
- if (controller.down.isPressed()) {
400
- facing = 45
401
- } else {
402
- facing = 0
403
- }
404
- } else if (controller.down.isPressed()) {
405
- facing = 90
406
- }
407
-
408
- if (Math.abs(facing - hoseDirection) < 180) {
409
- if (facing < hoseDirection) {
410
- hoseDirection += 0 - changeRate
411
- } else {
412
- hoseDirection += changeRate
413
- }
414
- } else{
415
- if (facing < hoseDirection) {
416
- hoseDirection += changeRate
417
- } else {
418
- hoseDirection += 0 - changeRate
419
- }
420
- if (hoseDirection < 0) {
421
- hoseDirection += 360
422
- } else if (hoseDirection > 360) {
423
- hoseDirection += -360
424
- }
425
- hoseDirection = hoseDirection % 360
426
- }
427
- let waterProj = sprites.createProjectileFromSprite(img, thisSprite, 150 * Math.cos(spriteutils.degreesToRadians(hoseDirection)), 150 * Math.sin(spriteutils.degreesToRadians(hoseDirection)))
428
- waterProj.setKind(SpriteKind.Water)
429
- }
430
- }
431
- ```
432
-
433
-
434
261
  ```assetjson
435
262
  {
436
263
  "README.md": " ",