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.
Files changed (227) hide show
  1. package/built/common-sim.d.ts +2 -0
  2. package/built/common-sim.js +4 -0
  3. package/built/target.js +1788 -236
  4. package/built/target.json +1788 -236
  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/hour-of-code/all.md +27 -0
  9. package/docs/hour-of-code/{educators.html → educators-2020.html} +25 -25
  10. package/docs/hour-of-code/educators-2021.html +625 -0
  11. package/docs/{hour-of-code.html → hour-of-code-2020.html} +37 -37
  12. package/docs/hour-of-code-2021.html +438 -183
  13. package/docs/hour-of-code-ref.json +3 -0
  14. package/docs/index-ref.json +1 -1
  15. package/docs/multipart-tutorials.md +0 -8
  16. package/docs/projects/SUMMARY.md +3 -2
  17. package/docs/recipes.md +0 -7
  18. package/docs/skillmap/clicker/clicker1.md +7 -7
  19. package/docs/skillmap/clicker/clicker2.md +9 -9
  20. package/docs/skillmap/clicker/clicker3.md +8 -8
  21. package/docs/skillmap/clicker/clicker4.md +8 -8
  22. package/docs/skillmap/clicker/clicker4a.md +7 -7
  23. package/docs/skillmap/clicker/clicker5.md +3 -3
  24. package/docs/skillmap/clicker-themed/clickert1.md +66 -38
  25. package/docs/skillmap/clicker-themed/clickert2.md +77 -58
  26. package/docs/skillmap/clicker-themed/clickert3.md +75 -55
  27. package/docs/skillmap/clicker-themed/clickert4.md +105 -118
  28. package/docs/skillmap/collector/collector1.md +11 -11
  29. package/docs/skillmap/collector/collector1a.md +8 -8
  30. package/docs/skillmap/collector/collector2.md +8 -8
  31. package/docs/skillmap/collector/collector3.md +8 -8
  32. package/docs/skillmap/collector/collector3a.md +7 -7
  33. package/docs/skillmap/collector/collector4.md +8 -8
  34. package/docs/skillmap/collector/collector5.md +2 -2
  35. package/docs/skillmap/collector-themed/collectort1.md +107 -88
  36. package/docs/skillmap/collector-themed/collectort2.md +109 -87
  37. package/docs/skillmap/collector-themed/collectort3.md +138 -115
  38. package/docs/skillmap/collector-themed/collectort4.md +130 -118
  39. package/docs/skillmap/collector-themed/collectort4old.md +23 -23
  40. package/docs/skillmap/collector-themed/collectort5.md +2 -2
  41. package/docs/skillmap/educator-info/forest-map-info.md +34 -25
  42. package/docs/skillmap/educator-info/pongo-map-info.md +55 -0
  43. package/docs/skillmap/educator-info/racer-map-info.md +105 -0
  44. package/docs/skillmap/educator-info/rockstar-map-info.md +1 -1
  45. package/docs/skillmap/educator-info/simple-shark-map-info.md +101 -0
  46. package/docs/skillmap/forest/forest1.md +1 -69
  47. package/docs/skillmap/forest/forest2.md +5 -65
  48. package/docs/skillmap/forest/forest3.md +1 -174
  49. package/docs/skillmap/forest/forest4.md +2 -336
  50. package/docs/skillmap/forest/forest5.md +1 -396
  51. package/docs/skillmap/forest/forest6.md +6 -372
  52. package/docs/skillmap/forest-old.md +92 -0
  53. package/docs/skillmap/forest.md +9 -9
  54. package/docs/skillmap/forest_new/forest1.md +191 -0
  55. package/docs/skillmap/forest_new/forest2.md +217 -0
  56. package/docs/skillmap/forest_new/forest3.md +333 -0
  57. package/docs/skillmap/forest_new/forest4.md +196 -0
  58. package/docs/skillmap/forest_new/forest5.md +291 -0
  59. package/docs/skillmap/forest_new/forest6.md +272 -0
  60. package/docs/skillmap/interface/activity1.md +41 -49
  61. package/docs/skillmap/jungle/jungle1.md +48 -28
  62. package/docs/skillmap/jungle/jungle2.md +50 -26
  63. package/docs/skillmap/jungle/jungle3.md +48 -27
  64. package/docs/skillmap/jungle/jungle4.md +76 -58
  65. package/docs/skillmap/jungle/jungle5.md +31 -25
  66. package/docs/skillmap/jungle/jungle6.md +34 -28
  67. package/docs/skillmap/jungle/jungle7.md +36 -24
  68. package/docs/skillmap/jungle/jungle8.md +27 -25
  69. package/docs/skillmap/jungle.md +7 -3
  70. package/docs/skillmap/long-shark.md +119 -0
  71. package/docs/skillmap/pongo/pongo1.md +256 -0
  72. package/docs/skillmap/pongo/pongo2.md +179 -0
  73. package/docs/skillmap/pongo/pongo3.md +177 -0
  74. package/docs/skillmap/pongo.md +59 -0
  75. package/docs/skillmap/racer.md +7 -7
  76. package/docs/skillmap/rockstar/rockstar1.md +32 -41
  77. package/docs/skillmap/rockstar/rockstar2.md +45 -27
  78. package/docs/skillmap/rockstar/rockstar3.md +45 -27
  79. package/docs/skillmap/rockstar.md +3 -1
  80. package/docs/skillmap/shark/shark1-simple.md +151 -0
  81. package/docs/skillmap/shark/shark2-simple.md +203 -0
  82. package/docs/skillmap/shark/shark3-simple.md +204 -0
  83. package/docs/skillmap/shark/shark4-simple.md +246 -0
  84. package/docs/skillmap/shark/shark4a-simple.md +244 -0
  85. package/docs/skillmap/shark.md +25 -58
  86. package/docs/skillmap/space/space1.md +63 -29
  87. package/docs/skillmap/space/space2.md +34 -25
  88. package/docs/skillmap/space/space3.md +86 -69
  89. package/docs/skillmap/space/space4.md +96 -65
  90. package/docs/skillmap/space/space4a.md +34 -25
  91. package/docs/skillmap/space/space5.md +81 -45
  92. package/docs/skillmap/space/space6.md +59 -81
  93. package/docs/skillmap/space.md +8 -5
  94. package/docs/skillmap/story/card.md +6 -6
  95. package/docs/skillmap/story/card2.md +6 -6
  96. package/docs/skillmap/story/story1.md +60 -175
  97. package/docs/skillmap/story/story2.md +89 -327
  98. package/docs/skillmap/story/story3.md +238 -228
  99. package/docs/skillmap/story/story4.md +23 -23
  100. package/docs/skillmap/zoo/zoo1.md +31 -16
  101. package/docs/skillmap/zoo/zoo2.md +45 -30
  102. package/docs/skillmap/zoo/zoo2a.md +51 -36
  103. package/docs/skillmap/zoo/zoo3.md +8 -7
  104. package/docs/skillmap/zoo/zoo4.md +61 -32
  105. package/docs/skillmap/zoo/zoo5.md +41 -31
  106. package/docs/skillmap/zoo.md +2 -2
  107. package/docs/skillmaps.md +20 -4
  108. package/docs/static/experiments/accessibleblocks.png +0 -0
  109. package/docs/static/experiments/blockserrorlist.png +0 -0
  110. package/docs/static/gamejam/jams/global-2021/assets/banner.png +0 -0
  111. package/docs/static/gamejam/jams/global-2021/info.json +10 -0
  112. package/docs/static/gamejam/jams/global-2021/rules.md +22 -0
  113. package/docs/static/gamejam/jams/global-2021/style.css +141 -0
  114. package/docs/static/gamejam/lib/gamejam.d.ts +1 -0
  115. package/docs/static/gamejam/lib/gamejam.js +34 -24
  116. package/docs/static/gamejam/lib/gamejam.ts +35 -24
  117. package/docs/static/hero-gallery/stream.png +0 -0
  118. package/docs/static/hour-of-code/{apple.png → 2020/apple.png} +0 -0
  119. package/docs/static/hour-of-code/{arcade.png → 2020/arcade.png} +0 -0
  120. package/docs/static/hour-of-code/{asphodel.png → 2020/asphodel.png} +0 -0
  121. package/docs/static/hour-of-code/{card.png → 2020/card.png} +0 -0
  122. package/docs/static/hour-of-code/{chase-the-pizza.png → 2020/chase-the-pizza.png} +0 -0
  123. package/docs/static/hour-of-code/{clovers.png → 2020/clovers.png} +0 -0
  124. package/docs/static/hour-of-code/{design.png → 2020/design.png} +0 -0
  125. package/docs/static/hour-of-code/{educators → 2020/educators}/asphodel-level1.png +0 -0
  126. package/docs/static/hour-of-code/{educators → 2020/educators}/asphodel-level4.png +0 -0
  127. package/docs/static/hour-of-code/{educators → 2020/educators}/asphodel-level6.png +0 -0
  128. package/docs/static/hour-of-code/{educators → 2020/educators}/asphodel-level7.png +0 -0
  129. package/docs/static/hour-of-code/{educators → 2020/educators}/asphodel-level9.png +0 -0
  130. package/docs/static/hour-of-code/{educators → 2020/educators}/clover-design.gif +0 -0
  131. package/docs/static/hour-of-code/{educators → 2020/educators}/shark-attack-tutorial.png +0 -0
  132. package/docs/static/hour-of-code/{galga.png → 2020/galga.png} +0 -0
  133. package/docs/static/hour-of-code/{lemon-leak.png → 2020/lemon-leak.png} +0 -0
  134. package/docs/static/hour-of-code/{micro-bit.png → 2020/micro-bit.png} +0 -0
  135. package/docs/static/hour-of-code/{minecraft.png → 2020/minecraft.png} +0 -0
  136. package/docs/static/hour-of-code/{nfl.png → 2020/nfl.png} +0 -0
  137. package/docs/static/hour-of-code/{ocean-jam.png → 2020/ocean-jam.png} +0 -0
  138. package/docs/static/hour-of-code/{pixel-background-primary.png → 2020/pixel-background-primary.png} +0 -0
  139. package/docs/static/hour-of-code/{pixel-background-secondary.png → 2020/pixel-background-secondary.png} +0 -0
  140. package/docs/static/hour-of-code/{shadowed-aside-frame.png → 2020/shadowed-aside-frame.png} +0 -0
  141. package/docs/static/hour-of-code/{shadowed-button-frame.png → 2020/shadowed-button-frame.png} +0 -0
  142. package/docs/static/hour-of-code/{shadowed-primary-frame.png → 2020/shadowed-primary-frame.png} +0 -0
  143. package/docs/static/hour-of-code/{shark-attack.png → 2020/shark-attack.png} +0 -0
  144. package/docs/static/hour-of-code/{simulator.gif → 2020/simulator.gif} +0 -0
  145. package/docs/static/hour-of-code/{simulator.png → 2020/simulator.png} +0 -0
  146. package/docs/static/hour-of-code/{styles.css → 2020/styles.css} +1 -1
  147. package/docs/static/hour-of-code/2021/Rowdies/OFL.txt +93 -0
  148. package/docs/static/hour-of-code/2021/Rowdies/Rowdies-Bold.ttf +0 -0
  149. package/docs/static/hour-of-code/2021/Rowdies/Rowdies-Regular.ttf +0 -0
  150. package/docs/static/hour-of-code/2021/beginner-skillmap.png +0 -0
  151. package/docs/static/hour-of-code/2021/favicon.png +0 -0
  152. package/docs/static/hour-of-code/2021/forest-skillmap-game.gif +0 -0
  153. package/docs/static/hour-of-code/2021/game-jam-hero.png +0 -0
  154. package/docs/static/hour-of-code/2021/hoc-2020.png +0 -0
  155. package/docs/static/hour-of-code/2021/hoc-card.png +0 -0
  156. package/docs/static/hour-of-code/2021/hoc-header-educators.png +0 -0
  157. package/docs/static/hour-of-code/2021/hoc-header-plane.gif +0 -0
  158. package/docs/static/hour-of-code/2021/hoc-header-scene.gif +0 -0
  159. package/docs/static/hour-of-code/2021/jungle-skillmap.png +0 -0
  160. package/docs/static/hour-of-code/2021/makecode-example.png +0 -0
  161. package/docs/static/hour-of-code/2021/microbit.png +0 -0
  162. package/docs/static/hour-of-code/2021/minecraft.png +0 -0
  163. package/docs/static/hour-of-code/2021/rockstar-skillmap.png +0 -0
  164. package/docs/static/hour-of-code/2021/styles.css +660 -62
  165. package/docs/static/logo.png +0 -0
  166. package/docs/static/skillmap/assets/my-assets-three.png +0 -0
  167. package/docs/static/skillmap/assets/sprite-from-container.gif +0 -0
  168. package/docs/static/skillmap/backgrounds/jungle-bg.png +0 -0
  169. package/docs/static/skillmap/backgrounds/jungle-map.png +0 -0
  170. package/docs/static/skillmap/backgrounds/rock-map.png +0 -0
  171. package/docs/static/skillmap/backgrounds/rockstar-card.gif +0 -0
  172. package/docs/static/skillmap/backgrounds/space-comp.png +0 -0
  173. package/docs/static/skillmap/backgrounds/space.png +0 -0
  174. package/docs/static/skillmap/certificates/forest-cert.pdf +0 -0
  175. package/docs/static/skillmap/certificates/forest-cert.png +0 -0
  176. package/docs/static/skillmap/certificates/jungle-cert.pdf +0 -0
  177. package/docs/static/skillmap/certificates/jungle-cert.png +0 -0
  178. package/docs/static/skillmap/certificates/rockstar-cert.pdf +0 -0
  179. package/docs/static/skillmap/certificates/rockstar-cert.png +0 -0
  180. package/docs/static/skillmap/certificates/shark-cert.pdf +0 -0
  181. package/docs/static/skillmap/certificates/shark-cert.png +0 -0
  182. package/docs/static/skillmap/certificates/space-cert.pdf +0 -0
  183. package/docs/static/skillmap/certificates/space-cert.png +0 -0
  184. package/docs/static/skillmap/pongo/pongo1.gif +0 -0
  185. package/docs/static/skillmap/pongo/pongo2gif +0 -0
  186. package/docs/static/skillmap/pongo/pongo3.gif +0 -0
  187. package/docs/static/skillmap/racer/racer1.gif +0 -0
  188. package/docs/static/skillmap/racer/racer2.gif +0 -0
  189. package/docs/static/skillmap/racer/racer3.gif +0 -0
  190. package/docs/static/skillmap/rockstar/rockstar1.gif +0 -0
  191. package/docs/static/skillmap/rockstar/rockstar2.gif +0 -0
  192. package/docs/static/skillmap/rockstar/rockstar3.gif +0 -0
  193. package/docs/static/skillmap/shark/shark1-simple.gif +0 -0
  194. package/docs/static/skillmap/shark/shark4a-simple.gif +0 -0
  195. package/docs/static/skillmap/zoo/overlaps-food-sprite.gif +0 -0
  196. package/docs/tutorials/barrel-dodger.md +4 -4
  197. package/docs/tutorials/collect-the-clovers.md +2 -2
  198. package/docs/tutorials/froggy.md +105 -90
  199. package/docs/tutorials/hundred.md +400 -0
  200. package/package.json +3 -3
  201. package/pxtarget.json +3 -2
  202. package/targetconfig.json +4 -1
  203. package/docs/recipes/wonder-woman-1984/01-maze.md +0 -291
  204. package/docs/recipes/wonder-woman-1984/02-artifact.md +0 -70
  205. package/docs/recipes/wonder-woman-1984/03-enemies.md +0 -65
  206. package/docs/skillmap/forest/forest9.md +0 -714
  207. package/docs/static/hour-of-code/2021/placeholder.png +0 -0
  208. package/docs/static/hour-of-code/ww-maze.png +0 -0
  209. package/docs/static/recipes/wonder-woman-1984/artifact-preview.png +0 -0
  210. package/docs/static/recipes/wonder-woman-1984/artifacts-location.gif +0 -0
  211. package/docs/static/recipes/wonder-woman-1984/draw-maze-backup.png +0 -0
  212. package/docs/static/recipes/wonder-woman-1984/draw-walls-backup.png +0 -0
  213. package/docs/static/recipes/wonder-woman-1984/end-position.png +0 -0
  214. package/docs/static/recipes/wonder-woman-1984/enemies-location.gif +0 -0
  215. package/docs/static/recipes/wonder-woman-1984/enemies-preview.png +0 -0
  216. package/docs/static/recipes/wonder-woman-1984/fill-maze.gif +0 -0
  217. package/docs/static/recipes/wonder-woman-1984/fill-walls.gif +0 -0
  218. package/docs/static/recipes/wonder-woman-1984/wonder-woman3.png +0 -0
  219. package/docs/static/recipes/wonder-woman-1984/ww-splash3.gif +0 -0
  220. package/docs/static/recipes/wonder-woman-1984/ww-splash3.mp4 +0 -0
  221. package/docs/static/ww84-background.png +0 -0
  222. package/docs/static/ww84-header.png +0 -0
  223. package/docs/ww84.html +0 -276
  224. package/sim/public/locales/zh-CN/bundled-strings.json +0 -1800
  225. package/sim/public/locales/zh-CN/target-strings.json +0 -13
  226. package/sim/public/locales/zh-TW/bundled-strings.json +0 -1903
  227. package/sim/public/locales/zh-TW/target-strings.json +0 -8
