pxt-arcade 1.11.21 → 1.11.22

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 (35) hide show
  1. package/built/common-sim.d.ts +5 -0
  2. package/built/common-sim.js +28 -4
  3. package/built/sim.js +35 -6
  4. package/built/target.js +628 -315
  5. package/built/target.json +628 -315
  6. package/built/targetlight.json +5 -5
  7. package/docs/static/skillmap/assets/gallery.png +0 -0
  8. package/docs/static/skillmap/backgrounds/dino-comp.png +0 -0
  9. package/docs/static/skillmap/backgrounds/story-comp.png +0 -0
  10. package/docs/test/skillmap/balloon/balloon4.md +73 -50
  11. package/docs/test/skillmap/dino/collectort1.md +334 -0
  12. package/docs/test/skillmap/dino/collectort2.md +272 -0
  13. package/docs/test/skillmap/dino/collectort3.md +304 -0
  14. package/docs/test/skillmap/dino/collectort4.md +330 -0
  15. package/docs/test/skillmap/dino/collectort4old.md +433 -0
  16. package/docs/test/skillmap/dino/collectort5.md +499 -0
  17. package/docs/test/skillmap/dino/scroller.ts +54 -0
  18. package/docs/test/skillmap/mole/mole1.md +3 -3
  19. package/docs/test/skillmap/mole/mole2.md +8 -8
  20. package/docs/test/skillmap/mole/mole3.md +12 -12
  21. package/docs/test/skillmap/mole/mole4.md +5 -5
  22. package/docs/test/skillmap/star/star1.md +270 -0
  23. package/docs/test/skillmap/star/star2.md +262 -0
  24. package/docs/test/skillmap/star/star3.md +186 -0
  25. package/docs/test/skillmap/star/star4.md +162 -0
  26. package/docs/test/skillmap/star.md +86 -0
  27. package/docs/test/skillmap/story/joke-examples.md +41 -0
  28. package/docs/test/skillmap/story/story1.md +275 -0
  29. package/docs/test/skillmap/story/story2.md +289 -0
  30. package/docs/test/skillmap/story/story3.md +626 -0
  31. package/docs/test/skillmap/story/story4.md +1774 -0
  32. package/docs/test/skillmap/story.md +90 -0
  33. package/docs/test/tutorials/wakanda.md +417 -0
  34. package/package.json +4 -4
  35. package/targetconfig.json +2 -1
