Sha256: d52ca40b435f3d8795d6ce1fd5e531e6a11a58de8df4d7dd4ad7c667c7eba415

Contents?: true

Size: 1.65 KB

Versions: 8

Compression:

Stored size: 1.65 KB

Contents

# frozen-string-literal: true

module Bioshogi
  module Hand
    class Drop
      include Shared

      def initialize(*)
        super
        if soldier.promoted
          raise MustNotHappen, "成駒を打った"
        end
      end

      def execute(container)
        player = container.player_at(soldier.location)
        player.piece_box.pick_out(soldier.piece)
        container.board.place_on(soldier)
      end

      def revert(container)
        container.board.safe_delete_on(soldier.place)
        player = container.player_at(soldier.location)
        player.piece_box.add(soldier.piece.key => 1)
      end

      def soldier_for_counts
        soldier
      end

      def to_kif(options = {})
        options = {
          with_location: true,
        }.merge(options)

        if options[:with_location]
          s = soldier.name(options)
        else
          s = soldier.name_without_location(options)
        end
        s + "打"
      end

      def to_csa(options = {})
        [
          soldier.location.csa_sign,
          "00",
          soldier.place.hankaku_number,
          soldier.to_csa,
        ].join
      end

      def to_sfen(options = {})
        [
          soldier.piece.to_sfen,
          "*",
          soldier.place.to_sfen,
        ].join
      end

      def type
        "t_drop"
      end

      def to_akf(options = {})
        {
          :_location => soldier.location.key,
          :type      => type,
          :to        => soldier.place.to_human_h,
          :piece     => soldier.piece.key,
          :_sfen     => to_sfen,
          :_kif      => to_kif,
          :_csa      => to_csa,
        }
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
bioshogi-0.0.14 lib/bioshogi/hand/drop.rb
bioshogi-0.0.10 lib/bioshogi/hand/drop.rb
bioshogi-0.0.9 lib/bioshogi/hand/drop.rb
bioshogi-0.0.8 lib/bioshogi/hand/drop.rb
bioshogi-0.0.7 lib/bioshogi/hand/drop.rb
bioshogi-0.0.5 lib/bioshogi/hand/drop.rb
bioshogi-0.0.4 lib/bioshogi/hand/drop.rb
bioshogi-0.0.3 lib/bioshogi/hand/drop.rb