@@ -1,6 +1,6 @@
1
1
  # Feed the Panda
2
2
 
3
- ## Step 1
3
+ ## 1. Feed the Panda
4
4
 
5
5
  **🎋 It's feeding time! 🎋**
6
6
 
@@ -9,21 +9,27 @@ write some code to feed it some tasty bamboo.
9
9
 
10
10
  ---
11
11
 
12
- Take a look at the code in your workspace.
13
- It should look familiar. Can you remember what it does?
12
+ - :binoculars: Take a look at the code in your workspace.
13
+ It should look familiar.
14
14
 
15
+ Can you remember what each block does?
15
16
 
16
- ## Step 2
17
+
18
+ ## 2. Get Bamboo
17
19
 
18
20
  **First, you'll need to grab some bamboo.**
19
21
 
20
22
  ---
21
23
 
22
- From ``||controller:Controller||``, drag an ``||controller:on [A] button pressed ||`` container into the workspace.
24
+ - :game: From ``||controller:Controller||``, drag an
25
+ ``||controller:on [A] button pressed ||``
26
+ container into the workspace.
23
27
 
24
- Snap a new ``||variables:set [mySprite] to sprite [ ] of kind [Player]||`` block inside it.
28
+ - :paper plane: Snap a new
29
+ ``||variables:set [mySprite] to sprite [ ] of kind [Player]||``
30
+ block inside it.
25
31
 