@@ -0,0 +1,499 @@
1
+ # Go for Gusto
2
+
3
+ ### @autoexpandOff true
4
+
5
+
6
+ ```template
7
+
8
+ info.onCountdownEnd(function () {
9
+ game.over(true)
10
+ })
11
+ sprites.onOverlap(SpriteKind.Player, SpriteKind.Projectile, function (sprite, otherSprite) {
12
+ otherSprite.destroy(effects.rings, 200)
13
+ info.changeScoreBy(1)
14
+ })
15
+ sprites.onOverlap(SpriteKind.Player, SpriteKind.Food, function (sprite, otherSprite) {
16
+ otherSprite.destroy(effects.hearts, 200)
17
+ info.changeLifeBy(1)
18
+ })
19
+ sprites.onOverlap(SpriteKind.Player, SpriteKind.Enemy, function (sprite, otherSprite) {
20
+ otherSprite.destroy(effects.fire, 200)
21
+ info.changeLifeBy(-1)
22
+ })
23
+ let extraLife: Sprite = null
24
+ let myEnemy: Sprite = null
25
+ let projectile: Sprite = null
26
+ scene.setBackgroundColor(3)
27
+ let mySprite = sprites.create(img`
28
+ . . . . . . . . . b 5 b . . . .
29
+ . . . . . . . . . b 5 b . . . .
30
+ . . . . . . b b b b b b . . . .
31
+ . . . . . b b 5 5 5 5 5 b . . .
32
+ . . . . b b 5 b c 5 5 d 4 c . .
33
+ . b b b b 5 5 5 b f d d 4 4 4 b
34
+ . b d 5 b 5 5 b c b 4 4 4 4 b .
35
+ . . b 5 5 b 5 5 5 4 4 4 4 b . .
36
+ . . b d 5 5 b 5 5 5 5 5 5 b . .
37
+ . b d b 5 5 5 d 5 5 5 5 5 5 b .
38
+ b d d c d 5 5 b 5 5 5 5 5 5 b .
39
+ c d d d c c b 5 5 5 5 5 5 5 b .
40
+ c b d d d d d 5 5 5 5 5 5 5 b .
41
+ . c d d d d d d 5 5 5 5 5 d b .
42
+ . . c b d d d d d 5 5 5 b b . .
43
+ . . . c c c c c c c c b b . . .
44
+ `, SpriteKind.Player)
45
+ controller.moveSprite(mySprite, 0, 100)
46
+ mySprite.setStayInScreen(true)
47
+ info.startCountdown(15)
48
+ forever(function () {
49
+ projectile = sprites.createProjectileFromSide(img`
50
+ . . b b b b . .
51
+ . b 5 5 5 5 b .
52
+ b 5 d 3 3 d 5 b
53
+ b 5 3 5 5 1 5 b
54
+ c 5 3 5 5 1 d c
55
+ c d d 1 1 d d c
56
+ . f d d d d f .
57
+ . . f f f f . .
58
+ `, -90, 0)
59
+ projectile.y = randint(0, 120)
60
+ pause(randint(1000, 2000))
61
+ })
62
+ forever(function () {
63
+ myEnemy = sprites.createProjectileFromSide(img`
64
+ . . . . . . . . . . . . . . . .
65
+ . . . . . . . . . . . . . . . .
66
+ . . . . . . . . . . . . . . . .
67
+ . . . . . . . . . . . . . . . .
68
+ . . . . . . . . . . . . . . . .
69
+ . . . . . . . c c c . . . . . .
70
+ . . . . . . a b a a . . . . . .
71
+ . . . . . c b a f c a c . . . .
72
+ . . . . c b b b f f a c c . . .
73
+ . . . . b b f a b b a a c . . .
74
+ . . . . c b f f b a f c a . . .
75
+ . . . . . c a a c b b a . . . .
76
+ . . . . . . c c c c . . . . . .
77
+ . . . . . . . c . . . . . . . .
78
+ . . . . . . . . . . . . . . . .
79
+ . . . . . . . . . . . . . . . .
80
+ `, -90, 0)
81
+ myEnemy.y = randint(0, 120)
82
+ myEnemy.setKind(SpriteKind.Enemy)
83
+ pause(randint(1200, 2200))
84
+
85
+ })
86
+ forever(function () {
87
+ extraLife = sprites.createProjectileFromSide(img`
88
+ . . . . . . . . . . . . . . . .
89
+ . . . . . . . . . . . . . . . .
90
+ . . . . . . . . . . . . . . . .
91
+ . . c c c . . . . . c c c . . .
92
+ . c 2 2 2 c c . c c 2 2 2 c . .
93
+ . c 2 2 2 2 2 c 2 2 2 2 2 c . .
94
+ . c 2 2 2 2 2 2 2 2 2 2 2 c . .
95
+ . c 2 2 2 2 2 2 2 2 2 2 2 c . .
96
+ . c 2 2 2 2 2 2 2 2 2 2 2 c . .
97
+ . . c 2 2 2 2 2 2 2 2 2 c . . .
98
+ . . . c 2 2 2 2 2 2 2 c . . . .
99
+ . . . . c c 2 2 2 c c . . . . .
100
+ . . . . . . c 2 c . . . . . . .
101
+ . . . . . . . c . . . . . . . .
102
+ . . . . . . . . . . . . . . . .
103
+ . . . . . . . . . . . . . . . .
104
+ `, -90, 0)
105
+ extraLife.y = randint(0, 120)
106
+ extraLife.setKind(SpriteKind.Food)
107
+ pause(randint(4000, 5000))
108
+ otherSprite.say("+1", 1000)
109
+
110
+ })
111
+
112
+
113
+ ```
114
+
115
+
116
+ ```ghost
117
+
118
+ namespace SpriteKind {
119
+ export const Destroy = SpriteKind.create()
120
+ }
121
+ sprites.onDestroyed(SpriteKind.Destroy, function (sprite) {
122
+ for (let value of sprites.allOfKind(SpriteKind.Destroy)) {
123
+ value.destroy()
124
+ }
125
+ if (controller.B.isPressed()) {
126
+ music.playMelody("- - - - - - - - ", 120)
127
+ music.playTone(262, music.beat(BeatFraction.Half))
128
+ for (let value of sprites.allOfKind(SpriteKind.Enemy)) {
129
+ value.destroy()
130
+ animation.runMovementAnimation(
131
+ mySprite,
132
+ animation.animationPresets(animation.flyToCenter),
133
+ 2000,
134
+ false
135
+ )
136
+ }
137
+ }
138
+ })
139
+ controller.A.onEvent(ControllerButtonEvent.Pressed, function () {
140
+ destroyer = sprites.createProjectileFromSprite(img`
141
+ . . . . . . . . . . . . . . . .
142
+ . . . . . . . . . . . . . . . .
143
+ . . . . . . . . . . . . . . . .
144
+ . . . . . . . . . . . . . . . .
145
+ . . . . . . c b a c . . . . . .
146
+ . . . . c c b c f a c . . . . .
147
+ . . . . a f b b b a c . . . . .
148
+ . . . . a f f b a f c c . . . .
149
+ . . . . c b b a f f c . . . . .
150
+ . . . . . b b a f a . . . . . .
151
+ . . . . . . c b b . . . . . . .
152
+ . . . . . . . . . . . . . . . .
153
+ . . . . . . . . . . . . . . . .
154
+ . . . . . . . . . . . . . . . .
155
+ . . . . . . . . . . . . . . . .
156
+ . . . . . . . . . . . . . . . .
157
+ `, mySprite, 200, 0)
158
+ destroyer.setKind(SpriteKind.Destroy)
159
+ destroyer.setBounceOnWall(true)
160
+ })
161
+ info.onCountdownEnd(function () {
162
+ game.over(true)
163
+ })
164
+ sprites.onOverlap(SpriteKind.Player, SpriteKind.Projectile, function (sprite, otherSprite) {
165
+ otherSprite.destroy(effects.rings, 200)
166
+ info.changeScoreBy(1)
167
+ mySprite.x += 10
168
+ })
169
+ sprites.onOverlap(SpriteKind.Destroy, SpriteKind.Enemy, function (sprite, otherSprite) {
170
+ music.baDing.play()
171
+ music.stopAllSounds()
172
+ otherSprite.destroy(effects.rings, 200)
173
+ sprite.destroy()
174
+ info.changeScoreBy(1)
175
+ })
176
+ function miscFunction () {
177
+ mySprite2 = sprites.create(list[0], SpriteKind.Player)
178
+ mySprite2 = sprites.create(list.removeAt(0), SpriteKind.Player)
179
+ }
180
+ info.onLifeZero(function () {
181
+ music.stopAllSounds()
182
+ animation.runImageAnimation(
183
+ mySprite,
184
+ [img`
185
+ . . . . . . . . . . . . . . . .
186
+ . . . . . . . . . . . . . . . .
187
+ . . . . . . . . . . . . . . . .
188
+ . . . . . . . . . . . . . . . .
189
+ . . . . . . . . . . . . . . . .
190
+ . . . . . . . . . . . . . . . .
191
+ . . . . . . . . . . . . . . . .
192
+ . . . . . . . . . . . . . . . .
193
+ . . . . . . . . . . . . . . . .
194
+ . . . . . . . . . . . . . . . .
195
+ . . . . . . . . . . . . . . . .
196
+ . . . . . . . . . . . . . . . .
197
+ . . . . . . . . . . . . . . . .
198
+ . . . . . . . . . . . . . . . .
199
+ . . . . . . . . . . . . . . . .
200
+ . . . . . . . . . . . . . . . .
201
+ `],
202
+ 500,
203
+ false
204
+ )
205
+ animation.stopAnimation(animation.AnimationTypes.All, mySprite)
206
+ })
207
+ sprites.onOverlap(SpriteKind.Player, SpriteKind.Food, function (sprite, otherSprite) {
208
+ otherSprite.destroy(effects.hearts, 200)
209
+ info.changeLifeBy(1)
210
+ otherSprite.say("+1")
211
+ })
212
+ sprites.onOverlap(SpriteKind.Player, SpriteKind.Enemy, function (sprite, otherSprite) {
213
+ otherSprite.destroy(effects.fire, 200)
214
+ info.changeLifeBy(-1)
215
+ })
216
+ let extraLife: Sprite = null
217
+ let myEnemy: Sprite = null
218
+ let projectile: Sprite = null
219
+ let list: Image[] = []
220
+ let mySprite2: Sprite = null
221
+ let destroyer: Sprite = null
222
+ let mySprite: Sprite = null
223
+ scene.setBackgroundImage(img`
224
+ ................................................................................................................................................................
225
+ ................................................................................................................................................................
226
+ ................................................................................................................................................................
227
+ ................................................................................................................................................................
228
+ ................................................................................................................................................................
229
+ ................................................................................................................................................................
230
+ ................................................................................................................................................................
231
+ ................................................................................................................................................................
232
+ ................................................................................................................................................................
233
+ ................................................................................................................................................................
234
+ ................................................................................................................................................................
235
+ ................................................................................................................................................................
236
+ ................................................................................................................................................................
237
+ ................................................................................................................................................................
238
+ ................................................................................................................................................................
239
+ ................................................................................................................................................................
240
+ ................................................................................................................................................................
241
+ ................................................................................................................................................................
242
+ ................................................................................................................................................................
243
+ ................................................................................................................................................................
244
+ ................................................................................................................................................................
245
+ ................................................................................................................................................................
246
+ ................................................................................................................................................................
247
+ ................................................................................................................................................................
248
+ ................................................................................................................................................................
249
+ ................................................................................................................................................................
250
+ ................................................................................................................................................................
251
+ ................................................................................................................................................................
252
+ ................................................................................................................................................................
253
+ ................................................................................................................................................................
254
+ ................................................................................................................................................................
255
+ ................................................................................................................................................................
256
+ ................................................................................................................................................................
257
+ ................................................................................................................................................................
258
+ ................................................................................................................................................................
259
+ ................................................................................................................................................................
260
+ ................................................................................................................................................................
261
+ ................................................................................................................................................................
262
+ ................................................................................................................................................................
263
+ ................................................................................................................................................................
264
+ ................................................................................................................................................................
265
+ ................................................................................................................................................................
266
+ ................................................................................................................................................................
267
+ ................................................................................................................................................................
268
+ ................................................................................................................................................................
269
+ ................................................................................................................................................................
270
+ ................................................................................................................................................................
271
+ ................................................................................................................................................................
272
+ ................................................................................................................................................................
273
+ ................................................................................................................................................................
274
+ ................................................................................................................................................................
275
+ ................................................................................................................................................................
276
+ ................................................................................................................................................................
277
+ ................................................................................................................................................................
278
+ ................................................................................................................................................................
279
+ ................................................................................................................................................................
280
+ ................................................................................................................................................................
281
+ ................................................................................................................................................................
282
+ ................................................................................................................................................................
283
+ ................................................................................................................................................................
284
+ ................................................................................................................................................................
285
+ ................................................................................................................................................................
286
+ ................................................................................................................................................................
287
+ ................................................................................................................................................................
288
+ ................................................................................................................................................................
289
+ ................................................................................................................................................................
290
+ ................................................................................................................................................................
291
+ ................................................................................................................................................................
292
+ ................................................................................................................................................................
293
+ ................................................................................................................................................................
294
+ ................................................................................................................................................................
295
+ ................................................................................................................................................................
296
+ ................................................................................................................................................................
297
+ ................................................................................................................................................................
298
+ ................................................................................................................................................................
299
+ ................................................................................................................................................................
300
+ ................................................................................................................................................................
301
+ ................................................................................................................................................................
302
+ ................................................................................................................................................................
303
+ ................................................................................................................................................................
304
+ ................................................................................................................................................................
305
+ ................................................................................................................................................................
306
+ ................................................................................................................................................................
307
+ ................................................................................................................................................................
308
+ ................................................................................................................................................................
309
+ ................................................................................................................................................................
310
+ ................................................................................................................................................................
311
+ ................................................................................................................................................................
312
+ ................................................................................................................................................................
313
+ ................................................................................................................................................................
314
+ ................................................................................................................................................................
315
+ ................................................................................................................................................................
316
+ ................................................................................................................................................................
317
+ ................................................................................................................................................................
318
+ ................................................................................................................................................................
319
+ ................................................................................................................................................................
320
+ ................................................................................................................................................................
321
+ ................................................................................................................................................................
322
+ ................................................................................................................................................................
323
+ ................................................................................................................................................................
324
+ ................................................................................................................................................................
325
+ ................................................................................................................................................................
326
+ ................................................................................................................................................................
327
+ ................................................................................................................................................................
328
+ ................................................................................................................................................................
329
+ ................................................................................................................................................................
330
+ ................................................................................................................................................................
331
+ ................................................................................................................................................................
332
+ ................................................................................................................................................................
333
+ ................................................................................................................................................................
334
+ ................................................................................................................................................................
335
+ ................................................................................................................................................................
336
+ ................................................................................................................................................................
337
+ ................................................................................................................................................................
338
+ ................................................................................................................................................................
339
+ ................................................................................................................................................................
340
+ ................................................................................................................................................................
341
+ ................................................................................................................................................................
342
+ ................................................................................................................................................................
343
+ ................................................................................................................................................................
344
+ `)
345
+ scene.setBackgroundColor(8)
346
+ mySprite = sprites.create(img`
347
+ . . . . e e e . . . . e e e
348
+ . . . . c d d c . . c d d c
349
+ . . . . c b d d f f d d b c
350
+ . . . . c 3 b d b d d b 3 c
351
+ . . . . f b 3 d d d d 3 b f
352
+ . . . . e d d d d d d d d e
353
+ b f b . e d f d d d d f d e
354
+ f d f . f d d f d d f d d f
355
+ f d f . f 2 d d b b d d b f
356
+ f d f f b b 2 2 2 2 2 2 f .
357
+ f b d b b d d d d d d b f .
358
+ . f f f d d b d d d d d f .
359
+ . . . f d f f d f f f d f .
360
+ . . . f f . . f f . . f f .
361
+ `, SpriteKind.Player)
362
+ mySprite.setPosition(21, 54)
363
+ controller.moveSprite(mySprite, 0, 100)
364
+ mySprite.setStayInScreen(true)
365
+ info.startCountdown(15)
366
+ forever(function () {
367
+ list = [img`
368
+ . . . . . . . . . . . . . . . .
369
+ . . . . . . . . . . . . . . . .
370
+ . . . . . . . . . . . . . . . .
371
+ . . . . . . . . . . . . . . . .
372
+ . . . . 4 4 4 . . . . . . . . .
373
+ . . . 4 4 4 4 4 . . . 4 . . . .
374
+ . . 4 f 4 4 4 4 4 . 4 4 . . . .
375
+ . 4 4 4 4 4 4 4 4 4 4 4 . . . .
376
+ . 4 4 4 4 4 4 4 4 4 4 4 . . . .
377
+ . . 4 4 4 4 4 4 4 . 4 4 . . . .
378
+ . . . 4 4 4 4 4 . . . 4 . . . .
379
+ . . . . 4 4 4 . . . . . . . . .
380
+ . . . . . . . . . . . . . . . .
381
+ . . . . . . . . . . . . . . . .
382
+ . . . . . . . . . . . . . . . .
383
+ . . . . . . . . . . . . . . . .
384
+ `, img`
385
+ . . . . . . . . . . . . . . . .
386
+ . . . . . . . . . . . . . . . .
387
+ . . . . . . . . . . . . . . . .
388
+ . . . . . . . . . . . . . . . .
389
+ . . . . d d d . . . . . . . . .
390
+ . . . d d d d d . . . d . . . .
391
+ . . d f d d d d d . d d . . . .
392
+ . d d d d d d d d d d d . . . .
393
+ . d d d d d d d d d d d . . . .
394
+ . . d d d d d d d . d d . . . .
395
+ . . . d d d d d . . . d . . . .
396
+ . . . . d d d . . . . . . . . .
397
+ . . . . . . . . . . . . . . . .
398
+ . . . . . . . . . . . . . . . .
399
+ . . . . . . . . . . . . . . . .
400
+ . . . . . . . . . . . . . . . .
401
+ `, img`
402
+ . . . . . . . . . . . . . . . .
403
+ . . . . . . . . . . . . . . . .
404
+ . . . . . . . . . . . . . . . .
405
+ . . . . . . . . . . . . . . . .
406
+ . . . . 2 2 2 . . . . . . . . .
407
+ . . . 2 2 2 2 2 . . . 2 . . . .
408
+ . . 2 f 2 2 2 2 2 . 2 2 . . . .
409
+ . 2 2 2 2 2 2 2 2 2 2 2 . . . .
410
+ . 2 2 2 2 2 2 2 2 2 2 2 . . . .
411
+ . . 2 2 2 2 2 2 2 . 2 2 . . . .
412
+ . . . 2 2 2 2 2 . . . 2 . . . .
413
+ . . . . 2 2 2 . . . . . . . . .
414
+ . . . . . . . . . . . . . . . .
415
+ . . . . . . . . . . . . . . . .
416
+ . . . . . . . . . . . . . . . .
417
+ . . . . . . . . . . . . . . . .
418
+ `]
419
+ projectile = sprites.createProjectileFromSide(list._pickRandom(), -90, 0)
420
+ projectile.y = randint(0, 120)
421
+ pause(randint(1000, 2000))
422
+ })
423
+ forever(function () {
424
+ myEnemy = sprites.createProjectileFromSide(img`
425
+ . . . . . . . . . . . . . . . .
426
+ . . 4 4 4 . . . . 4 4 4 . . . .
427
+ . 4 5 5 5 e . . e 5 5 5 4 . . .
428
+ 4 5 5 5 5 5 e e 5 5 5 5 5 4 . .
429
+ 4 5 5 4 4 5 5 5 5 4 4 5 5 4 . .
430
+ e 5 4 4 5 5 5 5 5 5 4 4 5 e . .
431
+ . e e 5 5 5 5 5 5 5 5 e e . . .
432
+ . . e 5 f 5 5 5 5 f 5 e . . . .
433
+ . . f 5 5 5 4 4 5 5 5 f . f f .
434
+ . . . 4 5 5 f f 5 5 6 f f 5 f .
435
+ . . . f 6 6 6 6 6 6 4 f 5 5 f .
436
+ . . . f 5 5 5 5 5 5 5 4 5 f . .
437
+ . . . . f 5 4 5 f 5 f f f . . .
438
+ . . . . . f f f f f f f . . . .
439
+ `, -90, 0)
440
+ myEnemy.y = randint(0, 120)
441
+ myEnemy.setKind(SpriteKind.Enemy)
442
+ if (info.score() > 3) {
443
+ pause(randint(500, 1000))
444
+ } else {
445
+ pause(randint(1200, 2200))
446
+ }
447
+ })
448
+ forever(function () {
449
+ extraLife = sprites.createProjectileFromSide(img`
450
+ . . . . . . . . . . . . . . . .
451
+ . . . . . . 6 6 6 6 . . . . . .
452
+ . . . . 6 6 6 5 5 6 6 6 . . . .
453
+ . . . 7 7 7 7 6 6 6 6 6 6 . . .
454
+ . . 6 7 7 7 7 8 8 8 1 1 6 6 . .
455
+ . . 7 7 7 7 7 8 8 8 1 1 5 6 . .
456
+ . 6 7 7 7 7 8 8 8 8 8 5 5 6 6 .
457
+ . 6 7 7 7 8 8 8 6 6 6 6 5 6 6 .
458
+ . 6 6 7 7 8 8 6 6 6 6 6 6 6 6 .
459
+ . 6 8 7 7 8 8 6 6 6 6 6 6 6 6 .
460
+ . . 6 8 7 7 8 6 6 6 6 6 8 6 . .
461
+ . . 6 8 8 7 8 8 6 6 6 8 6 6 . .
462
+ . . . 6 8 8 8 8 8 8 8 8 6 . . .
463
+ . . . . 6 6 8 8 8 8 6 6 . . . .
464
+ . . . . . . 6 6 6 6 . . . . . .
465
+ . . . . . . . . . . . . . . . .
466
+ `, -90, 0)
467
+ extraLife.y = randint(0, 120)
468
+ extraLife.setKind(SpriteKind.Food)
469
+ pause(randint(4000, 5000))
470
+ })
471
+
472
+
473
+ ```
474
+
475
+ ## {Intro @showdialog}
476
+
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
+
479
+
480
+ ![Do More](/static/skillmap/collector/collector-activity-5.gif "Make a game of your own" )
481
+
482
+
483
+
484
+ ## {Step 1}
485
+
486
+ The code for a collector game is already in the workspace.
487
+
488
+ ✂️ Edit the game in a way you haven't tried yet ✂️
489
+
490
+ Need help thinking of something to do?
491
+ - Make enemies more often once the score passes 5
492
+ - Move player closer to the edge each time they score
493
+ - Make player throw projectiles that destroy enemies
494
+ - Play sound effects each time something is collected
495
+
496
+
497
+
498
+ Click **Done** to return to the main page where you can share your game
499
+ with family and friends!
@@ -0,0 +1,54 @@
1
+ namespace collectorTutorial {
2
+ let init = false;
3
+ let offset: number;
4
+ let currentSpeed: number;
5
+ export function startBackgroundScrolling(speed: number) {
6
+ currentSpeed = speed;
7
+ if (!init) {
8
+ offset = 0;
9
+ init = true;
10
+ let bg: Image;
11
+ game.onUpdate(() => {
12
+ bg = scene.backgroundImage();
13
+ offset += currentSpeed * game.currentScene().eventContext.deltaTime;
14
+ while (offset >= bg.width) {
15
+ offset -= bg.width;
16
+ }
17
+ while (offset < 0) {
18
+ offset += bg.width;
19
+ }
20
+ });
21
+ scene.createRenderable(-2, function(target: Image, camera: scene.Camera) {
22
+ target.drawTransparentImage(bg, (offset | 0), 0);
23
+ target.drawTransparentImage(bg, (offset | 0) - bg.width, 0);
24
+ })
25
+ }
26
+ }
27
+ /**
28
+ * Makes the current background scroll in the negative x direction
29
+ */
30
+ //% block="scroll background"
31
+ //% blockNamespace=scene
32
+ //% blockId=collectorTutorial_scrollBackgroun
33
+ //% group="Scrolling"
34
+ //% weight=2
35
+ //% blockGap=8
36
+ export function scrollBackground() {
37
+ scrollBackgroundWithSpeed(-90);
38
+ }
39
+ /**
40
+ * Make the current background image scroll in the x direction at the given speed
41
+ *
42
+ * @param speed The speed to scroll in pixels per second
43
+ */
44
+ //% block="scroll background with speed $speed"
45
+ //% blockNamespace=scene
46
+ //% blockId=collectorTutorial_scrollBackgroundWithSpeed
47
+ //% speed.defl=-90
48
+ //% group="Scrolling"
49
+ //% weight=0
50
+ //% blockGap=8
51
+ export function scrollBackgroundWithSpeed(speed: number) {
52
+ startBackgroundScrolling(speed)
53
+ }
54
+ }
@@ -187,7 +187,7 @@ Let's get the mole jumping from hole to hole every second.
187
187
  - :circle: From the ``||game: Game||`` category **in the toolbox**, grab <br/>
