pxt-common-packages 10.4.1 → 10.4.2

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 (64) hide show
  1. package/built/common-sim.js +5 -5
  2. package/libs/azureiot/built/debug/binary.js +461 -461
  3. package/libs/color/built/debug/binary.js +8 -8
  4. package/libs/color-sensor/built/debug/binary.js +8 -8
  5. package/libs/controller/built/debug/binary.js +8528 -8282
  6. package/libs/controller---none/built/debug/binary.js +8507 -8261
  7. package/libs/datalogger/built/debug/binary.js +63 -63
  8. package/libs/edge-connector/built/debug/binary.js +8 -8
  9. package/libs/esp32/built/debug/binary.js +462 -462
  10. package/libs/game/_locales/game-jsdoc-strings.json +2 -2
  11. package/libs/game/_locales/game-strings.json +2 -1
  12. package/libs/game/built/debug/binary.js +8416 -8170
  13. package/libs/game/controller.ts +24 -0
  14. package/libs/game/game.ts +9 -2
  15. package/libs/game/multiplayer.ts +5 -3
  16. package/libs/game/scene.ts +2 -0
  17. package/libs/game/sim/multiplayer.ts +6 -5
  18. package/libs/game/sprite.ts +1 -0
  19. package/libs/game/sprites.ts +13 -0
  20. package/libs/lcd/built/debug/binary.js +8 -8
  21. package/libs/light-spectrum-sensor/built/debug/binary.js +8 -8
  22. package/libs/lora/built/debug/binary.js +8 -8
  23. package/libs/matrix-keypad/built/debug/binary.js +8 -8
  24. package/libs/mixer/instrument.ts +7 -0
  25. package/libs/mixer/melody.ts +1 -0
  26. package/libs/mqtt/built/debug/binary.js +176 -176
  27. package/libs/multiplayer/docs/reference/multiplayer/change-player-state-by.md +121 -0
  28. package/libs/multiplayer/docs/reference/multiplayer/game-over-player-win.md +88 -0
  29. package/libs/multiplayer/docs/reference/multiplayer/get-player-by-index.md +40 -0
  30. package/libs/multiplayer/docs/reference/multiplayer/get-player-by-number.md +34 -0
  31. package/libs/multiplayer/docs/reference/multiplayer/get-player-by-sprite.md +109 -0
  32. package/libs/multiplayer/docs/reference/multiplayer/get-player-property.md +55 -0
  33. package/libs/multiplayer/docs/reference/multiplayer/get-player-sprite.md +59 -0
  34. package/libs/multiplayer/docs/reference/multiplayer/get-player-state.md +55 -0
  35. package/libs/multiplayer/docs/reference/multiplayer/is-button-pressed.md +44 -0
  36. package/libs/multiplayer/docs/reference/multiplayer/move-with-buttons.md +50 -0
  37. package/libs/multiplayer/docs/reference/multiplayer/multiplayer-state.md +55 -0
  38. package/libs/multiplayer/docs/reference/multiplayer/on-button-event.md +60 -0
  39. package/libs/multiplayer/docs/reference/multiplayer/on-controller-event.md +76 -0
  40. package/libs/multiplayer/docs/reference/multiplayer/on-life-zero.md +28 -0
  41. package/libs/multiplayer/docs/reference/multiplayer/on-score.md +30 -0
  42. package/libs/multiplayer/docs/reference/multiplayer/player-selector.md +51 -0
  43. package/libs/multiplayer/docs/reference/multiplayer/set-player-indicators-visible.md +69 -0
  44. package/libs/multiplayer/docs/reference/multiplayer/set-player-sprite.md +50 -0
  45. package/libs/multiplayer/docs/reference/multiplayer/set-player-state.md +139 -0
  46. package/libs/multiplayer/docs/reference/multiplayer.md +57 -0
  47. package/libs/multiplayer/docs/types/player.md +82 -0
  48. package/libs/multiplayer/fieldEditors.ts +1 -0
  49. package/libs/multiplayer/ns.ts +1 -1
  50. package/libs/multiplayer/player.ts +80 -48
  51. package/libs/net/built/debug/binary.js +176 -176
  52. package/libs/net-game/built/debug/binary.js +10194 -9948
  53. package/libs/palette/built/debug/binary.js +8415 -8169
  54. package/libs/pixel/built/debug/binary.js +8 -8
  55. package/libs/power/built/debug/binary.js +8 -8
  56. package/libs/proximity/built/debug/binary.js +8 -8
  57. package/libs/radio/built/debug/binary.js +8 -8
  58. package/libs/radio-broadcast/built/debug/binary.js +8 -8
  59. package/libs/rotary-encoder/built/debug/binary.js +8 -8
  60. package/libs/screen/built/debug/binary.js +50 -50
  61. package/libs/servo/built/debug/binary.js +8 -8
  62. package/libs/sprite-scaling/built/debug/binary.js +8415 -8169
  63. package/libs/storyboard/built/debug/binary.js +8415 -8169
  64. package/package.json +1 -1
