https://github.com/filipchalupa/piskvorky
https://github.com/filipchalupa/piskvorky
Last synced: 2 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/filipchalupa/piskvorky
- Owner: FilipChalupa
- Created: 2023-02-03T22:31:48.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2023-02-08T00:03:53.000Z (about 2 years ago)
- Last Synced: 2025-01-26T15:48:02.408Z (3 months ago)
- Language: TypeScript
- Size: 960 KB
- Stars: 0
- Watchers: 3
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Piškvorky (tic-tac-toe) [](https://www.npmjs.com/package/piskvorky) 
Helper functions for tic-tac-toe game.
## Installation
```bash
npm install piskvorky
```## Usage
### Functions
#### `findWinner`
Expects a 1D or 2D array of strings representing the board. Returns the winner (`'o'` or `'x'`), `'tie'` or `null` if there is no winner.
| Value | Description |
| ------- | ------------------------ |
| `'o'` | player O |
| `'x'` | player X |
| `'_'` | empty field |
| | |
| `'tie'` | tie |
| `null` | the game is not over yet |#### `suggestNextMove`
Expects the board and current player (`'o'` or `'x'`). Returns a suggested move position calculated by a very sophisticated 🙃 AI.
---
### Package
```js
import { findWinner, suggestNextMove } from 'piskvorky'const board = [
['_', '_', 'o'],
['x', 'o', 'o'],
['x', 'x', 'o'],
]const winner = findWinner(board) // the winner is player 'o'
const flatBoard = ['_', '_', 'o', 'x', 'o', 'o', 'x', 'x', 'o'] // same as board.flat()
const winnerOfFlatBoard = findWinner(flatBoard) // the winner is player 'o'
const nextMove = suggestNextMove([
['o', 'x', 'o'],
['_', 'o', 'x'],
['x', 'o', 'x'],
]) // the next move is {x: 0, y: 1}
```#### CDN
```js
import { findWinner, suggestNextMove } from 'https://unpkg.com/piskvorky@latest'
```---
### Online api
#### Find winner
```js
const board = [
['_', '_', 'o'],
['x', 'o', 'o'],
['x', 'x', 'o'],
]const response = await fetch(
'https://piskvorky.czechitas-podklady.cz/api/find-winner',
{
method: 'POST',
headers: {
'Content-type': 'application/json',
},
body: JSON.stringify({ board }),
},
)
const { winner, error } = await response.json()
console.log({ winner, error })
```#### Suggest next move
```js
const response = await fetch(
'https://piskvorky.czechitas-podklady.cz/api/suggest-next-move',
{
method: 'POST',
headers: {
'Content-type': 'application/json',
},
body: JSON.stringify({
board: [
['_', '_', 'o'],
['_', 'o', '_'],
['_', 'x', 'x'],
],
player: 'o',
}),
},
)
const { position, error } = await response.json()
console.log({ position, error })
```