188
188
  ```blocks
189
189
  game.onUpdateInterval(1000, function () {
190
- sprites.move_to_random_hole_on_grid(myMole)
190
+ sprites.moveToRandomHoleOnGrid(myMole)
191
191
  })
192
192
  ```
193
193
  <br/>and drop it onto **an empty area** of the workspace.
@@ -218,7 +218,7 @@ hint~
218
218
 
219
219
  ```blocks
220
220
  game.onUpdateInterval(1000, function () {
221
- sprites.move_to_random_hole_on_grid(myMole)
221
+ sprites.moveToRandomHoleOnGrid(myMole)
222
222
  })
223
223
  ```
224
224
 
@@ -252,7 +252,7 @@ When you're ready, click **Done** to return to the skillmap so you can add a rub
252
252
  let myMole = sprites.create(img`.`, SpriteKind.Enemy)
253
253
 
254
254
  game.onUpdateInterval(1000, function () {
255
- sprites.move_to_random_hole_on_grid(myMole)
255
+ sprites.moveToRandomHoleOnGrid(myMole)
256
256
  })
257
257
 
258
258
  ```
@@ -82,7 +82,7 @@ We need to be able to move the hammer around the screen to chase the mole.
82
82
 
83
83
  - :game: From the ``||controller: Controller||`` category, grab <br/>
84
84
  ```block
