pxt-arcade 1.7.3 → 1.7.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/built/target.js +69 -68
- package/built/target.json +69 -68
- package/built/targetlight.json +4 -4
- package/built/theme.json +2 -1
- package/docs/hour-of-code/educators-2021.html +366 -0
- package/docs/hour-of-code-2021.html +239 -140
- package/docs/hour-of-code.html +11 -11
- package/docs/index-ref.json +1 -1
- package/docs/multipart-tutorials.md +0 -8
- package/docs/projects/SUMMARY.md +3 -2
- package/docs/recipes.md +0 -7
- package/docs/skillmap/clicker/clicker1.md +7 -7
- package/docs/skillmap/clicker/clicker2.md +9 -9
- package/docs/skillmap/clicker/clicker3.md +8 -8
- package/docs/skillmap/clicker/clicker4.md +8 -8
- package/docs/skillmap/clicker/clicker4a.md +7 -7
- package/docs/skillmap/clicker/clicker5.md +3 -3
- package/docs/skillmap/clicker-themed/clickert1.md +8 -8
- package/docs/skillmap/clicker-themed/clickert2.md +10 -10
- package/docs/skillmap/clicker-themed/clickert3.md +8 -8
- package/docs/skillmap/clicker-themed/clickert4.md +8 -8
- package/docs/skillmap/collector/collector1.md +11 -11
- package/docs/skillmap/collector/collector1a.md +8 -8
- package/docs/skillmap/collector/collector2.md +8 -8
- package/docs/skillmap/collector/collector3.md +8 -8
- package/docs/skillmap/collector/collector3a.md +7 -7
- package/docs/skillmap/collector/collector4.md +8 -8
- package/docs/skillmap/collector/collector5.md +2 -2
- package/docs/skillmap/collector-themed/collectort1.md +14 -14
- package/docs/skillmap/collector-themed/collectort2.md +9 -9
- package/docs/skillmap/collector-themed/collectort3.md +11 -11
- package/docs/skillmap/collector-themed/collectort4.md +11 -11
- package/docs/skillmap/collector-themed/collectort4old.md +8 -8
- package/docs/skillmap/collector-themed/collectort5.md +2 -2
- package/docs/skillmap/educator-info/forest-map-info.md +8 -8
- package/docs/skillmap/educator-info/racer-map-info.md +105 -0
- package/docs/skillmap/educator-info/simple-shark-map-info.md +101 -0
- package/docs/skillmap/forest/forest1.md +1 -69
- package/docs/skillmap/forest/forest2.md +3 -67
- package/docs/skillmap/forest/forest3.md +1 -174
- package/docs/skillmap/forest/forest4.md +2 -336
- package/docs/skillmap/forest/forest5.md +1 -396
- package/docs/skillmap/forest/forest6.md +6 -372
- package/docs/skillmap/forest.md +2 -2
- package/docs/skillmap/interface/activity1.md +14 -14
- package/docs/skillmap/jungle/jungle1.md +48 -28
- package/docs/skillmap/jungle/jungle2.md +50 -26
- package/docs/skillmap/jungle/jungle3.md +48 -27
- package/docs/skillmap/jungle/jungle4.md +76 -58
- package/docs/skillmap/jungle/jungle5.md +31 -25
- package/docs/skillmap/jungle/jungle6.md +34 -28
- package/docs/skillmap/jungle/jungle7.md +36 -24
- package/docs/skillmap/jungle/jungle8.md +27 -25
- package/docs/skillmap/jungle.md +7 -3
- package/docs/skillmap/long-shark.md +119 -0
- package/docs/skillmap/racer.md +7 -7
- package/docs/skillmap/rockstar/rockstar1.md +32 -13
- package/docs/skillmap/rockstar/rockstar2.md +43 -25
- package/docs/skillmap/rockstar/rockstar3.md +43 -25
- package/docs/skillmap/rockstar.md +3 -1
- package/docs/skillmap/shark/shark1-simple.md +151 -0
- package/docs/skillmap/shark/shark2-simple.md +203 -0
- package/docs/skillmap/shark/shark3-simple.md +204 -0
- package/docs/skillmap/shark/shark4-simple.md +246 -0
- package/docs/skillmap/shark/shark4a-simple.md +244 -0
- package/docs/skillmap/shark.md +25 -58
- package/docs/skillmap/space/space1.md +62 -28
- package/docs/skillmap/space/space2.md +33 -24
- package/docs/skillmap/space/space3.md +85 -68
- package/docs/skillmap/space/space4.md +95 -64
- package/docs/skillmap/space/space4a.md +32 -24
- package/docs/skillmap/space/space5.md +77 -41
- package/docs/skillmap/space/space6.md +56 -78
- package/docs/skillmap/space.md +8 -5
- package/docs/skillmap/story/card.md +6 -6
- package/docs/skillmap/story/card2.md +6 -6
- package/docs/skillmap/story/story1.md +7 -7
- package/docs/skillmap/story/story2.md +11 -11
- package/docs/skillmap/story/story3.md +10 -10
- package/docs/skillmap/story/story4.md +10 -10
- package/docs/skillmap/zoo/zoo1.md +31 -16
- package/docs/skillmap/zoo/zoo2.md +45 -30
- package/docs/skillmap/zoo/zoo2a.md +51 -36
- package/docs/skillmap/zoo/zoo3.md +8 -7
- package/docs/skillmap/zoo/zoo4.md +61 -32
- package/docs/skillmap/zoo/zoo5.md +41 -31
- package/docs/skillmap/zoo.md +2 -2
- package/docs/skillmaps.md +20 -4
- package/docs/static/experiments/accessibleblocks.png +0 -0
- package/docs/static/experiments/blockserrorlist.png +0 -0
- package/docs/static/hour-of-code/2021/beginner-skillmap.png +0 -0
- package/docs/static/hour-of-code/2021/favicon.png +0 -0
- package/docs/static/hour-of-code/2021/forest-skillmap-game.gif +0 -0
- package/docs/static/hour-of-code/2021/global-game-jam.png +0 -0
- package/docs/static/hour-of-code/2021/header.gif +0 -0
- package/docs/static/hour-of-code/2021/hoc-2020.png +0 -0
- package/docs/static/hour-of-code/2021/hoc-card.png +0 -0
- package/docs/static/hour-of-code/2021/microbit.png +0 -0
- package/docs/static/hour-of-code/2021/styles.css +269 -21
- package/docs/static/skillmap/assets/my-assets-three.png +0 -0
- package/docs/static/skillmap/backgrounds/jungle-bg.png +0 -0
- package/docs/static/skillmap/backgrounds/jungle-map.png +0 -0
- package/docs/static/skillmap/backgrounds/rock-map.png +0 -0
- package/docs/static/skillmap/backgrounds/rockstar-card.gif +0 -0
- package/docs/static/skillmap/backgrounds/space-comp.png +0 -0
- package/docs/static/skillmap/backgrounds/space.png +0 -0
- package/docs/static/skillmap/certificates/forest-cert.pdf +0 -0
- package/docs/static/skillmap/certificates/forest-cert.png +0 -0
- package/docs/static/skillmap/certificates/jungle-cert.pdf +0 -0
- package/docs/static/skillmap/certificates/jungle-cert.png +0 -0
- package/docs/static/skillmap/certificates/rockstar-cert.pdf +0 -0
- package/docs/static/skillmap/certificates/rockstar-cert.png +0 -0
- package/docs/static/skillmap/certificates/shark-cert.pdf +0 -0
- package/docs/static/skillmap/certificates/shark-cert.png +0 -0
- package/docs/static/skillmap/certificates/space-cert.pdf +0 -0
- package/docs/static/skillmap/certificates/space-cert.png +0 -0
- package/docs/static/skillmap/racer/racer1.gif +0 -0
- package/docs/static/skillmap/racer/racer2.gif +0 -0
- package/docs/static/skillmap/racer/racer3.gif +0 -0
- package/docs/static/skillmap/rockstar/rockstar1.gif +0 -0
- package/docs/static/skillmap/rockstar/rockstar2.gif +0 -0
- package/docs/static/skillmap/rockstar/rockstar3.gif +0 -0
- package/docs/static/skillmap/shark/shark1-simple.gif +0 -0
- package/docs/static/skillmap/shark/shark4a-simple.gif +0 -0
- package/docs/static/skillmap/zoo/overlaps-food-sprite.gif +0 -0
- package/docs/tutorials/hundred.md +400 -0
- package/package.json +1 -1
- package/pxtarget.json +2 -1
- package/targetconfig.json +4 -1
- package/docs/recipes/wonder-woman-1984/01-maze.md +0 -291
- package/docs/recipes/wonder-woman-1984/02-artifact.md +0 -70
- package/docs/recipes/wonder-woman-1984/03-enemies.md +0 -65
- package/docs/skillmap/forest/forest9.md +0 -714
- package/docs/static/hour-of-code/ww-maze.png +0 -0
- package/docs/static/recipes/wonder-woman-1984/artifact-preview.png +0 -0
- package/docs/static/recipes/wonder-woman-1984/artifacts-location.gif +0 -0
- package/docs/static/recipes/wonder-woman-1984/draw-maze-backup.png +0 -0
- package/docs/static/recipes/wonder-woman-1984/draw-walls-backup.png +0 -0
- package/docs/static/recipes/wonder-woman-1984/end-position.png +0 -0
- package/docs/static/recipes/wonder-woman-1984/enemies-location.gif +0 -0
- package/docs/static/recipes/wonder-woman-1984/enemies-preview.png +0 -0
- package/docs/static/recipes/wonder-woman-1984/fill-maze.gif +0 -0
- package/docs/static/recipes/wonder-woman-1984/fill-walls.gif +0 -0
- package/docs/static/recipes/wonder-woman-1984/wonder-woman3.png +0 -0
- package/docs/static/recipes/wonder-woman-1984/ww-splash3.gif +0 -0
- package/docs/static/recipes/wonder-woman-1984/ww-splash3.mp4 +0 -0
- package/docs/static/ww84-background.png +0 -0
- package/docs/static/ww84-header.png +0 -0
- package/docs/ww84.html +0 -276
|
@@ -78,7 +78,7 @@ forever(function () {
|
|
|
78
78
|
```
|
|
79
79
|
|
|
80
80
|
|
|
81
|
-
## Intro @showdialog
|
|
81
|
+
## {Intro @showdialog}
|
|
82
82
|
|
|
83
83
|
Collecting things is great, but let's also add an element of **DANGER!**
|
|
84
84
|
|
|
@@ -86,14 +86,14 @@ This tutorial will show you how to add cars to the road.
|
|
|
86
86
|
|
|
87
87
|

|
|
88
88
|
|
|
89
|
-
## Step 2
|
|
89
|
+
## {Step 2}
|
|
90
90
|
|
|
91
91
|
The code for a collector game is already in the workspace.
|
|
92
92
|
🕹️ Play your game to help you remember what each chunk of code does.
|
|
93
93
|
|
|
94
94
|
|
|
95
95
|
|
|
96
|
-
## Step 3
|
|
96
|
+
## {Step 3}
|
|
97
97
|
|
|
98
98
|
Let's start by adding a new kind of projectile, an ``||sprites:Enemy||``!
|
|
99
99
|
|
|
@@ -116,7 +116,7 @@ forever(function () {
|
|
|
116
116
|
```
|
|
117
117
|
|
|
118
118
|
|
|
119
|
-
## Step 4
|
|
119
|
+
## {Step 4}
|
|
120
120
|
|
|
121
121
|
► Click the empty grey box and toggle to **My Assets** to select the blue car.
|
|
122
122
|
|
|
@@ -130,7 +130,7 @@ forever(function () {
|
|
|
130
130
|
```
|
|
131
131
|
|
|
132
132
|
|
|
133
|
-
## Step 4
|
|
133
|
+
## {Step 4}
|
|
134
134
|
|
|
135
135
|
**Our new enemy isn't quite ready.**
|
|
136
136
|
We still have to set the vertical positions on the screen and add a pause to the loop.
|
|
@@ -152,7 +152,7 @@ forever(function () {
|
|
|
152
152
|
})
|
|
153
153
|
```
|
|
154
154
|
|
|
155
|
-
## Step 5
|
|
155
|
+
## {Step 5}
|
|
156
156
|
|
|
157
157
|
► Add ``||loops:pause [100] ms||`` to the bottom of this ``||loops:forever||`` loop.
|
|
158
158
|
|
|
@@ -168,7 +168,7 @@ forever(function () {
|
|
|
168
168
|
})
|
|
169
169
|
```
|
|
170
170
|
|
|
171
|
-
## Step 6
|
|
171
|
+
## {Step 6}
|
|
172
172
|
|
|
173
173
|
|
|
174
174
|
**🎮 Now try your game on the game screen 🎮**
|
|
@@ -177,7 +177,7 @@ How is it working?
|
|
|
177
177
|
|
|
178
178
|
|
|
179
179
|
|
|
180
|
-
## Step 7
|
|
180
|
+
## {Step 7}
|
|
181
181
|
|
|
182
182
|
**😲 Uh-Oh 😲**
|
|
183
183
|
|
|
@@ -204,7 +204,7 @@ forever(function () {
|
|
|
204
204
|
})
|
|
205
205
|
```
|
|
206
206
|
|
|
207
|
-
## Step 8
|
|
207
|
+
## {Step 8}
|
|
208
208
|
|
|
209
209
|
**😈 Wicked 😈**
|
|
210
210
|
|
|
@@ -229,7 +229,7 @@ sprites.onOverlap(SpriteKind.Player, SpriteKind.Enemy, function (sprite, otherSp
|
|
|
229
229
|
```
|
|
230
230
|
|
|
231
231
|
|
|
232
|
-
## Step 9
|
|
232
|
+
## {Step 9}
|
|
233
233
|
|
|
234
234
|
At this point, the player is still awarded points when they hit a car.
|
|
235
235
|
|
|
@@ -253,7 +253,7 @@ sprites.onOverlap(SpriteKind.Player, SpriteKind.Enemy, function (sprite, otherSp
|
|
|
253
253
|
```
|
|
254
254
|
|
|
255
255
|
|
|
256
|
-
## Step 8
|
|
256
|
+
## {Step 8}
|
|
257
257
|
|
|
258
258
|
**What an amazing creation!**
|
|
259
259
|
|
|
@@ -79,7 +79,7 @@ forever(function () {
|
|
|
79
79
|
```
|
|
80
80
|
|
|
81
81
|
|
|
82
|
-
## Intro @showdialog
|
|
82
|
+
## {Intro @showdialog}
|
|
83
83
|
|
|
84
84
|
A fantastic game can be made even better by adding small details.
|
|
85
85
|
|
|
@@ -88,14 +88,14 @@ This tutorial will show you how to animate your characters.
|
|
|
88
88
|

|
|
89
89
|
|
|
90
90
|
|
|
91
|
-
## Step 2
|
|
91
|
+
## {Step 2}
|
|
92
92
|
|
|
93
93
|
The code for **Dino Mama** is already in the workspace.
|
|
94
94
|
🕹️ Play your game to remember what the code does.
|
|
95
95
|
|
|
96
96
|
|
|
97
97
|
|
|
98
|
-
## Step 3 @showdialog
|
|
98
|
+
## {Step 3 @showdialog}
|
|
99
99
|
|
|
100
100
|
Let's start by animating Mama Dino!
|
|
101
101
|
|
|
@@ -106,7 +106,7 @@ Let's start by animating Mama Dino!
|
|
|
106
106
|
|
|
107
107
|
|
|
108
108
|
|
|
109
|
-
## Step 4
|
|
109
|
+
## {Step 4}
|
|
110
110
|
|
|
111
111
|
|
|
112
112
|
► In the toolbox, click **Advanced** to reveal the ``||animation:Animation||`` category.
|
|
@@ -150,7 +150,7 @@ true
|
|
|
150
150
|
```
|
|
151
151
|
|
|
152
152
|
|
|
153
|
-
## Step 5
|
|
153
|
+
## {Step 5}
|
|
154
154
|
|
|
155
155
|
**🎥 Let's get animating 🎥**
|
|
156
156
|
|
|
@@ -177,7 +177,7 @@ true
|
|
|
177
177
|
)
|
|
178
178
|
```
|
|
179
179
|
|
|
180
|
-
## Step 6
|
|
180
|
+
## {Step 6}
|
|
181
181
|
|
|
182
182
|
**Watch your speed!**
|
|
183
183
|
|
|
@@ -206,7 +206,7 @@ true
|
|
|
206
206
|
```
|
|
207
207
|
|
|
208
208
|
|
|
209
|
-
## Step 7
|
|
209
|
+
## {Step 7}
|
|
210
210
|
|
|
211
211
|
|
|
212
212
|
**🎮 Now try your game on the game screen 🎮**
|
|
@@ -215,7 +215,7 @@ How cool is that?!?
|
|
|
215
215
|
|
|
216
216
|
|
|
217
217
|
|
|
218
|
-
## Step 8
|
|
218
|
+
## {Step 8}
|
|
219
219
|
|
|
220
220
|
**🔁 Let's do it again 🔁**
|
|
221
221
|
|
|
@@ -248,7 +248,7 @@ true
|
|
|
248
248
|
```
|
|
249
249
|
|
|
250
250
|
|
|
251
|
-
## Step 9
|
|
251
|
+
## {Step 9}
|
|
252
252
|
|
|
253
253
|
|
|
254
254
|
**🎮 Try your project on the game screen! 🎮**
|
|
@@ -257,7 +257,7 @@ Looking good!
|
|
|
257
257
|
|
|
258
258
|
|
|
259
259
|
|
|
260
|
-
## Step 10
|
|
260
|
+
## {Step 10}
|
|
261
261
|
|
|
262
262
|
**😈 Wicked 😈**
|
|
263
263
|
|
|
@@ -290,7 +290,7 @@ true
|
|
|
290
290
|
|
|
291
291
|
|
|
292
292
|
|
|
293
|
-
## Step 8
|
|
293
|
+
## {Step 8}
|
|
294
294
|
|
|
295
295
|
**Now that's an exciting game!**
|
|
296
296
|
|
|
@@ -191,7 +191,7 @@ forever(function () {
|
|
|
191
191
|
|
|
192
192
|
|
|
193
193
|
|
|
194
|
-
## Intro @showdialog
|
|
194
|
+
## {Intro @showdialog}
|
|
195
195
|
|
|
196
196
|
Ready to give your game some extra life?
|
|
197
197
|
|
|
@@ -200,7 +200,7 @@ Ready to give your game some extra life?
|
|
|
200
200
|
|
|
201
201
|
|
|
202
202
|
|
|
203
|
-
## Step 1
|
|
203
|
+
## {Step 1}
|
|
204
204
|
|
|
205
205
|
The code for a collector game is already in the workspace.
|
|
206
206
|
|
|
@@ -249,7 +249,7 @@ forever(function () {
|
|
|
249
249
|
```
|
|
250
250
|
|
|
251
251
|
|
|
252
|
-
## Step 2
|
|
252
|
+
## {Step 2}
|
|
253
253
|
|
|
254
254
|
**The extra life isn't quite ready.**
|
|
255
255
|
|
|
@@ -297,7 +297,7 @@ forever(function () {
|
|
|
297
297
|
```
|
|
298
298
|
|
|
299
299
|
|
|
300
|
-
## Step 3
|
|
300
|
+
## {Step 3}
|
|
301
301
|
|
|
302
302
|
Extra lives are supposed to be special, but they appear just as much
|
|
303
303
|
as the other two projectiles right now.
|
|
@@ -341,7 +341,7 @@ forever(function () {
|
|
|
341
341
|
|
|
342
342
|
|
|
343
343
|
|
|
344
|
-
## Step 4
|
|
344
|
+
## {Step 4}
|
|
345
345
|
|
|
346
346
|
**Play through your game once or twice. Notice anything wrong?**
|
|
347
347
|
|
|
@@ -369,7 +369,7 @@ sprites.onOverlap(SpriteKind.Player, SpriteKind.Food, function (sprite, otherSpr
|
|
|
369
369
|
```
|
|
370
370
|
|
|
371
371
|
|
|
372
|
-
## Step 6
|
|
372
|
+
## {Step 6}
|
|
373
373
|
|
|
374
374
|
The extra life is still **subtracting** a life when collected.
|
|
375
375
|
|
|
@@ -401,7 +401,7 @@ sprites.onOverlap(SpriteKind.Player, SpriteKind.Food, function (sprite, otherSpr
|
|
|
401
401
|
|
|
402
402
|
|
|
403
403
|
|
|
404
|
-
## Step 7
|
|
404
|
+
## {Step 7}
|
|
405
405
|
|
|
406
406
|
► The new **mySprite say** block is pointed toward the wrong sprite. To fix that,
|
|
407
407
|
drag the ``||variables:otherSprite||`` argument out of the header of the
|
|
@@ -422,7 +422,7 @@ sprites.onOverlap(SpriteKind.Player, SpriteKind.Food, function (sprite, otherSpr
|
|
|
422
422
|
|
|
423
423
|
```
|
|
424
424
|
|
|
425
|
-
## Step 8
|
|
425
|
+
## {Step 8}
|
|
426
426
|
|
|
427
427
|
|
|
428
428
|
**There you go!**
|
|
@@ -472,7 +472,7 @@ forever(function () {
|
|
|
472
472
|
|
|
473
473
|
```
|
|
474
474
|
|
|
475
|
-
## Intro @showdialog
|
|
475
|
+
## {Intro @showdialog}
|
|
476
476
|
|
|
477
477
|
You've learned everything you know to make an exciting collector game. Now put it all together to create something that's all your own!
|
|
478
478
|
|
|
@@ -481,7 +481,7 @@ You've learned everything you know to make an exciting collector game. Now put
|
|
|
481
481
|
|
|
482
482
|
|
|
483
483
|
|
|
484
|
-
## Step 1
|
|
484
|
+
## {Step 1}
|
|
485
485
|
|
|
486
486
|
The code for a collector game is already in the workspace.
|
|
487
487
|
|
|
@@ -42,49 +42,49 @@ Specifically, they will experience the following topics:
|
|
|
42
42
|
As students progress through these projects, they will progressively build a game where their plane shoots water at flames to weaken them until they eventually extinguish.
|
|
43
43
|
|
|
44
44
|
```package
|
|
45
|
-
pxt-
|
|
45
|
+
pxt-forest-special=github:kiki-lee/forest-special/
|
|
46
46
|
```
|
|
47
47
|
|
|
48
48
|
#### 1. Prepare Your Plane
|
|
49
49
|
| Activity | Prepare Your Plane (7 min) |
|
|
50
50
|
|---|---|
|
|
51
51
|
|  | Set up your plane to make sure you can get everywhere you need to be! |
|
|
52
|
-
| Blocks used | ``[let mySprite = sprites.create(img`.`, SpriteKind.Player)]``<br/>``[let mySprite: Sprite=null; controller.moveSprite(mySprite)]``<br/>``[
|
|
52
|
+
| Blocks used | ``[let mySprite = sprites.create(img`.`, SpriteKind.Player)]``<br/>``[let mySprite: Sprite=null; controller.moveSprite(mySprite)]``<br/>``[let mySprite: Sprite=null; scene.cameraFollowSprite(mySprite)]`` |
|
|
53
53
|
| Solution option | [Prepare Your Plane Project](https://makecode.com/_0CbLhcf6TW1W) |
|
|
54
54
|
|
|
55
55
|
#### 2. Burning Issues
|
|
56
56
|
| Activity | Burning Issues (8 min) |
|
|
57
57
|
|---|---|
|
|
58
58
|
|  | Use loops to add random fires to your map! |
|
|
59
|
-
| Blocks used | ``[
|
|
59
|
+
| Blocks used | ``[for (let index = 0; index < 4; index++) {}]``<br/>``[newFire = sprites.create(img`.`, SpriteKind.Player)]``<br/>``[tiles.placeOnRandomTile(newFire, assets.tile`transparency16`)]``<br/>``[sprites.onCreated()]``<br/>``[let sprite: Sprite=null; sprite.startEffect(effects.fire)]`` |
|
|
60
60
|
| Solution option | [Burning Issues Project](https://makecode.com/_EdjVbU6eMTPW) |
|
|
61
61
|
|
|
62
62
|
#### 3. Fire Fighting
|
|
63
63
|
| Activity | Fire Fighting (10 min) |
|
|
64
64
|
|---|---|
|
|
65
65
|
|  | Add a water hose to your plane so you can keep your fires under control. |
|
|
66
|
-
| Blocks used | ``[
|
|
66
|
+
| Blocks used | ``[controller.A.onEvent(ControllerButtonEvent.Repeated, function () {})]``<br/>``[let mySprite: Sprite=null; sprites.spray(mySprite, img`.`)]``<br/>``[sprites.set_flame_strength(sprite, 10)]``<br/>``[sprites.onOverlap()]``<br/>``[let sprite: Sprite=null; sprite.destroy()]``<br/>``[sprites.change_flame_strength_by(sprite, -1)]`` |
|
|
67
67
|
| Solution option | [Fire Fighting Project](https://makecode.com/_9p32WzfzX1uv) |
|
|
68
68
|
|
|
69
69
|
#### 4. Spreads Like Wildfire
|
|
70
70
|
| Activity | Spreads Like Wildfire (10 min) |
|
|
71
71
|
|---|---|
|
|
72
|
-
|  | Conditions in the weather and environment such as drought, winds, vegetation density and dryness can cause fires to spread more quickly. Let
|
|
73
|
-
| Blocks used | ``[
|
|
72
|
+
|  | Conditions in the weather and environment such as drought, winds, vegetation density and dryness can cause fires to spread more quickly. Let's simulate these conditions in our game. |
|
|
73
|
+
| Blocks used | ``[game.set_health_of_trees(7)]``<br/>``[game.set_strength_of_wind(3)]``<br/>``[game.set_dryness_of_grass(3)]``<br/>``[game.onUpdate(function () {})]``<br/>``[sprites.random_spread(img`.`]``<br/>``[sprites.onDestroyed(SpriteKind.Player, function (sprite) {})]``<br/>``[tiles.setTileAt(tiles.locationOfSprite(sprite), assets.tile`transparency16`)]``<br/>``[scene.onOverlapTile()]``<br/>``[sprites.onOverlap()]``<br/>``[let otherSprite: Sprite=null; otherSprite.destroy()]``<br/> |
|
|
74
74
|
| Solution option | [Spreads Like Wildfire Project](https://makecode.com/_ifR6pigEHKP7) |
|
|
75
75
|
|
|
76
76
|
#### 5. Head's Up!
|
|
77
77
|
| Activity | Head's Up! (9 min) |
|
|
78
78
|
|---|---|
|
|
79
79
|
|  | Computer science is more important to firefighting than ever before. Let's add a heads-up-display (HUD) to help the pilot get information from their fire database in real-time. |
|
|
80
|
-
| Blocks used | ``[
|
|
80
|
+
| Blocks used | ``[hud.forest_hud(true)]``<br/>``[hud.danger_hud(true)]``<br/>``[hud.forest_hud(true)]`` |
|
|
81
81
|
| Solution option | [Head's Up Project](https://makecode.com/_77cLwx4b120o) |
|
|
82
82
|
|
|
83
83
|
#### 4. Keep Going
|
|
84
84
|
| Activity | Keep Going (10 min) |
|
|
85
85
|
|---|---|
|
|
86
86
|
|  | Add more to your game! Experiment with sounds and animation to make your game truly unique. |
|
|
87
|
-
| Blocks used | ``[
|
|
87
|
+
| Blocks used | ``[controller.left.onEvent(ControllerButtonEvent.Pressed, function () {})]``<br/>``[animation.runImageAnimation()]``<br/>``[music.thump.play()]`` |
|
|
88
88
|
| Solution option | [Keep Going Project](https://makecode.com/_0kzFyAgPMa4A) |
|
|
89
89
|
|
|
90
90
|
##### Game Mod Ideas
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
# About Save the Forest!
|
|
2
|
+
|
|
3
|
+
**A page for Educators & Parents**
|
|
4
|
+
|
|
5
|
+
The **Save the Forest!** map uses basic code blocks and extensions in MakeCode Arcade to implement simple game concepts.
|
|
6
|
+
|
|
7
|
+
In this short set of activities, students code a game that recreates the conditions for a forest fire, and then code a fire-fighting airtanker plane to spray water and put out the flames! This map is intended for students who are new to MakeCode with little or no previous coding experience.
|
|
8
|
+
|
|
9
|
+
Designed for students between the ages of 11 & 18, this experience contains a total of 6 tutorials (approximating 54 minutes of instruction). At the end of the learning path, students receive a certificate of completion.
|
|
10
|
+
|
|
11
|
+
| | Minutes* | Game Type | Key Concepts |
|
|
12
|
+
| --------------- | -------- | --------- | ------------ |
|
|
13
|
+
| Prepare Your Plane | 7 | Intro | movement, sprites |
|
|
14
|
+
| Burning Issues | 8 | Maze | events, loops, random |
|
|
15
|
+
| Fire Fighting | 10 | Maze | events, projectiles |
|
|
16
|
+
| Spreads Like Wildfire | 10 | Maze | events, variables, collisions |
|
|
17
|
+
| Head's Up! | 9 | Maze | displays, customization |
|
|
18
|
+
| Keep Going | 10 | Maze | animations, sounds |
|
|
19
|
+
|
|
20
|
+
\* Minutes are approximate, based on time to follow instructions as written. Times do not include time spent on designing elements or re-aquainting with previously-written code. Providing extra time for creativity and debugging is encouraged.
|
|
21
|
+
|
|
22
|
+
### Objectives
|
|
23
|
+
|
|
24
|
+
After completing Save the Forest, students will have gained exposure to computer science and game design elements using MakeCode Arcade.
|
|
25
|
+
|
|
26
|
+
Specifically, they will experience the following topics:
|
|
27
|
+
|
|
28
|
+
- Loops
|
|
29
|
+
- Events
|
|
30
|
+
- Variables
|
|
31
|
+
- Tilemaps
|
|
32
|
+
- Movement
|
|
33
|
+
- Collisions
|
|
34
|
+
- Projectiles
|
|
35
|
+
- Animation
|
|
36
|
+
- Sounds
|
|
37
|
+
- Strength/Life Mechanics
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
### Projects
|
|
41
|
+
|
|
42
|
+
As students progress through these projects, they will progressively build a game where their plane shoots water at flames to weaken them until they eventually extinguish.
|
|
43
|
+
|
|
44
|
+
```package
|
|
45
|
+
pxt-forest-special=github:kiki-lee/forest-special/
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
#### 1. Prepare Your Plane
|
|
49
|
+
| Activity | Prepare Your Plane (7 min) |
|
|
50
|
+
|---|---|
|
|
51
|
+
|  | Set up your plane to make sure you can get everywhere you need to be! |
|
|
52
|
+
| Blocks used | ``[let mySprite = sprites.create(img`.`, SpriteKind.Player)]``<br/>``[let mySprite: Sprite=null; controller.moveSprite(mySprite)]``<br/>``[let mySprite: Sprite=null; scene.cameraFollowSprite(mySprite)]`` |
|
|
53
|
+
| Solution option | [Prepare Your Plane Project](https://makecode.com/_0CbLhcf6TW1W) |
|
|
54
|
+
|
|
55
|
+
#### 2. Burning Issues
|
|
56
|
+
| Activity | Burning Issues (8 min) |
|
|
57
|
+
|---|---|
|
|
58
|
+
|  | Use loops to add random fires to your map! |
|
|
59
|
+
| Blocks used | ``[for (let index = 0; index < 4; index++) {}]``<br/>``[newFire = sprites.create(img`.`, SpriteKind.Player)]``<br/>``[tiles.placeOnRandomTile(newFire, assets.tile`transparency16`)]``<br/>``[sprites.onCreated()]``<br/>``[let sprite: Sprite=null; sprite.startEffect(effects.fire)]`` |
|
|
60
|
+
| Solution option | [Burning Issues Project](https://makecode.com/_EdjVbU6eMTPW) |
|
|
61
|
+
|
|
62
|
+
#### 3. Fire Fighting
|
|
63
|
+
| Activity | Fire Fighting (10 min) |
|
|
64
|
+
|---|---|
|
|
65
|
+
|  | Add a water hose to your plane so you can keep your fires under control. |
|
|
66
|
+
| Blocks used | ``[controller.A.onEvent(ControllerButtonEvent.Repeated, function () {})]``<br/>``[let mySprite: Sprite=null; sprites.spray(mySprite, img`.`)]``<br/>``[sprites.set_flame_strength(sprite, 10)]``<br/>``[sprites.onOverlap()]``<br/>``[let sprite: Sprite=null; sprite.destroy()]``<br/>``[sprites.change_flame_strength_by(sprite, -1)]`` |
|
|
67
|
+
| Solution option | [Fire Fighting Project](https://makecode.com/_9p32WzfzX1uv) |
|
|
68
|
+
|
|
69
|
+
#### 4. Spreads Like Wildfire
|
|
70
|
+
| Activity | Spreads Like Wildfire (10 min) |
|
|
71
|
+
|---|---|
|
|
72
|
+
|  | Conditions in the weather and environment such as drought, winds, vegetation density and dryness can cause fires to spread more quickly. Let's simulate these conditions in our game. |
|
|
73
|
+
| Blocks used | ``[game.set_health_of_trees(7)]``<br/>``[game.set_strength_of_wind(3)]``<br/>``[game.set_dryness_of_grass(3)]``<br/>``[game.onUpdate(function () {})]``<br/>``[sprites.random_spread(img`.`]``<br/>``[sprites.onDestroyed(SpriteKind.Player, function (sprite) {})]``<br/>``[tiles.setTileAt(tiles.locationOfSprite(sprite), assets.tile`transparency16`)]``<br/>``[scene.onOverlapTile()]``<br/>``[sprites.onOverlap()]``<br/>``[let otherSprite: Sprite=null; otherSprite.destroy()]``<br/> |
|
|
74
|
+
| Solution option | [Spreads Like Wildfire Project](https://makecode.com/_ifR6pigEHKP7) |
|
|
75
|
+
|
|
76
|
+
#### 5. Head's Up!
|
|
77
|
+
| Activity | Head's Up! (9 min) |
|
|
78
|
+
|---|---|
|
|
79
|
+
|  | Computer science is more important to firefighting than ever before. Let's add a heads-up-display (HUD) to help the pilot get information from their fire database in real-time. |
|
|
80
|
+
| Blocks used | ``[hud.forest_hud(true)]``<br/>``[hud.danger_hud(true)]``<br/>``[hud.forest_hud(true)]`` |
|
|
81
|
+
| Solution option | [Head's Up Project](https://makecode.com/_77cLwx4b120o) |
|
|
82
|
+
|
|
83
|
+
#### 4. Keep Going
|
|
84
|
+
| Activity | Keep Going (10 min) |
|
|
85
|
+
|---|---|
|
|
86
|
+
|  | Add more to your game! Experiment with sounds and animation to make your game truly unique. |
|
|
87
|
+
| Blocks used | ``[controller.left.onEvent(ControllerButtonEvent.Pressed, function () {})]``<br/>``[animation.runImageAnimation()]``<br/>``[music.thump.play()]`` |
|
|
88
|
+
| Solution option | [Keep Going Project](https://makecode.com/_0kzFyAgPMa4A) |
|
|
89
|
+
|
|
90
|
+
##### Game Mod Ideas
|
|
91
|
+
|
|
92
|
+
As students work on **Keep Going**, we encourage them to plan out ways they can dive even deeper using the full editor after opening their game using the [SAVE TO MY PROJECTS] button.
|
|
93
|
+
|
|
94
|
+
- What other environment could my plane explore? Neighborhoods? The desert?
|
|
95
|
+
- What could pop-up randomly instead of fires? Fish? Mice? Snowmen?
|
|
96
|
+
- What could you move around instead of an airplane? A boat? A magnifying glass?
|
|
97
|
+
|
|
98
|
+
##### What's Next?
|
|
99
|
+
|
|
100
|
+
When students are finished with **Save the Forest!** consider graduating them to another map to work on skills further.
|
|
101
|
+
|
|
102
|
+
- [Try the Beginner Skillmap](/skillmap/beginner)
|
|
103
|
+
- [Try the Jungle Monkey Skillmap](/skillmap/jungle)
|
|
104
|
+
- [Try the Space Explorer Map](/skillmap/space)
|
|
105
|
+
- [Try our Time Flies Tutorial](/tutorials/froggy)
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
# About Shark Splash
|
|
2
|
+
|
|
3
|
+
**A page for Educators & Parents**
|
|
4
|
+
|
|
5
|
+
**Shark Splash** introduces a number of MakeCode Arcade game design elements.
|
|
6
|
+
|
|
7
|
+
In this set of activities, students will create a MakeCode Arcade game that involves protecting their shark from submarines while it hunts for food. This activity is intended for students who are new to MakeCode with little to moderate previous coding experience. Through step-by-step instructions, students will focus on game creation across 3 primary topics: destroying enemies, collecting food, and custom modification.
|
|
8
|
+
|
|
9
|
+
Designed for students between the ages of 10 & 16, this experience contains a total of 5 tutorials (approximating at least 32 minutes of instruction). At the end of the learning path, students receive a certificate of completion.
|
|
10
|
+
|
|
11
|
+
| | Minutes* | Game Type | Key Concepts |
|
|
12
|
+
| --------------- | -------- | --------- | ------------ |
|
|
13
|
+
| **Day 1** | | | |
|
|
14
|
+
| Set the Scene | 7 | Intro | movement, events, projectiles |
|
|
15
|
+
| Food not Friends | 7 | Collector | events, positioning, random numbers, movement |
|
|
16
|
+
| Eat Up! | 8 | Collector | events, destroying, game score |
|
|
17
|
+
| Under the Sea | 8 | Collector | loops, design, positioning, random numbers |
|
|
18
|
+
| Let's Get Animated! | 10+ | Design | art design, effects |
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
\* Minutes are approximate, based on time to follow instructions as written. Times do not include time spent on designing elements or re-aquainting with previously-written code. Providing extra time for creativity and debugging is encouraged.
|
|
22
|
+
|
|
23
|
+
### Objectives
|
|
24
|
+
|
|
25
|
+
After completing Shark Splash, students will have gained exposure to multiple classic arcade game concepts using MakeCode Arcade.
|
|
26
|
+
|
|
27
|
+
Specifically, they will experience the following topics:
|
|
28
|
+
|
|
29
|
+
#### Computer Science Concepts
|
|
30
|
+
|
|
31
|
+
- Events
|
|
32
|
+
- Loops
|
|
33
|
+
- Variables
|
|
34
|
+
|
|
35
|
+
#### Game Design Concepts
|
|
36
|
+
|
|
37
|
+
- Movement
|
|
38
|
+
- Positioning
|
|
39
|
+
- Randomization
|
|
40
|
+
- Effects
|
|
41
|
+
- Game Score
|
|
42
|
+
- Velocity
|
|
43
|
+
- Art Design
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
#### 1. Set the Scene
|
|
48
|
+
|
|
49
|
+
| Activity | Set The Scene (7 min) |
|
|
50
|
+
|---|---|
|
|
51
|
+
|  | Set up your laser-firing ocean shark. |
|
|
52
|
+
| Blocks used | ``[scene.setBackgroundColor(0)]``<br/>``[let mySprite = sprites.create(img`.`, SpriteKind.Player)]``<br/>``[controller.moveSprite(mySprite)]``<br/>``[let mySprite: Sprite = null; mySprite.setStayInScreen(true)]``<br>``[controller.A.onEvent(ControllerButtonEvent.Pressed, function () {})]``<br/>``[projectile = sprites.createProjectileFromSprite(img`.`, mySprite)]``|
|
|
53
|
+
| Solution option | [Set the Scene Project](https://makecode.com/_ghyiPCDsJLAC) |
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
#### 2. Food not Friends
|
|
59
|
+
|
|
60
|
+
| Activity | Food not Friends (7 min) |
|
|
61
|
+
|---|---|
|
|
62
|
+
|  | Back to an enemy-free ocean, this tutorial will go over spawing some food for your shark. |
|
|
63
|
+
| Blocks used | ``[game.onUpdateInterval()]``<br/>``[myFood = sprites.create(img`.`, SpriteKind.Food)]``<br/>``[let myFood: Sprite = null; let mySprite: Sprite = null; myFood.setPosition(0 + mySprite.x, randint())]``<br/>``[let myFood: Sprite = null; myFood.vx = 0]``|
|
|
64
|
+
| Solution option | [Food not Friends Project](https://makecode.com/_dLJHiifhR2ev) |
|
|
65
|
+
|
|
66
|
+
#### 3. Eat Up!
|
|
67
|
+
|
|
68
|
+
| Activity | Eat Up! (8 min) |
|
|
69
|
+
|---|---|
|
|
70
|
+
|  | This game builds off the last level. Animate and gamify your shark's consumption of fish. |
|
|
71
|
+
| Blocks used | ``[sprites.onOverlap(SpriteKind.Player, SpriteKind.Food, function (sprite, otherSprite) {})]``<br/>``[let otherSprite: Sprite = null; otherSprite.destroy(effects.disintegrate,)]``<br/>``[info.changeScoreBy()]``<br/>``[info.startCountdown()]``<br/>``[info.onCountdownEnd(function () {})]``<br/>``[game.over(true)]``|
|
|
72
|
+
| Solution option | [Eat Up! Project](https://makecode.com/_WM31H3Uur331) |
|
|
73
|
+
|
|
74
|
+
#### 4. Under the Sea
|
|
75
|
+
|
|
76
|
+
| Activity | Under the Sea (8 min) |
|
|
77
|
+
|---|---|
|
|
78
|
+
|  | Building off the previous level, this level mixes design with automated generation to create a unique sea environment for your shark. |
|
|
79
|
+
| Blocks used | ``[scene.setBackgroundImage(img`.`)]``<br/>``[for (let index = 0; index < 10; index++) {}]``<br/>``[myDecor = sprites.create(img`.`,)]``<br/>``[let myDecor: Sprite = null; myDecor.setPosition(randint())]`` |
|
|
80
|
+
| Solution option | [Under the Sea Project](https://makecode.com/_2D9JL6Rm36yC) |
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
#### 5. Let's Get Animated!
|
|
84
|
+
|
|
85
|
+
| Activity | Let's Get Animated! (15+) |
|
|
86
|
+
|---|---|
|
|
87
|
+
|  | Animate your sprites for a more life-like game! |
|
|
88
|
+
| Blocks used | _None_ |
|
|
89
|
+
| Solution option | N/A |
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
##### Game Mod Ideas
|
|
94
|
+
|
|
95
|
+
After students work on "Let's Get Animated!", we encourage them to plan out how they want to modify this game to best suit their interests. Consider the following questions:
|
|
96
|
+
|
|
97
|
+
- What is an activity that I really like? How does that tell me who my hero should be?
|
|
98
|
+
- When I do this activity, what supplies do I need? Replace the fishy food with these supplies!
|
|
99
|
+
- What environment do I usually do this activity in? Replace the background with something similar!
|
|
100
|
+
|
|
101
|
+
Don't forget to save this activity to projects and keep building!
|
|
@@ -84,7 +84,7 @@ to **the end** of the
|
|
|
84
84
|
``||loops:on start||``
|
|
85
85
|
container.
|
|
86
86
|
|
|
87
|
-
_💡 Remember, the
|
|
87
|
+
_💡 Remember, the icon to the left of the instructions shows the same icon as the toolbox category for the block you need._
|
|
88
88
|
|
|
89
89
|
- :paint brush: To choose your plane, click the empty grey box, then toggle to **My Assets** and choose your aircraft.
|
|
90
90
|
|
|
@@ -173,74 +173,6 @@ head to the next activity where you'll add the 🔥🔥🔥.
|
|
|
173
173
|
|
|
174
174
|
|
|
175
175
|
|
|
176
|
-
|
|
177
|
-
```package
|
|
178
|
-
pxt-tilemaps=github:microsoft/pxt-tilemaps/
|
|
179
|
-
pxt-text=github:microsoft/arcade-text
|
|
180
|
-
arcade-premium-life=github:jwunderl/arcade-premium-life/
|
|
181
|
-
pxt-characterAnimations=github:microsoft/arcade-character-animations/
|
|
182
|
-
pxt-data=github:microsoft/arcade-sprite-data/
|
|
183
|
-
pxt-story=github:microsoft/arcade-storytelling/
|
|
184
|
-
arcade-sprite-util=github:jwunderl/arcade-sprite-util/
|
|
185
|
-
pxt-status-bar=github:jwunderl/pxt-status-bar
|
|
186
|
-
```
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
```customts
|
|
190
|
-
|
|
191
|
-
let statusbar = statusbars.create(82, 4, StatusBarKind.Health)
|
|
192
|
-
statusbar.top = 12
|
|
193
|
-
statusbar.left = 4
|
|
194
|
-
statusbar.max = tiles.tilemapRows() * tiles.tilemapColumns()
|
|
195
|
-
let statusLabel = textsprite.create("Healthy Forest", 0, 1)
|
|
196
|
-
statusLabel.setFlag(SpriteFlag.RelativeToCamera, true)
|
|
197
|
-
statusLabel.top = 2
|
|
198
|
-
statusLabel.left = 4
|
|
199
|
-
statusbar.setColor(7, 14)
|
|
200
|
-
let fireLabel = textsprite.create("Fires:")
|
|
201
|
-
fireLabel.right = 145
|
|
202
|
-
fireLabel.top = 2
|
|
203
|
-
fireLabel.setMaxFontHeight(4)
|
|
204
|
-
fireLabel.setFlag(SpriteFlag.RelativeToCamera, true)
|
|
205
|
-
statusLabel.setFlag(SpriteFlag.Invisible, true)
|
|
206
|
-
statusbar.setFlag(SpriteFlag.Invisible, true)
|
|
207
|
-
fireLabel.setFlag(SpriteFlag.Invisible, true)
|
|
208
|
-
info.showScore(false)
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
namespace animation {
|
|
213
|
-
/*
|
|
214
|
-
* Loops the passed frames on the sprite at the given interval whenever
|
|
215
|
-
* the specified rule is true for that sprite.
|
|
216
|
-
*
|
|
217
|
-
* If more than one rule applies, the most specific rule will be used.
|
|
218
|
-
* If multiple rules are equally specific, the currently executing rule
|
|
219
|
-
* is favored (or one is chosen at random).
|
|
220
|
-
*
|
|
221
|
-
* @param sprite the sprite to animate
|
|
222
|
-
* @param frames the images that make up that animation
|
|
223
|
-
* @param frame Interval the amount of time to spend on each frame in milliseconds
|
|
224
|
-
* @param rule the rule that decides when this animation will play
|
|
225
|
-
*/
|
|
226
|
-
//% blockId=arcade_character_loop_frames2
|
|
227
|
-
//% block="animate $sprite loop frames $frames interval (ms) $frameInterval when $rule"
|
|
228
|
-
//% sprite.defl=mySprite
|
|
229
|
-
//% frames.defl=Fire Plane Right
|
|
230
|
-
//% sprite.shadow=variables_get
|
|
231
|
-
//% frames.shadow=animation_editor
|
|
232
|
-
//% frameInterval.shadow=timePicker
|
|
233
|
-
//% rule.shadow=arcade_character_make_rule
|
|
234
|
-
//% weight=100
|
|
235
|
-
//% blockGap=8
|
|
236
|
-
//% help=github:arcade-character-animations/docs/loop-character-animation
|
|
237
|
-
export function loopFrames2(sprite: Sprite, frames: Image[], frameInterval: number, rule: number) {
|
|
238
|
-
characterAnimations.loopFrames(sprite, frames, frameInterval, rule);
|
|
239
|
-
}
|
|
240
|
-
}
|
|
241
|
-
```
|
|
242
|
-
|
|
243
|
-
|
|
244
176
|
```assetjson
|
|
245
177
|
{
|
|
246
178
|
"README.md": " ",
|