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
@@ -11,24 +11,26 @@ This activity will show you how to add extra levels to your game.
11
11
 
12
12
 
13
13
 
14
- ## Step 2 - Try It!
14
+ ## 2. Try It!
15
15
 
16
- **🕹️ Start by playing your game in the game window 🕹️**
16
+ **🕹️ Start by playing your game in the game window**
17
17
 
18
18
  ---
19
19
 
20
20
  Can you remember which chunk of code creates each action?
21
21
 
22
22
 
23
- ## Step 3 - Not So Fast
23
+ ## 3. Not So Fast
24
24
 
25
- **🗝️ Find a second chest to win the game 🗝️**
25
+ **Find a second chest to win the game**
26
26
 
27
27
  ---
28
28
 
29
- Look for your ``||game:game over <WIN>||`` block inside of the **Player overlaps chest1** container.
29
+ - :binoculars: Look for your
30
+ ``||game:game over <WIN>||``
31
+ block inside of the **Player overlaps chest1** container.
30
32
 
31
- Click the image of **chest1** and change it to **chest2**.
33
+ - :mouse pointer: Click the image of **chest1** and change it to **chest2**.
32
34
 
33
35
  ```blocks
34
36
  scene.onOverlapTile(SpriteKind.Player, assets.tile`chest2`, function (sprite, location) {
@@ -36,16 +38,18 @@ scene.onOverlapTile(SpriteKind.Player, assets.tile`chest2`, function (sprite, lo
36
38
  })
37
39
  ```
38
40
 
39
- ## Step 4 - A New Level
41
+ ## 4. A New Level
40
42
 
41
- **🙌 Add a New Level 🙌**
43
+ **🙌 Add a New Level 🙌**
42
44
  When we get to the first chest, we want to take the player to a new level.
43
45
 
44
46
  ---
45
47
 
46
- From ``||scene:Scene||``, drag ``||scene:on [sprite] of kind [Player] overlaps [ ] at [location]||`` into an empty area of the workspace.
48
+ - :tree: Drag
49
+ ``||scene:on [sprite] of kind [Player] overlaps [ ] at [location]||``
50
+ into an empty area of the workspace.
47
51
 
48
- Click the empty square and choose **chest1**.
52
+ - :paint brush: Click the empty square and choose **chest1**.
49
53
 
50
54
 
51
55
 