85
- controller.move_only_onscreen_with_arrows(myHammer, speeds.Fast)
85
+ controller.moveOnlyOnscreenWithArrows(myHammer, controller.Speeds.Fast)
86
86
  ```
87
87
  and snap it in at **the end** of the ``||loops(noclick): on start||`` block already in the workspace.
88
88
 
@@ -107,7 +107,7 @@ scene.setBackgroundImage(assets.image`grid`)
107
107
  myMole = sprites.create(assets.image`mole`, SpriteKind.Enemy)
108
108
  myHammer = sprites.create(assets.image`hammer`, SpriteKind.Player)
109
109
  //@highlight
110
- controller.move_only_onscreen_with_arrows(myHammer, speeds.Fast)
110
+ controller.moveOnlyOnscreenWithArrows(myHammer, controller.Speeds.Fast)
111
111
  ```
112
112
 
113
113
 
@@ -180,7 +180,7 @@ Did you notice that the points added up really quickly when the rubber hammer st
180
180
  - :paper plane: From the ``||sprites: Sprites||`` category, grab <br/>
181
181
 
182
182
  ```block
183
- sprites.move_to_random_hole_on_grid(myMole)
183
+ sprites.moveToRandomHoleOnGrid(myMole)
184
184
  ```
185
185
 
186
186
  and snap it into **the end** of the ``||sprites(noclick): on sprite overlaps otherSprite||`` block container already in the workspace.
@@ -203,7 +203,7 @@ hint~
203
203
  sprites.onOverlap(SpriteKind.Player, SpriteKind.Enemy, function (sprite, otherSprite) {
204
204
  info.changeScoreBy(1)
205
205
  //@highlight
206
- sprites.move_to_random_hole_on_grid(myMole)
206
+ sprites.moveToRandomHoleOnGrid(myMole)
207
207
  })
208
208
  ```
209
209
 
@@ -218,7 +218,7 @@ Finally, let's add a timer to keep the game exciting.
218
218
  - :id card: From the ``||info: Info||`` category, grab <br/>
219
219
 
220
220
  ```block
221
- info.startCountdownGame(15, winTypes.Score)
221
+ carnival.startCountdownGame(15, carnival.WinTypes.Score)
222
222
  ```
223
223
 
224
224
  and snap it into **the end** of the <br/>
@@ -243,9 +243,9 @@ let myHammer: Sprite = null
243
243
  scene.setBackgroundImage(assets.image`grid`)
244
244
  myMole = sprites.create(assets.image`mole`, SpriteKind.Enemy)
245
245
  myHammer = sprites.create(assets.image`hammer`, SpriteKind.Player)
246
- controller.move_only_onscreen_with_arrows(myHammer, speeds.Fast)
246
+ controller.moveOnlyOnscreenWithArrows(myHammer, controller.Speeds.Fast)
247
247
  //@highlight
248
- info.startCountdownGame(15, winTypes.Score)
248
+ carnival.startCountdownGame(15, carnival.WinTypes.Score)
249
249
  ```
250
250
 
251
251
 
@@ -301,7 +301,7 @@ scene.setBackgroundImage(assets.image`grid`)
301
301
  myMole = sprites.create(assets.image`mole`, SpriteKind.Enemy)
302
302
 
303
303
  game.onUpdateInterval(1000, function () {
304
- sprites.move_to_random_hole_on_grid(myMole)
304
+ sprites.moveToRandomHoleOnGrid(myMole)
305
305
  })
306
306
  ```
307
307