World Conquest Chronicles

World Conquest Chronicles

go-atari-cli, v1.2

The Atari Go program with a terminal-based interface.

Displaying a board with the grid (optional).

Change Log

  • displaying a board:
    • changing ASCII symbols for stones displaying;
    • by decor (to choose):
      • without the board grid;
      • with the board grid.

Features

  • displaying a board:
    • by symbols (to choose):
      • ASCII;
      • Unicode;
    • by colors (to choose):
      • monochrome;
      • colorful;
    • by size (to choose):
      • terse;
      • wide;
    • by decor (to choose):
      • without the board grid;
      • with the board grid;
    • misc.:
      • marking searching process;
  • interacting via text commands (moves in Smart Game Format);
  • options:
    • initial position in Smart Game Format;
    • human color (i.e. a computer can move first):
      • support automatic random selecting (optional);
    • move searching restrictions:
      • passes of tree building;
      • duration of tree building;
    • optimization via parallel move searching:
      • parallel game simulating:
        • of a single node child;
        • of all node children;
      • parallel tree building;
    • displaying:
      • switching between ASCII/Unicode modes;
      • switching between monochrome/colorful modes;
      • switching between terse/wide modes;
      • switching between modes without/with the board grid.

Usage

$ go-atari-cli -h | -help | --help
$ go-atari-cli [options]

Options:

  • -h, -help, --help — show the help message and exit;
  • -sgf STRING — board in Smart Game Format (default: empty board 5x5);
  • -humanColor {random|black|white} — human color (default: random);
  • -pass INTEGER — building passes (default: 1000);
  • -duration DURATION — building duration (e.g. 72h3m0.5s; default: 10s);
  • -parallelSimulator — use parallel game simulating of a single node child (default: false; for inverting use -parallelSimulator or -parallelSimulator=true);
  • -parallelBulkySimulator — use parallel game simulating of all node children (default: false; for inverting use -parallelBulkySimulator or -parallelBulkySimulator=true);
  • -parallelBuilder — use parallel tree building (default: true; for inverting use -parallelBuilder=false);
  • -unicode — use Unicode to display stones (default: false; for inverting use -unicode or -unicode=true);
  • -colorful — use colors to display stones (default: false; for inverting use -colorful or -colorful=true);
  • -blackColor INTEGER — SGR parameter for ANSI escape sequences for setting a color of black stones (default: 34; see for details: https://en.wikipedia.org/wiki/ANSI_escape_code#3/4_bit);
  • -whiteColor INTEGER — SGR parameter for ANSI escape sequences for setting a color of white stones (default: 31; see for details: https://en.wikipedia.org/wiki/ANSI_escape_code#3/4_bit);
  • -wide — display the board wide (default: false; for inverting use -wide or -wide=true);
  • -grid — display the board grid (default: true; for inverting use -grid=false).

Examples

ascii.BoardEncoder.EncodeBoard() with a grid:

package main

import (
    "fmt"

    "github.com/thewizardplusplus/go-atari-cli/encoding/ascii"
    models "github.com/thewizardplusplus/go-atari-models"
    "github.com/thewizardplusplus/go-atari-models/encoding/sgf"
)

func main() {
    stoneEncoder := func(color models.Color) string {
        return string(sgf.EncodeColor(color))
    }
    placeholders := ascii.Placeholders{
        HorizontalLine: "-",
        VerticalLine:   "|",
        Crosshairs:     "+",
    }
    margins := ascii.Margins{
        Stone: ascii.StoneMargins{
            HorizontalMargins: ascii.HorizontalMargins{
                Left: 1,
            },
            VerticalMargins: ascii.VerticalMargins{
                Bottom: 1,
            },
        },
        Legend: ascii.LegendMargins{
            Row: ascii.HorizontalMargins{
                Right: 1,
            },
        },
    }

    // +-+-+-+-+-+
    // | | | | | |
    // +-+-+-+-+-+
    // | |B|W| | |
    // +-+-+-+-+-+
    // |B|W| |W| |
    // +-+-+-+-+-+
    // | |B|W| | |
    // +-+-+-+-+-+
    // | | | | | |
    // +-+-+-+-+-+
    board := models.NewBoard(models.Size{Width: 5, Height: 5})
    for _, move := range []models.Move{
        {Color: models.Black, Point: models.Point{Column: 1, Row: 1}},
        {Color: models.White, Point: models.Point{Column: 2, Row: 1}},
        {Color: models.Black, Point: models.Point{Column: 0, Row: 2}},
        {Color: models.White, Point: models.Point{Column: 1, Row: 2}},
        {Color: models.White, Point: models.Point{Column: 3, Row: 2}},
        {Color: models.Black, Point: models.Point{Column: 1, Row: 3}},
        {Color: models.White, Point: models.Point{Column: 2, Row: 3}},
    } {
        board = board.ApplyMove(move)
    }

    boardEncoder := ascii.NewBoardEncoder(stoneEncoder, placeholders, margins, 1)
    fmt.Printf("%v\n", boardEncoder.EncodeBoard(board))

    // Output:
    // e -+-+-+-+-+
    //    | | | | |
    // d -+-B-W-+-+
    //    | | | | |
    // c -B-W-+-W-+
    //    | | | | |
    // b -+-B-W-+-+
    //    | | | | |
    // a -+-+-+-+-+
    //    | | | | |
    //    a b c d e
}

Repository

Link: https://github.com/thewizardplusplus/go-atari-cli/tree/v1.2.

Content: code.

License: MIT.

Screenshots

ASCII/monochrome/wide/with the grid

ASCII/colorful/wide/with the grid

Unicode/monochrome/wide/with the grid