# Game Library

The game library supports simple single-player time-based games. The player has a number of **lives** and a **score**. The game has a number of **levels** and a **countdown clock**.  The general goal of a game will be to achieve a top score before time runs out or the number of lives goes to zero.

## Touch Develop

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)
```

### [Countdown](/js/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.

```
export function startCountdown(ms: number)
```

### [Game over](/js/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.

```
export function isRunning() : boolean
```

Indicates if the game is display the game over sequence.

```
export function isGameOver() : boolean
```

You can also end the game by calling the `game -> game over` function:

```
export function gameOver()
```

### Score

When a player achieves a goal, you can increase the game score

[Add Point to Score](/js/game-library/add-point-to-score)

* add score points to the current score

```
export function addScore(points: number)
```

[Score](/js/game-library/score)

* set the current score to a particular value.

```
export function setScore(value: number)
```

* get the current score value

```
export function score() : number
```

### Life

Manage the player lives. When the life count reaches 0 or less, the game is over.

* remove one or more lives

```
export function removeLife(life: number)
```

* add lives

```
export function addLife(lives: number)
```

* set the life to a particular value

```
export function setLife(value: number)
```

* get the current life value

```
export function life() : number
```

### Levels

When the game increases in difficulty, you can increase the level and use that value in your game logic.

* increase the level by 1

```
export function levelUp()
```

* get the current level

```
export function level() : number
```

### Time

The game immediately starts tracking the time from the moment the device started.

* get the current time

```
export function currentTime() : number
```

You can start the time again by using `game->start stopwatch`.

* start the game timer

```
game.startStopwatch()
```

### Blink

Reports the blink duration of a `sprite` .

```
export function blink(_this: micro_bitSprites.LedSprite) : number
```

Sets the blink duration interval in milliseconds .

```
export function setBlink(sprite: micro_bitSprites.LedSprite, ms: number)
```

### Lessons

[bop it](/lessons/bop-it) | [game of chance](/lessons/game-of-chance) | [game counter](/lessons/game-counter)