26
- Make sure to change the kind to ``||sprites:Food||``, then click on
32
+ - :mouse pointer: Make sure to change the kind to ``||sprites:Food||``, then click on
27
33
  the grey square and draw a delicious piece of bamboo in the **image editor**.
28
34
 
29
35
  ```blocks
@@ -50,7 +56,7 @@ controller.A.onEvent(ControllerButtonEvent.Pressed, function () {
50
56
  ```
51
57
 
52
58
 
53
- ## Step 3 @showdialog
59
+ ## 3. Try It! @showdialog
54
60
 
55
61
  **Press the Ⓐ button**
56
62
 
@@ -59,19 +65,23 @@ controller.A.onEvent(ControllerButtonEvent.Pressed, function () {
59
65
  Look at your game screen to see what happens.
60
66
 
61
67
 
62
- ## Step 4
68
+ ## 4. Random Bamboo
63
69
 
64
70
  **Time to scatter the bamboo around the panda enclosure!**
65
71
 
66
72
  ---
67
73
 
68
- From ``||sprites:Sprites||``, get a ``||sprites:set [mySprite] position to x [0] y [0]||``
69
- block and place it at the **end** of the ``||controller:on [A] button pressed ||`` container.
74
+ - :paper plane: From ``||sprites:Sprites||``, get a
75
+ ``||sprites:set [mySprite] position to x [0] y [0]||``
76
+ block and place it at the **end** of the
77
+ ``||controller:on [A] button pressed ||``
78
+ container.
70
79
 
71
- From ``||math:Math||``, grab two ``||math:pick random [0] to [10]||`` value blocks and
72
- use them to replace the **x** and **y** values in the new **set position** block.
80
+ - :calculator: From ``||math:Math||``, grab two
81
+ ``||math:pick random [0] to [10]||``
82
+ value blocks and use them to replace the **x** and **y** values in the new **set position** block.
73
83
 
74
- Try some different numbers to see how they affect the way the bamboo is **randomly** placed on the screen.
84
+ - :mouse pointer: Try some different numbers to see how they affect the way the bamboo is **randomly** placed on the screen.
75
85
 
76
86
 
77
87
  ```blocks
@@ -100,23 +110,23 @@ controller.A.onEvent(ControllerButtonEvent.Pressed, function () {
100
110
  ```
101
111
 
102
112
 
103
- ## Step 5
113
+ ## 5. Panda Food
104
114
 
105
115
  **Press the Ⓐ button (or click the space bar)** to place food for the panda.
106
116
 
107
117
 
108
- ## Step 6
118
+ ## 6. Help the Panda
109
119
 
110
120
  **Aw, the panda isn't very good at finding the food...let's help it out!**
111
121
 
112
122
  ---
113
123
 
114
- Open ``||sprites:Sprites||`` and drag a
115
- ``||sprites:set [myEnemy] follow [mySprite]||`` block out into the **end**
124
+ - :paper plane: Open ``||sprites:Sprites||`` and drag a
125
+ ``||sprites:set [myEnemy] follow [mySprite]||``
126
+ block out into the **end**
116
127
  of the ``||controller:on A button pressed||`` container.
117
128
 
118
- Change the first variable value to ``||variables:panda||``, then try your code
119
- on the game screen.
129
+ - :mouse pointer: Change the first variable value to ``||variables:panda||``, then try your code on the game screen.
120
130
 
121
131
  ```blocks
122
132
  let panda:Sprite = null;
@@ -145,7 +155,7 @@ controller.A.onEvent(ControllerButtonEvent.Pressed, function () {
145
155
  })
146
156
  ```
147
157
 
148
- ## Step 7
158
+ ## 7. Good Eats
149
159
 
150
160
  **😋 Munch time 😋**
151
161
 
@@ -154,10 +164,11 @@ panda **overlaps** the bamboo.
154
164
 
155
165
  ---
156
166
 
157
- From ``||sprites:Sprites||``, pull out an ``||sprites:on [sprite] of kind [Player] overlaps [othersprite] of kind [Player]||``
167
+ - :paper plane: From ``||sprites:Sprites||``, pull out an
168
+ ``||sprites:on [sprite] of kind [Player] overlaps [othersprite] of kind [Player]||``
158
169
  container and drop it in the workspace.
159
170
 
160
- Click on the second ``||sprites:Player||`` dropdown menu
171
+ - :mouse pointer: Click on the second ``||sprites:Player||`` dropdown menu
161
172
  and select **Food**.
162
173
 
163
174
  ```blocks
@@ -166,17 +177,34 @@ sprites.onOverlap(SpriteKind.Player, SpriteKind.Food, function (sprite, otherSpr
166
177
  })
167
178
  ```
168
179
 
169
- ## Step 8
180
+ ## 8. Destroy the Sprite
170
181
 
171
- Next, grab a ``||sprites:destroy [mySprite] ⊕||`` block from ``||sprites:Sprites||``
182
+ - :paper plane: Next, grab a
183
+ ``||sprites:destroy [mySprite] ⊕||``
184
+ block from ``||sprites:Sprites||``
172
185
  and put it in the **on overlaps** container.
173
186
 
174
- See the oblong value block in the header of the **on overlaps** container called
175
- ``||variables:otherSprite||``?
176
- Grab it and drag it down to replace **mySprite** in the **destroy** block.
187
+ - :mouse pointer: Grab ``||variables:otherSprite||`` from the title of the **overlaps** container and drag it down to replace ``||variables:mySprite||`` in the **destroy** block.
188
+
189
+ ![An example of someone dragging the otherSprite variable out of the container and into the other block](static/skillmap/zoo/overlaps-food-sprite.gif "So that's how you do that!")
190
+
191
+ ```blocks
192
+
193
+ }
194
+ sprites.onOverlap(SpriteKind.Player, SpriteKind.Food, function (sprite, otherSprite) {
195
+ //@highlight
196
+ otherSprite.destroy()
197
+ })
198
+ ```
199
+
177
200
 
178
- Press the plus icon on the block to add an effect that will play when the
179
- panda starts munching. Both **spray** and **disintegrate** work well here!
201
+ ## 9. Special Effects
202
+
203
+ - :mouse pointer: Press the plus icon on the
204
+ ``||sprites:destroy [otherSprite] ⊕||``
205
+ block to add an effect that will play when the panda starts munching.
206
+
207
+ _💡 Both **spray** and **disintegrate** work well here!_
180
208
 
181
209
 
182
210
 
@@ -189,13 +217,14 @@ sprites.onOverlap(SpriteKind.Player, SpriteKind.Food, function (sprite, otherSpr
189
217
  })
190
218
  ```
191
219
 
192
- ## step 9
220
+
221
+ ## 10. Full Panda
193
222
 
194
223
  **Way to go!**
195
224
 
196
225
  That panda's getting a full meal!
197
226
 
198
- Give your game a try using the game screen, and when you're done,
227
+ Give your game a try using the game screen, and when you're finished,
199
228
  click **Done** to continue your zoo journey.
200
229
 
201
230
 
@@ -1,6 +1,6 @@
1
1
  # Quail Hatching
2
2
 
3
- ## Step 1 @showdialog
3
+ ## So Many Quail! @showdialog
4
4
 
5
5
  It's quail hatching season! The quail are laying eggs left
6
6
  and right.
@@ -8,29 +8,34 @@ and right.
8
8
  Let's catch them and put them back into the
9
9
  quail coop.
10
10
 
11
- ## step 2
11
+
12
+ ## 2. Look for the Glove
12
13
 
13
14
  First, look at the code in the workspace.
14
15
 
15
16
  ---
16
17
 
17
- Can you find where the quail-catching glove is created
18
+ - :binoculars: Can you find where the quail-catching glove is created
18
19
  and where the controller buttons are enabled?
19
20
 
20
21
  ---
21
22
 
22
- At the moment, the glove doesn't do anything when it overlaps quail. We should fix that.
23
+ At the moment, the glove doesn't do anything when it overlaps quail.
24
+
25
+ We should fix that.
26
+
23
27
 
24
- ## Step 3
28
+ ## 3. Overlap
25
29
 
26
30
  **Let's catch some birds!**
27
31
 
28
32
  ---
29
33
 
30
- From ``||sprites:Sprites||``, drag an ``||sprites:on [sprite] of kind [Player] overlaps [othersprite] of kind [Player]||``
34
+ - :paper plane: From ``||sprites:Sprites||``, drag an
35
+ ``||sprites:on [sprite] of kind [Player] overlaps [othersprite] of kind [Player]||``
31
36
  container into the workspace.
32
37
 
33
- Click the **second** ``||sprites:Player||`` dropdown and
38
+ - :mouse pointer: Click the **second** ``||sprites:Player||`` dropdown and
34
39
  change it to ``||sprites:Quail||``.
35
40
 
36
41
 
@@ -43,16 +48,17 @@ sprites.onOverlap(SpriteKind.Player, SpriteKind.Quail, function (sprite, otherSp
43
48
  })
44
49
  ```
45
50
 
46
- ## Step 3
51
+ ## 4. Follow the Glove
47
52
 
48
- **✋ Once you catch a quail, it should stay in your hand 🤚**
53
+ **✋ Once you catch a quail, it should stay in your hand**
49
54
 
50
55
  ---
51
56
 
52
- Also from ``||sprites:Sprites||``, grab ``||sprites:set [myEnemy] follow [mySprite] ||`` and drag it into
53
- the empty **overlaps** container.
57
+ - :paper plane: Also from ``||sprites:Sprites||``, grab
58
+ ``||sprites:set [myEnemy] follow [mySprite] ||``
59
+ and drag it into the empty **overlaps** container.
54
60
 
55
- From the header of the **on overlaps** container, grab the ``||variables:otherSprite||`` value block and
61
+ - :mouse pointer: Grab the ``||variables:otherSprite||`` value block out of the title of the outer container and
56
62
  drag it down to replace the ``||variables:myEnemy||`` argument in the **set follow** block.
57
63
 
58
64
 
@@ -68,24 +74,27 @@ sprites.onOverlap(SpriteKind.Player, SpriteKind.Quail, function (sprite, otherSp
68
74
  })
69
75
  ```
70
76
 
71
- ## Step 5
77
+ ## 5. Try It
72
78
 
73
- **Give the game a try in the simulator.**
79
+ **Give the game a try in the game window.**
74
80
 
75
- What's happening?
81
+ ---
82
+
83
+ What's happening?
76
84
  What's not happening?
77
85
 
78
86
 
79
- ## Step 6
87
+ ## 6. Put It Away
80
88
 
81
89
  **We need to put the quail back into the coop.**
82
90
 
83
91
  ---
84
92
 
85
- From ``||scene:Scene||``, drag an
86
- ``||scene:on [sprite] of kind [Player] overlaps [ ] at [location]||`` container into the workspace.
93
+ - :tree: From ``||scene:Scene||``, drag an
94
+ ``||scene:on [sprite] of kind [Player] overlaps [ ] at [location]||``
95
+ container into the workspace.
87
96
 
88
- Change **Player** to **Quail**, and change the empty tile to the **coop** tile.
97
+ - :mouse pointer: Change **Player** to **Quail**, and change the empty tile to the **coop** tile.
89
98
 
90
99
  ```blocks
91
100
  namespace SpriteKind {
@@ -97,12 +106,13 @@ scene.onOverlapTile(SpriteKind.Quail, assets.tile`myTile`, function (sprite, loc
97
106
  ```
98
107
 
99
108
 
100
- ## Step 7
109
+ ## 7. Destroy
101
110
 
102
- Snap a ``||sprites:destroy [mySprite]||`` block into the empty
103
- overlaps container.
111
+ - :paper plane: From ``||sprites:Sprites||``, snap a
112
+ ``||sprites:destroy [mySprite]||``
113
+ block into the empty overlaps container.
104
114
 
105
- Grab the ``||variables:sprite||`` variable in the header of the
115
+ - :mouse pointer: Grab the ``||variables:sprite||`` value block from the
106
116
  **overlaps** container and drag it down to replace the
107
117
  ``||variables:mySprite||`` argument in the **destroy** block.
108
118
 
@@ -120,25 +130,25 @@ scene.onOverlapTile(SpriteKind.Quail, assets.tile`myTile`, function (sprite, loc
120
130
  })
121
131
  ```
122
132
 
123
- ## Step 8
133
+ ## 8. Gather the Eggs
124
134
 
125
135
  **Now you have to deal with the pesky leftover quail eggs**
126
136
 
127
137
  ---
128
138
 
129
- Right-click on your
130
- ``||sprites:on [sprite] of kind [Player] overlaps [othersprite] of kind [Quail]||``
139
+ - :mouse pointer: Right-click on your
140
+ ``||sprites:on [sprite] of kind [Player] overlaps [othersprite] of kind [Quail]||``
131
141
  container and select **Duplicate** from the dropdown menu. Then change the second
132
142
  argument from **Quail** to **Egg**.
133
143
 
134
- Right-click on your
135
- ``||scene:on [sprite] of kind [Quail] overlaps [coop] at [location]||``
144
+ - :mouse pointer: Right-click on your
145
+ ``||scene:on [sprite] of kind [Quail] overlaps [coop] at [location]||``
136
146
  container and select **Duplicate** from the dropdown menu.
137
147
  Then change the kind from **Quail** to **Egg**.
138
148
 
139
149
  ---
140
150
 
141
- Use the simulator to see how fast you can clear out the quail!
151
+ Look at the game window to see how fast you can clear out the quail!
142
152
 
143
153
  ```blocks
144
154
  namespace SpriteKind {
@@ -154,13 +164,13 @@ scene.onOverlapTile(SpriteKind.Egg, assets.tile`myTile`, function (sprite, locat
154
164
  ```
155
165
 
156
166
 
157
- ## Step 8
167
+ ## 9. Finale
158
168
 
159
169
  **Now play your game!**
160
170
 
161
171
  Can you clear all of the eggs before they hatch into more quail?
162
172
 
163
- Once you're done playing, click **Done** to go back to the map where you can share
173
+ Once you're finished playing, click **Done** to go back to the map where you can share
164
174
  this game with family and friends!
165
175
 
166
176
 
@@ -1,4 +1,4 @@
1
- # Zookeepers Day
1
+ # A Zookeeper's Adventure!
2
2
  * name: A Zookeeper's Adventure!
3
3
  * description: Ever wonder what it takes to be a zookeeper? The answer may surprise you...
4
4
  * infoUrl: skillmap/educator-info/zookeeper-map-info
@@ -42,7 +42,7 @@
42
42
  * url: /skillmap/zoo/zoo2a
43
43
  * imageurl: /static/skillmap/zoo/zoo2a.gif
44
44
  * tags: easy, movement, random
45
- * next: zoo-activity2
45
+ * next: zoo-activity3
46
46
 
47
47
  ### zoo-activity3
48
48
  * allowcodecarryover: false
package/docs/skillmaps.md CHANGED
@@ -16,11 +16,27 @@
16
16
  "directOpen": true
17
17
  },
18
18
  {
19
- "name": "Shang-Chi and the Legend of the Ten Rings",
19
+ "name": "Create a Space Adventure",
20
20
  "cardType": "link",
21
- "description": "Create your own amazing adventure based on the movie Shang-Chi and the Legend of the Ten Rings!",
22
- "imageUrl": "/static/skillmap/backgrounds/sc.png",
23
- "url": "https://arcade.makecode.com/--skillmap#sc",
21
+ "description": "Make a Galaga-style game by creating a rocket that fires at enemies. Design your outerspace view, create amazing animations, and MORE!",
22
+ "imageUrl": "/static/skillmap/backgrounds/space.png",
23
+ "url": "https://arcade.makecode.com/--skillmap#space",
24
+ "directOpen": true
25
+ },
26
+ {
27
+ "name": "Jungle Monkey Jump Platformer",
28
+ "cardType": "link",
29
+ "description": "Code your monkey, add magic platforms, toss explosives, and collect valuables through customizable level maps.",
30
+ "imageUrl": "/static/skillmap/backgrounds/jungle-map.png",
31
+ "url": "https://arcade.makecode.com/--skillmap#jungle",
32
+ "directOpen": true
33
+ },
34
+ {
35
+ "name": "80s Rockstar Maze",
36
+ "cardType": "link",
37
+ "description": "Code your rockstar to move through the crowded backstage area to collect all the gear before they're mobbed by fans!",
38
+ "imageUrl": "/static/skillmap/backgrounds/rockstar-card.gif",
39
+ "url": "https://arcade.makecode.com/--skillmap#rockstar",
24
40
  "directOpen": true
25
41
  },
26
42
  {
@@ -0,0 +1,10 @@
1
+
2
+ {
3
+ "rules": {
4
+ "path": "/static/gamejam/jams/global-2021/rules.md",
5
+ "submitPositionId": "new-to-makecode-"
6
+ },
7
+ "start": "2021-11-29 00:00:01 GMT-0700",
8
+ "end": "2021-12-17 23:59:59 GMT-0700",
9
+ "featured": []
10
+ }
@@ -0,0 +1,22 @@
1
+ ### Game Jam Rules
2
+
3
+ 1. Games must be built in MakeCode Arcade
4
+ 2. Your game must relate to the provided theme. Someone playing your game should be able to see how it relates to the theme without extra explanation.
5
+ 3. Keep the games PG: no NSFW, offensive, or excessively violent content.
6
+ 4. All games must be submitted by someone who is at least 13 years old by December 17th. Younger students are welcome to participate, but it must be in partnership with a student over 13.
7
+
8
+
9
+ ### New to MakeCode?
10
+
11
+ ![A GIF of a plane putting out fires](/static/hour-of-code/2021/forest-skillmap-game.gif)
12
+
13
+ If you’ve never written code or used MakeCode Arcade before, no worries! Try out climate themed [Hour of Code™](/hour-of-code-2021) activity or our [Beginner Skillmap](https://arcade.makecode.com/--skillmap#beginner) to get down the basics.
14
+ <br /><br /><br /><br />
15
+
16
+ ### Educators Training
17
+
18
+ Sign up for free training on how to run the Hour of Code Activity and Global MakeCode Arcade Game Jam in your classroom. We’ll cover how to use the MakeCode Arcade Platform, learning objectives, and more!
19
+
20
+ ### More Game Jam!
21
+
22
+ Want to put on your own game jam? Check out our how-to guide, coming soon.
@@ -0,0 +1,141 @@
1
+ /**** GAMEJAM PAGE OVERRIDES ****/
2
+
3
+ .content {
4
+ background-color: unset;
5
+ color: #fff;
6
+ max-width: unset;
7
+ padding: 0;
8
+ }
9
+
10
+ /**** Countdown Timer ****/
11
+
12
+ #timer {
13
+ margin: 0;
14
+ padding: 0;
15
+ }
16
+
17
+ #timer > .label {
18
+ display: none;
19
+ }
20
+
21
+ #timer > div:last-child {
22
+ width: 100%;
23
+ height: 100%;
24
+ align-items: stretch;
25
+ }
26
+
27
+ #timer .counter {
28
+ flex-basis: 25%;
29
+ margin: 0 0.5rem;
30
+ border-radius: 1rem;
31
+ background-color: #eeca49;
32
+ display: flex;
33
+ align-items: center;
34
+ justify-content: center;
35
+ flex-direction: column;
36
+ width: 10rem;
37
+ }
38
+
39
+ .counter > .number {
40
+ font-family: 'Rowdies', 'Segoe UI', sans-serif;
41
+ font-weight: 700;
42
+ font-size: 5rem;
43
+ }
44
+
45
+ .counter > div:last-child {
46
+ margin-top: 2rem;
47
+ font-size: 2rem;
48
+ }
49
+
50
+ section.hoc-aside-01 #timer {
51
+ width: unset;
52
+ }
53
+
54
+ /**** Rules Section ****/
55
+
56
+ .rules ol {
57
+ padding-left: 2.5rem;
58
+ }
59
+
60
+ .rules ol li {
61
+ padding-left: 1rem;
62
+ font-weight: 400;
63
+ }
64
+
65
+ .rules ol li::marker {
66
+ font-weight: 700;
67
+ color: #eeca49;
68
+ }
69
+
70
+ /**** Submit Section ****/
71
+
72
+ .submit {
73
+ border-radius: 1rem;
74
+ }
75
+
76
+ .submit .wrapper {
77
+ padding: 0 4rem;
78
+ }
79
+
80
+ .submit .actions {
81
+ justify-content: flex-end;
82
+ }
83
+
84
+ @media (max-width: 480px) {
85
+ }
86
+
87
+ /**** New to MakeCode Section ****/
88
+
89
+ .new {
90
+ margin-top: 8rem !important;
91
+ }
92
+
93
+ .new .btn {
94
+ float: unset !important;
95
+ }
96
+
97
+ .new .buttons {
98
+ text-align: right;
99
+ }
100
+
101
+ .new .buttons .btn:last-child {
102
+ margin-left: 2rem;
103
+ }
104
+
105
+ @media (max-width: 768px) {
106
+ .new {
107
+ margin-top: 5rem !important;
108
+ }
109
+ }
110
+
111
+ @media (max-width: 480px) {
112
+ .new .buttons .btn:last-child {
113
+ margin-top: 1.5rem;
114
+ }
115
+ }
116
+
117
+ /**** ACTION BUTTONS ****/
118
+
119
+ .button {
120
+ color: #fff;
121
+ background-color: #3dc1aa;
122
+ }
123
+
124
+ .button:hover {
125
+ color: #fff;
126
+ background-color: #2ead98;
127
+ }
128
+
129
+ /**** SECTION COLORS ****/
130
+
131
+ #educators-training,
132
+ #educators-training + p {
133
+ color: #000;
134
+ background-color: #3dc1aa;
135
+ }
136
+
137
+ #new-to-makecode- + p {
138
+ float: right;
139
+ position: relative;
140
+ top: -5.5rem;
141
+ }
@@ -10,6 +10,7 @@ interface Rules {
10
10
  path: string;
11
11
  collaborateId?: string;
12
12
  tipsId?: string;
13
+ submitPositionId?: string; // Insert the submit section before this ID, if present
13
14
  }
