# 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(Button.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)

