pxt-common-packages 10.3.13 → 10.3.15
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/common-sim.js +4 -2
- package/libs/azureiot/built/debug/binary.js +461 -461
- package/libs/color/built/debug/binary.js +8 -8
- package/libs/color-sensor/built/debug/binary.js +8 -8
- package/libs/controller/built/debug/binary.js +8417 -8204
- package/libs/controller---none/built/debug/binary.js +8396 -8183
- package/libs/datalogger/built/debug/binary.js +63 -63
- package/libs/edge-connector/built/debug/binary.js +8 -8
- package/libs/esp32/built/debug/binary.js +462 -462
- package/libs/game/_locales/game-strings.json +1 -0
- package/libs/game/built/debug/binary.js +8303 -8090
- package/libs/game/controller.ts +24 -0
- package/libs/game/scene.ts +1 -0
- package/libs/game/sim/multiplayer.ts +5 -2
- package/libs/game/sprite.ts +1 -0
- package/libs/game/sprites.ts +13 -0
- package/libs/lcd/built/debug/binary.js +8 -8
- package/libs/light-spectrum-sensor/built/debug/binary.js +8 -8
- package/libs/lora/built/debug/binary.js +8 -8
- package/libs/matrix-keypad/built/debug/binary.js +8 -8
- package/libs/mqtt/built/debug/binary.js +176 -176
- package/libs/multiplayer/docs/reference/multiplayer/change-player-state-by.md +121 -0
- package/libs/multiplayer/docs/reference/multiplayer/game-over-player-win.md +88 -0
- package/libs/multiplayer/docs/reference/multiplayer/get-player-by-index.md +40 -0
- package/libs/multiplayer/docs/reference/multiplayer/get-player-by-number.md +34 -0
- package/libs/multiplayer/docs/reference/multiplayer/get-player-by-sprite.md +109 -0
- package/libs/multiplayer/docs/reference/multiplayer/get-player-property.md +55 -0
- package/libs/multiplayer/docs/reference/multiplayer/get-player-sprite.md +59 -0
- package/libs/multiplayer/docs/reference/multiplayer/get-player-state.md +55 -0
- package/libs/multiplayer/docs/reference/multiplayer/is-button-pressed.md +44 -0
- package/libs/multiplayer/docs/reference/multiplayer/move-with-buttons.md +50 -0
- package/libs/multiplayer/docs/reference/multiplayer/multiplayer-state.md +55 -0
- package/libs/multiplayer/docs/reference/multiplayer/on-button-event.md +60 -0
- package/libs/multiplayer/docs/reference/multiplayer/on-controller-event.md +76 -0
- package/libs/multiplayer/docs/reference/multiplayer/on-life-zero.md +28 -0
- package/libs/multiplayer/docs/reference/multiplayer/on-score.md +30 -0
- package/libs/multiplayer/docs/reference/multiplayer/player-selector.md +51 -0
- package/libs/multiplayer/docs/reference/multiplayer/set-player-indicators-visible.md +69 -0
- package/libs/multiplayer/docs/reference/multiplayer/set-player-sprite.md +50 -0
- package/libs/multiplayer/docs/reference/multiplayer/set-player-state.md +139 -0
- package/libs/multiplayer/docs/reference/multiplayer.md +57 -0
- package/libs/multiplayer/docs/types/player.md +82 -0
- package/libs/multiplayer/fieldEditors.ts +1 -0
- package/libs/multiplayer/ns.ts +1 -1
- package/libs/multiplayer/player.ts +80 -48
- package/libs/net/built/debug/binary.js +176 -176
- package/libs/net-game/built/debug/binary.js +10110 -9897
- package/libs/palette/built/debug/binary.js +8302 -8089
- package/libs/pixel/built/debug/binary.js +8 -8
- package/libs/power/built/debug/binary.js +8 -8
- package/libs/proximity/built/debug/binary.js +8 -8
- package/libs/radio/built/debug/binary.js +8 -8
- package/libs/radio-broadcast/built/debug/binary.js +8 -8
- package/libs/rotary-encoder/built/debug/binary.js +8 -8
- package/libs/screen/built/debug/binary.js +50 -50
- package/libs/servo/built/debug/binary.js +8 -8
- package/libs/sprite-scaling/built/debug/binary.js +8302 -8089
- package/libs/storyboard/built/debug/binary.js +8302 -8089
- 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
|
+
```
|