Как создать бордюр вокруг доски - PullRequest
0 голосов
/ 20 октября 2019

Я создаю доску для игры MineSweeper и хочу, чтобы у доски была граница. Как я могу использовать символы рисования коробки для реализации этого?

Я могу нарисовать доску, и она хорошо отображается, но без рамки. Это код ниже:

public static void PrintBoard(Game game)
{
    var board = game.GetBoard();
    Console.WriteLine("Contains {0} elements:", board.Length); 
    for (int yIndex = 0; yIndex < game.BoardHeight; yIndex++)
    {
        var line = "";
        for (int xIndex = 0; xIndex < game.BoardWidth; xIndex++)
        {

            line = line + " " + GetSingleState(board[yIndex, xIndex]) + " ";
            if (xIndex < game.BoardWidth - 1)
            {
                line = line + _verticalSeparator;
            }
        }

        Console.WriteLine(line);

        if (yIndex < game.BoardHeight - 1)
        {
            line = "";
            for (int xIndex = 0; xIndex < game.BoardWidth; xIndex++)
            {
                line = line + _horizontalSeparator+ _horizontalSeparator+ _horizontalSeparator;
                if (xIndex < game.BoardWidth - 1)
                {
                    line = line +_centerSeparator;
                }
            }
            Console.WriteLine(line);
        }
    }
}

Моя доска сейчас: https://imgur.com/NlXMx0e

Ожидаемая доска должна выглядеть примерно так с рамкой: https://imgur.com/5kkpCVt

1 Ответ

0 голосов
/ 20 октября 2019

#!/usr/bin/env perl
use 5.020;
use utf8;
use Term::ANSIColor qw(color);
my $game = [
    [qw(♔ ♕ ♖ ♗ ♘ ♙)],
    [(' ') x 6],
    [(' ') x 6],
    [(' ') x 6],
    [(' ') x 6],
    [qw(♚ ♛ ♜ ♝ ♞ ♟)],
];
my $blue_circle = color('blue') . '●' . color('reset');
my $game_height = scalar $game->@*;      # 6
my $game_width = scalar $game->[0]->@*;  # 6
my $board_height = $game_height * 2;     # 12
my $board_width = $game_width * 4;       # 24
my $board;
for my $y (0 .. $board_height) {
    $board->[$y] = $y % 2
        ? [
            '|', map {
                (' ', $_, ' ', '|')
            } $game->[($y - 1) / 2]->@*
        ]
        : ['+', qw(- - - +) x $game_width]
}
for my $y (0, $board_height) {
    for my $x (0, $board_width / 2, $board_width) {
        $board->[$y][$x] = $blue_circle;
    }
}
for my $x (0, $board_width) {
    $board->[$board_height / 2][$x] = $blue_circle;
}
for my $row ($board->@*) {
    say join '', $row->@*;
}
...