@@ -57,12 +61,14 @@ scene.onOverlapTile(SpriteKind.Player, assets.tile`chest1`, function (sprite, lo
57
61
 
58
62
 
59
63
 
60
- ## Step 5 - Change of Scenery
64
+ ## 5. Change of Scenery
61
65
 
62
66
 
63
- To show the player that the level has changed, go to ``||scene:Scene||`` and drag ``||scene:set background image to [ ]||`` into the empty **Player overlaps chest1** container.
67
+ - :tree: To show the player that the level has changed, drag
68
+ ``||scene:set background image to [ ]||``
69
+ into the empty **Player overlaps chest1** container.
64
70
 
65
- Click the grey square and toggle to **My Assets** to choose **background2**.
71
+ - :paint brush: Click the grey square and toggle to **My Assets** to choose **background2**.
66
72
 
67
73
 
68
74
  ```blocks
@@ -72,12 +78,14 @@ scene.onOverlapTile(SpriteKind.Player, assets.tile`chest1`, function (sprite, lo
72
78
  ```
73
79
 
74
80
 
75
- ## Step 6 - Change of Location
81
+ ## 6. Change of Location
76
82
 
77
83
 
78
- To change the level tilemap, go to ``||scene:Scene||`` and drag ``||scene:set tilemap to [ ]||`` to **the end** of the **Player overlaps chest1** container.
84
+ - :tree: To change the level tilemap, drag
85
+ ``||scene:set tilemap to [ ]||``
86
+ to **the end** of the **Player overlaps chest1** container.
79
87
 
80
- Click the grey square and toggle to **My Assets** to choose **level2**.
88
+ - :paint brush: Click the grey square and toggle to **My Assets** to choose **level2**.
81
89
 
82
90
 
83
91
  ```blocks
@@ -89,17 +97,21 @@ scene.onOverlapTile(SpriteKind.Player, assets.tile`chest1`, function (sprite, lo
89
97
  ```
90
98
 
91
99
 
92
- ## Step 9 - Back to the Beginning
100
+ ## 7. Back to the Beginning
93
101
 
94
- **⏪ Here we go again! ⏪**
102
+ **⏪ Here we go again!**
95
103
 
96
104
  ---
97
105
 
98
- To carry your character back to the beginning of the level, visit the ``||animation:Animation||`` category and drag the ``||animation:animate [mySprite] with [fly to center]||`` block into **the end** of the **Player overlaps chest1** container.
106
+ - :sync: To carry your character back to the beginning of the level, drag the
107
+ ``||animation:animate [mySprite] with [fly to center]||``
108
+ block into **the end** of the **Player overlaps chest1** container.
99
109
 
100
- From the ``||sprites:Sprites||`` category, drag ``||sprites:[mySprite] say [":)"]||`` into **the end** of the **Player overlaps chest1** container.
110
+ - :paper plane: Drag
111
+ ``||sprites:[mySprite] say [":)"]||``
112
+ into **the end** of the **Player overlaps chest1** container.
101
113
 
102
- Change the text to say **Level 2!** and click the white plus **(+)** to the right of the block so that the text disappears after 500 ms.
114
+ - :mouse pointer: Change the text to say **Level 2!** and click the white plus **(+)** to the right of the block so that the text disappears after 500 ms.
103
115
 
104
116
  ```blocks
105
117
  let mySprite: Sprite = null
@@ -117,7 +129,7 @@ scene.onOverlapTile(SpriteKind.Player, assets.tile`chest1`, function (sprite, lo
117
129
  ```
118
130
 
119
131
 
120
- ## Try It!
132
+ ## 8. Try It!
121
133
 
122
134
  **🕹️ Give it a try 🕹️**
123
135
 
@@ -128,12 +140,12 @@ Make your way to the treasure chest. You should be transported to a new level!
128
140
 
129
141
  ## Finished
130
142
 
131
- **🥳 Congratulations 🥳**
143
+ **🥳 Congratulations 🥳**
132
144
  You did it!! Can you play your game all the way to the end?
133
145
 
134
146
  ---
135
147
 
136
- When you're done playing your game, click **Done** to return to the main page for your certificate and the option to customize your final game!
148
+ When you're done playing your game, click **Done** to return to the main skillmap for your certificate and the option to customize your final game!
137
149
 
138
150
 
139
151
 
@@ -12,39 +12,41 @@ In this activity, you'll edit images and tilemaps to create a custom game!
12
12
 
13
13
 
14
14
 
15
- ## Step 2 - Try It!
15
+ ## 2. Try It!
16
16
 
17
- **🕹️ Start by playing your game in the game window 🕹️**
17
+ **🕹️ Start by playing your game in the game window**
18
18
 
19
19
  ---
20
20
 
21
21
  How do you feel about the main character? The background?
22
22
 
23
23
 
24
- ## Step 3 - A New Location
24
+ ## 3. A New Location
25
+
26
+ **Let's change the scene**
27
+ 🖼️ 🖼️ 🖼️
25
28
 
26
- **🖼️ Let's change the scene 🖼️**
27
29
 
28
30
  ---
29
31
 
30
- Click **background** in the **My Assets** window, then click **Edit** under the **Asset Preview**.
32
+ - :paint brush: Click **background** in the **My Assets** window, then click **Edit** under the **Asset Preview**.
31
33
 
32
- You can either customize the current background in the **Image Editor** or toggle to the **Gallery** to choose something new.
34
+ - :paint brush: You can either customize the current background in the **Image Editor** or toggle to the **Gallery** to choose something new.
33
35
 
34
36
 
35
37
 
36
- ## Step 4 - Edit Your Monkeys
38
+ ## 4. Edit Your Monkeys
37
39
 
38
40
  **🙈 Change the Monkey 🙈**
39
41
 
40
42
  ---
41
43
 
42
- Go through **My Assets** and edit each of the monkeys. You can choose new characters and animations from the **Gallery** or draw your own!
44
+ - :paint brush: Go through **My Assets** and edit each of the monkeys. You can choose new characters and animations from the **Gallery** or draw your own!
43
45
 
44
46
 
45
- ## Step 5 - Try It!
47
+ ## 5. Try It!
46
48
 
47
- **🕹️ Play your game after each step 🕹️**
49
+ **🕹️ Play your game after each step**
48
50
 
49
51
  ---
50
52
 
@@ -52,48 +54,48 @@ When you play your game, it's easier to see what changes need to be made to your
52
54
 
53
55
 
54
56
 
55
- ## Step 6 - A New Level
57
+ ## 6. A New Level
56
58
 
57
- **🚧 Let's dig in to the level editor 🚧**
59
+ **🚧 Let's dig in to the level editor**
58
60
 
59
61
  ---
60
62
 
61
- Scroll down to find **level1**, then click **Edit**.
63
+ - :paint brush: Scroll down to find **level1**, then click **Edit**.
62
64
 
63
- 💡 You should see the full tilemap for level 1. You can zoom in or out using the magnifying glasses at the bottom.
65
+ _💡 You should see the full tilemap for level 1. You can zoom in or out using the magnifying glasses at the bottom._
64
66
 
65
67
 
66
68
 
67
69
 
68
- ## Step 7 - Start Small
70
+ ## 7. Start Small
69
71
 
70
72
  Let's make the character's starting platform longer.
71
73
 
72
74
  ---
73
75
 
74
- Look for the single hovering tile at the lower left of the screen. To make it longer, click the **skyblock** square beneath **My Tiles** and make sure the pencil icon is selected above.
76
+ - :binoculars: Look for the single hovering tile at the lower left of the screen. To make it longer, click the **skyblock** square beneath **My Tiles** and make sure the pencil icon is selected above.
75
77
 
76
- Click on either side of the floating platform to add extra skyblocks.
78
+ - :paint brush: Click on either side of the floating platform to add extra skyblocks.
77
79
 
78
80
 
79
81
  ![Add tiles with the pencil](/static/skillmap/jungle/platform-tiles.gif)
80
82
 
81
83
 
82
- ## Step 8 - Build a Wall
84
+ ## 8. Build a Wall
83
85
 
84
86
  Add walls on top of your new tiles so that your character doesn't fall through.
85
87
 
86
88
  ---
87
89
 
88
- Click the large **wall** icon (it has a corner missing at the top) and make sure the pencil is still selected.
90
+ - :paint brush: Click the large **wall** icon (it has a corner missing at the top) and make sure the pencil is still selected.
89
91
 
90
- Click on each new skyblock to add a wall to the tile (it should shade overtop with a light red color.) Then click **Done**.
92
+ - :paint brush: Click on each new skyblock to add a wall to the tile (it should shade overtop with a light red color.) Then click **Done**.
91
93
 
92
94
  ![Add walls with the pencil](/static/skillmap/jungle/platform-walls.gif)
93
95
 
94
96
 
95
97
 
96
- ## Step 9 - Try It!
98
+ ## 9. Try It!
97
99
 
98
100
  **🕹️ Give it a try 🕹️**
99
101
 
@@ -103,17 +105,17 @@ Is your game platform longer? Does it hold your main character?
103
105
 
104
106
 
105
107
 
106
- ## Step 10 - Go Crazy!
108
+ ## 10. Go Crazy!
107
109
 
108
110
  Now that you know how to add tiles and walls, you can change the levels whichever way you like.
109
111
 
110
- 💡 Remember that your code is built to work with certain tile names only. If you add new tiles or change the names, you'll need to go back to the code to add your changes!
112
+ _💡 Remember that your code is built to work with certain tile names only. If you add new tiles or change the names, you'll need to go back to the code to add your changes!_
111
113
 
112
114
 
113
115
 
114
- ## Finished
116
+ ## Finale
115
117
 
116
- When you're done playing your new game, click **Done** to return to the main page to share your final game!
118
+ When you're done playing your new game, click **Done** to return to the main page to share your final game, then open it with a full toolbox to edit even more!
117
119
 
118
120
 
119
121
 
@@ -18,7 +18,7 @@
18
18
 
19
19
  ### jungle1
20
20
  * allowcodecarryover: false
21
- * name: Jungle Monkey Jump
21
+ * name: Moving Monkey
22
22
  * type: tutorial
23
23
  * description: Make your monkey jump and move around!
24
24
  * url: /skillmap/jungle/jungle1
@@ -104,9 +104,13 @@
104
104
  * name: Congrats!
105
105
  * kind: completion
106
106
  * type: certificate
107
- * imageUrl: /static/skillmap/certificates/platformer-cert.png
108
- * url: /static/skillmap/certificates/learn-to-make-a-platformer.pdf
107
+ * imageUrl: /static/skillmap/certificates/jungle-cert.png
108
+ * url: /static/skillmap/certificates/jungle-cert.pdf
109
109
  * position: 4 1
110
+ * actions:
111
+ * map: [Try 80s Rockstar Maze](/skillmap/rockstar)
112
+ * map: [Try our Space Explorer](/skillmap/space)
113
+ * editor: [Edit Your Project with a Full Toolbox](/)
110
114
 
111
115
 
112
116
 
@@ -0,0 +1,119 @@
1
+ # Shark Splash
2
+ * name: Shark Splash
3
+ * description: The deep sea is a fascinating place! This skillmap will guide you through the ocean as a shark on a journey to find food and avoid enemy submarines.
4
+ * infoUrl: skillmap/educator-info/shark-map-info
5
+ * backgroundurl: /static/skillmap/backgrounds/shark-attack-bg.png
6
+ * bannerurl: /static/skillmap/shark/shark4a.gif
7
+ * primarycolor: #ff93c4
8
+ * secondarycolor: #87f2ff
9
+ * tertiarycolor: #5c406c
10
+ * strokecolor: #5c406c
11
+ * highlightcolor: #fff609
12
+ * completednodecolor: #473c4d
13
+
14
+ ## shark
15
+ * name: Shark Splash
16
+ * layout: manual
17
+
18
+ ### shark1
19
+ * name: Swimming with Sharks
20
+ * type: tutorial
21
+ * description: First, we'll plop a shark into the vast ocean, then we'll give it lasers!
22
+ * url: /skillmap/shark/shark1
23
+ * tags: easy, sprites, projectiles
24
+ * imageUrl: /static/skillmap/shark/shark1.gif
25
+ * next: shark2, shark1a
26
+ * position: 0 0
27
+
28
+ ### shark1a
29
+ * name: Beware the Enemy
30
+ * type: tutorial
31
+ * description: Spawn enemy submarines that track your shark!
32
+ * url: /skillmap/shark/shark1a
33
+ * tags: easy, design, background
34
+ * imageUrl: /static/skillmap/shark/shark1a.gif
35
+ * next: shark1b
36
+ * position: 0 2
37
+
38
+ ### shark1b
39
+ * name: Enemies Attack!
40
+ * type: tutorial
41
+ * description: Turn your project into a game by adding damage every time a submarine catches your shark.
42
+ * url: /skillmap/shark/shark1b
43
+ * tags: easy, enemies, overlap, lives
44
+ * imageUrl: /static/skillmap/shark/shark1b.gif
45
+ * next: shark1c
46
+ * position: 1 2
47
+
48
+ ### shark1c
49
+ * name: Laser Focus
50
+ * type: tutorial
51
+ * description: You have enemies. You have lasers. Let's put them together!
52
+ * url: /skillmap/shark/shark1c
53
+ * tags: easy, enemies, points
54
+ * imageUrl: /static/skillmap/shark/shark1c.gif
55
+ * next: shark2
56
+ * position: 2 2
57
+ * edges: 2 1, 1 1
58
+
59
+
60
+
61
+ ### shark2
62
+ * name: Food, Not Friends
63
+ * type: tutorial
64
+ * description: A shark's gotta eat! Learn to make fish appear all over the ocean.
65
+ * url: /skillmap/shark/shark2
66
+ * tags: easy, spawn, sprites
67
+ * imageUrl: /static/skillmap/shark/shark2.gif
68
+ * next: shark3
69
+ * position: 1 0
70
+
71
+
72
+ ### shark3
73
+ * name: Eat Up!
74
+ * type: tutorial
75
+ * description: Add points for each fish you catch in 15 seconds!
76
+ * url: /skillmap/shark/shark3
77
+ * tags: easy, enemies, overlaps
78
+ * imageUrl: /static/skillmap/shark/shark3.gif
79
+ * next: shark4
80
+ * position: 2 0
81
+
82
+
83
+ ### shark4
84
+
85
+ * name: Under the Sea
86
+ * type: tutorial
87
+ * description: Decorate your shark's surroundings with an ocean background and seaweed.
88
+ * url: /skillmap/shark/shark4
89
+ * tags: easy, background, decorations
90
+ * imageUrl: /static/skillmap/shark/shark4.gif
91
+ * next: shark-finish, shark4a, shark4b
92
+ * position: 3 0
93
+
94
+ ### shark4a
95
+
96
+ * name: Let's Get Animated
97
+ * type: tutorial
98
+ * description: Bring your game to life with custom animations for your characters.
99
+ * url: /skillmap/shark/shark4a
100
+ * tags: easy, animations
101
+ * imageUrl: /static/skillmap/shark/shark4a.gif
102
+ * position: 4 1
103
+
104
+ ### shark4b
105
+
106
+ * name: A Whole New World
107
+ * type: tutorial
108
+ * description: Give your game a brand new theme and really make it yours!
109
+ * url: /skillmap/shark/shark4b
110
+ * tags: easy, background, decorations, asset editor
111
+ * imageUrl: /static/skillmap/shark/shark4b.gif
112
+ * position: 4 2
113
+
114
+
115
+ ### shark-finish
116
+ * kind: completion
117
+ * type: certificate
118
+ * url: /static/skillmap/certificates/collector-game.pdf
119
+ * position: 4 0
@@ -0,0 +1,256 @@
1
+ # Paddle / Ball
2
+
3
+
4
+ ## Welcome @showdialog
5
+
6
+ Add welcome text here.
7
+
8
+
9
+
10
+
11
+
12
+ ## 2.
13
+
14
+ text
15
+
16
+ ```blocks
17
+ let ball = sprites.create(assets.image`ball`, SpriteKind.Ball)
18
+ ```
19
+
20
+
21
+
22
+ ## 3.
23
+
24
+ text
25
+
26
+ ```blocks
27
+ let ball = sprites.create(assets.image`ball`, SpriteKind.Ball)
28
+ ball.setVelocity(100, 100)
29
+ ball.setBounceOnWall(true)
30
+ ```
31
+
32
+
33
+ ## 4.
34
+
35
+ text
36
+
37
+ ```blocks
38
+ let ball = sprites.create(assets.image`ball`, SpriteKind.Ball)
39
+ ball.setVelocity(100, 100)
40
+ ball.setBounceOnWall(true)
41
+ //@highlight
42
+ let left_paddle = sprites.create(assets.image`left paddle`, SpriteKind.LeftPaddle)
43
+
44
+ ```
45
+
46
+ ## 5.
47
+
48
+ text
49
+
50
+ ```blocks
51
+ let ball = sprites.create(assets.image`ball`, SpriteKind.Ball)
52
+ ball.setVelocity(100, 100)
53
+ ball.setBounceOnWall(true)
54
+ let left_paddle = sprites.create(assets.image`left paddle`, SpriteKind.LeftPaddle)
55
+ left_paddle.left = 0
56
+ left_paddle.setStayInScreen(true)
57
+ ```
58
+
59
+
60
+ ## 6.
61
+
62
+ text
63
+
64
+ ```blocks
65
+ let ball = sprites.create(assets.image`ball`, SpriteKind.Ball)
66
+ ball.setVelocity(100, 100)
67
+ ball.setBounceOnWall(true)
68
+ let left_paddle = sprites.create(assets.image`left paddle`, SpriteKind.LeftPaddle)
69
+ left_paddle.left = 0
70
+ left_paddle.setStayInScreen(true)
71
+ controller.player1.moveSprite(left_paddle, 0, 150)
72
+ info.player1.setScore(0)
73
+ ```
74
+
75
+
76
+ ## 7.
77
+
78
+ text
79
+
80
+ ```blocks
81
+ let ball = sprites.create(assets.image`ball`, SpriteKind.Ball)
82
+ ball.setVelocity(100, 100)
83
+ ball.setBounceOnWall(true)
84
+ let left_paddle = sprites.create(assets.image`left paddle`, SpriteKind.LeftPaddle)
85
+ left_paddle.left = 0
86
+ left_paddle.setStayInScreen(true)
87
+ controller.player1.moveSprite(left_paddle, 0, 150)
88
+ info.player1.setScore(0)
89
+ let right_paddle = sprites.create(assets.image`right paddle`, SpriteKind.RightPaddle)
90
+ right_paddle.right = 160
91
+ right_paddle.setStayInScreen(true)
92
+ controller.player2.moveSprite(right_paddle, 0, 150)
93
+ info.player2.setScore(0)
94
+ ```
95
+
96
+
97
+ ```template
98
+
99
+
100
+
101
+ sprites.onOverlap(SpriteKind.Ball, SpriteKind.RightPaddle, function (sprite, otherSprite) {
102
+ sprites.bounce(sprite)
103
+ info.player2.changeScoreBy(1)
104
+ })
105
+ sprites.onOverlap(SpriteKind.Ball, SpriteKind.WallRight, function (sprite, otherSprite) {
106
+ otherSprite.destroy()
107
+ info.player1.changeScoreBy(1)
108
+ })
109
+ sprites.onOverlap(SpriteKind.Ball, SpriteKind.LeftPaddle, function (sprite, otherSprite) {
110
+ sprites.bounce(sprite)
111
+ info.player1.changeScoreBy(1)
112
+ })
113
+ sprites.onOverlap(SpriteKind.Ball, SpriteKind.WallLeft, function (sprite, otherSprite) {
114
+ otherSprite.destroy()
115
+ info.player2.changeScoreBy(1)
116
+ })
117
+
118
+ let wall: Sprite = null
119
+ let ball = sprites.create(assets.image`ball`, SpriteKind.Ball)
120
+ ball.setVelocity(100, 100)
121
+ ball.setBounceOnWall(true)
122
+ let left_paddle = sprites.create(assets.image`left paddle`, SpriteKind.LeftPaddle)
123
+ left_paddle.left = 0
124
+ left_paddle.setStayInScreen(true)
125
+ controller.player1.moveSprite(left_paddle, 0, 150)
126
+ info.player1.setScore(0)
127
+ let right_paddle = sprites.create(assets.image`right paddle`, SpriteKind.RightPaddle)
128
+ right_paddle.right = 160
129
+ right_paddle.setStayInScreen(true)
130
+ controller.player2.moveSprite(right_paddle, 0, 150)
131
+ info.player2.setScore(0)
132
+
133
+ for (let index = 0; index <= 9; index++) {
134
+ wall = sprites.create(assets.image`wall`, SpriteKind.WallLeft)
135
+ wall.z = -5000
136
+ wall.top = index * 12
137
+ wall.left = 0
138
+ }
139
+ for (let index = 0; index <= 9; index++) {
140
+ wall = sprites.create(assets.image`wall`, SpriteKind.WallRight)
141
+ wall.z = -5000
142
+ wall.top = index * 12
143
+ wall.right = 160
144
+ }
145
+
146
+
147
+ game.onUpdate(function () {
148
+ logic.checkForWinner(sprites.spritesOfKindGone(SpriteKind.WallLeft) || sprites.spritesOfKindGone(SpriteKind.WallRight))
149
+ })
150
+ ```
151
+
152
+
153
+
154
+ ```customts
155
+
156
+ namespace SpriteKind {
157
+
158
+ //% isKind
159
+ export const LeftPaddle = SpriteKind.create()
160
+
161
+ //% isKind
162
+ export const RightPaddle = SpriteKind.create()
163
+
164
+ //% isKind
165
+ export const Ball = SpriteKind.create()
166
+
167
+ //% isKind
168
+ export const Wall = SpriteKind.create()
169
+
170
+ //% isKind
171
+ export const WallRight = SpriteKind.create()
172
+
173
+ //% isKind
174
+ export const WallLeft = SpriteKind.create()
175
+ }
176
+
177
+
178
+
179
+ namespace sprites {
180
+
181
+
182
+ /**
183
+ * Returns true if all of kind is gone
184
+ */
185
+ //% block="all sprites of kind $thisSpriteKind destroyed"
186
+ //% thisSpriteKind.shadow=spritekind
187
+ export function spritesOfKindGone(thisSpriteKind:number): boolean {
188
+ return (sprites.allOfKind(thisSpriteKind).length == 0)
189
+ }
190
+
191
+ /**
192
+ * Sends sprite in direction of inverse from that point
193
+ */
194
+ //% block="bounce $thisSprite=variables_get(mySprite)"
195
+ export function bounce (thisSprite: Sprite) {
196
+ if (thisSprite.vx <= 0) {
197
+ thisSprite.x = thisSprite.x + 5
198
+ } else {
199
+ thisSprite.x = thisSprite.x - 5
200
+ }
201
+ thisSprite.vx = thisSprite.vx * -1
202
+ }
203
+
204
+ /**
205
+ * Returns the number of remaining sprites of a kind
206
+ */
207
+ //% block="number of sprites of kind $thisSpriteKind"
208
+ //% thisSpriteKind.shadow=spritekind
209
+ export function spritesOfKind(thisSpriteKind:number): number {
210
+ return (sprites.allOfKind(thisSpriteKind).length)
211
+ }
212
+
213
+
214
+ }
215
+
216
+
217
+
218
+ namespace logic {
219
+
220
+ //% block="end game if $thisBool"
221
+ //% thisBool.defl= false
222
+ export function checkForWinner (thisBool: boolean) {
223
+ if (thisBool) {
224
+
225
+ let winner = ""
226
+ if (info.player1.score() == info.player2.score()) {
227
+ winner = "The game was a tie!"
228
+ } else if (info.player1.score() > info.player2.score()) {
229
+ winner = "Player 1 Wins!"
230
+ } else {
231
+ winner = "Player 2 Wins!"
232
+ }
233
+ game.splash("Game Over!", winner)
234
+ effects.confetti.startScreenEffect(500)
235
+ game.reset()
236
+ }
237
+ }
238
+ }
239
+
240
+
241
+ ```
242
+
243
+
244
+ ```assetjson
245
+ {
246
+ "README.md": " ",
247
+ "assets.json": "",
248
+ "images.g.jres": "{\n \"image4\": {\n \"data\": \"hwQBAAwAAAAREREREREAAA==\",\n \"mimeType\": \"image/x-mkcd-f4\",\n \"displayName\": \"wall\"\n },\n \"image1\": {\n \"data\": \"hwQNAA0AAAAAYGZmAAAAAABm3W0GAAAAYNbd3W0AAABg3d3dbQAAAGbd3d1tBgAA1hHR3W0GAAARGRHRbQEAABGZEREdAQAAEJEZEREAAAAQEZkREQAAAAAREREBAAAAABAREQAAAAAAAAAAAAAAAA==\",\n \"mimeType\": \"image/x-mkcd-f4\",\n \"displayName\": \"ball\"\n },\n \"image2\": {\n \"data\": \"hwQEABgAAAB3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3c=\",\n \"mimeType\": \"image/x-mkcd-f4\",\n \"displayName\": \"left paddle\"\n },\n \"image3\": {\n \"data\": \"hwQEABgAAABVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVU=\",\n \"mimeType\": \"image/x-mkcd-f4\",\n \"displayName\": \"right paddle\"\n },\n \"*\": {\n \"mimeType\": \"image/x-mkcd-f4\",\n \"dataEncoding\": \"base64\",\n \"namespace\": \"myImages\"\n }\n}",
249
+ "images.g.ts": "// Auto-generated code. Do not edit.\nnamespace myImages {\n\n helpers._registerFactory(\"image\", function(name: string) {\n switch(helpers.stringTrim(name)) {\n case \"image4\":\n case \"wall\":return img`\n1 \n1 \n1 \n1 \n1 \n1 \n1 \n1 \n1 \n1 \n1 \n1 \n`;\n case \"image1\":\n case \"ball\":return img`\n. . . . 6 6 1 1 . . . . . \n. . 6 6 6 d 1 1 1 1 . . . \n. 6 6 d d 1 9 9 1 1 1 . . \n6 6 d d d 1 1 9 9 1 1 1 . \n6 d d d d 1 1 1 9 9 1 1 . \n6 d d d d d 1 1 1 9 1 1 . \n6 d d d d d 1 1 1 1 1 1 . \n6 6 d d d d d 1 1 1 1 1 . \n. 6 d d d d d d 1 1 1 . . \n. . 6 6 6 6 6 1 1 1 . . . \n. . . . 6 6 1 1 . . . . . \n. . . . . . . . . . . . . \n. . . . . . . . . . . . . \n`;\n case \"image2\":\n case \"left paddle\":return img`\n7 7 7 7 \n7 7 7 7 \n7 7 7 7 \n7 7 7 7 \n7 7 7 7 \n7 7 7 7 \n7 7 7 7 \n7 7 7 7 \n7 7 7 7 \n7 7 7 7 \n7 7 7 7 \n7 7 7 7 \n7 7 7 7 \n7 7 7 7 \n7 7 7 7 \n7 7 7 7 \n7 7 7 7 \n7 7 7 7 \n7 7 7 7 \n7 7 7 7 \n7 7 7 7 \n7 7 7 7 \n7 7 7 7 \n7 7 7 7 \n`;\n case \"image3\":\n case \"right paddle\":return img`\n5 5 5 5 \n5 5 5 5 \n5 5 5 5 \n5 5 5 5 \n5 5 5 5 \n5 5 5 5 \n5 5 5 5 \n5 5 5 5 \n5 5 5 5 \n5 5 5 5 \n5 5 5 5 \n5 5 5 5 \n5 5 5 5 \n5 5 5 5 \n5 5 5 5 \n5 5 5 5 \n5 5 5 5 \n5 5 5 5 \n5 5 5 5 \n5 5 5 5 \n5 5 5 5 \n5 5 5 5 \n5 5 5 5 \n5 5 5 5 \n`;\n }\n return null;\n })\n\n helpers._registerFactory(\"animation\", function(name: string) {\n switch(helpers.stringTrim(name)) {\n\n }\n return null;\n })\n\n}\n// Auto-generated code. Do not edit.\n",
250
+ "main.blocks": "<xml xmlns=\"https://developers.google.com/blockly/xml\"><variables><variable type=\"KIND_SpriteKind\" id=\"GY;xh:3E#-Q0`bQXH-=K\">Player</variable><variable type=\"KIND_SpriteKind\" id=\"%](8L+$)iLXB(gr[q1VP\">Projectile</variable><variable type=\"KIND_SpriteKind\" id=\"Z-!A#A{tscDOH2FpV`BK\">Food</variable><variable type=\"KIND_SpriteKind\" id=\"@Cjqk^j=14Avc:Ldh@K4\">Enemy</variable><variable type=\"KIND_SpriteKind\" id=\"7R;Ys`NElG]Jt0zjz3^y\">LeftPaddle</variable><variable type=\"KIND_SpriteKind\" id=\"4T[mYc_9GH~eMF3;J3Tq\">RightPaddle</variable><variable type=\"KIND_SpriteKind\" id=\"=R=0`*aWGgy)0^6Fpa8i\">Ball</variable><variable type=\"KIND_SpriteKind\" id=\"V!B3aslyF5Nk,:D$xf:]\">Wall</variable><variable type=\"KIND_SpriteKind\" id=\"uL/=NuFX4AF;dXzq3Bu[\">WallRight</variable><variable type=\"KIND_SpriteKind\" id=\"k_pN[XcA0rUgy.f5a)R{\">WallLeft</variable><variable id=\"G;3kgL(o/K%$weq(nrQV\">ball</variable><variable id=\"T(VrroIqq.[9i1Kvx+9z\">left_paddle</variable><variable id=\"o]G/z11#=Tm4x]aYdmWN\">mySprite</variable><variable id=\"X5AbSi:TF@iPJF}p[?66\">right_paddle</variable><variable id=\"Ac!UHWV~7qD56)=U^Fp_\">myEnemy</variable><variable id=\"vH9lY,Bi#O3@m[8dNDf{\">index</variable><variable id=\"jOn=1LQzJzqV*M1v4Z^p\">wall</variable><variable id=\"lz;wc)j+0tf)BtlQt4|w\">list</variable><variable id=\"2F/F@vbT@4#t5BNzjL7)\">winner</variable></variables></xml>",
251
+ "main.ts": "namespace SpriteKind {\n export const LeftPaddle = SpriteKind.create()\n export const RightPaddle = SpriteKind.create()\n export const Ball = SpriteKind.create()\n export const Wall = SpriteKind.create()\n export const WallRight = SpriteKind.create()\n export const WallLeft = SpriteKind.create()\n}\n",
252
+ "pxt.json": "{\n \"name\": \"pongo - assets only\",\n \"description\": \"\",\n \"dependencies\": {\n \"device\": \"*\"\n },\n \"files\": [\n \"main.blocks\",\n \"main.ts\",\n \"README.md\",\n \"assets.json\",\n \"images.g.jres\",\n \"images.g.ts\",\n \"tilemap.g.jres\",\n \"tilemap.g.ts\"\n ],\n \"targetVersions\": {\n \"branch\": \"v1.6.24\",\n \"tag\": \"v1.6.24\",\n \"commits\": \"https://github.com/microsoft/pxt-arcade/commits/5bea1575ea693e0648a647cbd86cda9776d58f48\",\n \"target\": \"1.6.24\",\n \"pxt\": \"7.2.25\"\n },\n \"preferredEditor\": \"blocksprj\"\n}\n",
253
+ "tilemap.g.jres": "{\n \"transparency16\": {\n \"data\": \"hwQQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==\",\n \"mimeType\": \"image/x-mkcd-f4\",\n \"tilemapTile\": true\n },\n \"*\": {\n \"mimeType\": \"image/x-mkcd-f4\",\n \"dataEncoding\": \"base64\",\n \"namespace\": \"myTiles\"\n }\n}",
254
+ "tilemap.g.ts": "// Auto-generated code. Do not edit.\nnamespace myTiles {\n //% fixedInstance jres blockIdentity=images._tile\n export const transparency16 = image.ofBuffer(hex``);\n\n helpers._registerFactory(\"tile\", function(name: string) {\n switch(helpers.stringTrim(name)) {\n case \"transparency16\":return transparency16;\n }\n return null;\n })\n\n}\n// Auto-generated code. Do not edit.\n"
255
+ }
256
+ ```