Sha256: 19a7e8cbfe92139449feea6e722296e2824eb1df37221ba522afa969dc929fd5

Contents?: true

Size: 1.46 KB

Versions: 1

Compression:

Stored size: 1.46 KB

Contents

# frozen-string-literal: true
#
#    9 8 7 6 5 4 3 2 1
#  +---------------------------+
#  | ・v桂v銀v金v玉v金v銀v桂v香|一
#  | ・v飛 ・ ・ ・ ・ ・v角 ・|二
#  |v歩v歩v歩v歩v歩v歩v歩v歩v歩|三
#  | ・ ・ ・ ・ ・ ・ ・ ・ ・|四
#  | ・ ・ ・ ・ ・ ・ ・ ・ ・|五
#  | ・ ・ ・ ・ ・ ・ ・ ・ ・|六
#  | 歩 歩 歩 歩 歩 歩 歩 歩 歩|七
#  | ・ 角 ・ ・ ・ ・ ・ 飛 ・|八
#  | 香 桂 銀 金 玉 金 銀 桂 香|九
#  +---------------------------+
#
module Bioshogi
  module Board
    class KakinokiFormatter
      def initialize(board)
        @board = board
      end

      def to_s
        [header, line, *rows, line].join("\n") + "\n"
      end

      private

      def header
        "  " + Dimension::Column.dimension_size.times.collect { |i| Dimension::Column.fetch(i).name }.join(" ")
      end

      def line
        "+" + "---" * Dimension::Column.dimension_size + "+"
      end

      def rows
        Dimension::Row.dimension_size.times.collect do |y|
          fields = Dimension::Column.dimension_size.times.collect do |x|
            place = Place.fetch([x, y])
            soldier = @board.surface[place]
            cell_str(soldier)
          end
          "|" + fields.join + "|" + Dimension::Row.fetch(y).name
        end
      end

      def cell_str(object)
        if object
          object.to_bod
        else
          " " + "・"
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
bioshogi-0.0.15 lib/bioshogi/board/kakinoki_formatter.rb