14
15
 
15
16
  interface Session {
@@ -119,9 +119,17 @@ function makeRules() {
119
119
  var parent = document.getElementById("rules");
120
120
  parent.innerHTML = markdown;
121
121
  // insert schedule of events after rules
122
- var node = document.getElementById(info.rules.collaborateId);
123
- if (node) {
124
- node.parentElement.insertBefore(document.getElementById("events"), node);
122
+ var collaborateNode = document.getElementById(info.rules.collaborateId);
123
+ if (collaborateNode) {
124
+ collaborateNode.parentElement.insertBefore(document.getElementById("events"), collaborateNode);
125
+ }
126
+ // move submit section if submitPositionId exists
127
+ if (info.rules.submitPositionId) {
128
+ var beforeNode = document.getElementById(info.rules.submitPositionId);
129
+ var submitNode = document.getElementById("submit");
130
+ if (beforeNode && submitNode) {
131
+ beforeNode.parentElement.insertBefore(submitNode, beforeNode);
132
+ }
125
133
  }
126
134
  initRulesTelemetry(info.rules.tipsId);
127
135
  }
@@ -157,30 +165,32 @@ function makeWinners() {
157
165
  function makeGallery() {
158
166
  var container = document.querySelector(".gallery");
159
167
  var parent = document.getElementById("gallery");
160
- if (!(info === null || info === void 0 ? void 0 : info.featured.length)) {
161
- var description = document.querySelector(".gallery .description");
162
- description.innerText = "Check back later to play some submitted games!";
163
- }
164
- else {
165
- var hint = document.createElement("div");
166
- hint.className = "hint";
167
- hint.innerText = "If you see blocks overlapping each other in the editor workspace, you can \
168
- reformat them by selecting \"Format Code\" from the menu when you right-click \
169
- on the workspace background.";
170
- container.insertBefore(hint, parent);
171
- }
172
- var selected = randomize(info.featured); // show all the games
173
- var row = document.createElement("div");
174
- for (var i = 0; i < selected.length; i++) {
175
- row.appendChild(makeGameCard(selected[i]));
176
- if (i % 3 == 2) {
168
+ if (container && parent) {
169
+ if (!(info === null || info === void 0 ? void 0 : info.featured.length)) {
170
+ var description = document.querySelector(".gallery .description");
171
+ description.innerText = "Check back later to play some submitted games!";
172
+ }
173
+ else {
174
+ var hint = document.createElement("div");
175
+ hint.className = "hint";
176
+ hint.innerText = "If you see blocks overlapping each other in the editor workspace, you can \
177
+ reformat them by selecting \"Format Code\" from the menu when you right-click \
178
+ on the workspace background.";
179
+ container.insertBefore(hint, parent);
180
+ }
181
+ var selected = randomize(info.featured); // show all the games
182
+ var row = document.createElement("div");
183
+ for (var i = 0; i < selected.length; i++) {
184
+ row.appendChild(makeGameCard(selected[i]));
185
+ if (i % 3 == 2) {
186
+ parent.appendChild(row);
187
+ row = document.createElement("div");
188
+ }
189
+ }
190
+ if (selected.length % 3 != 0) {
177
191
  parent.appendChild(row);
178
- row = document.createElement("div");
179
192
  }
180
193
  }
181
- if (selected.length % 3 != 0) {
182
- parent.appendChild(row);
183
- }
184
194
  }
185
195
  function makeGameCard(game) {
186
196
  var card = document.createElement("div");