Skip to content

xcfio/ttt-ts

Repository files navigation

ttt-ts

Discord GitHub Action NPM Version NPM Downloads NPM Unpacked Size NPM License

ttt-ts is a TypeScript library for creating and managing a Tic-Tac-Toe game. It provides functions to determine the best move using the minimax algorithm, check the game status, and manage the game board.

Installation

You can install the ttt-ts package using npm, yarn, or pnpm.

npm

npm install ttt-ts

yarn

yarn add ttt-ts

pnpm

pnpm add ttt-ts

Usage

JavaScript

const { TicTacToe, Status } = require("ttt-ts")

const board = [
    [null, "x", "o"],
    ["x", "o", "x"],
    ["x", null, null]
]

const bot = "o"

const result = TicTacToe(board, bot)

console.log(result)
// {
//     status: Status.Continue,
//     board: [
//         [null, "x", "o"],
//         ["x", "o", "x"],
//         ["x", "o", null]
//     ],
//     placement: { row: 2, col: 1 }
// }

TypeScript

import { TicTacToe, TicTacToeBoard, Status } from "ttt-ts"

const board: TicTacToeBoard = [
    [null, "x", "o"],
    ["x", "o", "x"],
    ["x", null, null]
]

const bot = "o"

const result = TicTacToe(board, bot)

console.log(result)
// {
//     status: Status.Continue,
//     board: [
//         [null, "x", "o"],
//         ["x", "o", "x"],
//         ["x", "o", null]
//     ],
//     placement: { row: 2, col: 1 }
// }

API Reference

Types

Cell

Represents a cell in the TicTacToe board which can be "x", "o", or null.

export type Cell = "x" | "o" | null

TicTacToeBoard

Represents a TicTacToe board.

export type TicTacToeBoard = [[Cell, Cell, Cell], [Cell, Cell, Cell], [Cell, Cell, Cell]]

Status

Enum for game status.

export const enum Status {
    Continue,
    Draw,
    X,
    O
}

FindMove

Represents the result of a move.

export type FindMove = { board: TicTacToeBoard } & (
    | {
          status: Status.Continue
          placement: { row: number; col: number }
      }
    | {
          status: Status.Draw | Status.X | Status.O
          placement?: { row: number; col: number }
      }
)

Constants

Placeholder

A placeholder for an empty TicTacToe board.

export const Placeholder: TicTacToeBoard = [
    [null, null, null],
    [null, null, null],
    [null, null, null]
]

Functions

TicTacToe

Finds the next move for the bot on the given TicTacToe board.

function TicTacToe(board: TicTacToeBoard, bot: "x" | "o", strict: boolean = true): FindMove

Parameters:

  • board: TicTacToeBoard - The current state of the TicTacToe board.
  • bot: "x" | "o" - The bot's marker ("x" or "o").
  • strict: boolean - If true, makes a random move; otherwise, uses minimax to find the best move.

Returns:

  • FindMove - The result of the move.

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

This project is licensed under the Apache-2.0 License. See the LICENSE file for details.

About

A library for creating and managing a Tic-Tac-Toe game.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •