pxt-arcade 1.12.7 → 1.12.10
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-strings.json +1 -0
- package/built/target.js +1143 -1037
- package/built/target.json +1143 -1037
- package/built/targetlight.json +5 -5
- package/built/theme.json +1 -0
- package/docs/developer/kiosk.md +116 -0
- package/docs/firefox-picture-in-picture.md +29 -0
- package/docs/kiosk.html +1 -1
- package/docs/multiplayer-games.md +56 -0
- package/docs/projects/SUMMARY.md +7 -0
- package/docs/projects.md +6 -0
- package/docs/static/browser-pip/firefox/firefox-settings.png +0 -0
- package/docs/static/browser-pip/firefox/hide-pip-toggle.png +0 -0
- package/docs/static/browser-pip/firefox/pip-icon.png +0 -0
- package/docs/static/developer/kiosk/add-to-kiosk.png +0 -0
- package/docs/static/developer/kiosk/add-your-game.png +0 -0
- package/docs/static/developer/kiosk/keyboard-controls.png +0 -0
- package/docs/static/developer/kiosk/locked-state.png +0 -0
- package/docs/static/developer/kiosk/menu-bar.png +0 -0
- package/docs/static/developer/kiosk/multiple-uploaded-games.png +0 -0
- package/docs/static/developer/kiosk/no-uploaded-games.png +0 -0
- package/docs/static/developer/kiosk/qr-code-enlarged.png +0 -0
- package/docs/static/developer/kiosk/select-a-game.png +0 -0
- package/docs/static/developer/kiosk/share-project.png +0 -0
- package/docs/static/developer/kiosk/shared-project-link.png +0 -0
- package/docs/static/developer/kiosk/shared-project-name.png +0 -0
- package/docs/static/developer/kiosk/single-uploaded-game.png +0 -0
- package/docs/static/hardware/arcade-kiosks/cabinet.png +0 -0
- package/docs/static/kiosk/asset-manifest.json +3 -3
- package/docs/static/kiosk/static/js/{main.0fe8d35c.js → main.3ab95ea3.js} +3 -3
- package/docs/static/kiosk/static/js/{main.0fe8d35c.js.LICENSE.txt → main.3ab95ea3.js.LICENSE.txt} +0 -0
- package/docs/static/kiosk/static/js/main.3ab95ea3.js.map +1 -0
- package/docs/static/multiplayer/tag.png +0 -0
- package/docs/static/skillmap/racer/assets-tab.png +0 -0
- package/docs/static/skillmap/racer/image-editor.png +0 -0
- package/docs/static/skillmap/racer/truck2.png +0 -0
- package/docs/test/hardware/cardboard-arcade.md +139 -0
- package/docs/test/hardware/full-size-kiosk.md +101 -0
- package/docs/test/skillmap/dino/dino1.md +76 -133
- package/docs/test/skillmap/dino/dino2.md +111 -86
- package/docs/test/skillmap/dino/dino3.md +103 -137
- package/docs/test/skillmap/dino/dino4.md +112 -85
- package/docs/test/skillmap/dino/dino5.md +1 -2
- package/docs/test/skillmap/racer/racer-pre.md +147 -0
- package/docs/test/skillmap/racer/racer1.md +245 -0
- package/docs/test/skillmap/racer/racer2.md +220 -0
- package/docs/test/skillmap/racer/racer3.md +174 -0
- package/docs/test/skillmap/star/star1.md +124 -70
- package/docs/test/skillmap/star/star2.md +62 -64
- package/docs/test/skillmap/star/star3.md +48 -53
- package/docs/test/skillmap/star/star4.md +28 -10
- package/docs/test/tutorials/hawk.md +819 -0
- package/docs/test/tutorials/holiday.md +14 -2
- package/package.json +3 -3
- package/pxtarget.json +2 -1
- package/targetconfig.json +12 -5
- package/docs/static/kiosk/static/js/main.0fe8d35c.js.map +0 -1
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
# Join the Audience
|
|
2
|
+
### @explicitHints true
|
|
2
3
|
|
|
3
4
|
|
|
4
5
|
## {Introduction @showdialog}
|
|
@@ -28,17 +29,18 @@ Let's add an audience!
|
|
|
28
29
|
|
|
29
30
|
---
|
|
30
31
|
|
|
31
|
-
- :paper plane: From ``||sprites:Sprites||`` drag
|
|
32
|
-
|
|
32
|
+
- :paper plane: From ``||sprites:Sprites||`` drag
|
|
33
|
+
|
|
34
|
+
```block
|
|
35
|
+
let audience = sprites.create(assets.image`clap1`, SpriteKind.Player)
|
|
36
|
+
```
|
|
33
37
|
and snap it into **the bottom** of the <br/>
|
|
34
38
|
``||loops:on start||`` container.
|
|
35
39
|
|
|
36
|
-
|
|
37
|
-
- :mouse pointer: Click ``||variables:mySprite2||`` and scroll to the bottom of the pop-up list to rename it ``||variables:audience||``.
|
|
38
|
-
|
|
39
40
|
- :paint brush: Click the empty grey square and toggle to **My Assets**
|
|
40
41
|
to choose the long audience sprite called **clap1**.
|
|
41
42
|
|
|
43
|
+
#### ~ tutorialhint
|
|
42
44
|
|
|
43
45
|
```blocks
|
|
44
46
|
scene.setBackgroundImage(assets.image`stage`)
|
|
@@ -59,28 +61,26 @@ repositioned the star of the show!
|
|
|
59
61
|
---
|
|
60
62
|
|
|
61
63
|
- :paper plane: Grab <br/>
|
|
62
|
-
``||sprites:set [mySprite] [x] to [0]||`` <br/>
|
|
63
|
-
and snap it into **the end** of the <br/>
|
|
64
|
-
``||loops:on start||`` container.
|
|
65
|
-
|
|
66
64
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
- :mouse pointer: Change ``||sprites:x||`` to
|
|
71
|
-
``||sprites:bottom||``.
|
|
65
|
+
```block
|
|
66
|
+
let audience: Sprite = null
|
|
72
67
|
|
|
73
|
-
|
|
68
|
+
audience.bottom = 120
|
|
69
|
+
```
|
|
70
|
+
and snap it into **the end** of the <br/>
|
|
71
|
+
``||loops:on start||`` container.
|
|
74
72
|
|
|
73
|
+
#### ~ tutorialhint
|
|
75
74
|
|
|
76
75
|
```blocks
|
|
77
76
|
scene.setBackgroundImage(assets.image`stage`)
|
|
78
|
-
let
|
|
79
|
-
|
|
77
|
+
let talent = sprites.create(assets.image`towering turtles`, SpriteKind.Player)
|
|
78
|
+
talent.bottom = 115
|
|
80
79
|
game.splash("Press (A) to play!")
|
|
81
80
|
info.startCountdown(10)
|
|
82
|
-
//@highlight
|
|
83
81
|
let audience = sprites.create(assets.image`clap1`, SpriteKind.Player)
|
|
82
|
+
//@highlight
|
|
83
|
+
audience.bottom = 120
|
|
84
84
|
```
|
|
85
85
|
|
|
86
86
|
|
|
@@ -104,16 +104,19 @@ with each click** <br/>
|
|
|
104
104
|
---
|
|
105
105
|
|
|
106
106
|
- :paper plane: From ``||sprites:Sprites||``, grab <br/>
|
|
107
|
-
|
|
107
|
+
|
|
108
|
+
```block
|
|
109
|
+
let audience: Sprite = null
|
|
110
|
+
audience.setImage(img`.`)
|
|
111
|
+
```
|
|
108
112
|
and snap it into **the bottom** of the <br/>
|
|
109
113
|
``||controller:on [A] button [pressed]||`` container.
|
|
110
114
|
|
|
111
|
-
- :mouse pointer: Click ``||variables(noclick):mySprite||`` and change it to
|
|
112
|
-
``||variables(noclick):audience||`` so that the correct sprite is swapped during your clicks.
|
|
113
|
-
|
|
114
115
|
- :paint brush: Click the grey square and toggle to **My Assets** and
|
|
115
116
|
choose the other audience pose (called **clap2**.)
|
|
116
117
|
|
|
118
|
+
#### ~ tutorialhint
|
|
119
|
+
|
|
117
120
|
```blocks
|
|
118
121
|
let audience: Sprite = null
|
|
119
122
|
controller.A.onEvent(ControllerButtonEvent.Pressed, function () {
|
|
@@ -141,21 +144,28 @@ Right now, the audience only claps once. <br/>
|
|
|
141
144
|
|
|
142
145
|
---
|
|
143
146
|
|
|
144
|
-
- :game: Drag
|
|
145
|
-
``||controller:on [A] button [pressed]||``<br/>
|
|
146
|
-
container into an empty area of the workspace.
|
|
147
|
-
|
|
148
|
-
- :mouse pointer: To change the audience image back when you release the
|
|
149
|
-
(A) button, change ``||controller:[pressed]||`` to ``||controller:[released]||``
|
|
150
|
-
using the dropdown menu.
|
|
147
|
+
- :game: Drag the<br/>
|
|
151
148
|
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
149
|
+
```block
|
|
150
|
+
let audience: Sprite = null
|
|
151
|
+
controller.A.onEvent(ControllerButtonEvent.Released, function () {
|
|
152
|
+
audience.setImage(img`.`)
|
|
153
|
+
})
|
|
154
|
+
```
|
|
155
|
+
container into an empty area of the workspace.
|
|
155
156
|
|
|
156
157
|
- :mouse pointer: Change the variable to ``||variables(noclick):audience||`` and click the empty grey square to choose the same
|
|
157
158
|
**clap1** image that was used for the original sprite.
|
|
158
159
|
|
|
160
|
+
```blockconfig.local
|
|
161
|
+
let audience: Sprite = null
|
|
162
|
+
controller.A.onEvent(ControllerButtonEvent.Released, function () {
|
|
163
|
+
audience.setImage(img`.`)
|
|
164
|
+
})
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
#### ~ tutorialhint
|
|
168
|
+
|
|
159
169
|
```blocks
|
|
160
170
|
let audience: Sprite = null
|
|
161
171
|
controller.A.onEvent(ControllerButtonEvent.Released, function () {
|
|
@@ -179,44 +189,31 @@ It also automatically tells you that **you've lost** when time runs out. Let's c
|
|
|
179
189
|
|
|
180
190
|
---
|
|
181
191
|
|
|
182
|
-
- :id card: From the ``||info:Info||`` category, grab an
|
|
183
|
-
``||info:on countdown end||``<br/>
|
|
184
|
-
container and drop it into an empty area of the workspace.
|
|
185
|
-
|
|
186
|
-
- :circle: Now, open the ``||game:Game||`` category and pick<br/>
|
|
187
|
-
``||game: game over <LOSE> ⊕||``.<br/>
|
|
188
|
-
Snap it inside the empty **on countdown end** container.
|
|
192
|
+
- :id card: From the ``||info:Info||`` category, grab an
|
|
189
193
|
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
```blocks
|
|
194
|
+
```block
|
|
193
195
|
info.onCountdownEnd(function () {
|
|
194
|
-
game.over(true)
|
|
196
|
+
game.over(true, effects.confetti)
|
|
195
197
|
})
|
|
196
198
|
```
|
|
199
|
+
container and drop it into an empty area of the workspace.
|
|
197
200
|
|
|
198
|
-
## {Step 9}
|
|
199
|
-
|
|
200
|
-
**Fantastic!!**<br/>
|
|
201
|
-
🎉 🎉 🎉
|
|
202
|
-
|
|
203
|
-
Now add a final celebration with some **game over** effects!
|
|
204
|
-
|
|
205
|
-
---
|
|
206
201
|
|
|
207
|
-
|
|
208
|
-
|
|
202
|
+
```blockconfig.local
|
|
203
|
+
info.onCountdownEnd(function () {
|
|
204
|
+
game.over(true, effects.confetti)
|
|
205
|
+
})
|
|
206
|
+
```
|
|
209
207
|
|
|
210
|
-
|
|
211
|
-
click the word **confetti**
|
|
212
|
-
and choose a new option from the dropdown.
|
|
208
|
+
#### ~ tutorialhint
|
|
213
209
|
|
|
214
210
|
```blocks
|
|
215
211
|
info.onCountdownEnd(function () {
|
|
216
|
-
game.over(true
|
|
212
|
+
game.over(true)
|
|
217
213
|
})
|
|
218
214
|
```
|
|
219
215
|
|
|
216
|
+
|
|
220
217
|
## {Step 9}
|
|
221
218
|
|
|
222
219
|
**That's it!**
|
|
@@ -227,6 +224,12 @@ Compete for the most clicks in 10 seconds! When you're finished, click **Done**
|
|
|
227
224
|
return to the main page where you can keep going and find out how to throw stars at the stage.
|
|
228
225
|
|
|
229
226
|
|
|
227
|
+
```blockconfig.global
|
|
228
|
+
game.over(true, effects.confetti)
|
|
229
|
+
let audience = sprites.create(assets.image`clap1`, SpriteKind.Player)
|
|
230
|
+
audience.setImage(assets.image`clap2`)
|
|
231
|
+
audience.bottom = 120
|
|
232
|
+
```
|
|
230
233
|
|
|
231
234
|
```template
|
|
232
235
|
controller.A.onEvent(ControllerButtonEvent.Pressed, function () {
|
|
@@ -235,18 +238,13 @@ controller.A.onEvent(ControllerButtonEvent.Pressed, function () {
|
|
|
235
238
|
|
|
236
239
|
|
|
237
240
|
scene.setBackgroundImage(assets.image`stage`)
|
|
238
|
-
let
|
|
239
|
-
|
|
241
|
+
let talent = sprites.create(assets.image`towering turtles`, SpriteKind.Player)
|
|
242
|
+
talent.bottom = 115
|
|
240
243
|
game.splash("Press (A) to play!")
|
|
241
244
|
info.startCountdown(10)
|
|
242
245
|
```
|
|
243
246
|
|
|
244
247
|
|
|
245
|
-
|
|
246
|
-
```package
|
|
247
|
-
simple-blocks=github:microsoft/arcade-tutorial-extensions/simple-blocks/
|
|
248
|
-
```
|
|
249
|
-
|
|
250
248
|
```assetjson
|
|
251
249
|
{
|
|
252
250
|
"README.md": " ",
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
# The Biggest Star
|
|
2
|
+
### @explicitHints true
|
|
2
3
|
|
|
3
4
|
|
|
4
5
|
## {Introduction @showdialog}
|
|
@@ -18,71 +19,61 @@ some flying star [__*projectiles*__](#projected "sprites that moves on their own
|
|
|
18
19
|
---
|
|
19
20
|
|
|
20
21
|
- :paper plane: From ``||sprites:Sprites||``, grab<br/>
|
|
21
|
-
|
|
22
|
+
|
|
23
|
+
```block
|
|
24
|
+
let star = sprites.createProjectileFromSprite(img`.`, audience, 50, 50)
|
|
25
|
+
```
|
|
22
26
|
and drop it into **the end** of the<br/>
|
|
23
27
|
``||controller:on [A] button [pressed]||`` container
|
|
24
28
|
already in the workspace.
|
|
25
29
|
|
|
26
|
-
- :mouse pointer: Click **Next** to move on to the next instruction.
|
|
27
|
-
|
|
28
|
-
```blocks
|
|
29
|
-
let audience: Sprite = null
|
|
30
|
-
controller.A.onEvent(ControllerButtonEvent.Pressed, function () {
|
|
31
|
-
info.changeScoreBy(1)
|
|
32
|
-
audience.setImage(assets.image`clap1`)
|
|
33
|
-
//@highlight
|
|
34
|
-
projectile = sprites.createProjectileFromSprite(img`
|
|
35
|
-
. . . .
|
|
36
|
-
. . . .
|
|
37
|
-
. . . .
|
|
38
|
-
. . . .
|
|
39
|
-
`, mySprite, 50, 50)
|
|
40
|
-
})
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
## {Step 3}
|
|
45
|
-
|
|
46
30
|
- :paint brush: Click the empty grey square and toggle to **My Assets**
|
|
47
|
-
to
|
|
31
|
+
to choose the long audience sprite called **star**.
|
|
32
|
+
|
|
33
|
+
- :mouse pointer: Click **Next** to move on to the next instruction.
|
|
48
34
|
|
|
49
|
-
- :mouse pointer: Click ``||variables(noclick): mySprite||`` and change it to ``||variables(noclick): audience||``.
|
|
50
35
|
|
|
36
|
+
#### ~ tutorialhint
|
|
51
37
|
|
|
52
38
|
```blocks
|
|
53
39
|
let audience: Sprite = null
|
|
54
|
-
|
|
55
40
|
controller.A.onEvent(ControllerButtonEvent.Pressed, function () {
|
|
56
41
|
info.changeScoreBy(1)
|
|
57
42
|
audience.setImage(assets.image`clap1`)
|
|
58
43
|
//@highlight
|
|
59
|
-
|
|
44
|
+
let star = sprites.createProjectileFromSprite(assets.image`star`, audience, 50, 50)
|
|
60
45
|
})
|
|
61
46
|
```
|
|
62
47
|
|
|
48
|
+
|
|
63
49
|
## {Step 4}
|
|
64
50
|
|
|
65
51
|
**Try your project on the game screen to see what you think**
|
|
66
52
|
|
|
67
|
-
Does a star come from the audience each time you press the
|
|
68
|
-
|
|
53
|
+
Does a star come from the audience each time you press the **Ⓐ** button?
|
|
69
54
|
|
|
70
55
|
## {Step 5}
|
|
71
56
|
|
|
72
|
-
**🌟 Let's make the star projectiles
|
|
57
|
+
**🌟 Let's make the star projectiles shoot up 🌟**
|
|
73
58
|
|
|
74
59
|
---
|
|
75
60
|
|
|
76
|
-
- :calculator: From the ``||math:Math||`` category, drag out
|
|
77
|
-
|
|
78
|
-
|
|
61
|
+
- :calculator: From the ``||math:Math||`` category, drag out the<br/>
|
|
62
|
+
|
|
63
|
+
```block
|
|
64
|
+
randint(-80, 80)
|
|
65
|
+
```
|
|
66
|
+
block.
|
|
79
67
|
|
|
80
|
-
- :mouse pointer: Add
|
|
81
|
-
``||variables(sprites):set [
|
|
68
|
+
- :mouse pointer: Add this block to the [__*vx*__](#whatVX "horizontal velocity") value of the<br/>
|
|
69
|
+
``||variables(sprites):set [star] to projectile [⭐] from [mySprite] with vx [50] vy [50]||``<br/>
|
|
82
70
|
block.
|
|
83
71
|
|
|
84
|
-
|
|
72
|
+
```blockconfig.local
|
|
73
|
+
randint(-80, 80)
|
|
74
|
+
```
|
|
85
75
|
|
|
76
|
+
#### ~ tutorialhint
|
|
86
77
|
|
|
87
78
|
```blocks
|
|
88
79
|
let audience: Sprite = null
|
|
@@ -90,26 +81,28 @@ let audience: Sprite = null
|
|
|
90
81
|
controller.A.onEvent(ControllerButtonEvent.Pressed, function () {
|
|
91
82
|
info.changeScoreBy(1)
|
|
92
83
|
audience.setImage(assets.image`clap1`)
|
|
93
|
-
projectile = sprites.createProjectileFromSprite(assets.image`star`, audience, randint(
|
|
84
|
+
projectile = sprites.createProjectileFromSprite(assets.image`star`, audience, randint(-80, 80), 50)
|
|
94
85
|
})
|
|
95
86
|
```
|
|
96
87
|
|
|
97
|
-
|
|
98
88
|
## {Step 6}
|
|
99
89
|
|
|
90
|
+
- :calculator: Now, drag out the e<br/>
|
|
100
91
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
92
|
+
```block
|
|
93
|
+
randint(-50, -100)
|
|
94
|
+
```
|
|
95
|
+
block
|
|
105
96
|
|
|
106
|
-
- :mouse pointer:
|
|
107
|
-
``||
|
|
108
|
-
block
|
|
109
|
-
**-50** and **-100**.<br/>
|
|
110
|
-
This will make sure the stars only move upward.
|
|
97
|
+
- :mouse pointer: Add this block to the [__*vy*__](#whatVY "horizontal velocity") value of the<br/>
|
|
98
|
+
``||variables(sprites):set [star] to projectile [⭐] from [mySprite] with vx [pick random] vy [50]||``<br/>
|
|
99
|
+
block.
|
|
111
100
|
|
|
101
|
+
```blockconfig.local
|
|
102
|
+
randint(-50, -100)
|
|
103
|
+
```
|
|
112
104
|
|
|
105
|
+
#### ~ tutorialhint
|
|
113
106
|
|
|
114
107
|
```blocks
|
|
115
108
|
let audience: Sprite = null
|
|
@@ -117,7 +110,7 @@ let audience: Sprite = null
|
|
|
117
110
|
controller.A.onEvent(ControllerButtonEvent.Pressed, function () {
|
|
118
111
|
info.changeScoreBy(1)
|
|
119
112
|
audience.setImage(assets.image`clap1`)
|
|
120
|
-
projectile = sprites.createProjectileFromSprite(assets.image`star`, audience, randint(-
|
|
113
|
+
projectile = sprites.createProjectileFromSprite(assets.image`star`, audience, randint(-80, 80), randint(-50, -100))
|
|
121
114
|
})
|
|
122
115
|
```
|
|
123
116
|
|
|
@@ -142,6 +135,13 @@ continue on to figure out how to toss roses!
|
|
|
142
135
|
|
|
143
136
|
|
|
144
137
|
|
|
138
|
+
```blockconfig.global
|
|
139
|
+
game.over(true, effects.confetti)
|
|
140
|
+
let audience = sprites.create(assets.image`clap1`, SpriteKind.Player)
|
|
141
|
+
audience.setImage(assets.image`clap2`)
|
|
142
|
+
audience.bottom = 120
|
|
143
|
+
let star = sprites.createProjectileFromSprite(img`.`, audience, 50, 50)
|
|
144
|
+
```
|
|
145
145
|
|
|
146
146
|
|
|
147
147
|
```template
|
|
@@ -157,8 +157,8 @@ controller.A.onEvent(ControllerButtonEvent.Released, function () {
|
|
|
157
157
|
})
|
|
158
158
|
let audience: Sprite = null
|
|
159
159
|
scene.setBackgroundImage(assets.image`stage`)
|
|
160
|
-
let
|
|
161
|
-
|
|
160
|
+
let talent = sprites.create(assets.image`towering turtles`, SpriteKind.Player)
|
|
161
|
+
talent.bottom = 115
|
|
162
162
|
audience = sprites.create(assets.image`clap1`, SpriteKind.Player)
|
|
163
163
|
audience.bottom = 120
|
|
164
164
|
game.splash("Press (A) to play!")
|
|
@@ -166,11 +166,6 @@ info.startCountdown(10)
|
|
|
166
166
|
```
|
|
167
167
|
|
|
168
168
|
|
|
169
|
-
|
|
170
|
-
```package
|
|
171
|
-
simple-blocks=github:microsoft/arcade-tutorial-extensions/simple-blocks/
|
|
172
|
-
```
|
|
173
|
-
|
|
174
169
|
```assetjson
|
|
175
170
|
{
|
|
176
171
|
"README.md": " ",
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
# Coming Up Roses
|
|
2
|
+
### @explicitHints true
|
|
2
3
|
|
|
3
4
|
|
|
4
5
|
## {Introduction @showdialog}
|
|
5
6
|
|
|
6
|
-
Let's add some variety! Show your
|
|
7
|
+
Let's add some variety! Show your talent love with roses.
|
|
7
8
|
|
|
8
9
|

|
|
9
10
|
|
|
@@ -17,20 +18,25 @@ Instead of always throwing stars, we can put a whole list of items inside the **
|
|
|
17
18
|
- :mouse pointer: Open the ``||simplified:Simplified||`` category.
|
|
18
19
|
|
|
19
20
|
- :puzzle: Grab<br/>
|
|
20
|
-
|
|
21
|
+
|
|
22
|
+
```block
|
|
23
|
+
simplified.chooseRandomImage(img`.`, img`.`)
|
|
24
|
+
```
|
|
21
25
|
and use it to replace the image of the star in the **projectile**
|
|
22
26
|
block (inside of <br/>
|
|
23
27
|
``||controller:on [A] button [pressed]||``).
|
|
24
28
|
|
|
25
29
|
- :mouse pointer: Click **Next** to move on to the next instruction.
|
|
26
30
|
|
|
31
|
+
#### ~ tutorialhint
|
|
32
|
+
|
|
27
33
|
```blocks
|
|
28
34
|
let audience: Sprite = null
|
|
29
35
|
controller.A.onEvent(ControllerButtonEvent.Pressed, function () {
|
|
30
36
|
info.changeScoreBy(1)
|
|
31
37
|
audience.setImage(assets.image`clap1`)
|
|
32
38
|
//@highlight
|
|
33
|
-
let
|
|
39
|
+
let star = sprites.createProjectileFromSprite(simplified.chooseRandomImage(img`.`, img`.`), audience, randint(-80, 80), randint(-50, -100))
|
|
34
40
|
})
|
|
35
41
|
```
|
|
36
42
|
|
|
@@ -40,6 +46,7 @@ controller.A.onEvent(ControllerButtonEvent.Pressed, function () {
|
|
|
40
46
|
- :paint brush: Click the empty grey squares and toggle to **My Assets**
|
|
41
47
|
to grab a star for the first box and a rose for the second one.
|
|
42
48
|
|
|
49
|
+
#### ~ tutorialhint
|
|
43
50
|
|
|
44
51
|
```blocks
|
|
45
52
|
let audience: Sprite = null
|
|
@@ -47,7 +54,7 @@ controller.A.onEvent(ControllerButtonEvent.Pressed, function () {
|
|
|
47
54
|
info.changeScoreBy(1)
|
|
48
55
|
audience.setImage(assets.image`clap1`)
|
|
49
56
|
//@highlight
|
|
50
|
-
let
|
|
57
|
+
let star = sprites.createProjectileFromSprite(simplified.chooseRandomImage(assets.image`star`, assets.image`rose`), audience, randint(-80, 80), randint(-50, -100))
|
|
51
58
|
|
|
52
59
|
})
|
|
53
60
|
```
|
|
@@ -66,20 +73,24 @@ Does the audience now throw a random number of stars and roses?
|
|
|
66
73
|
---
|
|
67
74
|
|
|
68
75
|
- :mouse pointer: Click the white **plus** at the right of <br/>
|
|
69
|
-
|
|
76
|
+
|
|
77
|
+
```block
|
|
78
|
+
simplified.chooseRandomImage(assets.image`star`, assets.image`rose`, img`.`)
|
|
79
|
+
```
|
|
70
80
|
to create a new empty box.
|
|
71
81
|
|
|
72
82
|
- :paint brush: Click the new empty box and draw another item for the audience to send to the stage (like hearts or flower petals.)
|
|
73
83
|
|
|
74
84
|
_💡 You can choose up to **5** things!_
|
|
75
85
|
|
|
86
|
+
#### ~ tutorialhint
|
|
76
87
|
|
|
77
88
|
```blocks
|
|
78
89
|
let mySprite: Sprite = null
|
|
79
90
|
controller.A.onEvent(ControllerButtonEvent.Pressed, function () {
|
|
80
91
|
info.changeScoreBy(1)
|
|
81
92
|
mySprite.setImage(assets.image`clap1`)
|
|
82
|
-
|
|
93
|
+
let star = sprites.createProjectileFromSprite(simplified.chooseRandomImage(assets.image`star`, assets.image`rose`, img`
|
|
83
94
|
. . . . . . . . . . . . . . . .
|
|
84
95
|
. . . . . . . . . . . . . . . .
|
|
85
96
|
. . . . . . . . . . . . . . . .
|
|
@@ -96,7 +107,7 @@ controller.A.onEvent(ControllerButtonEvent.Pressed, function () {
|
|
|
96
107
|
. . . . . . . . 2 . . . . . . .
|
|
97
108
|
. . . . . . . . . . . . . . . .
|
|
98
109
|
. . . . . . . . . . . . . . . .
|
|
99
|
-
`), audience, randint(-
|
|
110
|
+
`), audience, randint(-80, 80), randint(-50, -100))
|
|
100
111
|
})
|
|
101
112
|
```
|
|
102
113
|
|
|
@@ -116,12 +127,19 @@ When you're finished, click **Done** to return to the main page where you can
|
|
|
116
127
|
collect your badge and share your final game with family and friends.
|
|
117
128
|
|
|
118
129
|
|
|
130
|
+
```blockconfig.global
|
|
131
|
+
game.over(true, effects.confetti)
|
|
132
|
+
let audience = sprites.create(assets.image`clap1`, SpriteKind.Player)
|
|
133
|
+
audience.setImage(assets.image`clap2`)
|
|
134
|
+
audience.bottom = 120
|
|
135
|
+
let star = sprites.createProjectileFromSprite(img`.`, audience, 50, 50)
|
|
136
|
+
```
|
|
119
137
|
|
|
120
138
|
```template
|
|
121
139
|
controller.A.onEvent(ControllerButtonEvent.Pressed, function () {
|
|
122
140
|
info.changeScoreBy(1)
|
|
123
141
|
audience.setImage(assets.image`clap2`)
|
|
124
|
-
|
|
142
|
+
let star = sprites.createProjectileFromSprite(assets.image`star`, audience, randint(-80, 80), randint(-50, -100))
|
|
125
143
|
})
|
|
126
144
|
info.onCountdownEnd(function () {
|
|
127
145
|
game.over(true, effects.hearts)
|
|
@@ -131,8 +149,8 @@ controller.A.onEvent(ControllerButtonEvent.Released, function () {
|
|
|
131
149
|
})
|
|
132
150
|
let audience: Sprite = null
|
|
133
151
|
scene.setBackgroundImage(assets.image`stage`)
|
|
134
|
-
let
|
|
135
|
-
|
|
152
|
+
let talent = sprites.create(assets.image`towering turtles`, SpriteKind.Player)
|
|
153
|
+
talent.bottom = 115
|
|
136
154
|
audience = sprites.create(assets.image`clap1`, SpriteKind.Player)
|
|
137
155
|
audience.bottom = 120
|
|
138
156
|
game.splash("Press (A) to play!")
|