@@ -0,0 +1,55 @@
1
+ # multiplayer State
2
+
3
+ Get the value of a player state identifier.
4
+
5
+ ```sig
6
+ mp._multiplayerState(0)
7
+ ```
8
+
9
+ To keep track of different multiplayer states, a _kind_ is assigned to them. This is a value that identifies one of the states set for a [Player](/types/player). The multiplayer state values in your game might be defined like this:
10
+
11
+ ```typescript-ignore
12
+ namespace MultiplayerState {
13
+ export const score = create()
14
+ export const life = create()
15
+ }
16
+ ```
17
+
18
+ In blocks, a multiplayer state kind identifier is used to make a state kind item that can be assigned to a variable or used as a parameter:
19
+
20
+ ```block
21
+ let lifeState = MultiplayerState.life
22
+ ```
23
+
24
+ In blocks, the multiplayer state list lets you add your own custom state identifers to it. Let's say you wanted to give players 'gems' as rewards during a game. When you add `gems` to the state list, it also adds a new state constant called `gems` to your project code:
25
+
26
+ ```typescript-ignore
27
+ namespace MultiplayerState {
28
+ export const gems = create()
29
+ }
30
+ ```
31
+
32
+ You can now set state values for the number of `gems` you give a player.
33
+
34
+ ```blocks
35
+ namespace MultiplayerState {
36
+ export const gems = create()
37
+ }
38
+ mp.setPlayerState(mp.playerSelector(mp.PlayerNumber.One), MultiplayerState.gems, 6)
39
+ ```
40
+
41
+ ## Parameters
42
+
43
+ * **kind**: the multiplayer state identifier to get the state value for.
44
+
45
+ ## Returns
46
+
47
+ * a value for a player state identifier.
48
+
49
+ ## See also #seealso
50
+
51
+ [set player state](/reference/multiplayer/set-player-state)
52
+
53
+ ```package
54
+ multiplayer
55
+ ```
@@ -0,0 +1,60 @@
1
+ # on Button Event
2
+
3
+ Run some code when a button on a player's controller is pressed or released.
4
+
5
+ ```sig
6
+ mp.onButtonEvent(mp.MultiplayerButton.B, ControllerButtonEvent.Pressed, function (player) {})
7
+ ```
8
+
9
+ You can detect a controller button action on a player's controller and run some code in response. A button is chosen and a type of event is selected.
10
+
11
+ ## Parameters
12
+
13
+ * **button**: the button to detect an action for:
14
+ >* `A` button
15
+ >* `B` button
16
+ >* `up` arrow key
17
+ >* `down` arrow key
18
+ > * `left` arrow key
19
+ > * `right` arrow key
20
+ * **event**: the button event to detect:
21
+ > * `pressed`: a button or arrow key is pressed
22
+ > * `released`: a button or arrow key is released
23
+ > * `repeat`: a button or arrow key is press quickly, multiple times
24
+ * **handler**: the code to run the button event happens.
25
+
26
+ ## Example #example
27
+
28
+ ```blocks
29
+ mp.onButtonEvent(mp.MultiplayerButton.A, ControllerButtonEvent.Pressed, function (player2) {
30
+ mp.getPlayerSprite(player2).sayText("I'm pressed!", 500, false)
31
+ })
32
+ mp.setPlayerSprite(mp.playerSelector(mp.PlayerNumber.One), sprites.create(img`
33
+ . . . . . f f f f f . . . . . .
34
+ . . . . f e e e e e f . . . . .
35
+ . . . f d d d d d d e f . . . .
36
+ . . f d f f d d f f d f f . . .
37
+ . c d d d e e d d d d e d f . .
38
+ . c d c d d d d c d d e f f . .
39
+ . c d d c c c c d d d e f f f f
40
+ . . c d d d d d d d e f f b d f
41
+ . . . c d d d d e e f f f d d f
42
+ . . . . f f f e e f e e e f f f
43
+ . . . . f e e e e e e e f f f .
44
+ . . . f e e e e e e f f f e f .
45
+ . . f f e e e e f f f f f e f .
46
+ . f b d f e e f b b f f f e f .
47
+ . f d d f f f f d d b f f f f .
48
+ . f f f f f f f f f f f f f . .
49
+ `, SpriteKind.Player))
50
+ mp.getPlayerSprite(mp.playerSelector(mp.PlayerNumber.One)).setBounceOnWall(true)
51
+ mp.getPlayerSprite(mp.playerSelector(mp.PlayerNumber.One)).setVelocity(40, -30)
52
+ ```
53
+ ## See also #seealso
54
+
55
+ [is button pressed](/reference/multiplayer/is-button-pressed),
56
+ [move with buttons](/reference/multiplayer/move-with-buttons)
57
+
58
+ ```package
59
+ multiplayer
60
+ ```
@@ -0,0 +1,76 @@
1
+ # on Controller Event
2
+
3
+ Run some code when a player connects or disconnects.
4
+
5
+ ```sig
6
+ mp.onControllerEvent(ControllerEvent.Connected, function (player) {})
7
+ ```
8
+
9
+ When a new player joins (connects) the multiplayer game or leaves (disconnects) the game, a controller event will occur. You can run some code to react to a player joining or leaving the game.
10
+
11
+ ## Parameters
12
+
13
+ * **event**: the connection action to wait for. The connection actions (events) are:
14
+ > * ``connected``: player is connected
15
+ > * ``disconnected``: button is released from being pressed
16
+ * **handler**: the code you want to run when a player connect event happens.
17
+ > * **player**: the player that connected or disconnected,.
18
+
19
+ ## Example #example
20
+
21
+ When `player 2` connects, set their character sprite to a yellow duck.
22
+
23
+ ```blocks
24
+ mp.onControllerEvent(ControllerEvent.Connected, function (player) {
25
+ if (mp.getPlayerProperty(player, mp.PlayerProperty.Number) == 2) {
26
+ mp.setPlayerSprite(player, sprites.create(img`
27
+ . . . . . . . . . . b 5 b . . .
28
+ . . . . . . . . . b 5 b . . . .
29
+ . . . . . . b b b b b b . . . .
30
+ . . . . . b b 5 5 5 5 5 b . . .
31
+ . . . . b b 5 d 1 f 5 d 4 c . .
32
+ . . . . b 5 5 1 f f d d 4 4 4 b
33
+ . . . . b 5 5 d f b 4 4 4 4 b .
34
+ . . . b d 5 5 5 5 4 4 4 4 b . .
35
+ . . b d d 5 5 5 5 5 5 5 5 b . .
36
+ . b d d d d 5 5 5 5 5 5 5 5 b .
37
+ b d d d b b b 5 5 5 5 5 5 5 b .
38
+ c d d b 5 5 d c 5 5 5 5 5 5 b .
39
+ c b b d 5 d c d 5 5 5 5 5 5 b .
40
+ . b 5 5 b c d d 5 5 5 5 5 d b .
41
+ b b c c c d d d d 5 5 5 b b . .
42
+ . . . c c c c c c c c b b . . .
43
+ `, SpriteKind.Player))
44
+ }
45
+ })
46
+ mp.setPlayerSprite(mp.playerSelector(mp.PlayerNumber.One), sprites.create(img`
47
+ . . . . . f f f f f . . . . . .
48
+ . . . . f e e e e e f . . . . .
49
+ . . . f d d d d d d e f . . . .
50
+ . . f d f f d d f f d f f . . .
51
+ . c d d d e e d d d d e d f . .
52
+ . c d c d d d d c d d e f f . .
53
+ . c d d c c c c d d d e f f f f
54
+ . . c d d d d d d d e f f b d f
55
+ . . . c d d d d e e f f f d d f
56
+ . . . . f f f e e f e e e f f f
57
+ . . . . f e e e e e e e f f f .
58
+ . . . f e e e e e e f f f e f .
59
+ . . f f e e e e f f f f f e f .
60
+ . f b d f e e f b b f f f e f .
61
+ . f d d f f f f d d b f f f f .
62
+ . f f f f f f f f f f f f f . .
63
+ `, SpriteKind.Player))
64
+ mp.getPlayerSprite(mp.playerSelector(mp.PlayerNumber.One)).setBounceOnWall(true)
65
+ mp.getPlayerSprite(mp.playerSelector(mp.PlayerNumber.One)).setVelocity(40, -30)
66
+ ```
67
+
68
+ ## See also #seealso
69
+
70
+ [on button event](/reference/multiplayer/on-button-event),
71
+ [is button pressed](/reference/multiplayer/is-button-pressed)
72
+
73
+
74
+ ```package
75
+ multiplayer
76
+ ```
@@ -0,0 +1,28 @@
1
+ # on Life Zero
2
+
3
+ Run some code when a player's life points reach zero.
4
+
5
+ ```sig
6
+ mp.onLifeZero(function (player) {})
7
+ ```
8
+
9
+ ## Parameters
10
+
11
+ * **handler**: the code to run when any player's life points reach the value of `0`.
12
+
13
+ ## Example #example
14
+
15
+ Make the player's sprite put up an emergency message when their life points get to zero.
16
+
17
+ ```blocks
18
+ mp.onLifeZero(function (player) {
19
+ mp.getPlayerSprite(player).sayText("Medic, help!!!")
20
+ })
21
+ ```
22
+ ## See also #seealso
23
+
24
+ [on score](/reference/multiplayer/on-score)
25
+
26
+ ```package
27
+ multiplayer
28
+ ```
@@ -0,0 +1,30 @@
1
+ # on Score
2
+
3
+ Run some code when a player's score reaches a given value.
4
+
5
+ ```sig
6
+ mp.onScore(100, function (player) {})
7
+ ```
8
+
9
+ ## Parameters
10
+
11
+ * **score**: a [number](/types/number) that is the score value to trigger the event.
12
+ * **handler**: the code to run when any player's score reaches the value in **score**.
13
+
14
+ ## Example #example
15
+
16
+ Reward each player that reaches a score of `100` with `1` more life point.
17
+
18
+ ```blocks
19
+ mp.onScore(100, function (player) {
20
+ mp.changePlayerStateBy(player, MultiplayerState.score, 1)
21
+ })
22
+ ```
23
+
24
+ ## See also #seealso
25
+
26
+ [on life zero](/reference/multiplayer/on-life-zero)
27
+
28
+ ```package
29
+ multiplayer
30
+ ```
@@ -0,0 +1,51 @@
1
+ # player Selector
2
+
3
+ Get a game Player using a player selector.
4
+
5
+ ```sig
6
+ mp.playerSelector(mp.PlayerNumber.One)
7
+ ```
8
+
9
+ Players in a multiplayer game are represented by the [Player](/types/player) game object. Player objects are usually referenced using a player selector. The selectors are named as a player number, like `player 1`, `player 2`, etc. To use many of the multiplayer game blocks, you need a selector to specify which player or players you're using with the block.
10
+
11
+ ## Parameters
12
+
13
+ * **player**: a [Player](/types/player) to get using the selector.
14
+
15
+ ## Returns
16
+
17
+ * the [Player](/types/player) chosen by the selector in **player**.
18
+
19
+ ## Example #example
20
+
21
+ Set a character sprite for the player selected by ``||mp:player 2||``.
22
+
23
+ ```blocks
24
+ mp.setPlayerSprite(mp.playerSelector(mp.PlayerNumber.Two), sprites.create(img`
25
+ . . . . f f f f f . . . . . . .
26
+ . . . f e e e e e f . . . . . .
27
+ . . f d d d d e e e f . . . . .
28
+ . c d f d d f d e e f f . . . .
29
+ . c d f d d f d e e d d f . . .
30
+ c d e e d d d d e e b d c . . .
31
+ c d d d d c d d e e b d c . . .
32
+ c c c c c d d e e e f c . . . .
33
+ . f d d d d e e e f f . . . . .
34
+ . . f f f f f e e e e f . . . .
35
+ . . . . f f e e e e e e f . f f
36
+ . . . f e e f e e f e e f . e f
37
+ . . f e e f e e f e e e f . e f
38
+ . f b d f d b f b b f e f f e f
39
+ . f d d f d d f d d b e f f f f
40
+ . . f f f f f f f f f f f f f .
41
+ `, SpriteKind.Player))
42
+ ```
43
+
44
+ ## See also #seealso
45
+
46
+ [get player by number](/reference/multiplayer/get-player-by-number),
47
+ [get player by index](/reference/multiplayer/get-player-by-index)
48
+
49
+ ```package
50
+ multiplayer
51
+ ```
@@ -0,0 +1,69 @@
1
+ # set Player Indicators Visible
2
+
3
+ Make player sprite indicators visible or not visible.
4
+
5
+ ```sig
6
+ mp.setPlayerIndicatorsVisible(true)
7
+ ```
8
+
9
+ When set as visible, player indicators are displayed on the screen next to the player's character sprite. All active players will have an indicator shown.
10
+
11
+ ## Paramters
12
+
13
+ * **visible**: a [boolean](/types/boolean) value that when set `true` all player's indicators are visible on the screen to every player. Otherwise, if set `false`, the indicators aren't displayed on any player's screen.
14
+
15
+ ## Example #example
16
+
17
+ Set sprites for both `player 1` and `player 2`. Send them moving around the screen. Turn the visibility of the indicators on so that each player sprite is identified.
18
+
19
+ ```blocks
20
+ mp.setPlayerIndicatorsVisible(true)
21
+ mp.setPlayerSprite(mp.playerSelector(mp.PlayerNumber.One), sprites.create(img`
22
+ . . . . . f f f f f . . . . . .
23
+ . . . . f e e e e e f . . . . .
24
+ . . . f d d d d d d e f . . . .
25
+ . . f d f f d d f f d f f . . .
26
+ . c d d d e e d d d d e d f . .
27
+ . c d c d d d d c d d e f f . .
28
+ . c d d c c c c d d d e f f f f
29
+ . . c d d d d d d d e f f b d f
30
+ . . . c d d d d e e f f f d d f
31
+ . . . . f f f e e f e e e f f f
32
+ . . . . f e e e e e e e f f f .
33
+ . . . f e e e e e e f f f e f .
34
+ . . f f e e e e f f f f f e f .
35
+ . f b d f e e f b b f f f e f .
36
+ . f d d f f f f d d b f f f f .
37
+ . f f f f f f f f f f f f f . .
38
+ `, SpriteKind.Player))
39
+ mp.getPlayerSprite(mp.playerSelector(mp.PlayerNumber.One)).setBounceOnWall(true)
40
+ mp.getPlayerSprite(mp.playerSelector(mp.PlayerNumber.One)).setVelocity(40, -30)
41
+ mp.setPlayerSprite(mp.playerSelector(mp.PlayerNumber.Two), sprites.create(img`
42
+ . . . . . . . . . . . . . . . .
43
+ . . . . c c c c . . . . . . . .
44
+ . . c c 5 5 5 5 c c . . . . . .
45
+ . c 5 5 5 5 5 5 5 5 c . . . . .
46
+ c 5 5 5 5 5 1 f 5 5 5 c . . . .
47
+ c 5 5 5 5 5 f f 5 5 5 5 c . . .
48
+ c 5 5 5 5 5 5 5 5 5 5 5 c . . .
49
+ c c b b 1 b 5 5 5 5 5 5 d c . .
50
+ c 5 3 3 3 5 5 5 5 5 d d d c . .
51
+ . b 5 5 5 5 5 5 5 5 d d d c . .
52
+ . . c b b c 5 5 b d d d d c . .
53
+ . c b b c 5 5 b b d d d d c c c
54
+ . c c c c c c d d d d d d d d c
55
+ . . . c c c c d 5 5 b d d c c .
56
+ . . c b b c c c 5 5 b c c . . .
57
+ . . c c c c c d 5 5 c . . . . .
58
+ `, SpriteKind.Player))
59
+ mp.getPlayerSprite(mp.playerSelector(mp.PlayerNumber.Two)).setBounceOnWall(true)
60
+ mp.getPlayerSprite(mp.playerSelector(mp.PlayerNumber.Two)).setVelocity(50, 40)
61
+ ```
62
+
63
+ ## See also #seealso
64
+
65
+ [set player sprite](/reference/multiplayer/set-player-sprite)
66
+
67
+ ```package
68
+ multiplayer
69
+ ```
@@ -0,0 +1,50 @@
1
+ # set Player Sprite
2
+
3
+ Assign a character sprite to a player.
4
+
5
+ ```sig
6
+ mp.setPlayerSprite(mp.playerSelector(mp.PlayerNumber.Two), sprites.create(img``))
7
+ ```
8
+
9
+ The sprite that is set for a [Player](/types/player) is moved when controller buttons are enabled for the Player. Also, player [indicators]() are displayed with the sprite.
10
+
11
+ ## Parameters
12
+
13
+ * **player**: the [Player](/types/player) to assing a sprite to.
14
+ * **sprite**: the sprite to set as the character sprite for **player**.
15
+
16
+ ## Example #example
17
+
18
+ Set a character sprite for `player 2` and make it move with the controller buttons.
19
+
20
+ ```blocks
21
+ scene.setBackgroundColor(10)
22
+ mp.setPlayerSprite(mp.playerSelector(mp.PlayerNumber.Two), sprites.create(img`
23
+ . . . . . f f f f f . . . . . .
24
+ . . . . f e e e e e f . . . . .
25
+ . . . f d d d d d d e f . . . .
26
+ . . f d f f d d f f d f f . . .
27
+ . c d d d e e d d d d e d f . .
28
+ . c d c d d d d c d d e f f . .
29
+ . c d d c c c c d d d e f f f f
30
+ . . c d d d d d d d e f f b d f
31
+ . . . c d d d d e e f f f d d f
32
+ . . . . f f f e e f e e e f f f
33
+ . . . . f e e e e e e e f f f .
34
+ . . . f e e e e e e f f f e f .
35
+ . . f f e e e e f f f f f e f .
36
+ . f b d f e e f b b f f f e f .
37
+ . f d d f f f f d d b f f f f .
38
+ . f f f f f f f f f f f f f . .
39
+ `, SpriteKind.Player))
40
+ mp.moveWithButtons(mp.playerSelector(mp.PlayerNumber.Two))
41
+ ```
42
+
43
+ ## See also #seealso
44
+
45
+ [get player sprite](/reference/multiplayer/get-player-sprite),
46
+ [set player indicators visible](/reference/multiplayer/set-player-indicators-visible)
47
+
48
+ ```package
49
+ multiplayer
50
+ ```
@@ -0,0 +1,139 @@
1
+ # set Player State
2
+
3
+ Set a value for a Player state item.
4
+
5
+ ```sig
6
+ mp.setPlayerState(mp.playerSelector(mp.PlayerNumber.One), MultiplayerState.score, 0)
7
+ ```
8
+
9
+ Information like the player's score and life count is contained with the [Player](/types/player) game object. The Player object has the ``||mp:score||`` and ``||mp:life||`` state items already added. You can add your own [state items](/reference/multiplayer/multiplayer-state) to the Player's list of states. The state list in the block let's has an option to add your own new states.
10
+
11
+ As an example, if you want to give game a gems as rewards, you can add the ``||mp:gems||`` state to keep track of how many gems they have.
12
+
13
+ ```block
14
+ namespace MultiplayerState {
15
+ export const gems = MultiplayerState.create()
16
+ }
17
+ mp.setPlayerState(mp.playerSelector(mp.PlayerNumber.One), MultiplayerState.gems, 7)
18
+ ```
19
+
20
+ In Javascript, a new state is created and added to the multiplayer state collection.
21
+
22
+ ```typescript-ignore
23
+ namespace MultiplayerState {
24
+ export const gems = create()
25
+ }
26
+ ```
27
+
28
+ ## Parameters
29
+
30
+ * **player**: the [Player](/types/player) to set a state item value for.
31
+ * **state**: the [state item](/reference/multiplayer/multiplayer-state) to set a **value** to, such as `score` or `life`.
32
+ * **value**: a [number](/types/number) which is the new value for the **state**.
33
+
34
+ ## Example #example
35
+
36
+ Set `player 1` score state to `0`. Send the player's shark sprite across the screen to eat a goldfish on the opposite side. When the shark overlaps the goldfish, add `1` to `player 1` score state.
37
+
38
+ ```blocks
39
+ namespace MultiplayerState {
40
+ export const gems = MultiplayerState.create()
41
+ }
42
+ sprites.onOverlap(SpriteKind.Player, SpriteKind.Food, function (sprite, otherSprite) {
43
+ goldfish.destroy(effects.warmRadial, 200)
44
+ mp.changePlayerStateBy(mp.playerSelector(mp.PlayerNumber.One), MultiplayerState.score, 1)
45
+ })
46
+ let chomp = false
47
+ let goldfish: Sprite = null
48
+ mp.setPlayerState(mp.playerSelector(mp.PlayerNumber.One), MultiplayerState.score, 0)
49
+ goldfish = sprites.create(img`
50
+ . . . . . . . . . . . . . . . .
51
+ . . . . . . . . c c c c . . . .
52
+ . . . . . . c c d d d d c . . .
53
+ . . . . . c c c c c c d c . . .
54
+ . . . . c c 4 4 4 4 d c c . . .
55
+ . . . c 4 d 4 4 4 4 4 1 c . c c
56
+ . . c 4 4 4 1 4 4 4 4 d 1 c 4 c
57
+ . c 4 4 4 4 1 4 4 4 4 4 1 c 4 c
58
+ f 4 4 4 4 4 1 4 4 4 4 4 1 4 4 f
59
+ f 4 4 4 f 4 1 c c 4 4 4 1 f 4 f
60
+ f 4 4 4 4 4 1 4 4 f 4 4 d f 4 f
61
+ . f 4 4 4 4 1 c 4 f 4 d f f f f
62
+ . . f f 4 d 4 4 f f 4 c f c . .
63
+ . . . . f f 4 4 4 4 c d b c . .
64
+ . . . . . . f f f f d d d c . .
65
+ . . . . . . . . . . c c c . . .
66
+ `, SpriteKind.Food)
67
+ goldfish.left = 0
68
+ mp.setPlayerSprite(mp.playerSelector(mp.PlayerNumber.One), sprites.create(img`
69
+ .................ccfff..............
70
+ ................cddbbf..............
71
+ ...............cddbbf...............
72
+ ..............fccbbcf............ccc
73
+ ........ffffffccccccff.........ccbbc
74
+ ......ffbbbbbbbbbbbbbcfff.....cdbbc.
75
+ ....ffbbbbbbbbbcbcbbbbcccff..cddbbf.
76
+ ....fbcbbbbbffbbcbcbbbcccccfffdbbf..
77
+ ....fbbb1111ff1bcbcbbbcccccccbbbcf..
78
+ .....fb11111111bbbbbbcccccccccbccf..
79
+ ......fccc33cc11bbbbccccccccfffbbcf.
80
+ .......fc131c111bbbcccccbdbc...fbbf.
81
+ ........f33c111cbbbfdddddcc.....fbbf
82
+ .........ff1111fbdbbfddcc........fff
83
+ ...........cccccfbdbbfc.............
84
+ .................fffff..............
85
+ `, SpriteKind.Player))
86
+ mp.getPlayerSprite(mp.playerSelector(mp.PlayerNumber.One)).right = scene.screenWidth()
87
+ mp.getPlayerSprite(mp.playerSelector(mp.PlayerNumber.One)).vx = -30
88
+ game.onUpdateInterval(500, function () {
89
+ if (chomp == true) {
90
+ mp.getPlayerSprite(mp.playerSelector(mp.PlayerNumber.One)).setImage(img`
91
+ ....................ccfff...........
92
+ ..........fffffffffcbbbbf...........
93
+ .........fbbbbbbbbbfffbf............
94
+ .........fbb111bffbbbbff............
95
+ .........fb11111ffbbbbbcff..........
96
+ .........f1cccc11bbcbcbcccf.........
97
+ ..........fc1c1c1bbbcbcbcccf...ccccc
98
+ ............c3331bbbcbcbccccfccddbbc
99
+ ...........c333c1bbbbbbbcccccbddbcc.
100
+ ...........c331c11bbbbbcccccccbbcc..
101
+ ..........cc13c111bbbbccccccffbccf..
102
+ ..........c111111cbbbcccccbbc.fccf..
103
+ ...........cc1111cbbbfdddddc..fbbcf.
104
+ .............cccffbdbbfdddc....fbbf.
105
+ ..................fbdbbfcc......fbbf
106
+ ...................fffff.........fff
107
+ `)
108
+ } else {
109
+ mp.getPlayerSprite(mp.playerSelector(mp.PlayerNumber.One)).setImage(img`
110
+ .................ccfff..............
111
+ ................cddbbf..............
112
+ ...............cddbbf...............
113
+ ..............fccbbcf............ccc
114
+ ........ffffffccccccff.........ccbbc
115
+ ......ffbbbbbbbbbbbbbcfff.....cdbbc.
116
+ ....ffbbbbbbbbbcbcbbbbcccff..cddbbf.
117
+ ....fbcbbbbbffbbcbcbbbcccccfffdbbf..
118
+ ....fbbb1111ff1bcbcbbbcccccccbbbcf..
119
+ .....fb11111111bbbbbbcccccccccbccf..
120
+ ......fccc33cc11bbbbccccccccfffbbcf.
121
+ .......fc131c111bbbcccccbdbc...fbbf.
122
+ ........f33c111cbbbfdddddcc.....fbbf
123
+ .........ff1111fbdbbfddcc........fff
124
+ ...........cccccfbdbbfc.............
125
+ .................fffff..............
126
+ `)
127
+ }
128
+ chomp = !(chomp)
129
+ })
130
+ ```
131
+
132
+ ## See also #seealso
133
+
134
+ [get player state](/reference/multiplayer/get-player-state),
135
+ [change player state by](/reference/multiplayer/change-player-state-by)
136
+
137
+ ```package
138
+ multiplayer
139
+ ```
@@ -0,0 +1,57 @@
1
+ # Multiplayer
2
+
3
+ ## Sprite
4
+
5
+ ```cards
6
+ mp.setPlayerSprite(mp.playerSelector(mp.PlayerNumber.Two), sprites.create(img``))
7
+ mp.getPlayerSprite(mp.playerSelector(mp.PlayerNumber.One))
8
+ ```
9
+
10
+ ## Information
11
+
12
+ ```cards
13
+ mp.playerSelector(mp.PlayerNumber.One)
14
+ mp.setPlayerState(mp.playerSelector(mp.PlayerNumber.One), MultiplayerState.score, 0)
15
+ mp.getPlayerState(mp.playerSelector(mp.PlayerNumber.One), MultiplayerState.score)
16
+ mp.changePlayerStateBy(mp.playerSelector(mp.PlayerNumber.One), MultiplayerState.score, 0)
17
+ mp.getPlayerByIndex(0)
18
+ mp.getPlayerByNumber(0)
19
+ ```
20
+
21
+ ## Game control
22
+
23
+ ```cards
24
+ mp.gameOverPlayerWin(mp.playerSelector(mp.PlayerNumber.One))
25
+ mp.setPlayerIndicatorsVisible(true)
26
+ ```
27
+
28
+ ## Controller
29
+
30
+ ```cards
31
+ mp.isButtonPressed(mp.playerSelector(mp.PlayerNumber.One), mp.MultiplayerButton.A)
32
+ mp.moveWithButtons(mp.playerSelector(mp.PlayerNumber.One))
33
+ mp.onButtonEvent(mp.MultiplayerButton.B, ControllerButtonEvent.Pressed, function (player) {})
34
+ ```
35
+
36
+ ## Events
37
+
38
+ ```cards
39
+ mp.onLifeZero(function (player) {})
40
+ mp.onScore(100, function (player) {})
41
+ mp.onControllerEvent(ControllerEvent.Connected, function (player) {})
42
+ ```
43
+
44
+ ## See also
45
+
46
+ [set player sprite](/reference/multiplayer/set-player-sprite), [get player sprite](/reference/multiplayer/get-player-sprite),
47
+ [player selector](/reference/multiplayer/player-selector), [set player state](/reference/multiplayer/set-player-state), [get player state](/reference/multiplayer/get-player-state),
48
+ [change player state by](/reference/multiplayer/change-player-state-by), [get player by index](/reference/multiplayer/get-player-by-index),
49
+ [get player by number](/reference/multiplayer/get-player-by-number), [game over player win](/reference/multiplayer/game-over-player-win),
50
+ [set player indicators visible](/reference/multiplayer/set-player-indicators-visible), [is button pressed](/reference/multiplayer/is-button-pressed),
51
+ [move with buttons](/reference/multiplayer/move-with-buttons), [on button event](/reference/multiplayer/on-button-event),
52
+ [on life zero](/reference/multiplayer/on-life-zero), [on score](/reference/multiplayer/on-score),
53
+ [on controller event](/reference/multiplayer/on-controller-event)
54
+
55
+ ```package
56
+ multiplayer
57
+ ```