162 lines
3.8 KiB
Markdown
162 lines
3.8 KiB
Markdown
|
# Game Library
|
||
|
|
||
|
The game library #docs
|
||
|
|
||
|
The game library supports simple single-player time-based games. The player has a **sprite**, number of **lives** and a **score**. The game has a sprite, number of **levels** and a **countdown clock**. The general goal of a game will be to move the sprite and achieve a top score before time runs out or the number of lives goes to zero.
|
||
|
|
||
|
## Block Editor
|
||
|
|
||
|
![](/static/mb/game-library/pic0.png)
|
||
|
|
||
|
## KindScript
|
||
|
|
||
|
The code below shows a simple game where the user gets to press the button ``A`` as much times as possible in 10 seconds.
|
||
|
|
||
|
```
|
||
|
input.onButtonPressed("A", () => {
|
||
|
game.addScore(1)
|
||
|
})
|
||
|
game.startCountdown(10000)
|
||
|
```
|
||
|
|
||
|
### [Create sprite](/microbit/functions/game-library/create-sprite)
|
||
|
|
||
|
Create sprite with x, y coordinates and returns a LED Sprite. Create a new LED sprite.
|
||
|
|
||
|
![](/static/mb/create-sprite-0.png)
|
||
|
|
||
|
```
|
||
|
export function createSprite(x: number, y: number) : micro_bitSprites.LedSprite
|
||
|
```
|
||
|
|
||
|
### [Move](/microbit/functions/game-library/move)
|
||
|
|
||
|
Sprite move by a certain number
|
||
|
|
||
|
![](/static/mb/game-library/move-0.png)
|
||
|
|
||
|
```
|
||
|
export function move(_this: micro_bitSprites.LedSprite, leds: number)
|
||
|
```
|
||
|
|
||
|
### [Turn](/microbit/functions/game-library/turn)
|
||
|
|
||
|
Rotates a sprite to the right by a certain number of degrees
|
||
|
|
||
|
![](/static/mb/game-library/turn-0.png)
|
||
|
|
||
|
```
|
||
|
export function turnRight(_this: micro_bitSprites.LedSprite, degrees: number)
|
||
|
```
|
||
|
|
||
|
Rotates a sprite to the left by a certain number of degrees
|
||
|
|
||
|
```
|
||
|
export function turnLeft(_this: micro_bitSprites.LedSprite, degrees: number)
|
||
|
```
|
||
|
|
||
|
### [Change](/microbit/functions/game-library/change)
|
||
|
|
||
|
Sprite will change the x position by this number
|
||
|
|
||
|
![](/static/mb/change-0.png)
|
||
|
|
||
|
```
|
||
|
export function changeXBy(_this: micro_bitSprites.LedSprite, x: number)
|
||
|
```
|
||
|
|
||
|
Sprite will change the y position by this number
|
||
|
|
||
|
```
|
||
|
export function changeYBy(_this: micro_bitSprites.LedSprite, y: number)
|
||
|
```
|
||
|
|
||
|
### [Set](/microbit/functions/game-library/set)
|
||
|
|
||
|
Sprite will change the x position by this number
|
||
|
|
||
|
```
|
||
|
export function setX(_this: micro_bitSprites.LedSprite, x: number)
|
||
|
```
|
||
|
|
||
|
Sprite will change the y position by this number
|
||
|
|
||
|
![](/static/mb/change-0.png)
|
||
|
|
||
|
```
|
||
|
export function changeYBy(_this: micro_bitSprites.LedSprite, y: number)
|
||
|
```
|
||
|
|
||
|
### [If on edge, bounce](/microbit/functions/game-library/if-on-edge-bounce)
|
||
|
|
||
|
Sprite - If the sprite is on the edge, the sprite will bounce
|
||
|
|
||
|
![](/static/mb/game-library/if-on-edge-bounce-0.png)
|
||
|
|
||
|
```
|
||
|
export function ifOnEdge_Bounce(_this: micro_bitSprites.LedSprite)
|
||
|
```
|
||
|
|
||
|
### [Change score by](/microbit/functions/game-library/change-score-by)
|
||
|
|
||
|
When a player achieves a goal, you can increase the game score
|
||
|
|
||
|
* add score points to the current score
|
||
|
|
||
|
![](/static/mb/game-library/pic1.png)
|
||
|
|
||
|
```
|
||
|
export function addScore(points: number)
|
||
|
```
|
||
|
|
||
|
### [Score](/microbit/functions/game-library/score)
|
||
|
|
||
|
* set the current score to a particular value.
|
||
|
|
||
|
```
|
||
|
export function setScore(value: number)
|
||
|
```
|
||
|
|
||
|
* get the current score value
|
||
|
|
||
|
![](/static/mb/game-library/pic2.png)
|
||
|
|
||
|
```
|
||
|
export function score() : number
|
||
|
```
|
||
|
|
||
|
### [Countdown](/microbit/functions/game-library/start-countdown)
|
||
|
|
||
|
If your game has a time limit, you can start a countdown in which case `game->current time` returns the remaining time.
|
||
|
|
||
|
* start a countdown with the maximum duration of the game in milliseconds.
|
||
|
|
||
|
![](/static/mb/game-library/pic3.png)
|
||
|
|
||
|
```
|
||
|
export function startCountdown(ms: number)
|
||
|
```
|
||
|
|
||
|
### [Game over](/microbit/functions/game-library/game-over)
|
||
|
|
||
|
If the `life` reaches zero or the time expires (see countdown), the game enters the **game over** mode. When the game is over, `game->is running` returns false
|
||
|
|
||
|
* check if the game still running.
|
||
|
|
||
|
```
|
||
|
let running = game.isRunning()
|
||
|
```
|
||
|
|
||
|
You can also end the game by calling the `game -> game over` function:
|
||
|
|
||
|
![](/static/mb/game-library/pic0.png)
|
||
|
|
||
|
```
|
||
|
game.gameOver()
|
||
|
```
|
||
|
|
||
|
### Lessons
|
||
|
|
||
|
[game of chance](/microbit/lessons/game-of-chance) | [game counter](/microbit/lessons/game-counter)
|
||
|
|